Использование параметров URL для балансировки нагрузки с HAProxy

9

У меня есть система балансировки нагрузки через cookie, но я хочу использовать параметр URL в качестве альтернативы. (В частности, у меня есть интерфейсное приложение, которое не поддерживает куки). Мои настройки немного сложны - у меня многопользовательская система, и я использую таблицу флешек с этим cookie, чтобы разные люди, играющие в одну и ту же игру, заходили на один и тот же сервер. Это прекрасно работает, за исключением того, что параметры URL, похоже, ничего не делают. Это все с haproxy 1.5dev17

Мой соответствующий бэкэнд:

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

Обратите внимание, что SIMULATE_STICKY_SESSION генерируется моим приложением (на основе команды игрока).

Когда я вызываю URL, мне нужно передать jsessionid (чтобы Tomcat нашел правильный сеанс). Так я делаю

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

Это не похоже на то, что параметр липкой сессии принимается за 50% времени, когда он переходит на неправильный сервер. Я попытался использовать параметр в качестве строки запроса (после знака?), Но это тоже не сработало. Что я делаю неправильно?

Will Glass
источник

Ответы:

3

Ответ был предоставлен здесь в списке рассылки haproxy

выдержка

просто обновите строку ниже в вашей конфигурации, чтобы:

 stick on url_param(SIMULATE_STICKY_SESSION,;) table simulate

По умолчанию url_param ищет параметр после знака вопроса (?). Приведенная выше конфигурация перезаписывает это путем поиска файла cookie из точки с запятой (;).

Примечание: вы, должно быть, используете последнюю версию 1.5dev haproxy, предпочтительно dev 18.

Вилли Тарро
источник
Как отмечено в списке пользователей, ответом является изменение строки: придерживаться таблицы url_param (SIMULATE_STICKY_SESSION ;;) имитация
Will Glass