Я отправляю это перекрестно из переполнения стека, так как было предложено, что я могу получить здесь лучший ответ ...
Мне было интересно, использовал ли кто-нибудь HAProxy для шардинга. В частности, я хотел бы иметь возможность использовать cookie, который я определяю с идентификатором, и чтобы любой клиент, представляющий эту комбинацию cookie / идентификатора, направлялся на тот же сервер. Это кажется возможным, и мои предварительные тесты, похоже, работают, но я не уверен.
Моя конфигурация прослушивания выглядит так:
listen appli1-rewrite 0.0.0.0:80
cookie mysession= prefix
balance roundrobin
server app1_1 192.168.0.1:80 cookie server01
server app1_2 192.168.0.2:80 cookie server02
option httpclose
Однако, когда я смотрю на заголовки запросов с помощью Live Http Headers, я не вижу cookie mysession, указывающего, на какой сервер он будет идти, что я ожидал на основе операции с префиксом. Я новичок в HAProxy, поэтому любая помощь / руководство будет отличным!
сначала удалите знак равенства после имени файла cookie, иначе он никогда не будет совпадать. Во-вторых, убедитесь, что ваш сервер правильно устанавливает cookie «mysession», поскольку режим префикса cookie полагается на сервер для установки cookie. Если это не так, используйте вместо этого режим вставки. В-третьих, добавьте «option httpclose» в вашу конфигурацию, потому что, если есть какой-либо вид keepalive, haproxy не увидит cookie (или не сможет его изменить).
Надеясь, что это поможет,
Вилли
Ваша конфигурация в порядке. Вы можете проверить в журналах, что файл cookie, представленный клиентом, был распознан и использован. Буква «V» будет помещена в первую позицию в 4-значных флагах состояния (например: VN-). Вместо этого первые запросы без действительного файла cookie будут иметь букву "N". Пожалуйста, проверьте документ для получения дополнительной информации, вы получите все это в разделе 8.5. Вы также можете включить страницу статистики и проверять ее во время просмотра. Вы должны увидеть, что столбец «LbTot» увеличивается только один раз для каждого нового клиента и больше не увеличивается для одного и того же клиента.
Вы можете попробовать функцию захвата файлов cookie (все зависит от обслуживаемого приложения) в разделе прослушивания, см.:http://haproxy.1wt.eu/download/1.3/doc/configuration.txt:
Захватывается только первый файл cookie. Контролируются как заголовки запроса «cookie», так и заголовки ответа «set-cookie». Это особенно полезно для проверки ошибок приложения, вызывающих пересечение сеанса или кражу между пользователями, поскольку обычно файлы cookie пользователя могут изменяться только на странице входа.
Пример: захват файла cookie ASPSESSION len 32
Кстати, похоже, у вас все в порядке.
listen corporate_web_live
bind 1.2.3.4:80 # site1.com
bind 1.2.3.5:80 # site2.com
option httpchk HEAD /server.txt HTTP/1.0
cookie HAPSRV insert postonly indirect
server webapp-corp-1 10.0.0.1:80 weight 50 maxconn 150 slowstart 30s cookie WAC1 check
server webapp-corp-2 10.0.0.2:80 weight 50 maxconn 150 slowstart 30s cookie WAC2 check
server webapp-corp-3 10.0.0.3:80 weight 50 maxconn 150 slowstart 30s cookie WAC3 check
server webapp-corp-4 10.0.0.4:80 weight 50 maxconn 150 slowstart 30s cookie WAC4 check
server webapp-corp-5 10.0.0.5:80 weight 50 maxconn 150 slowstart 30s cookie WAC5 check
server webapp-corp-6 10.0.0.6:80 weight 50 maxconn 150 slowstart 30s cookie WAC6 check
Обратите внимание на использование «insert», «postonly» и «косвенный» в приведенном выше примере - это заставляет HAproxy загружать cookie по мере необходимости для потоков, которые его пересекают.
Я попробовал захват файлов cookie, и он не показал никакой разницы с тем, что мне показывали живые заголовки http ... Когда я изменяю конфигурацию так, что haproxy вставляет свой собственный файл cookie, я вижу его в заголовках http ... Я начинаю полагать, что мои первоначальные тесты могли быть ошибочными.