Короткий ответ
Балансировщик распределяет входящий трафик между несколькими инстансами приложения, проверяет их работоспособность (health checks) и исключает из ротации неработающие инстансы, повышая доступность и позволяя масштабировать приложение горизонтально.
Как это работает подробнее
клиент обращается к единому DNS-имени/IP балансировщика, тот по алгоритму выбирает здоровый backend-инстанс и перенаправляет запрос; регулярные health check-запросы определяют, какие инстансы считаются «здоровыми».
Пример кода
example.txt
Target Group web-tg:
Health check: GET /healthz, interval 15s, healthy threshold 2, unhealthy threshold 3
Targets: web-1 (healthy), web-2 (healthy)Что использовать на практике
- Рекомендация. балансировщик позволяет добавлять/удалять инстансы без изменений на стороне клиента и без простоя, а также терминировать TLS в одном месте вместо каждого инстанса.
- Проверка. при остановке web-1 балансировщик перестаёт слать на него трафик максимум через interval × unhealthy_threshold секунд, трафик продолжает идти на web-2 без ошибок на стороне клиента.
Подводные камни
- Риск. настраивать health check, который не отражает реальную готовность приложения
- Риск. забывать, что при единственном инстансе за балансировщиком отказоустойчивость не повышается
- Риск. не учитывать задержку обнаружения сбоя.