2014-12-18 3 views
3

Я использую HaProxy 1.5.0 перед кластером MariaDB с тремя узлами. HaProxy проверяет с помощью специального запроса/службы xinet, что каждый узел БД имеет синхронизированный статус. Когда по какой-либо причине проверка не выполняется (узел, например, получает desynced или становится донором), соответствующий backend в haproxy помечен, но я все еще могу видеть активные сеансы на нем в консоли статистики haproxy и запросы в списке процессов DB (это возможно, потому что служба MariaDB по-прежнему работает и принимает запросы, даже если статус кластера не синхронизирован). Мне было интересно, почему HaProxy не закрывает активные соединения, когда бэкэнд становится вниз, и отправляет их другим активным бэкэндам? Я получаю это ожидаемое поведение, когда служба MariaDB полностью остановлена ​​на данном узле (без сеанса связи). Есть ли специальный вариант, позволяющий это сделать? Опция redispatch казалась многообещающей, но она применяется, когда соединения закрыты (не в моем случае), и она уже активна в моей конфигурации. Спасибо за помощь.Haproxy продолжает маршрутизировать сеансы на бэкенд, отмеченный как

+0

никто не имеет ни малейшего понятия? –

ответ

5

Вот настройки мы используем, чтобы получить такое же поведение:

default-server port 9200 [snip] on-marked-down shutdown-sessions 

on-marked-down shutdown-sessions вариант, который говорит HAProxy, чтобы закрыть все подключения к серверу бэкэнд, когда он помечен как вниз.

Конечно, вы можете добавить его в каждом отдельном сервере, если вы не используете директиву по умолчанию-сервера :)

+0

Да, это звучит многообещающе, я пропустил это в документации, http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#5.2-on-marked-down. Спасибо за это. –

Смежные вопросы