LVS原理詳解

LVS(Linux Virtual Server),Linux的虛擬服務器。

LVS集羣採用三層結構:

a.負載調度器(load balancer),主要負責將客戶的請求發送到一組服務器上,而客戶認爲服務是來自一個IP地址(我們稱之爲虛擬IP地址)。

b.服務器池(server pool),是一組真正處理客戶請求的服務器,常見的有WEB、MAIL、DNS和FTP等。

c.共享存儲(shared storage),爲服務器池提供一個共享的存儲區,使得地址池擁有相同的內容,提供相同的服務。

•運行模式
NAT(Network Address Translation)模式

IP TUNNEL(IP隧道)模式

Direct Routing(直接路由模式)

•模式詳解:

NAT用法本來是因爲網絡IP地址不足而把內部保留IP地址通過映射轉換成公網地址的一種上網方式(原地址NAT)。如果把NAT的過程稍微變化,就可以成爲負載均衡的一種方式。原理其實就是把從客戶端發來的IP包的IP頭目的地址在DR上換成其中一臺REAL SERVER的IP地址併發至此REAL SERVER,而REAL SERVER則在處理完成後把數據經過DR主機發回給客戶端,DR在這個時候再把數據包的原IP地址改爲DR接口上的IP地址即可。期間,無論是進來的流 量,還是出去的流量,都必須經過DR。


IP TUNNEL(IP隧道)模式則類似於VPN的方式,使用網絡分層的原理, 在從客戶端發來的數據包的基礎上,封裝一個新的IP頭標記(不完整的IP頭,只有目的IP部)發給REAL SERVER,REAL SERVER收到後,先把DR發過來的數據包的頭給解開,還原其數據包原樣,處理後,直接返回給客戶端,而不需要再經過DR。需要注意的是,由於REAL SERVER需要對DR發過來的數據包進行還原,也就是說必須支持IP TUNNEL協議。所以,在REAL SERVER的內核中,必須編譯支持IP TUNNEL這個選項。


Direct Routing直接路由模式比較特別,很難說和什麼方面相似,前2種模式基本上都是工作在網絡層上(三層),而直接路由模式則應該是工作在數據鏈路層上(二層)。其原理 爲,DR和REAL SERVER都使用同一個IP對外服務。但只有DR對ARP請求進行響應,所有REAL SERVER對本身這個IP的ARP請求保持靜默。也就是說,網關會把對這個服務IP的請求全部定向給DR,而DR收到數據包後根據調度算法,找出對應的 REAL SERVER,把目的MAC地址改爲REAL SERVER的MAC併發給這臺REAL SERVER。這時REAL SERVER收到這個數據包,則等於直接從客戶端收到這個數據包無異,處理後直接返回給客戶端。由於DR要對二層包頭進行改換,所以DR和REAL SERVER之間必須在一個廣播域。


•各運行模式優缺點

NAT模式
優:節省Internet地址
缺:進出流量都需經LVS,擴展性有限。

IP TUNNEL(IP隧道)模式
優:只負責請求分發,應答不經LVS。
缺:需要做Internet映射;服務器需支持IP Tunnel 協議。

Direct Routing(直接路由)模式
優:只負責請求分發,應答不經LVS。
缺:需要做Internet映射。

•調度算法

1.輪詢調度(Round-RobinScheduling)

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


2.加權輪詢調度(WeightedRound-RobinScheduling)

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


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

4.加權最小連接調度(WeightedLeast-ConnectionScheduling)

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


5.基於局部性的最少鏈接(Locality-BasedLeastConnectionsScheduling)

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


6.帶複製的基於局部性最少鏈接(Locality-BasedLeastConnectionswithReplicationScheduling)

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


7.目標地址散列調度(DestinationHashingScheduling)

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


8.源地址散列調度(SourceHashingScheduling)

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


•應用場景




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