LVS負載均衡模型與工作原理

1.LVS項目簡介

LVSLinux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集羣系統。本項目在19985月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。章文嵩博士目前工作於阿里集團,主要從事集羣技術、操作系統、對象存儲與數據庫的研究。


2.LVS是如何工作的

Linux Virtual Server的主要是在負載均衡器上實現的,負載均衡器是一臺加了LVS Patch的內核的Linux系統。LVS Patch可以通過重新編譯內核的方法加入內核,也可以當作一個動態的模塊插入現在的內核中。

負載均衡器可以運行在以下三種模式下中的一種或幾種: 1)Virtual Server via NAT(VS-NAT):用地址翻譯實現虛擬服務器;2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技術實現虛擬服務器;3)Virtual Server via Direct Routing(VS-DR):用直接路由技術實現虛擬服務器。


a.Virtual server via NAT(VS-NAT)

 

Virtual Server via NAT方法的最大優點是集羣中的物理服務器可以使用任何支持TCP/IP操作系統,物理服務器可以分配Internet的保留私有地址,只有負載均衡器需要一個合法的IP地址。

 

這種實現方法的最大的缺點是擴展性有限。當服務器節點(普通PC服務器)數據增長到20個或更多時,負載均衡器將成爲整個系統的瓶頸,因爲所有的請求包和應答包都需要經過負載均衡器再生。假使TCP包的平均長度是536字節的話,平均包再生延遲時間大約爲60us(在Pentium處理器上計算的,採用更快的處理器將使得這個延遲時間變短),負載均衡器的最大容許能力爲8.93M/s,假定每臺物理服務器的平臺容許能力爲400K/s來計算,負責均衡器能爲22臺物理服務器計算。

 

Virtual Server via NAT能夠滿足許多服務器的服務性能需求。即使是是負載均衡器成爲整個系統的瓶頸,如果是這樣也有兩種方法來解決它。一種是混合處理,另一種是採用Virtual Server via IP tunneling或Virtual Server via direct routing。如果採用混合處理的方法,將需要許多同屬單一的RR DNS域。你採用Virtual Server via IP tunneling或Virtual Server via direct routing以獲得更好的可擴展性。也可以嵌套使用負載均衡器,在最前端的是VS-Tunneling或VS-Drouting的負載均衡器,然後後面採用VS-NAT的負載均衡器。以下是NAT模式下IP數據包的調度過程。

wKioL1TaAwigXm8lAAGvL2VRo18237.jpg

 

1.客戶端請求VIP(也可以說是CIP請求VIP);

2.Director Server 收到用戶的請求後,發現源地址爲CIP請求的目標地址爲VIP,那麼DorectorServer會認爲用戶請求的是一個集羣服務,那麼Director Server 會根據此前設定好的調度算法將用戶請求負載給某臺Real Server ,假如說此時Director Server 根據調度算法的結果會將請求分攤到Real Server 1上去,那麼Director Server會將用戶的請求報文中的目標地址,從原來的VIP改爲Real Server 1IP,然後再轉發給Real Server 1;

3.此時Real Server 1收到一個源地址爲CIP目標地址爲自己的請求,那麼Real Server1處理好請求後會將一個源地址爲自己目標地址爲CIP的數據包通過Director Server 發出去;

4.Driector Server收到一個源地址爲RealServer 1 IP 目標地址爲CIP的數據包,此時Driector Server 會將源地址修改爲VIP,然後再將數據包發送給用戶。


b.Virtual server via IP tunneling(VS-TUN)

 

採用VS-NAT方式,請求與應答包都需要經過負載均衡器,那麼當服務器節點增長到20個或更多時,這個負載均衡器就可能成爲新的瓶頸。我們發現,許多Internet服務(例如WEB服務器)的請求包很短小,而應答包通常很大。

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

IP tunneling(IP隧道)能夠用於架構一個高性能的virtual server,非常適合構建virtual proxy server,因爲當代理服務器收到了請求,能夠讓最終用戶直接與服務器聯繫。

但是,這種方式需要所有的服務器支持IP Tunneling(IP Encapsulation)協議,目前只在linux上實現。



 

c.Virtual Server via Direct Routing(VS-DR)

 

就象VS-TUN一下,在VS-DR方式下,負載均衡器也只是分發請求,應答包通過單獨的路由方法返回給客戶端。這種方式能夠大大提高Virtual Server的可擴展性。與VS-TUN相比,VS-DR這種實現方式不需要隧道結構,但它要求負載均衡器的網卡必須與物理網卡在一個物理段上。

VS-DR模式,原理說明:Director接收用戶的請求,然後根據負載均衡算法選取一臺realserver,將包轉發過去,最後由realserver直接回復給用戶。

特點:

集羣節點和director必須在一個物理網絡內
RIP可以是用公網地址或私有地址
director僅處理入站請求
集羣節點網關不指向director,故出站不經過director
不支持端口映射
大多數操作系統可以作爲realserver,要支持arp廣播
director服務器的壓力比較小

3.LVS的八大負載調度算法

針對不同的網絡服務需求和服務器配置,IPVS調度器實現瞭如下八種負載調度算法:

  1. 輪叫(Round Robin
       
    調度器通過"輪叫"調度算法將外部請求按順序輪流分配到集羣中的真實服務器上,它均等地對待每一臺服務器,而不管服務器上實際的連接數和系統負載。

  2. 加權輪叫(Weighted Round     Robin
        
    調度器通過"加權輪叫"調度算法根據真實服務器的不同處理能力來調度訪問請求。這樣可以保證處理能力強的服務器處理更多的訪問流量。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。

  3. 最少鏈接(Least     Connections
        
    調度器通過"最少連接"調度算法動態地將網絡請求調度到已建立的鏈接數最少的服務器上。如果集羣系統的真實服務器具有相近的系統性能,採用"最小連接"調度算法可以較好地均衡負載。

  4. 加權最少鏈接(Weighted Least     Connections
        
    在集羣系統中的服務器性能差異較大的情況下,調度器採用"加權最少鏈接"調度算法優化負載均衡性能,具有較高權值的服務器將承受較大比例的活動連接負載。調度器可以自動問詢真實服務器的負載情況,並動態地調整其權值。

  5. 基於局部性的最少鏈接(Locality-Based Least Connections
             
    "基於局部性的最少鏈接調度算法是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。該算法根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器 是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於一半的工作負載,則用"最少鏈接"的原則選出一個可用的服務 器,將請求發送到該服務器。

  6. 帶複製的基於局部性最少鏈接(Locality-Based Least Connections with Replication
        
    "帶複製的基於局部性最少鏈接"調度算法也是針對目標IP地址的負載均衡,目前主要用於Cache集羣系統。它與LBLC算法的不同之處是它要維護從一個 目標IP地址到一組服務器的映射,而LBLC算法維護從一個目標IP地址到一臺服務器的映射。該算法根據請求的目標IP地址找出該目標IP地址對應的服務 器組,按"最小連接"原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器,若服務器超載;則按"最小連接"原則從這個集羣中選出一 臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低複製的 程度。

  7. 目標地址散列(Destination     Hashing
        
    "目標地址散列"調度算法根據請求的目標IP地址,作爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。

  8. 源地址散列(Source Hashing
        
    "源地址散列"調度算法根據請求的源IP地址,作爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。




相關名詞解釋: 

DSDirector Server,前端的LVS Server

RSReal Server;後端的WebServer

CIP:客戶端ip地址

VIP:調度器的虛擬地址一般是外網的地址。

DIP:調度器內部網絡地址。

RIP:真實服務器地址。



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