Eu tenho um sistema com balanceamento de carga por meio de um cookie, mas quero usar um parâmetro de URL como alternativa. (Especificamente, eu tenho um aplicativo front-end que não suporta cookies). Minha configuração é um pouco complexa - eu tenho um sistema multiplayer e uso uma mesa com esse cookie para garantir que pessoas diferentes jogando o mesmo jogo vão para o mesmo servidor. Isso funciona muito bem, exceto que os parâmetros de URL parecem não fazer nada. Isso é tudo com haproxy 1.5dev17
Meu back-end relevante é:
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
option http-server-close
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
backend simulate
option httpchk OPTIONS /simulate/api/status
stick-table type string len 40 size 5M expire 30m
stick store-response set-cookie(SIMULATE_STICKY_SESSION) table simulate
stick on cookie(SIMULATE_STICKY_SESSION) table simulate
stick on url_param(SIMULATE_STICKY_SESSION) table simulate
server app1 10.0.2.11:8080 cookie app1 check inter 10000
server app2 10.0.3.11:8080 cookie app2 check inter 10000
Observe que SIMULATE_STICKY_SESSION é gerado pelo meu aplicativo (com base na equipe do jogador).
Quando ligo para o URL, preciso passar um jsessionid (para que o Tomcat encontre a sessão correta). Então eu estou fazendo
Isso não parece estar captando o parâmetro de sessão persistente em 50% do tempo que ele vai para o servidor errado. Eu tentei usar o param como uma string de consulta (depois de uma marca?), Mas isso também não funcionou. O que estou fazendo errado?
fonte