我正在HAProxy
三个应用服务器节点的前端设置 http 流量的 keepalived 平衡器nginx/php-fpm
。所以我的服务链是:
-----> HAProxy -----> nginx -----> php-FPM ----> webapp
好吧,问题是haproxy
当设置为使用 cookie 以确保会话亲和性时看不到我的后端服务器。
这是我的 haproxy.conf 文件:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
contimeout 5000
clitimeout 50000
srvtimeout 50000
frontend http-in
bind *:80
default_backend servers
backend servers
option httpchk OPTIONS /
option forwardfor
option http-server-close
balance roundrobin
cookie PHPSESSID prefix indirect nocache
stats enable
stats refresh 10s
stats hide-version
stats scope .
stats uri /lb?stats
stats auth admin:admin2013
server nodo1 10.10.200.19:80 check cookie nodo1
server nodo2 10.10.200.20:80 check cookie nodo2
server nodo3 10.10.200.21:80 check cookie nodo3
任何人都知道为什么会这样?我已经检查了我的 php.ini 文件,并且 session.name 变量具有正确的值(在本例中为 PHPSESSID)。
另一方面,我计划使用 redis 数据库作为会话存储,我想如果我选择这个,就没有必要在 haproxy 中使用会话亲和性,但我担心在这种情况下,用户可以在每个请求中跳转到每个服务器。