2021-05-12 14:32:11
Linux系統運維面試題解答
1.簡述常用高可用技術
解答:
Keepalived:Keepalived是一個保證叢集高可用的服務軟體,用來防止單點故障,使用VRRP協定實現。在master和backup之間通過master主動降低自己的權值或者backup檢測到master出現故障時,backup將會接管master的工作,繼續服務。
HAproxy:HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支援虛擬主機,它是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要對談保持或七層處理。HAProxy執行在當前的硬體上,完全可以支援數以萬計的並行連線。並且它的執行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web伺服器不被暴露到網路上。
heartbeat+ DRBD:
heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網路鏈路和串列埠進行,而且支援冗 余鏈路,它們之間相互傳送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方傳送的報文,那麼就認為對方失效,這時需啟動資源接管模組來接管執行在對方主機上的資源或者服務。
Distributed Replicated Block Device(DRBD)是一個用軟體實現的、無共用的、伺服器之間映象塊裝置內容的儲存複製解決方案。
資料映象:實時、透明、同步(所有伺服器都成功後返回)、非同步(本地伺服器成功後返回)
2. 簡述一下DNS的解析過程
解答:
1、在瀏覽器中輸入www.qq.com域名,作業系統會先檢查自己原生的hosts檔案是否有這個網址對映關係,如果有,就先呼叫這個IP地址對映,完成域名解析。
2、如果hosts裡沒有這個域名的對映,則查詢本地DNS解析器快取,是否有這個網址對映關係,如果有,直接返回,完成域名解析。
3、如果hosts與本地DNS解析器快取都沒有相應的網址對映關係,首先會找TCP/IP引數中設定的首選DNS伺服器,在此我們叫它本地DNS伺服器,此伺服器收到查詢時,如果要查詢的域名,包含在本地設定區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
4、如果要查詢的域名,不由本地DNS伺服器區域解析,但該伺服器已快取了此網址對映關係,則呼叫這個IP地址對映,完成域名解析,此解析不具有權威性。
5、如果本地DNS伺服器本地區域檔案與快取解析都失效,則根據本地DNS伺服器的設定(是否設定轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13台根DNS,根DNS伺服器收到請求後會判斷這個域名(.com)是誰來授權管理,並會返回一個負責該頂級域名伺服器的一個IP。本地DNS伺服器收到IP資訊後,將會聯絡負責.com域的這台伺服器。這台負責.com域的伺服器收到請求後,如果自己無法解析,它就會找一個管理.com域的下一級DNS伺服器地址(qq.com)給本地DNS伺服器。當本地DNS伺服器收到這個地址後,就會找qq.com域伺服器,重複上面的動作,進行查詢,直至找到www.qq.com主機。
6、如果用的是轉發模式,此DNS伺服器就會把請求轉發至上一級DNS伺服器,由上一級伺服器進行解析,上一級伺服器如果不能解析,或找根DNS或把轉請求轉至上上級,以此迴圈。不管是本地DNS伺服器用是是轉發,還是根提示,最後都是把結果返回給本地DNS伺服器,由此DNS伺服器再返回給客戶機。
從用戶端到本地DNS伺服器是屬於遞回查詢,而DNS伺服器之間就是的互動查詢就是疊代查詢。
3. 簡單介紹下你使用過的伺服器監控軟體,並簡要說明下它們各自的特點,介紹下常用的監控指標。檢視當前Linux系統的狀態,如CPU使用,記憶體使用,負載情況等,檢視占用記憶體最大的5個進程
解答:
Nagios,
Nagios 可以監控的功能有:
1、監控網路服務(SMTP、POP3、HTTP、NNTP、PING等);
2、監控主機資源(處理器負荷、磁碟利用率等);
3、簡單地外掛設計使得使用者可以方便地擴充套件自己服務的檢測方法;
4、並行服務檢查機制;
5、具備定義網路分層結構的能力,用"parent"主機定義來表達網路主機間的關係,這種關係可被用來發現和明晰主機宕機或不可達狀態;
6、當服務或主機問題產生與解決時將告警傳送給聯絡人(通過EMail、簡訊、使用者定義方式);
7、可以定義一些處理程式,使之能夠在服務或者主機發生故障時起到預防作用;
8、自動的紀錄檔捲動功能;
9、可以支援並實現對主機的冗餘監控;
10、可選的WEB介面用於檢視當前的網路狀態、通知和故障歷史、紀錄檔檔案等;
11、可以通過手機檢視系統監控資訊;
12、可指定自定義的事件處理控制器;
檢視當前系統的狀態:top
檢視占用記憶體最大的5個進程:top,然後按M(大寫)鍵。方法二:ps -aux | sort -k4nr | head -5
4. 使用Windows服務管理命令開啟BEASD的服務,並檢視當前建立的連線數,預設埠為80
解答:
啟動服務:net start BEASD
如果服務被禁止啟動,使用該命令:sc config BEASD=demand(手動)|auto(自動)|disabled(禁用);sc start BEASD
5. 簡述Linux系統的開機啟動順序,查詢程式執行級別和修改執行級別。
解答:
POST加電自檢--》MBR引導--》GRUB--》載入核心--》啟動init進程--》讀取/etc/inittab檔案,/etc/init/*.conf檔案--》使用/etc/rc.d/rc.sysinit初始化指令碼--》執行/etc/rc.d/rc指令碼(載入/etc/rc3.d/下所有指令碼)--》執行/etc/rc.d/rc.local--》執行/bin/login登入程式
查詢程式執行級別:runlevel
修改執行級別:init [0123456]
6. 簡述軟連結和硬連結的區別。
解答:
軟連結是指建立一個新的檔案,block裡存放的是被連結檔案的檔名指向,軟連結的inode與原始檔的inode不同,將原始檔刪除,然後重建,改變了inode,軟連結檔案仍然有效。
硬連結是建立一個新的檔名,將它的inode指向原始檔的inode,所以硬連結的inode和原始檔是相同的,原始檔被刪除後,硬連結仍然可以有效,。
7. 主機A需要給主機B傳輸一份100G的資料,可以做哪些傳輸優化?
解答:
-
資料打包壓縮
-
資料分片,同步傳輸
-
增大傳輸頻寬,網路埠聚合
8. 簡述LVS的工作模式和排程演算法,大並行環境推薦架構。
解答:
工作模式:NAT,TUNNEL,DR,FULLNAT
演算法 |
說明 |
rr |
輪詢排程(Round-Robin),它將請求依次分配不同的RS節點,也就是在RS節點中均攤請求。這種演算法簡答,但是只適合於RS節點處理效能相差不大的情況 |
wrr |
加權輪詢排程(Weighted Round-Robin)它將依據不同RS節點的權值分配任務。權值較高的RS將優先獲得任務,並且分配到的連線數將比權值較低的RS節點更多。相同權值的RS得到相同數目的連線數。 |
dh |
目的地址雜湊排程(Destination Hashing)以目的地址為關鍵字查詢一個靜態hash表來獲得需要的RS |
sh |
源地址雜湊排程(Source Hashing)以源地址為關鍵字查詢一個靜態hash表來獲得需要的RS |
lc |
最小連線數排程(Least-Connection),IPVS表儲存了所有的活動的連線。把新的連線請求傳送到當前連線數最小的RS |
wlc |
加權最小連線數排程(Weighted Least-Connection)假設各台RS的權值依次為Wi(I=1..n),當前的TCP連線數依次為Ti(I=1..n),依次選取Ti/Wi為最小的RS作為下一個分配的RS |
lblc |
基於地址的最小連線數排程(Locality-Based Least-Connection),將來自同一目的地址的請求分配給同一台RS節點,如果這台伺服器已滿負荷,分配給連線數最小的RS,並以它為下一次分配的首先考慮 |
lblcr |
基於地址帶重複最小連線數排程(Locality-Based Least-Connection with Replication),對於某一目的地址,對應的一個RS子集。對此地址請求,為它分配子集中連線數最小RS;如果子集中所有伺服器均已滿負荷,則從叢集中選擇一個連線數較小伺服器,將它加入到此子集並分配連線;若一定時間內,未被做任何修改,則將子集中負載最大的節點從子集刪除 |
SED |
最短的期望的延遲(Shortest Expected Delay Scheduling SED) 基於wlc演算法。舉例: ABC三台機器分別權重123,連線數也分別是123.那麼如果使用WLC演算法的話一個新請求進入時它可能會分給ABC中的任意一個。使用SED演算法後會進行這樣的運算: A(1+1)/1 B(1+2)/2 C(1+3)/3 根據運算結果,把連線交給C |
NQ |
最少佇列排程(Never Queue Scheduling NQ) 無需佇列。如果RS的連線數=0就直接分配過去,不需要再進行SED運算 |
大並行環境推薦:DR模式,rr排程演算法。
9. 簡述TCP三次握手的過程?
解答:
10. sed將檔案test.txt中的所有”/opt/tmp”改為”/root/tmp”,並刪除所有空行。
解答:
sed -i ‘s#/opt/tmp #/root/tmp #g’test.txt|sed -i ‘/^s*$/d’
11. 將192.168.16.3這台Windows的server資料夾掛載到linux本地/mnt/server目錄,Windows的賬戶為:administrator,密碼為:123456
解答:
1、先在windows下面共用需要掛載的目錄server。
2、確保linux與windows是在同一個區域網當中。
3、在linux下面建立一個需要掛載到的目錄/mnt/server。
4、利用mount命令進行掛載。
掛載命令:mount -t cifs -o username=administrator,password=123456//192.168.16.3/server /mnt/server
12. 寫一個防火牆設定指令碼,只允許遠端主機存取本機的80埠。(linux iptables)
解答:
#!/bin/bash
#this is a server firewall
#updated by yehaifeng
#qq:769358362
#define var
IPT=/sbin/iptables
#Remove any existing rules
$IPT -F
$IPT -X
$IPT -Z
#setting default firewallpolicy
$IPT --policy OUTPUT ACCEPT
$IPT --policy FORWARD DROP
$IPT -P INPUT DROP
#setting for loopback interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
#accept 80 port only
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
#save iptables
/etc/init.d/iptables save
13. 編寫個shell指令碼將/logs目錄下3天前的檔案轉移到/tmp目錄下。
解答:
#!/bin/bash
#this is to move file 3 yearago from /logs to /tmp
#updated by yehaifeng
#qq:769358362
#define var
FILE_FROM=/logs
FILE_TO=/tmp
DAY_AGO=3
cd $FILE_FROM
for file in `find $FILE_FROM-type f -mtime +3`
do
/bin/mv $FILE_FROM/$file $FILE_TO/$file
done
14. 每天1:00備份/var/log目錄下前一天的紀錄檔檔案並存放到當前目錄的btslog目錄中,並刪除15天前的log備份檔案,請使用shell指令碼完成。(紀錄檔格式為:btsvr.log.2016-01-01,打包備份檔案格式為:btsvr.log.2016-01-01.tar.gz)
解答:
cat bak_logs.sh
#!/bin/bash
#this is to backup logs
#updated by yehaifeng
#qq:769358362
#define var
YESTERDAY=`date +%F -d '-1 day'`
LOG_DIR=/var/log
BAK_DIR=/var/log/btslog
LOG_FILE=btsvr.log
cd $LOG_DIR/
if [ -f $LOG_DIR/$LOG_FILE.$YESTERDAY] ;then{
tar zcf $LOG_DIR/$LOG_FILE.$YESTERDAY.tar.gz$LOG_DIR/$LOG_FILE.$YESTERDAY
/bin/mv $LOG_DIR/$LOG_FILE.$YESTERDAY.tar.gz/BAK_DIR/
}
else
echo “the file is not exist.”
fi
使用定時任務每天1點執行該指令碼:0001 * * * /bin/bash bak_logs.sh
15. 寫一個指令碼進行nginx紀錄檔統計,得到存取ip最多的前10個(nginx紀錄檔路徑:/nginx/default/access.log)
解答:
cat bak_logs.sh
#!/bin/bash
#this is to backup logs
#updated by yehaifeng
#qq:769358362
#define var
LOG_FILE=/nginx/default/access.log
awk '{print $1}'/application/nginx/logs/access.log |sort|uniq -c|sort -r|head -10>/tmp/ip_max.txt
echo /tmp/ip_max.txt
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-08/153699.htm
相關文章