Назад | Перейти на главную страницу

Проверка работоспособности 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.

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

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

Спасибо

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

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

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

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