我在使用HAproxy进行粘性会话时遇到了一些问题。
Haproxy将每个请求计为一个新的会话。 我有一个创buildcookie JSESSIONID的Java servlet。
如果我刷新该页面5次。 该servlet将其计为来自该sessionid的1个会话和5个请求。 但HAproxy统计页面显示为5个不同的会话。 还有0个当前会话。 Haproxy在cookie正确的前缀,cookie:“JSESSIONID = test1〜3fjp6734ys78grhk50ler16r”并且是持久的。 我每次都碰到同一台服务器。
这是我的configuration文件:
global daemon maxconn 256 defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http-in bind *:3333 acl Testrule path -m beg /test use_backend Test if Testrule backend Test option httpchk GET /test cookie JSESSIONID prefix appsession JSESSIONID len 52 timeout 20m prefix server test2 vm-stapp-146:9003 check cookie test2 server test1 vm-stapp-145:9003 check cookie test1 listen stats *:3334 mode http stats enable stats uri /proxy-stats stats admin if TRUE
为什么统计页面将每个请求显示为新的会话? 它总是显示0个当前会话。
谢谢。
HAProxy会话计数是指tcpip会话而不是浏览器会话。 计数为0,因为当你问统计数据时,没有任何进展。 这对于非繁忙的负载均衡器来说是非常典型的。
如果来自同一会话的请求正在碰到相同的后端服务器,听起来像是粘滞的会话正在工作。
当testing会话持久性是lbtot ,您希望查找的那个stats列,只要客户端发出请求而没有一个可识别的会话cookie,该列就会增加。