LVS和Nginx負載均衡調度算法
第1章 LVS的10種調度算法
1.1 靜態算法:
1.1.1 rr(round robin):輪詢調度算法:
輪詢調度算法的原理就是依次將用戶的訪問請求,平均的分配到每一臺web服務節點上,從1開始,到最後一臺服務器節點結束,然後在開始新一輪的循環,這種算法簡單,但是沒有考慮到每臺節點服務器的具體性能
1.1.2 wrr(weight):權重調度算法
由於每臺服務器的性能會高低不同,wrr將會根據管理員設定的權重值來分配訪問請求,權重值越大的,被分到的請求數也就越多,此種算法有效的解決了rr輪詢算法的缺點
1.1.3 sh(source hashing)源地址散列:
主要實現會話綁定
1.1.4 dh(destination hashing)目標地址散列,把同一個ip地址的請求,發送給同一個server
目標地址散列調度算法是針對目標ip地址的負載均衡,是一種靜態映射算法,把目標ip地址作為關鍵字,在靜態分配的hash表中找到對應的服務器,若該服務器可用並沒有超過負荷,則將請求發送到該服務器
1.2 動態調度算法:
1.2.1 LC(least connection)最少連接:
當有用戶發起訪問請求時,lc算法將會把請求分配到集群中連接數最少的服務器上
1.2.2 wlc(weight least connection scheduling)加權最少連接:
加權最少連接算法是最少連接的升級版,各個服務器用想應的權重值表示其處理連接的性能,默認權重值為1,加權最少連接調度在調度訪問請求時,會盡量使服務器的已建立連接和權重值成比例
也就是活動的連接數除以權重,誰小,挑誰
1.2.3 sed(shortest expected)最短延遲調度:
在wlc基礎上進行改進,不在考慮非活動狀態,把當前處於活動狀態的數目+1,數目最小的,則接受下次訪問請求,+1的目的是為了考慮加權的時候,非活動鏈接過多,當權限過大,會導致非空閑的節點一直處於無連接狀態
1.2.4 nq(nerver queue)永不排隊 ,改進的sed
無需隊列,如果有rs節點的連接數為0,那麽直接將訪問請求分配過去,不需要進行sed運算
1.2.5 LBLC(locality based leastconnection)基於局部性的最少連接
此算法是根據請求報文的目標ip地址的負載均衡調度,目前主要用於cache集群系統,因為cache集群中的客戶請求報文的目標ip地址是變化的,這裏假設任何後端服務器都可以處理任何請求,算法的設計目標在服務器的負載劇本平衡的請求下,將相同的目標ip地址的請求調度到同一個服務器,來提高整個web服務的訪問局部性和主存cache的命中率,從而調整整個集群系統的處理能力
基於局部性的最少連接調度算法根據請求的目標ip地址找出該目標地址最近使用的rs,若該rs可用,將發送請求,若該服務器不可用,則用最少連接的原則選出一臺可用服務器來進行匹配
1.2.6 LBLCR(Locality-Based Least Connections withReplication)帶復制的基於局部性最少連接
此種算法是針對目標ip地址的負載均衡,該算法根據請求的目標地址ip找出該地址對應的服務組,按最少連接的原則從服務組中選出一臺服務器,若服務器沒有超載,則發送請求到該服務器,若該服務器超載或者不可用,則按照最小連接的原則從這個集群中選出一臺服務器,將該服務器添加到服務組中,在將請求發送到該服務器,同時當該服務器組中有一段時間沒有被修改,將最忙的服務器從組中剔除,以降低復制的程度
第2章 Nginx的五種調度算法
2.1 rr輪詢算法:
依次將用戶的訪問請求,平均的分配到後端的web集群中每個節點,此種算法不會考慮每個節點的性能,所以比較適用於所有節點的性能一致的情況
2.2 wrr權重算法:
根據設定的權重值,權重值越大,被配到的請求次數也就越多,有效的解決了rr算法的缺點
2.3 ip_hash算法:
根據用戶訪問的真實ip生成一個hash表,此後,同一個ip地址的訪問請求都將會分配到這個節點上,可以解決session會話共享的問題
2.4 url_hash:
根據用戶訪問的url的hash結果,使每個url定向到同一個後端服務器上
2.5 fair:
fair是更加智能的負載均衡算法,此種算法可以根據頁面大小的和加載時間長短智能的進行負載均衡,也就是根據後端節點的響應時間來分配請求,響應時間短的則優先分配,Nginx本身不支持fair,如果需要則必須下載nginx的upstream_fair模塊
LVS和Nginx負載均衡調度算法