Сетевой балансировщик
Сетевой балансировщик — устройство или программный сервис, который распределяет входящие запросы и сетевую нагрузку между несколькими серверами пула. Его задача — не допустить перегрузки отдельного узла, повысить пропускную способность приложения и обеспечить отказоустойчивость: при отказе одного сервера трафик автоматически перенаправляется на работоспособные.
Алгоритмы распределения нагрузки
Балансировщик выбирает целевой сервер по заданному алгоритму. Round Robin («распределение по кругу») направляет запросы поочередно на каждый сервер. Least Connections («наименьшее число соединений») направляет запрос на наименее загруженный сервер. Weighted («взвешенное распределение») учитывает мощность серверов. IP Hash («распределение по IP-адресу») закрепляет пользователя за определенным сервером.

Уровни балансировки L4 и L7
Балансировка работает на разных уровнях модели OSI («модель взаимодействия открытых систем»). На транспортном уровне L4 решение принимается по IP-адресам и портам протоколов TCP («протокол управления передачей») или UDP («протокол пользовательских датаграмм») без анализа содержимого. На прикладном уровне L7 балансировщик анализирует HTTP-запросы и распределяет их по URL-адресам, заголовкам или файлам cookie. Уровень L7 гибче, но требует больше вычислительных ресурсов.
Проверки доступности и отказоустойчивость
Ключевой механизм — health check: балансировщик периодически опрашивает серверы и исключает из пула те, что не отвечают. Это обеспечивает бесшовное переключение нагрузки (failover) без участия пользователя. В связке с горизонтальным масштабированием решение позволяет добавлять новые узлы под рост нагрузки без простоя сервиса. Различают аппаратные балансировщики — специализированные устройства с высокой производительностью — и программные решения на базе HAProxy или Nginx, которые дешевле и гибче масштабируются. Выбор зависит от масштаба.
Вопрос — ответ
Чем аппаратный балансировщик отличается от программного?
Аппаратный — это специализированное устройство с высокой производительностью; программный работает на обычном сервере (например, HAProxy или Nginx) и дешевле масштабируется.
Какие способы распределения запросов использует сетевой балансировщик?
Сетевой балансировщик может распределять запросы по очереди, направлять их на сервер с наименьшим числом активных соединений, учитывать производительность каждого сервера или закреплять пользователя за конкретным узлом по его IP-адресу. Выбор способа зависит от архитектуры системы, характера нагрузки и требований к сохранению пользовательской сессии.
Заменяет ли балансировщик резервный сервер?
Нет. Он распределяет нагрузку и перенаправляет трафик, но сам требует резервирования для отказоустойчивости.
