У меня есть конфигурация 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 проверок работоспособности смягчает некоторые сценарии, когда приложение не обрабатывает отсутствие ответа.