HAProxy基於cookie實現客戶端會話保持

HAProxy基於cookie實現客戶端會話保持

使用ip_hash時,若是有衆多用戶使用相同的公網地址去訪問同一個服務時,因爲這些用戶所使用的公網IP都爲同一個,HAproxy就會把他們調度到同一後端的服務器,由此可能形成後天的單臺服務器的壓力過大,所以須要其餘的方法來進行調度。
HAProxy能夠實現插入一層cookie,當用戶第一次訪問會查看是否有cookie,若是沒有就在響應報文中插入以程cookie返回給客戶端,當用戶再次訪問就會根據cookie來調度請求。lvs和nginx沒法實現html

cookie <value>

爲當前server指定cookie值,實現基於cookie的會話黏性linux

cookie NAME [rewrite|insert|prefix] [indirect] [nocache] [postonly] [preserve] [httponly] [secure] [domain <domain>] [maxidle<idle>] [maxlife<life>]
NAME: cookie名稱,用於持久鏈接
rewrite: 重寫。若是以前有cookie就會覆蓋了重寫,或插入到前綴上
insert: 插入
prefix: 前綴
nocache: 當client和haproxy之間有緩存存在時,不緩存cookie

基於cookie實現會保持

修改配置文件,添加cooke選項nginx

listen web
 bind 172.20.27.20:80
 mode http
 cookie SERVER-COOKIE insert indirect nocache           #插入cookie選項
 option forwardfor
 server web1 192.168.27.21:80 cookie web1 check inter 3000 fall 3 rise 5    #在後端服務器中拆入cookie的值
 server web2 192.168.27.22:80 cookie web2 check inter 3000 fall 3 rise 5

測試

使用curl來查看報文頭部web

[root@localhost ~]# curl -I www.mylinuxops.com
HTTP/1.1 200 OK
Server: nginx/1.17.0
Date: Tue, 04 Jun 2019 11:41:23 GMT
Content-Type: text/html
Content-Length: 8
Last-Modified: Tue, 04 Jun 2019 11:29:30 GMT
ETag: "5cf6561a-8"
Accept-Ranges: bytes
Set-Cookie: SERVER-COOKIE=web2; path=/              #此爲插入的cookie信息
Cache-control: private

因爲curl命令沒法記錄cookie,接下來使用瀏覽器來訪問
HAProxy基於cookie實現客戶端會話保持後端

相關文章
相關標籤/搜索