В нашей конфигурации HAProxy мы делаем это на уровне бэкэнда, используя опцию cookie
.Это потому, что у него есть несколько сайтов, некоторые из которых нам нужны постоянные, а другие нет.
В тех, что мы делаем, бэкэнд выглядит так в haproxy.cfg
:
backend examplesite
cookie STK insert indirect nocache maxidle 30m maxlife 8h
server server1 192.168.0.1:80 cookie n1
server server2 192.168.0.2:80 cookie n2
Это установит cookie с именем STK
в первом запросе.Haproxy автоматически присвоит этому cookie значение, которое затем будет использовано для отправки последующих запросов на тот же узел.
Мы решили также добавить префиксы cookie n1
и n2
... это означает, чток значению cookie будет добавляться n1
, если запросы направляются на узел 1, или n2
, если они направляются на узел 2. Это очень полезно при отладке.
В любом случае яРекомендуем взглянуть на документацию конфигурации вокруг cookie
параметров.
Возможно, вы также захотите взглянуть на параметр appsession
.Это позволяет HAProxy использовать существующий файл cookie (например, ASPNetSessionId или PHPSESSIONID) для той же цели.
У меня были проблемы с ним раньше, но недавно я получил ответ на вопрос о сбое сервера, который должен решить эту проблему.Вы можете попробовать, так как он экономит, используя дополнительный файл cookie в ваших запросах. Не удается настроить настройку appsession в HAProxy .