Я хочу сбалансировать загрузку веб-запросов с помощью HAProxy. Загвоздка в том, что я хочу, чтобы определенные группы пользователей всегда переходили на один и тот же сервер. (Это многопользовательская система, и пользователи в одной группе должны находиться на одном сервере). Пользователи могут перейти на любой сервер, если пользователи с одинаковым идентификатором группы находятся на одном сервере. Сервер может даже измениться (например, если сервер выходит из строя), но тогда все пользователи этой группы должны переключиться на новый сервер. Сервер приложений идентифицирует группировку пользователя с помощью файла cookie.
В качестве конкретного примера предположим, что в моем приложении есть файл cookie GROUP_ID с номером 1..10000. Может быть 3 разных пользователя с GROUP_ID = 1, разные 3 пользователя с GROUP_ID = 2 и т. Д. Предположим, я настроил балансировку нагрузки на серверах: app1, app2, app3.
Я бы хотел увидеть примерно следующее:
и т.п.
Если сервер app1 перестает отвечать, я хочу, чтобы пользователи app1 были перераспределены между app2 и app3. (Было бы хорошо, если бы все группы были перетасованы). Все пользователи из определенной группы по-прежнему должны находиться на общем сервере.
Очевидно, что первоначальный запрос к сайту не будет иметь файла cookie, но после аутентификации пользователя ему будет назначен файл cookie.
Поддерживается ли HAProxy такая настраиваемая балансировка нагрузки?
1) Настройте интерфейс HAPROXY с:
специальный бэкэнд для вашей аутентификации (войдите в игру). При аутентификации вы устанавливаете куки-файл с именем «GROUPID». (например: GROUPID = GID3) для этого http-соединения. (примечание: вы также можете передать этот 'groupid' в качестве аргумента URL-адреса и / или установить время истечения срока действия и т. д.)
выделенный бэкэнд для ваших игровых серверов со следующей директивой:
cookie GROUPID вставить непрямой кэш
2) настройте свои серверы (в бэкэнде) как (Примечание: раздел проверки можно удалить):
server APP01 10.0.0.5:80 cookie GID3 check inter 5000 rise 2 fall 3 maxconn 2048
server APP02 10.0.0.6:80 cookie GID4 check inter 5000 rise 2 fall 3 maxconn 2048
(...)
Для дальнейшего использования документация HAPROXY довольно ясна (http://haproxy.1wt.eu/download/1.4/doc/configuration.txt)