1. 程式人生 > >LVS(Linux Viretual Server) 負載均衡器 + 後端服務器

LVS(Linux Viretual Server) 負載均衡器 + 後端服務器

tput IV 方式 hash AD 通信 raid1 持久連接 ash

定義:

  LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。

結構:

 一般來說,LVS集群采用三層結構,其主要組成部分為:   A、負載調度器(load balancer),它是整個集群對外面的前端機,負責將客戶的請求發送到一組服務器上執行,而客戶認為服務是來自一個IP地址(我們可稱之為虛擬IP地址)上的。   B、服務器池(server pool),是一組真正執行客戶請求的服務器,執行的服務有WEB、MAIL、FTP和DNS等。   C、共享存儲(shared storage),它為服務器池提供一個共享的存儲區,這樣很容易使得服務器池擁有相同的內容,提供相同的服務。 模式:
  LVS-NAT: 基於NAT(網絡地址轉換)技術,網絡數據流程如下:       1)負載均衡器在收到客戶端請求後,改寫目的IP地址為後端服務器真是IP和/或端口號,轉發給後端服務器。       2)後端服務器處理完成後,回復給負載均衡器。       3)負載均衡器改寫源IP為虛擬IP,發送給客戶端   LVS-DR:       1)請求經過負載均衡器調度後,後端服務器的相應數據流量直接返回給客戶端,回包不經過負載均衡器。   LVS-Tun:       1)LVS-Tun是LVS原創的一種轉發模式,基於LVS-DR。負載均衡器LVS代碼把原始的包(源客戶端IP到虛擬IP)封裝成ipip包,目的地址是後端服務器的真實IP,然後進入OUTPUT鏈,並路由到後端服務器。後端服務器解封ipip包並處理,以源地址虛擬IP、目的地址客戶端IP直接回復給客戶端。 對比與推薦:
  1)從對後端服務器的要求來看,LVS-NAT僅僅要求後端服務器網關指向負載均衡器的內網地址,無任何其他要求;LVS-DR模式要求後端服務器禁用對虛擬IP的ARP響應,後端服務器網關不指向負載均衡器;LVS-Tun要求後端服務支持ipip解包,部分操作系統不支持。   2)從吞吐量上來看,LVS-DR最高,LVS-NAT最低。   3)從配置簡便性來看,LVS-NAT最低,LVS-DR和LVS-Tun較為復雜。   推薦在應用中使用LVS-DR模式,也是目前雲微架構中應用最多的4層開源負載均衡轉發策略。 使用場景:   單個LVS集群:     1)使用協議為vrrp協議進行組播通信,使用前建議關閉,否則則會出現腦裂現象。     2)對後端健康檢查可以使用TCP Connect或者HTTP GET,在網站類應用負載均衡方案中,推薦使用HTTP GET,可以進行應用層檢查,防止出現端口存在但無法提供業務的情況。Keepalived配置文件中digest的獲取,使用該軟件自帶的genhash工具,genhash --help     3)重要參數:     LVS轉發行為重要參數
:expire_nodest_conn expire_quiescent_template     LVS同步狀態重要參數:sync_threshold     4)LVS-DR模式的核心提示優化:       - LVS-DR模式,因後端服務器上同樣配置了虛擬IP,如果在客戶端進行ARP請求的時候,後端服務器以自身的MAC地址進行了回復,則起不到負載均衡的效果,此時客戶端直接連接到了某臺後端服務器上。       - 後端服務器的虛擬IP必須綁定到lo:0上,同時指定子網掩碼是255.255.255.255,否則ARP禁用會出現異常。       - 持久連接的問題。持久連接使同一個客戶端在超時時間內(ipvsadm -p 參數指定,Keepalived中的persistence_timeout指令)會持續地連接到同一臺後端服務器,這個是 4層上的持久連接。來自客戶端的每個新的連接會重置該超時時間。       - Keepalived對後端服務器的健康檢查,推薦使用應用層檢查方式,另外可以配置Keepalived使用管理員自定義的腳本進行健康檢查(MISC CHECK指令)。       - 負載均衡器之間使用vrrp協議進行高可用設置時,禁用iptables或firewalld或者打開對vrrp協議的支持。       - LVS集群中的負載均衡器,推薦使用16GB及以上內存,同時采用多隊列網卡提高網卡吞吐量減少處理延時。       - LVS集群中的後端服務器,根據IO密集型和CPU密集型2類,可以分別使用RAID10、SSD及高頻多核CPU來優化。   多組LVS設定和註意事項:     1)虛擬路由器的ID,在相同組的LVS集群裏面,必須設置為一致;不同組LVS集群裏面必須不同。      2)優先級,對應state為MASTER的設置值必須比對應的state為BACKUP的設置值高。      3)虛擬IP地址,不同組LVS集群不同      4)同一組LVS裏面的認證的密鑰必須相同,不同組建議采用不同值。     在運維業務中,曾經發生過因新上的LVS集群采用了和原LVS集群裏面虛擬路由器相同ID並且處於同一個網段導致原業務出現故障的問題。   可用性監控:     1)LVS可用性監控方面:通常是對LVS的虛擬IP提供的服務進行監控,同時對所有後端服務器進行可用性監控。應為LVS可以對後端服務器進行健康檢查,那麽後端服務器的不可用雖然會被LVS從服務器吃中剔除不影響客戶端,但這個情況應該被系統管理員所獲知,以便進行根本原因分析,並且評估其他後端服務器的壓力情況。     2)在監控層次方面:盡量采用應用層檢查的方式,如Nagios自帶的check_http插件,Zabbix的Web Scenarios    LVS排錯步驟推薦:     1)ping負載均衡器的真實IP和虛擬IP。判斷網絡連通性.     2)在負載均衡器上,檢查負載君合器和後端服務器的狀態     3)如LVS集群中有多臺後端服務器,分別綁定hosts進行測試每一臺後端服務器,確保服務正常。     4)檢查後端服務器的Arp設置是否有效     5)檢查後端服務器上的虛擬IP綁定是否成功。     6)主從負載均衡器切換故障時,需要首先在交換機上確認其學習到的虛擬IP的MAC地址是否被更新成了從的MAC地址。   

LVS(Linux Viretual Server) 負載均衡器 + 後端服務器