Haproxy 負載均衡算法介紹:

1、Haproxy配置介紹:前端

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

2、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請求


3、用戶Session保持、共享:
後端

因爲用戶請求通過Haproxy處理轉發到不一樣服務器以後,可能致使Session會話不一樣步的問題,若想實現會話共享或保持,可採用以下3種方式:服務器

一、基於IP地址:cookie

  • 配置:balance source

    session

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

二、基於Cookie識別:負載均衡


  • 配置:cookie  SESSION_COOKIE insert indirect nocache

    frontend

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

三、基於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

相關文章
相關標籤/搜索