負載均衡調度算法(LVS)


上篇介紹LVS三種實現架構,LVS作為負載均衡軟件,依靠調度器LB(Load Balancer)把客戶端發來的請求按照一定規則分發給后端的真實服務器RS(Real Server),這個規則就是預先設定好的調度算法。

在LVS中支持的調度算法主要有以下八種。

 

1.輪詢調度(Round-Robin,RR)

最簡單的調度算法,LB按照順序將請求依次轉發給后端的RS,並沒有考量后端RS的狀態(處理速度以及響應時間)。大部分情況下,RS的性能狀態都是各不一致的,這種算法顯然無法滿足合理利用資源的要求。

 

2.帶權重的輪詢調度(Weighted Round-Robin,WRR)

在輪詢算法的基礎上加上權重設置,權重越高的RS被分配到的請求越多。適用於按照服務器性能高低,配置不同的權重,以達到合理的資源利用。

 

3.最小連接調度(Least-Connection, LC)

把新的請求分配給連接數最少的RS。連接數少說明服務器空閑。

 

4.帶權重的最小連接調度(Weight Least-Connection, WLC)

在最小連接算法的基礎上加上權重設置,這樣可以人為地控制請求分配。

 

5.基於局部性的最小連接調度(Locality-Based Least Connection, LBLC)

針對請求報文目標IP地址的負載均衡調度。目前主要用於Cache集群系統,因為在Cache集群中客戶請求報文的目標IP地址是變化的。

算法的設計目標是在服務器的負載基本平衡情況下,將相同目標IP地址的請求調度到同一台服務器,來提高各台服務器的訪問局部性和主存Cache命中率,提升整個集群系統的處理能力。

LBLC調度算法先根據請求的目標IP地址找出該目標IP地址最近使用的服務器,若該服務器是可用的且沒有超載,將請求發送到該服務器;若服務器不存在,或者該服務器超載且有服務器處於其一半的工作負載,則用“最小連接”的原則選出一個可用的服務器,將請求發送到該服務器。

 

6.帶復制的基於局部性最小連接調度(Locality-Based Least Connections with Replication, LBLCR)

也是針對請求報文目標IP地址的負載均衡調度,與LBLC算法不同之處:LBLC維護一個目標IP到一台服務器的映射,而LBLCR則需要維護一個目標IP到一組服務器的映射。

LBLCR調度算法先根據請求的目標IP地址找到對應的服務器組,按“最小連接”原則從該服務器組中選出一台服務器,若服務器沒有超載,則將請求發送到該服務器;若服務器超載,則按“最小連接”原則從整個集群中選出一台服務器,將該服務器加入到服務組中,將請求發送給這台服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除,以降低復制的程度。

 

7.目標地址散列調度(Destination Hashing, DH)

也是針對請求報文目標IP地址的負載均衡調度,但它是一種靜態映射算法,通過一個散列(hash)函數將一個目標IP地址映射到一台服務器。DH算法先根據請求的目標IP地址,作為散列鍵(hash key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的且為超載,將請求發送到該服務器,否則返回空。

 

8.源地址散列調度(Source Hashing, SH)

該算法正好與DH調度算法相反,它根據請求的源IP地址,作為散列鍵從靜態分配的散列表找出對應的服務器,若該服務器是可用的且未超載,將請求發送到該服務器,否則返回空。算法流程與目標地址散列調度算法基本相似,只不過將請求的目標IP地址換成請求的源IP地址。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM