J'ai un système qui équilibre la charge via un cookie, mais je souhaite utiliser un paramètre URL comme alternative. (Plus précisément, j'ai une application frontale qui ne prend pas en charge les cookies). Ma configuration est un peu complexe - j'ai un système multijoueur et j'utilise une table de lecture avec ce cookie pour m'assurer que différentes personnes jouant au même jeu vont sur le même serveur. Cela fonctionne très bien, sauf que les paramètres d'URL ne semblent rien faire. Tout cela avec haproxy 1.5dev17
Mon backend pertinent est:
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
Notez que SIMULATE_STICKY_SESSION est généré par mon application (basé sur l'équipe de joueurs).
Lorsque j'appelle l'URL, je dois passer un jsessionid (pour que Tomcat trouve la bonne session). Donc je fais
Cela ne semble pas ramasser le paramètre de session collante car 50% du temps il va au mauvais serveur. J'ai essayé d'utiliser le param comme chaîne de requête (après une marque?) Mais cela n'a pas fonctionné non plus. Qu'est-ce que je fais mal?
la source