1、Haproxy配置介紹:前端
一、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/