Назад | Перейти на главную страницу

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

У меня есть система, которая балансирует нагрузку с помощью файла cookie, но я хочу использовать параметр URL в качестве альтернативы. (В частности, у меня есть внешнее приложение, которое не поддерживает файлы cookie). Моя настройка немного сложна - у меня многопользовательская система, и я использую стик-стол с этим файлом 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% случаев он идет не на тот сервер. Я попытался использовать параметр в качестве строки запроса (после знака?), Но это тоже не сработало. Что я делаю не так?

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

выдержка

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

 stick on url_param(SIMULATE_STICKY_SESSION,;) table simulate

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

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