Ich habe ein System, das den Lastenausgleich über ein Cookie ausführt, möchte aber alternativ einen URL-Parameter verwenden. (Insbesondere habe ich eine Front-End-App, die keine Cookies unterstützt). Mein Setup ist etwas komplex - ich habe ein Multiplayer-System und verwende einen Stick-Tisch mit diesem Cookie, um sicherzustellen, dass verschiedene Personen, die dasselbe Spiel spielen, auf denselben Server gehen. Dies funktioniert hervorragend, außer dass die URL-Parameter nichts zu tun scheinen. Dies ist alles mit Haproxy 1.5dev17
Mein relevantes Backend ist:
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
Beachten Sie, dass SIMULATE_STICKY_SESSION von meiner App generiert wird (basierend auf dem Spielerteam).
Wenn ich die URL aufrufe, muss ich eine jsessionid übergeben (damit Tomcat die richtige Sitzung findet). Also mache ich
Dies scheint den Sticky-Session-Parameter nicht zu erfassen, da er in 50% der Fälle an den falschen Server gesendet wird. Ich habe versucht, den Parameter als Abfragezeichenfolge zu verwenden (nach einem? -Markenzeichen), aber das hat auch nicht funktioniert. Was mache ich falsch?
quelle