У меня проблемы с липкими сессиями с HAproxy.
Haproxy считает каждый запрос новым сеансом. У меня есть сервлет Java, который создает файл cookie JSESSIONID.
Если я обновлю эту страницу 5 раз. Сервлет считает это как 1 сеанс и 5 запросов от этого sessionid. Но на странице статистики 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 текущих сеансов.
Спасибо.
Счетчик сеансов HAProxy относится к сеансам tcpip, а не к сеансам браузера. Счетчик равен 0, потому что в то время, когда вы запрашивали статистику, ее не было. Это довольно типично для незанятого балансировщика нагрузки.
Если ваши запросы из одного и того же сеанса попадают на один и тот же внутренний сервер, похоже, что липкие сеансы работают.
Который stats
столбец, который вы хотите искать, когда постоянство сеанса тестирования lbtot
, который увеличивается всякий раз, когда клиент делает запрос без распознанного файла cookie сеанса.