Haproxy有8種負載均衡算法(balance),分別如下:
1.balance roundrobin # 輪詢,軟負載均衡基本都具備這種算法
2.balance static-rr # 根據權重,建議使用
3.balance leastconn # 最少連接者先處理,建議使用
4.balance source # 根據請求源IP,建議使用
5.balance uri # 根據請求的URI
6.balance url_param,# 根據請求的URl參數'balance url_param' requires an URL parameter name
7.balance hdr(name) # 根據HTTP請求頭來鎖定每一次HTTP請求
8.balance rdp-cookie(name) # 根據據cookie(name)來鎖定並哈希每一次TCP請求
由於負載請求分發到不同服務器,可能導致Session會話不同步的問題,若想實現會話共享或保持,可採用如下3種方式:
1.用戶IP 識別
haroxy 將用戶IP經過hash計算後 指定到固定的真實服務器上(類似於nginx 的IP hash 指令)
配置指令
balance source
2.Cookie 識別
haproxy 將WEB服務端發送給客戶端的cookie中插入(或添加加前綴)haproxy定義的後端的服務器COOKIE ID。
配置指令例舉
cookie SESSION_COOKIE insert indirect nocache
用firebug可以觀察到用戶的請求頭的cookie裏 有類似” Cookie jsessionid=0bc588656ca05ecf7588c65f9be214f5; SESSION_COOKIE=app1” SESSION_COOKIE=app1就是haproxy添加的內容
3.Session 識別
haproxy 將後端服務器產生的session和後端服務器標識存在haproxy中的一張表裏。客戶端請求時先查詢這張表。
配置指令例舉
appsession JSESSIONID len 64 timeout 5h request-learn