在haproxy中是否可以根据cookie和仍然负载平衡进行粘性会话?

时间:2017-04-11 19:32:18

标签: haproxy

所以如果这是后端配置:

backend main mode http balance leastconn cookie serverid insert indirect nocache stick-table type string len 36 size 1m expire 8h stick on cookie(JSESSIONID)
option httpchk HEAD /web1 HTTP/1.0 http-check expect ! rstatus ^5 server monintdevweb 10.333.33.33:443 check cookie check ssl verify none #web1 server monintdevweb2 10.222.22.122:443 check cookie check ssl verify none #web2
server localmaint 10.100.00.105:9042 backup #maint option log-health-checks
option redispatch timeout connect 1s timeout queue 5s timeout server 3600s

似乎它总是将所有用户发送到web1。即,使用指定的最小化算法进行均衡负载均衡。我尝试使用src IP的棒表,这就是我想要的 - 即持久化会话但每个新会话应该在服务器之间得到平衡。是不是可以使用cookie? 我注意到的另一个问题是,如果我要在web1上关闭服务,所有用户都会被重定向到web2,然后在web1恢复时重定向回web1!现实生活中会发现这种行为有用吗?

1 个答案:

答案 0 :(得分:1)

在网上搜了一整天,然后通过每个关于负载均衡和粘性会话的链接,我在发布问题后立即找到答案。我需要使用"应用程序ID"这将有助于负载均衡器区分每个用户会话,以便它可以继续加载平衡请求。我没有使用IIS / asp.net这就是为什么它没有提前击中我。但这是配置工作..

更改这些行..

cookie serverid insert indirect nocache stick-table type string len 36 size 1m expire 8h stick on cookie(JSESSIONID)

为:

stick-table type string len 36 size 1m expire 8h stick on cookie(DWRSESSION)

其中DWRSESSION是我的应用程序会话ID。