Haproxy 負載均衡算法介紹:

一、Haproxy配置介紹:

  • HaProxy配置(haproxy.cfg)中分爲五部分內容(五大組件),可以根據需要選擇進行配置。
  • 五大組件:global、defaults、frontend、backend、listen
  1、global:參數是進程級的,通常和操作系統(OS)相關。這些參數一般只設置一次,如果配置無誤,就不需要再次配置進行修改。
 2、defaults:配置默認參數的,這些參數可以被利用配置到frontend,backend,listen組件。
 3、frontend:接收請求的前端虛擬節點,Frontend可以根據規則直接指定具體使用後端的      backend(可動態選擇)。
 4、backend:後端服務集羣的配置,是真實的服務器,一個Backend對應一個或者多個實體服務器。
 5、listen:Frontend和Backend的組合體。

二、Haproxy負載均衡算法介紹:

  • balance roundrobin    # 輪詢,軟負載均衡基本都具備這種算法
  • balance static-rr     # 根據權重,建議使用
  • balance leastconn     # 最少連接者先處理,建議使用
  • balance source      # 根據請求源IP,建議使用
  • balance uri        # 根據請求的URI
  • balance url_param     # 根據請求的URl參數'balance url_param' requires an URL parameter name
  • balance hdr(name)     # 根據HTTP請求頭來鎖定每一次HTTP請求
  • balance rdp-cookie(name) # 根據據cookie(name)來鎖定並哈希每一次TCP請求


三、用戶Session保持、共享:

由於用戶請求經過Haproxy處理轉發到不同服務器之後,可能導致Session會話不同步的問題,若想實現會話共享或保持,可採用如下3種方式:

1、基於IP地址:

  • 配置:balance source

  • 實現原理:類似Nginx的IP_Hash,將用戶IP經過Hash對比判斷之後,將請求轉發到後端服務器。

2、基於Cookie識別:


  • 配置:cookie  SESSION_COOKIE insert indirect nocache

  • 實現原理:向Web服務器端發送給客戶端的Cookie中插入(或添加加前綴)haproxy定義的後端的服務器COOKIE ID。

3、基於Session識別:


  • 配置:appsession JSESSIONID len 64 timeout 5h request-learn

  • 實現原理:Haproxy將後端服務器產生的session和後端服務器標識存在haproxy中的一張表裏。客戶端請求時先查詢這張表。


參考文章:

https://www.douban.com/note/275230796/

http://blog.csdn.net/nimasike/article/details/48048341

http://mengphilip.blog.51cto.com/2243393/1720113

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