Uso de parámetros de URL para el equilibrio de carga con HAProxy

9

Tengo un sistema que equilibra la carga a través de una cookie, pero quiero usar un parámetro de URL como alternativa. (Específicamente, tengo una aplicación front-end que no admite cookies). Mi configuración es un poco compleja: tengo un sistema multijugador y uso una tabla de palo con esta cookie para asegurarme de que diferentes personas que juegan el mismo juego vayan al mismo servidor. Esto funciona muy bien, excepto que los parámetros de URL no parecen hacer nada. Esto es todo con haproxy 1.5dev17

Mi backend relevante es:

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

Tenga en cuenta que SIMULATE_STICKY_SESSION es generado por mi aplicación (según el equipo del jugador).

Cuando llamo a la URL, necesito pasar un jsessionid (para que Tomcat encuentre la sesión correcta). Entonces estoy haciendo

http://my.domain.com/myapp/url;SIMULATE_STICKY_SESSION=1918C909D3F30DB09C2F96B75C57D015.app1+jsessionid;jsessionid=1918C909D3F30DB09C2F96B75C57D015.app1

Esto no parece estar recogiendo el parámetro de sesión fija ya que el 50% del tiempo va al servidor incorrecto. Intenté usar el param como una cadena de consulta (después de una marca?) Pero tampoco funcionó. ¿Qué estoy haciendo mal?

Will Glass
fuente

Respuestas:

3

Se proporcionó una respuesta aquí en la lista de correo haproxy

extracto

simplemente actualice la línea a continuación en su configuración para:

 stick on url_param(SIMULATE_STICKY_SESSION,;) table simulate

Por defecto, url_param busca un parámetro después del signo de interrogación (?). La configuración anterior sobrescribe esto buscando su cookie desde el punto y coma (;).

Nota: debe estar ejecutando un haproxy reciente de 1.5dev, preferiblemente el dev 18.

Willy Tarreau
fuente
Como se señaló en la lista de usuarios, la respuesta es cambiar la línea a: pegar en url_param (SIMULATE_STICKY_SESSION ,;) simula la tabla
Will Glass