Как балансировщик понимает, что сервер недоступен

Обычно он не ждёт жалоб посетителей: периодически отправляет серверам контрольные запросы — например, проверяет, отвечает ли нужная служба на соединение или возвращает ли ожидаемый ответ. Такая проверка называется проверкой работоспособности. Если сервер несколько раз подряд не проходит её, балансировщик временно исключает его из списка доступных.

Важно, что одного сбоя недостаточно, чтобы непременно объявить машину неисправной. Краткая задержка или потерянный пакет могут быть случайностью, поэтому проверки повторяют. Настройки определяют компромисс: слишком чувствительная система может убрать сервер из-за временного торможения, а слишком терпеливая дольше будет отправлять туда посетителей.

Что происходит с запросами после сбоя

Исключённый сервер перестаёт получать новые запросы, а балансировщик распределяет их между оставшимися. Но это не обязательно переносит на другой сервер уже начатую загрузку или активный сеанс: устройство может только выбрать, куда отправить очередной запрос. Чтобы продолжить работу без потери состояния, приложению иногда нужно хранить данные сеанса отдельно — например, в общей базе или специальном хранилище.

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

Почему система может восстановиться сама

Балансировщик продолжает проверять исключённую машину. Когда она снова начинает отвечать, её можно вернуть в распределение запросов. Для посетителя это часто выглядит так, будто сайт просто пережил краткий сбой: неисправность одного узла не обрушила всю систему. Но за этой незаметностью стоят и своевременное обнаружение отказа, и запас мощности у остальных серверов.