LVS負載均衡集羣架構介紹

爲什麼需要使用負載均衡呢?這是一個必較重要的問題
實際生產環境中某單臺服務器已不能負載日常用訪問壓力時,就需要使用負載均衡,把用戶的請求數據分擔到(儘可能平均分配)後端所有功能同等的集羣的節點上,同樣也是爲了解決單臺服務器故障問題,從而提高用戶的訪問體驗。

1、LVS的介紹
LVS(linux virtual server)LINUX虛擬服務器,是一個虛擬的服務器集羣系統,可以在linux和unix系統中運行,1985年開發研究的項目
http://www.linuxvirtualserver.org/zh/ 官方網站

IPVS(lvs)發展史
在linux2.2內核時,IPVS就已經以內核補丁的形式出現
從2.4。24版本以後IPVS已經成爲linux內核官方標準內核的一部分

LVS工作原理
LVS負載均衡調度技術是在linux內核中實現的,我們使用配置LVS時,不是直接配置內核中的IPVS,而是通過IPVS的管理工具IPVSADM來管理配置,LVS集羣負載均衡器接受所有入站客戶端的請求,並根據算法來決定由哪個集羣的節點來處理請求。
LVS相關術語介紹

虛擬IP地址(VIP)用於向客戶端提供服務的IP地址(配置於負載均衡器上)真實的IP地址(RIP)集羣中節點服務器的IP地址
負載均衡器IP地址(DIP) 負載均衡器的IP地址,物理網卡上的IP,用與同外網連接的地址
客戶端主機IP地址(CIP)終端請求用戶的主機IP地址

2、LVS負載均衡工作模式介紹
NAT網絡地址轉換模式(VS/NAT)
通過網絡地址轉換,調度器LB重寫請求報文的目標地址,根據算法將請求分配給後端的真實主機服務器,真實服務器響應處理報文後返回給調度器LB,經過LB的報文源地址被重寫,再返回給請求的客戶端用戶
這裏寫圖片描述
過程詳解:

1:客戶端請求CIP(10.10.0.1:80),目標的地址是VIP(1.1.1.1:80)
2:數據經過LB,目的地址將被LB改寫成後端服務器其中一個主機地址(RIP1192.168.1.1:80)
3:服務器接收到數據請求後返回應答信息(源地址:192.168.1.:80,目的地址:1.1.1.1:80,因此處的網關地址需指向LB)給LB
4:LB需將源數據地址改寫成VIP地址(1.1.1.1:80,但實際的源地址是RIP1的地址)
5:LB將數據返回給請求的客戶端用戶,完成整個流程的訪問
因此WEB訪問量很大的時候,LB就會有很大的負載壓力,一般支持10-20臺節點,但是這種模式支持IP和端口的轉換功能,即10.10.0.1:80----->1.1.1.1:80-------->192.168.1.1:8080

TUN隧道模式(VS/TUN)
LB將請求的報文通過IP隧道轉發給真實服務器,這樣LB只要需要處理請求入站報文,因此可提高訪問效率
這裏寫圖片描述

過程詳解:
1:客戶端發送請求數據包(源:CIP10.10.1.1:80,目的地址:VIP1.1.1.1:802:數據包到達LB後,LB將數據包重新封裝成另一個IP包(源目地址不變,增加一個IP頭),通過隧道轉發給真實服務器
3:真實服務器收到數據包後進行解包,數據包信息是(源:CIP 10.10.1.1:80,目的地址:VIP 1.1.1.1:80),最終發現目的地址不是自己(因此需要在服務器LO上綁定一個VIP地址),這樣纔會處理數據,返回處理數據
4:客戶端接收到返回的數據(源地址VIP 1.1.1.1:80,目的地址CIP 10.10.1.1:80),符合TCP/IP的原理,因此整個訪問過程完成

注:這時肯定有朋友發現這裏會有一個問題,每臺服務器上都綁定了一個相同VIP地址,用戶訪問時的目的地址也是VIP,當數據包達到路由器後經過轉發至內網,內網可能會產生多臺迴應數據包的機器,然後用戶收到的最快回應的內網機器發來的數據,這樣一來數據包也就沒有經過LB,就不是負載均衡了,所以需要做抑制ARP的功能,使所有真實服務器不再響應目的地址是VIP的請求,只要LB來響應請求,從而達到負載均衡。在實際生產環境中很少使用這種模式

DR模式(Direct Routing)直接路由模式
此模式是通過改寫請求報文的目標MAC地址,將請求發給真實服務器,而真實服務器將響應後的數據直接回應給請求的客戶端,此模式要求LB與真實服務器需要有一塊物理網卡都是連接在同一網段上
這裏寫圖片描述

過程詳解:
1:客戶端發出請求數據包(源CIP 10.10.1.1:80 目的 VIP1.1.1.1:80)
2:LB接收到數據包後,不轉換地址及端口,也不重新封裝,只是將數據幀中的目的地址的MAC地址改寫算法調度的真實機的MAC地址,將數據包轉發出去
3:真實機收到數據後,但是發現數據包中目的地址不是自己(所以事先也得在LO上綁定一個VIP地址,同時配置抑制ARP),這樣真實機做出響應直接回復客戶端
4:客戶端收到回覆的數據包(源VIP 1.1.1.1:80 目的CIP 10.10.1.1:80),完成整個訪問過程

注:LB只能改寫目的MAC地址,因此它不能改變請求報文的目的端口端口,LVS只支持unix和linux,但集羣節點服務器可以是win系統,此種模式配置相當麻煩

FULLNAT模式(淘寶開源)
這裏寫圖片描述
解決了上述三種的缺點,解決了真實服務器能跨越VLAN通訊,只需要連接到內網即可
入站時,目標IP更改爲真實服務器的IP,源IP更改爲內網的本地IP(一組內網IP)
出站時,目標IP更改爲客戶端的IP,源IP更換爲VIP

3、LVS調度算法介紹
LVS的調度算法決定了如何在集羣節點之間分配負載壓力(訪問請求)

調度算法:
rr輪循調度:將請求依次分配給集羣的節點,這種算法適用於各個節點處理能力基本相同的情況下
wrr加權輪循調度:根據節點的權重來分配,權重較高的優先分配
wlc加權最小連接數調度:按權重和連接數的數量來分配
lc最小連接數調度:按連接數的數量來分配

實際生產環境LVS調度算法選型
一般網絡服務,如HTTP、MAIL、MYSQL常用的調度算法有:rr、wlc、wrr

更多相關精彩內容請關注民工哥公衆號
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章