HAProxyは、クッキーベースのクライアントセッションを実装保ちます
ip_hash使用している場合がある場合、多くのユーザーは、これらのユーザーが使用するパブリックIPが同じであるため、HAproxyはこれかもしれない、同じバックエンドサーバーに派遣する、同じサービスにアクセスするために同じパブリックIPアドレスを使用します他の方法は、スケジュールする必要があるように、単一のサーバによって引き起こさ取得した圧力は、大きすぎます。
HAProxyは、ユーザーの最初の訪問は、応答メッセージでない場合は、そこにあればクッキーを見ることになる際にクッキーの層を達成することができる。ユーザの要求がクッキーに応じてスケジュールされます再びアクセスしたときに、ドライブは、クライアントに戻すクッキーために挿入します。LVSとnginxのは達成できません
クッキー<値>
指定されたクッキーサーバの現在の値、達成するための粘着性のクッキーベースのセッション
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ベースの実装が残ります
設定ファイルを変更し、オプションクックを追加
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
テスト
パケットのヘッダを表示するためにカールを使用し
[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コマンドがクッキーを記録することはできませんので、次回にアクセスするためにブラウザを使用
ます。https://blog.51cto.com/11886307/2406614で再現