Проверка работоспособности HAProxy для одного бэкэнда

У меня есть конфигурация HAProxy с одним сервером, что-то очень похоже на это:

backend mybackend
option httpchk get /ping
http-check expect ! rstatus ^5
server mybackend-0 192.168.1.1:9041 weight 1

Конечная точка / ping всегда возвращает 200 .

Мой вопрос: есть ли какие-либо преимущества в проведении проверки работоспособности на одном сервере? Насколько я понимаю, проверка работоспособности имеет смысл только тогда, когда у нас несколько внутренних серверов, и вы хотите сбалансировать их нагрузку.

Любая помощь в этом отношении будет принята с благодарностью.

Спасибо

3
задан 16 December 2016 в 16:12
1 ответ

Имеет смысл проверить работоспособность одного сервера, чтобы учесть сценарий «выключателя». Представьте, что ваш бэкэнд принимает TCP-соединения, но не может сгенерировать ответ. Клиентские приложения, подключающиеся через этот хапрокси, должны будут ждать, пока не истечет их встроенный тайм-аут, чтобы закрыть соединение. Если они обычно ожидают время отклика 50 мс, а теперь им приходится ждать 3 секунды, пока истечет время ожидания их запроса, они, скорее всего, потерпят неудачу.

Очень хорошо написанное клиентское приложение обнаружит эту ситуацию и выполнит свою собственную схему ломается, но по моему опыту, большинство приложений этого не делают. Добавление проверки работоспособности к HAProxy позволяет HAProxy отключать цепь от их имени.

Таким образом, серверная часть не может сгенерировать ответ и вызывает сбой проверки работоспособности. Затем HAProxy немедленно отвечает на любые входящие запросы с помощью правильно сформированного кода 503, и клиентское приложение может справиться с этим, как ему нравится.

В большинстве случаев приложения создаются с учетом того, что серверные модули быстро отвечают успехом или неудачей. Выполнение HAProxy проверок работоспособности смягчает некоторые сценарии, когда приложение не обрабатывает отсутствие ответа.

3
ответ дан 3 December 2019 в 06:28

Теги

Похожие вопросы