HAproxy 当前会话为零

HAproxy 当前会话为零

我在使用 HAproxy 的粘性会话时遇到了一些问题。

Haproxy 将每个请求都算作一个新会话。我有一个 Java servlet,它创建了 cookie JSESSIONID。

如果我刷新该页面 5 次。servlet 将其计为 1 个会话和来自该 sessionid 的 5 个请求。但 HAproxy 统计页面将其显示为 5 个不同的会话。并且当前会话为 0 个。Haproxy 为 cookie 添加了正确的前缀,cookie:“JSESSIONID=test1~3fjp6734ys78grhk50ler16r”,并且是持久的。我每次都访问同一个服务器。

这是我的配置文件:

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 个当前会话。

谢谢。

答案1

HAProxy 会话计数指的是 tcpip 会话,而不是浏览器会话。计数为 0 是因为在您请求统计信息时,没有任何正在进行的会话。这对于非繁忙的负载均衡器来说很典型。

如果来自同一会话的请求到达同一后端服务器,则听起来粘性会话正在起作用。

答案2

stats测试会话持久性时要查找的列是lbtot,每当客户端发出没有可识别会话 cookie 的请求时,该列就会增加。

相关内容