lvs工作模式和工作原理

一、lVS基本介紹

LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務器。也是國人章文嵩博士發起的一個開源項目,現在LVS已經是Linux內核標準的一部分。利用LVS技術可以實現高性能,高可壓縮的網絡服務,例如www服務,FTP服務,MAIL服務等。

二、LVS的體系架構

使用LVS架設的服務器集羣系統有三個部分組成:最前端的負載均衡層(Loader Balancer),中間的服務器羣組層,用Server Array 表示,最底層的數據共享存儲層,用Shared Storage表示。在用戶看來所有的應用都是透明的,用戶只是在使用一個虛擬服務器提供的高性能服務。

1、LVS的體系架構如圖:

image.png

2、LVS的各個層次的詳細介紹

Load Balancer層:位於整個集羣系統的最前端,有一臺或者多臺負載調度器(Director Server)組成,LVS模塊就安裝在Director Server 上,而Director 的主要作用類似於一個路由器,它含有完成LVS功能所設定的路由表,通過這些路由表把用戶的請求分發給Server Array層的應用服務器上。同時,在Director Server上還要安裝對Real Server服務的監控模塊Ldirectord,此模塊用於監測各個Real Server服務的健康狀況。在Real Server不可用時把它從LVS路由表中剔除,恢復時加入。

Server Array層:由一組實際運行應用服務的機器組成,Real Server可以是WEB服務器、MAIL服務器、FTP服務器、DNS服務器、時評服務器中的一個或多個,每個Real Server之間通過高速的LAN或分佈在各地的wan相連接。在實際的應用中,Director Server也可以同時兼任Real Server的角色。

Shared Storage層:是爲所有Real Server提供共享存儲空間和內容一致性的存儲區域,在物理上,一般有磁盤陣列設備組成,爲了提供內容的一致性,一般可以通過NFS網絡文件系統共享數據,但是NFS在繁忙的業務系統中,性能並不是很好,此時可以採用集羣文件系統。

從整個LVS結構可以看出,Director Server是整個LVS的核心,對於Real Server,可以是所有的系統平臺,Linux、windows、Solaris、AIX、BSD系列都能很好的支持。


三、LVS集羣

1、十種調度算法

(1)靜態

  • rr  輪循調度 (Round-Robin Scheduling)

  • wrr 加權輪循調度 (Weighted Round-Robin Scheduling)

  • sh   源地址散列調度 (Source Hashing Scheduling)

  • dh  目的地址散列調度 (Destination Hashing Scheduling)

(2)動態

  • lc  最小連接調度  (Least-Connection Scheduling)

  • wlc  加權最小連接調度  (Weighted Least-Connection Scheduling)

  • sed 最短預期延時調度  (Shortest Expected Delay Scheduling)

  • nq  不排隊調度  (Never Queue Scheduling)

  • lblc 基於局部性的最少連接調度  (Locality-Based Least Connections Scheduling)

  • lblcr  帶複製的基於局部性的最少連接調度  (Locality-Based Least Connections with Replication Scheduling)

2、三種IP負載均衡技術

(1)IPVS/NAT

  網絡結構圖:

image.png

負載均衡內核空間原理圖

image.png

IPVS/NAT模式的基本原理

首先CIP發送請求package給VIP,VIP收到package後,會根據LVS設置的LB算法選擇一個合適的RS?然後把package的目標IP修改爲RIP,RIP收到這個package後判斷目標ip爲自己,就處理這個package,處理完後把這個包發送給LVS VIP,LVS 收到這個package 後把sorce ip改成VIP的IP,dst ip改成 CIP,然後發給CIP。其中的轉換我們可以這樣理解:所有發送到VIP的數據包全部轉換爲RIP的地址以及對應端口。IPVS/NAT模式優缺點

      優點:

  • 容易配置,容易理解,容易管理的工作模式

  • 節省外網IP資源,LVS-NAT工作方式將系統架構封裝在局域網中,只需要LVS有一個外網地址或外網地址映射就可實現訪問

  • 系統架構相對封閉,內網環境下防火牆的設置要求不會太高,容易進行物理服務器的運維

  • LVS/NAT工作模式下的RS服務器可以是任何操作系統,只要支持TCP/IP協議即可

    缺點:

  • LVS-NAT中,負載均衡調度器作爲轉發點,當RS服務器數量變多時,調度器將會負載,轉發點也是瓶頸點

(2)IPVS/DR

網絡結構圖

image.png

IPVS/DR模式的基本原理

LVS節點接收到請求報文後,會改寫報文的數據鏈路層格式。將VIP MAC寫成RIP的Mac,但是網絡層和傳輸層報文不會改寫,然後重新回發給交換機。這裏就涉及一個問題,現在RIP和 IP的對應關係的錯誤的,這個數據報文到了交換機後,由於這種錯位的關係,是不能進行三層交換的,只能進行二層交換(一旦進行IP交換,數據報文的驗證就會出錯,被丟棄)。所以LVS-DR方式要求Real Server和LVS節點必須在同一個局域網內,或者這樣說更確切:LVS節點需要找到一個二層鏈路,將改寫了Mac地址的報文發送給Real Server,而不能進行三層交換的校驗。

簡單來說就是CIP發送一個PV請求給VIP,VIP收到這個請求後會跟LVS設置的LB算法選擇一個LB比較合理的realserver,然後將此請求的package的MAC地址修改爲realserver的MAC地址;VIP會把這個包廣播到當前這個LAN裏面,所以,要提前保證VIP和所有的realserver在同一個網段

IPVS/DR 模式的優缺點

      優點

  • 解決了LVS-NAT工作模式中的轉發瓶頸問題,能夠支撐規模更大的負載均衡場

  • 比較耗費網外IP資源,機房的外網IP資源都是有限的,如果在正式生產環境中確實存在這個問題,可以採用LVS-NAT和LVS-DR混合使用的方式來緩解

    缺點

  • 配置工作較LVS-NAT方式稍微麻煩一點,您至少需要了解LVS-DR模式的基本工作方式才能更好的指導自己進行LVS-DR模式的配置和運行過程中問題的解決

  • 由於LVS-DR模式的報文改寫規則,導致LVS節點和Real Server節點必須在一個網段,因爲二層交換是沒法跨子網的。但是這個問題針對大多數系統架構方案來說,實際上並沒有本質限制

(3)IPVS/TUN

首先這裏需要理解以下關於IP隧道的概念

將一個完整的IP報文封裝成另一個新的IP報文的數據部分,並通過路由器傳送到指定的地點。在這個過程中路由器並不在意被封裝的原始協議的內容。到達目的地點後,由目的地方依靠自己的計算能力和對IP隧道協議的支持,打開封裝協議,取得原始協議。如圖:

image.png

其實數據轉發原理和DR是一樣的,不過這個我個人認爲主要是位於不同位置(不同機房);LB是通過隧道進行了信息傳輸,雖然增加了負載,可是因爲地理位置不同的優勢,還是可以參考的一種方案;
優點

  • 負載均衡器只負責將請求包分發給物理服務器,而物理服務器將應答包直接發給用戶。所以,負載均衡器能處理很巨大的請求量,這種方式,一臺負載均衡能爲超過100臺的物理服務器服務,負載均衡器不再是系統的瓶頸。使用VS-TUN方式,如果你的負載均衡器擁有100M的全雙工網卡的話,就能使得整個Virtual Server能達到1G的吞吐量。

缺點

  • 這種方式需要所有的服務器支持"IP Tunneling"(IP Encapsulation)協議;


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