Linux運維跳槽面試精華題|第二集


Linux運維跳槽面試精華題|第二集


1、什麼叫網站灰度發佈?

灰度發佈是指在黑與白之間,能夠平滑過渡的一種發佈方式

AB test就是一種灰度發佈方式,讓一部用戶繼續用A,一部分用戶開始用B,如果用戶對B沒有什麼反對意見,那麼逐步擴大範圍,把所有用戶都遷移到B上面來灰度發佈可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度


2、簡述DNS進行域名解析的過程?

用戶要訪問www.baidu.com,會先找本機的host文件,再找本地設置的DNS服務器,如果也沒有的話,就去網絡中找根服務器,根服務器反饋結果,說只能提供一級域名服務器.cn,就去找一級域名服務器,一級域名服務器說只能提供二級域名服務器.com.cn,就去找二級域名服務器,二級域服務器只能提供三級域名服務器.baidu.com.cn,就去找三級域名服務器,三級域名服務器正好有這個網站www.baidu.com,然後發給請求的服務器,保存一份之後,再發給客戶端


3、RabbitMQ是什麼東西?

RabbitMQ也就是消息隊列中間件,消息中間件是在消息的傳息過程中保存消息的容器消息中間件再將消息從它的源中到它的目標中標時充當中間人的作用隊列的主要目的是提供路由並保證消息的傳遞;如果發送消息時接收者不可用消息隊列不會保留消息,直到可以成功地傳遞為止,當然,消息隊列保存消息也是有期限地


4、講一下Keepalived的工作原理?

在一個虛擬路由器中,只有作為MASTER的VRRP路由器會一直髮送VRRP通告信息,BACKUP不會搶佔MASTER,除非它的優先級更高。當MASTER不可用時(BACKUP收不到通告信息)多臺BACKUP中優先級最高的這臺會被搶佔為MASTER。這種搶佔是非常快速的(<1s),以保證服務的連續性由於安全性考慮,VRRP包使用了加密協議進行加密。BACKUP不會發送通告信息,只會接收通告信息


5、講述一下LVS三種模式的工作過程?

LVS 有三種負載均衡的模式,分別是VS/NAT(nat 模式) VS/DR(路由模式) VS/TUN(隧道模式)

一、NAT模式(VS-NAT)

原理:就是把客戶端發來的數據包的IP頭的目的地址,在負載均衡器上換成其中一臺RS的IP地址併發至此RS來處理,RS處理完後把數據交給負載均衡器,負載均衡器再把數據包原IP地址改為自己的IP將目的地址改為客戶端IP地址即可期間,無論是進來的流量,還是出去的流量,都必須經過負載均衡器優點:集群中的物理服務器可以使用任何支持TCP/IP操作系統,只有負載均衡器需要一個合法的IP地址缺點:擴展性有限。當服務器節點(普通PC服務器)增長過多時,負載均衡器將成為整個系統的瓶頸因為所有的請求包和應答包的流向都經過負載均衡器。當服務器節點過多時大量的數據包都交匯在負載均衡器那,速度就會變慢!

二、IP隧道模式(VS-TUN)

原理:首先要知道,互聯網上的大多Internet服務的請求包很短小,而應答包通常很大那麼隧道模式就是,把客戶端發來的數據包,封裝一個新的IP頭標記(僅目的IP)發給RSRS收到後,先把數據包的頭解開,還原數據包,處理後,直接返回給客戶端,不需要再經過負載均衡器。注意,由於RS需要對負載均衡器發過來的數據包進行還原,所以說必須支持IPTUNNEL協議,所以,在RS的內核中,必須編譯支持IPTUNNEL這個選項優點:負載均衡器只負責將請求包分發給後端節點服務器,而RS將應答包直接發給用戶所以,減少了負載均衡器的大量數據流動,負載均衡器不再是系統的瓶頸,就能處理很巨大的請求量這種方式,一臺負載均衡器能夠為很多RS進行分發。而且跑在公網上就能進行不同地域的分發。缺點:隧道模式的RS節點需要合法IP,這種方式需要所有的服務器支持”IP Tunneling”(IP Encapsulation)協議,服務器可能只侷限在部分Linux系統上

三、直接路由模式(VS-DR)

原理

:負載均衡器和RS都使用同一個IP對外服務但只有DR對ARP請求進行響應所有RS對本身這個IP的ARP請求保持靜默也就是說,網關會把對這個服務IP的請求全部定向給DR而DR收到數據包後根據調度算法,找出對應的RS,把目的MAC地址改為RS的MAC(因為IP一致)並將請求分發給這臺RS這時RS收到這個數據包,處理完成之後,由於IP一致,可以直接將數據返給客戶則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端由於負載均衡器要對二層包頭進行改換,所以負載均衡器和RS之間必須在一個廣播域也可以簡單的理解為在同一臺交換機上優點:和TUN(隧道模式)一樣,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,因此可以使用大多數操作系統做為物理服務器。缺點:(不能說缺點,只能說是不足)要求負載均衡器的網卡必須與物理網卡在一個物理段上。


6、mysql的innodb如何定位鎖問題,mysql如何減少主從複製延遲?

mysql的innodb如何定位鎖問題:在使用 show engine innodb status檢查引擎狀態時,發現了死鎖問題在5.5中,information_schema 庫中增加了三個關於鎖的表(MEMORY引擎)innodb_trx ## 當前運行的所有事務innodb_locks ## 當前出現的鎖innodb_lock_waits ## 鎖等待的對應關係

mysql如何減少主從複製延遲:

如果延遲比較大,就先確認以下幾個因素:

  1. 從庫硬件比主庫差,導致複製延遲
  2. 主從複製單線程,如果主庫寫併發太大,來不及傳送到從庫就會導致延遲。
  3. 更高版本的mysql可以支持多線程複製
  4. 慢SQL語句過多
  5. 網絡延遲
  6. master負載,主庫讀寫壓力大,導致複製延遲,架構的前端要加buffer及緩存層
  7. slave負載,一般的做法是,使用多臺slave來分攤讀請求,再從這些slave中取一臺專用的服務器,只作為備份用,不進行其他任何操作.另外, 2個可以減少延遲的參數:–slave-net-timeout=seconds 單位為秒 默認設置為 3600秒

參數含義:當slave從主數據庫讀取log數據失敗後,等待多久重新建立連接並獲取數據

–master-connect-retry=seconds 單位為秒 默認設置為 60秒

參數含義:當重新建立主從連接時,如果連接建立失敗,間隔多久後重試

通常配置以上2個參數可以減少網絡問題導致的主從數據同步延遲

MySQL數據庫主從同步延遲解決方案

最簡單的減少slave同步延時的方案就是在架構上做優化,儘量讓主庫的DDL快速執行,還有就是主庫是寫,對數據安全性較高,比如sync_binlog=1,innodb_flush_log_at_trx_commit= 1 之類的設置,而slave則不需要這麼高的數據安全,完全可以講sync_binlog設置為0或者關閉binlog,innodb_flushlog也可以設置為0來提高sql的執行效率。另外就是使用比主庫更好的硬件設備作為slave


7、如何重置mysql root密碼?

一、 在已知MYSQL數據庫的ROOT用戶密碼的情況下,修改密碼的方法:

1、 在SHELL環境下,使用mysqladmin命令設置: mysqladmin –u root –p password “新密碼” 回車後要求輸入舊密碼

2、 在mysql>環境中,使用update命令,直接更新mysql庫user表的數據:

Update mysql.user set password=password(‘新密碼’) where user=’root’; flush privileges; 注意:mysql語句要以分號”;”結束

3、 在mysql>環境中,使用grant命令,修改root用戶的授權權限。

grant all on . to root@’localhost’ identified by ‘新密碼’;

二、 如查忘記了mysql數據庫的ROOT用戶的密碼,又如何做呢?方法如下:

1、 關閉當前運行的mysqld服務程序:service mysqld stop(要先將mysqld添加為系統服務)2、 使用mysqld_safe腳本以安全模式(不加載授權表)啟動mysqld 服務 /usr/local/mysql/bin/mysqld_safe –skip-grant-table &3、 使用空密碼的root用戶登錄數據庫,重新設置ROOT用戶的密碼 #mysql -u root Mysql> Update mysql.user set password=password(‘新密碼’) where user=’root’; Mysql> flush privileges;


8、lvs/nginx/haproxy優缺點

Nginx的優點是:1、工作在網絡的7層之上,可以針對http應用做一些分流的策略,比如針對域名、目錄結構,它的正則規則比HAProxy更為強大和靈活,這也是它目前廣泛流行的主要原因之一,Nginx單憑這點可利用的場合就遠多於LVS了。

2、Nginx對網絡穩定性的依賴非常小,理論上能ping通就就能進行負載功能,這個也是它的優勢之一,相反LVS對網絡穩定性依賴比較大,這點本人深有體會;

3、Nginx安裝和配置比較簡單,測試起來比較方便,它基本能把錯誤用日誌打印出來,LVS的配置、測試就要花比較長的時間了,LVS對網絡依賴比較大。

4、可以承擔高負載壓力且穩定,在硬件不差的情況下一般能支撐幾萬次的併發量,負載度比LVS相對小些。

5、Nginx可以通過端口檢測到服務器內部的故障,比如根據服務器處理網頁返回的狀態碼、超時等等,並且會把返回錯誤的請求重新提交到另一個節點,不過其中缺點就是不支持url來檢測。比如用戶正在上傳一個文件,而處理該上傳的節點剛好在上傳過程中出現故障,Nginx會把上傳切到另一臺服務器重新處理,而LVS就直接斷掉了,如果是上傳一個很大的文件或者很重要的文件的話,用戶可能會因此而不滿。

6、Nginx不僅僅是一款優秀的負載均衡器/反向代理軟件,它同時也是功能強大的Web應用服務器,LNMP也是近幾年非常流行的web架構,在高流量的環境中穩定性也很好。

7、Nginx現在作為Web反向加速緩存越來越成熟了,速度比傳統的Squid服務器更快,可考慮用其作為反向代理加速器

8、Nginx可作為中層反向代理使用,這一層面Nginx基本上無對手,唯一可以對比Nginx的就只有lighttpd了,不過lighttpd目前還沒有做到Nginx完全的功能,配置也不那麼清晰易讀,社區資料也遠遠沒Nginx活躍

9、Nginx也可作為靜態網頁和圖片服務器,這方面的性能也無對手。還有Nginx社區非常活躍,第三方模塊也很多

Nginx的缺點是:

1、Nginx僅能支持http、https和Email協議,這樣就在適用範圍上面小些,這個是它的缺點2、對後端服務器的健康檢查,只支持通過端口來檢測,不支持通過url來檢測 不支持Session的直接保持,但能通過ip_hash來解決

LVS:使用Linux內核集群實現一個高性能、高可用的負載均衡服務器,它具有很好的可伸縮性(Scalability)、可靠性(Reliability)和可管理性(Manageability)

LVS的優點是

1、抗負載能力強、是工作在網絡4層之上僅作分發之用,沒有流量的產生,這個特點也決定了它在負載均衡軟件裡的性能最強的,對內存和cpu資源消耗比較低

2、配置性比較低,這是一個缺點也是一個優點,因為沒有可太多配置的東西,所以並不需要太多接觸,大大減少了人為出錯的幾率

3、工作穩定,因為其本身抗負載能力很強,自身有完整的雙機熱備方案,如LVS+Keepalived,不過我們在項目實施中用得最多的還是LVS/DR+Keepalived

4、無流量,LVS只分發請求,而流量並不從它本身出去,這點保證了均衡器IO的性能不會收到大流量的影響。

5、應用範圍較廣,因為LVS工作在4層,所以它幾乎可對所有應用做負載均衡,包括http、數據庫、在線聊天室等

LVS的缺點是:

1、軟件本身不支持正則表達式處理,不能做動靜分離 而現在許多網站在這方面都有較強的需求,這個是Nginx/HAProxy+Keepalived的優勢所在2、如果是網站應用比較龐大的話,LVS/DR+Keepalived實施起來就比較複雜了,特別後面有Windows Server的機器的話,如果實施及配置還有維護過程就比較複雜了,相對而言,Nginx/HAProxy+Keepalived就簡單多了。

HAProxy的特點是:

1、HAProxy也是支持虛擬主機的。

2、HAProxy的優點能夠補充Nginx的一些缺點,比如支持Session的保持,Cookie的引導,同時支持通過獲取指定的url來檢測後端服務器的狀態

3、HAProxy跟LVS類似,本身就只是一款負載均衡軟件,單純從效率上來講HAProxy會比Nginx有更出色的負載均衡速度,在併發處理上也是優於Nginx的

4、HAProxy支持TCP協議的負載均衡轉發,可以對MySQL讀進行負載均衡,對後端的MySQL節點進行檢測和負載均衡,大家可以用LVS+Keepalived對MySQL主從做負載均衡

5、HAProxy負載均衡策略非常多,HAProxy的負載均衡算法現在具體有如下8種:

①roundrobin,表示簡單的輪詢,這個不多說,這個是負載均衡基本都具備的;② static-rr,表示根據權重,建議關注;③leastconn,表示最少連接者先處理,建議關注;④ source,表示根據請求源IP,這個跟Nginx的IP_hash機制類似 我們用其作為解決session問題的一種方法,建議關注;⑤ri,表示根據請求的URI;⑥rl_param,表示根據請求的URl參數’balance url_param’ requires an URL parameter name;⑦hdr(name),表示根據HTTP請求頭來鎖定每一次HTTP請求;⑧rdp-cookie(name),表示根據據cookie(name)來鎖定並哈希每一次TCP請求。


9、mysql數據備份工具

mysqldump工具,mysqldump是mysql自帶的備份工具,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump,支持基於innodb的熱備份,但是由於是邏輯備份,所以速度不是很快,適合備份數據比較小的場景,Mysqldump完全備份+二進制日誌可以實現基於時間點的恢復。

基於LVM快照備份

在物理備份中,有基於文件系統的物理備份(LVM的快照),也可以直接用tar之類的命令對整個數據庫目錄進行打包備份,但是這些只能進行泠備份,不同的存儲引擎備份的也不一樣,myisam自動備份到表級別而innodb不開啟獨立表空間的話只能備份整個數據庫。

tar包備份

percona提供的xtrabackup工具,支持innodb的物理熱備份,支持完全備份,增量備份,而且速度非常快,支持innodb存儲引起的數據在不同,數據庫之間遷移,支持複製模式下的從機備份恢復備份恢復,為了讓xtrabackup支持更多的功能擴展,可以設立獨立表空間,打開 innodb_file_per_table功能,啟用之後可以支持單獨的表備份

http://www.yunweipai.com/archives/27983.html

【年薪30w工程師吐血整理資料大合集】
領取IT資料大合集:http://image.qbangmang.com/counselor.html


Linux運維跳槽面試精華題|第二集


分享到:


相關文章: