Haproxy支持的調度算法

目前haproxy支持的負載均衡算法有如下8

1.roundrobin

動態加權輪詢算法,支持權重的運行時調整及慢啓動機制;最大支持4095個後端主機;在服務器的處理時間平均分配的情況下這是最流暢和公平的算法。該算法是動態的,對於實例啓動慢的服務器權重會在運行中調整。

2.leastconn

最小連接數算法,連接數最少的服務器優先接收連接。建議用於長會話場景中使用,例如LDAP、SQL等協議,而不適合短會話協議。如HTTP.該算法是動態的,對於實例啓動慢的服務器權重會在運行中調整。

3.static-rr

靜態輪詢算法,不支持權重的運行時調整和慢啓動機制。每個服務器根據權重輪流使用,類似roundrobin。另外,它對服務器的數量沒有限制。

4source

源地址哈希算法,對請求源IP地址進行哈希;

取模法:將源地址hash計算後除以服務器總權重,服務器變動會影響全局調度效果;根據結果進行分配。只要服務器正常,同一個客戶端IP地址總是訪問同一個服務器。如果哈希的結果隨可用服務器數量而變化,那麼客戶端會定向到不同的服務器;該算法默認是靜態的,所以運行時修改服務器的權重是無效的,但是算法會根據“hash-type”的變化做調整。

該算法一般用於不能插入cookie的Tcp模式。它還可以用於廣域網上爲拒絕使用會話cookie的客戶端提供最有效的粘連;

一致性hash:服務器變動僅影響局部調度;動態調度;

5、uri

表示根據請求的URI左端(問號之前)或整個URI做hash進行哈希計算,並與服務器的總權重相除後根據結果派發至某挑選出的後端主機。只要服務器正常,以最大限度的提高緩存的命中率。

作用是能夠將對同一個uri的請求始終發往一個後端主機;適用於後端爲緩存服務器和反病毒代理的場景; 該算法默認是靜態的,所以運行時修改服務器的權重是無效的,但是算法會根據“hash-type”的變化做調整。該算法只能用於HTTP後端。

6url_param

在HTTP GET請求的查詢串中查找<param>中指定的URL參數的值做hash計算,並與服務器的總權重相除後派發至某挑選出的後端主機;基本上可以鎖定使用特製的URL到特定的負載均衡器節點的要求;

此算法常用來追蹤請求中的用戶標識,以確保來自同一個用戶的請求始終發往同一個後端主機;

該算法默認是靜態的,所以運行時修改服務器的權重是無效的,但是算法會根據“hash-type”的變化做調整。

7hdr(name)

對於每個http請求,此處由<name>指定的http首部會被取出;如果此首部沒有有效值,則用roundrobin代替;否則,對其值進行hash計算,並與服務器的總權重相除後派發至某挑選出的後端主機;

該算法默認是靜態的,所以運行時修改服務器的權重是無效的,但是算法會根據“hash-type”的變化做調整。

8rdp-cookiename

爲每個進來的TCP請求查詢並哈希RDPcookie<name>;

該機制用於退化的持久模式,可以使同一個用戶或者同一個會話ID總是發送給同一臺服務器。如果沒有cookie,則使用roundrobin算法代替;

該算法默認是靜態的,所以運行時修改服務器的權重是無效的,但是算法會根據“hash-type”的變化做調整。


————————————————————————————————————————————

hash-type算法類型:可作用於所有需要進行hash計算的算法中【可定義在defaults,listen,backend】,在balance 指令中選定與hash 有關的算法,都會受此影響。

hash-type <method> <function> <modifier>

   <method>:map-based/consistent    <function>:sdbm/djb2/wt6


默認採取的方法爲map-based
< method > 如下:

map-based:取模法,hash數據結構是靜態數組;該hash是靜態的,不支持在線調整權重,不支持慢啓動;

該算法調度平滑,後端服務器能夠均勻承受負載;缺點也是明顯的:當服務器的總權重發生變化時,即有服務器上線或下線,都會導致調度結果整體改變。如果想避免此種情況應採用consistent 方法;

consistent:一致性哈希,哈希的數據結構是“樹”;該hash是動態的,支持在線調整權重,支持慢啓動

每一個server 會在"樹"中出現多次, 在樹中查找hash key,並選擇最近的server;
該方法的優點在於,當服務器的總權重發生變化時,對調度結果影響是局部的,不會引起大的變動。所以十分適合緩存服務器;
缺點:該算法不夠平滑,很容易導致後端服務器負載不均衡。所以很有必要對服務器的權重以或者服務器ID進行調整;
爲保持均勻負載,應該保證所有服務器ID保持一致;


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