Сети

Балансировка нагрузки: распределение запросов между узлами

Round robin, least connections, health checks, session persistence и отказоустойчивость.

Балансировщик распределяет входящие запросы между несколькими backend-узлами. Это позволяет масштабировать приложение горизонтально и переживать отказ отдельного экземпляра без изменения адреса, которым пользуются клиенты.

Простое распределение

Round robin отправляет запросы по очереди на доступные серверы. Least connections выбирает backend с наименьшим количеством активных соединений и лучше подходит для нагрузки с сильно различающимся временем обработки.

Health checks

Балансировка бессмысленна без проверки состояния backend. Health check должен показывать не просто наличие открытого TCP-порта, а реальную способность сервиса обслужить запрос.

Sticky sessions

Некоторые приложения хранят состояние сессии локально. Тогда повторные запросы одного пользователя желательно отправлять на тот же backend. Это называется session persistence или sticky sessions.

Балансировщик тоже должен быть отказоустойчивым

Один балансировщик перед десятком backend-серверов создаёт новую single point of failure. Поэтому на уровне входа используют кластер, виртуальный IP, managed LB или другую схему резервирования.

Практический вывод

Балансировка нагрузки не делает приложение отказоустойчивым автоматически. Она должна сочетаться с корректными health checks, общей моделью сессий и отказоустойчивыми зависимостями.

Материал предназначен для общего технического понимания. Конкретная конфигурация зависит от платформы, версии ПО и требований среды.