Ребята,
Я переместил одно из наших приложений SaaS с аппаратного балансировщика нагрузки coyote point на виртуальную машину, на которой запущен nginx + haproxy с сохранением хэша haproxy.
Проблема, с которой я сталкиваюсь, заключается в том, что приложение требует привязки сеанса к одному внутреннему серверу (в зависимости от того, что принимает исходный запрос), но когда я вношу изменения в haproxy.cfg и перезагружаю сервис haproxy, он перезапускает haproxy как новый процесс и убивает старый процесс, который завершает любые существующие подключения к определенным внутренним серверам, что означает, что любые пользователи немедленно выходят из приложения.
Вот конфигурация бэкэнда haproxy для HA-Proxy версии 1.5.4 2014/09/02
backend webapp
balance hdr(X-Real-IP)
hash-type consistent
mode http
server server1 192.168.10.50:8080 check port 8080
server server2 192.168.10.53:8080 check port 8080
server server3 192.168.10.55:8080 check port 8080
server server4 192.168.10.62:8080 check port 8080 backup
Это большая проблема для нас, поскольку, когда мне нужно выполнить обслуживание определенного внутреннего сервера или добавить / удалить дополнительные серверы из пула серверной части, я не могу этого сделать, не повлияв на работу клиента с приложением.
Как я могу динамически вносить изменения в серверы в бэкэнде, не прерывая существующие сеансы в бэкэндах, которые я не изменяю, если Haproxy не будет корректно перезагружаться?
Если вы определяете одноранговый узел для сервера, даже если он только один и является локальным, на каждом soft restart
haproxy, состояние должно быть реплицировано в новый процесс.