所以如果这是后端配置:
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!现实生活中会发现这种行为有用吗?
答案 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。