Linux負載均衡--LVS

介紹:
LVS是Linux Virtual Server的簡稱,即Linux虛擬服務器。它是基於TCP/IP的負載均衡技術,轉發效率高,具有處理百萬計併發連接請求的能力。
LVS通過IPVS模塊實現。IPVS模塊安裝在LVS集羣作爲負載均衡的主節點上,虛擬出一個IP地址和端口對外提供服務。用戶通過訪問這個虛擬服務(VS),請求由負載均衡器(LB)分發到後端真實服務器(RS)中,由RS實際處理用戶的請求並返回響應。
如下圖所示:
Linux負載均衡--LVS
IPVS三種轉發模式:
根據負載均衡器轉發客戶端請求以及RS返回響應機制的不同,將IPVS的轉發模式分爲三種:NAT,DR,FULLNAT。
NAT模式(Network Address Translation)
請求包和響應包都需要經過LB處理。當客戶端的請求到達虛擬服務 後,LB會對請求包做目的地址轉換(DNAT),將請求包的目的IP改寫爲RS的IP。當收到RS的響應後,LB會對響應包做源地址轉換(SNAT),將響應包的源IP改寫爲LB的IP。
NAT模式的特點:
1.LB會修改數據包的地址
2.對於請求包,會進行DNAT;對於響應包,會進行SNAT。
3.LB會透傳客戶端IP到RS(DR模式也會透傳)
4.雖然LB在轉發過程中做了NAT轉換,但是因爲只是做了部分地址轉發,所以RS收到的請求包裏是能看到客戶端IP的。
5.需要將RS的默認網關地址配置爲LB的浮動IP地址。
6.LB和RS須位於同一個子網,並且客戶端不能和LB/RS位於同一子網。
執行過程如下圖所示:
Linux負載均衡--LVS

DR模式(Direct Routing)
客戶端的請求包到達負載均衡器的虛擬服務IP端口後,負載均衡器不會改寫請求包的IP和端口,但是會改寫請求包的MAC地址爲後端RS的MAC地址,然後將數據包轉發;真實服務器處理請求後,響應包直接回給客戶端,不再經過負載均衡器。所以DR模式的轉發效率是最高的,特別適合下行流量較大的業務場景,比如請求視頻等大文件。
DR模式的特點:
1.數據包在LB轉發過程中,源/目的IP端口都不會變化。
2.LB只是將數據包的MAC地址改寫爲RS的MAC地址,然後轉發給相應的RS。
3.每臺RS上都必須在環回網卡上綁定LB的虛擬服務IP,因爲LB轉發時並不會改寫數據包的目的IP,所以RS收到的數據包的目的IP仍是LB的虛擬服務IP。爲了保證RS能夠正確處理該數據包,而不是丟棄,必須在RS的環回網卡上綁定LB的虛擬服務IP。這樣RS會認爲這個虛擬服務IP是自己的IP,自己是能夠處理這個數據包的。否則RS會直接丟棄該數據包。
4.RS上的業務進程必須監聽在環回網卡的虛擬服務IP上,且端口必須和LB上的虛擬服務端口一致。因爲LB不會改寫數據包的目的端口,所以RS服務的監聽端口必須和虛擬服務端口一致,否則RS會直接拒絕該數據包。
5.RS處理完請求後,響應直接回給客戶端,不再經過LB。
6.LB和RS須位於同一個子網。
如下圖所示:
Linux負載均衡--LVS

FULLNAT模式
FULLNAT模式下,LB會對請求包和響應包都做SNAT+DNAT。
FULLNAT模式的特點:
1.LB完全作爲一個代理服務器,FULLNAT下,客戶端感知不到RS,RS也感知不到客戶端,它們都只能看到LB。此種模式和七層負載均衡有點相似,只不過不會去解析應用層協議,而是在TCP層將消息轉發。
2.LB和RS對於組網結構沒有要求,不同於NAT和DR要求LB和RS位於一個子網,FULLNAT對於組網結構沒有要求。只需要保證客戶端和LB、LB和RS之間網絡互通即可。
流程如下圖所示:
Linux負載均衡--LVS
IPVS支持的調度算法
對於後端的RS集羣,LB是如何決策應該把消息調度到哪個RS節點呢?這是由負載均衡調度算法決定的。IPVS常用的調度算法有:

輪詢(Round Robin)
  LB認爲集羣內每臺RS都是相同的,會輪流進行調度分發。從數據統計上看,RR模式是調度最均衡的。

加權輪詢(Weighted Round Robin)
  LB會根據RS上配置的權重,將消息按權重比分發到不同的RS上。可以給性能更好的RS節點配置更高的權重,提升集羣整體的性能。

最小連接數(Least Connections)
  LB會根據和集羣內每臺RS的連接數統計情況,將消息調度到連接數最少的RS節點上。在長連接業務場景下,LC算法對於系統整體負載均衡的情況較好;但是在短連接業務場景下,由於連接會迅速釋放,可能會導致消息每次都調度到同一個RS節點,造成嚴重的負載不均衡。

加權最小連接數(Weighted Least Connections)
  最小連接數算法的加權版~

地址哈希(Address Hash)
  LB上會保存一張哈希表,通過哈希映射將客戶端和RS節點關聯起來。

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