在內核中的鏈接調度算法上,IPVS已實現瞭如下十種調度算法算法
1.輪叫調度後端
2.加權輪叫調度緩存
3.最小鏈接調度服務器
4.加權最小鏈接調度session
5.基於局部性的最小連接負載均衡
6.帶複製的基於局部性最少連接ide
7.目標地址三列調度函數
8.源地址散列調度性能
9.最短預期延時調度spa
10.不排隊調度
LVS的調度方法分爲兩種,一種是靜態方法,一種是動態方法:
靜態方法:僅根據算法自己實現調度;實現起點公平,無論服務器當前處理多少請求,分配的數量一致;
動態方法:根據算法及後端RS當前的負載情況實現調度;無論之前分了多少,只看分配的結果是否是公平;
一,靜態調度算法(4種)
(1) rr : round robin :輪叫,輪詢
每一次把來自用戶的請求輪流分配給內部中的服務器,從1開始,直到N(內部服務器個數),而後從新開始循環。算法的優勢是其簡潔性,它無需記錄當前全部鏈接的狀態,因此它是一種無狀態調度。缺點:是不考慮每臺服務器的處理能力。
(2) wrr: weight round robin :加權輪詢(以權重之間的比例實如今各主機之間進行調度)
因爲每臺服務器的配置、安裝的業務應用等不一樣,其處理能力會不同。因此,咱們根據服務器的不一樣處理能力,給每一個服務器分配不一樣的權值,使其可以接受相應權值數的服務請求。
(3) sh : source hashing : 源地址hash實現會話綁定sessionaffinity
將同一客戶端的請求發給同一個real server,源地址散列調度算法正好與目標地址散列調度算法相反,它根據請求的源IP地址,做爲散列鍵(Hash Key)從靜態分配的散列表找出對應的服務器,若該服務器是可用的而且沒有超負荷,將請求發送到該服務器,不然返回空。它採用的散列函數與目標地址散列調度算法的相同。它的算法流程與目標地址散列調度算法的基本類似,除了將請求的目標IP地址換成請求的源IP地址。
(4) dh : destination hashing : 目標地址hash
將一樣的請求發送給同一個server,通常用於緩存服務器,簡單的說,LB集羣后面又加了一層,在LB與realserver之間加了一層緩存服務器,當一個客戶端請求一個頁面時,LB發給cache1,當第二個客戶端請求一樣的頁面時,LB仍是發給cache1,這就是咱們所說的,將一樣的請求發給同一個server,來提升緩存的命中率。
動態調度算法(6種):
(1) lc :leash-connection 最少鏈接
把新的鏈接請求分配到當前鏈接數最小的服務器,最小鏈接調度是一種動態調度短算法,它經過服務器當前所活躍的鏈接數來估計服務器的負載均衡,調度器須要記錄各個服務器已創建鏈接的數目,當一個請求被調度到某臺服務器,其鏈接數加1,當鏈接停止或超時,其鏈接數減一,在系統實現時,咱們也引入當服務器的權值爲0時,表示該服務器不可用而不被調度。此算法忽略了服務器的性能問題,有的服務器性能好,有的服務器性能差,經過加權重來區分性能,因此有了下面算法wlc。
簡單算法:active*256+inactive (誰的小,挑誰)
(2) wlc :加權最少鏈接
加權最小鏈接調度算法是最小鏈接調度的超集,各個服務器用相應的權值表示其處理性能。服務器的缺省權值爲1,系統管理員能夠動態地設置服務器的權限,加權最小鏈接調度在調度新鏈接時儘量使服務器的已創建鏈接數和其權值成比例。因爲服務器的性能不一樣,咱們給性能相對好的服務器,加大權重,即會接收到更多的請求。
簡單算法:(active*256+inactive)/weight(誰的小,挑誰)
(3) sed :最少指望延遲
說明:不考慮非活動鏈接,誰的權重大,咱們優先選擇權重大的服務器來接收請求,但會出現問題,就是權重比較大的服務器會很忙,但權重相對較小的服務器很閒,甚至會接收不到請求,因此便有了下面的算法nq。
基於wlc算法,簡單算法:(active+1)*256/weight (誰的小選誰)
(4) nq :never queue 永不排隊
說明:在上面咱們說明了,因爲某臺服務器的權重較小,比較空閒,甚至接收不到請求,而權重大的服務器會很忙,所此算法是sed改進,就是說無論你的權重多大都會被分配到請求。簡單說,無需隊列,若是有臺real server的鏈接數爲0就直接分配過去,不須要在進行sed運算。
(5) LBLC :基於局部性的最少鏈接
說明:基於局部性的最少鏈接算法是針對請求報文的目標IP地址的負載均衡調度,主要用於Cache集羣系統,由於Cache集羣中客戶請求報文的目標IP地址是變化的,這裏假設任何後端服務器均可以處理任何請求,算法的設計目標在服務器的負載基本平衡的狀況下,將相同的目標IP地址的請求調度到同一個臺服務器,來提升服務器的訪問局部性和主存Cache命中率,從而調整整個集羣系統的處理能力。
(6) LBLCR :基於局部性的帶複製功能的最少鏈接
說明:基於局部性的帶複製功能的最少鏈接調度算法也是針對目標IP地址的負載均衡,該算法根據請求的目標IP地址找出該目標IP地 址對應的服務器組,按「最小鏈接」原則從服務器組中選出一臺服務器,若服務器沒有超載,將請求發送到該服務器;若服務器超載,則按「最小鏈接」原則從這個集羣中選出一臺服務器,將該服務器加入到服務器組中,將請求發送到該服務器。同時,當該服務器組有一段時間沒有被修改,將最忙的服務器從服務器組中刪除, 以下降複製的程度。
注:LVS默認調度算法是 wlc 。