Балансировщик нагрузки (load balancer) — компонент инфраструктуры, принимающий входящий трафик и распределяющий его между несколькими бэкенд-серверами (upstream) по заданному алгоритму. Клиент взаимодействует только с балансировщиком и не знает о конкретных серверах за ним. Это обеспечивает линейное масштабирование: добавление нового сервера в пул увеличивает производительность без изменения клиентского кода.
Как работает
Балансировщик функционирует на разных уровнях стека TCP/IP. L4 (транспортный) — балансировка по IP и порту без разбора пакетов: быстро, нет накладных расходов, но нет информации о содержимом. L7 (прикладной) — HTTP/HTTPS-балансировка: можно маршрутизировать по URL, заголовкам, cookie, проверять состояние здоровья бэкенда.
Алгоритмы распределения: Round Robin — по кругу, равномерно; Least Connections — к серверу с наименьшим числом активных соединений; IP Hash — один клиент всегда попадает к одному серверу (сессионная привязка); Weighted — серверам назначаются веса пропорционально мощности.
Health check — регулярная проверка доступности бэкенда: активная (HTTP GET к /health) или пассивная (анализ ошибок реального трафика). Недоступный сервер автоматически исключается из пула, доступный — возвращается.
История
Аппаратные балансировщики F5 BIG-IP появились в 1997 году и долго доминировали на рынке. С 2000-х годов программные решения (HAProxy, Nginx, Keepalived) вытеснили железо в большинстве сценариев. AWS Elastic Load Balancer появился в 2009 году, сделав managed балансировку доступной для всех. Kubernetes Ingress Controller — современная форма балансировщика для контейнерных сред.
Виды балансировщиков
- HAProxy — L4/L7, самый производительный open-source, используется в миллионах инсталляций.
- Nginx — L7 балансировка как часть web-сервера, модуль upstream.
- AWS ALB/NLB — managed cloud балансировщики.
- F5 BIG-IP — аппаратный/программный enterprise.
Связь с хостингом
В облачных хостингах балансировщик часто доступен как managed-сервис. На VPS балансировщик разворачивается как отдельный экземпляр Nginx или HAProxy перед пулом серверов. Для высокодоступных конфигураций два балансировщика работают в паре с Keepalived и плавающим IP (Virtual IP) — при сбое активного балансировщика резервный принимает IP.
Алгоритмы балансировки
Round Robin — поочерёдно. Least Connections — на сервер с наименьшим числом активных соединений. IP Hash — клиент всегда попадает на один сервер (session affinity). Weighted Round Robin — пропорционально весу. В Nginx: upstream { least_conn; server srv1; server srv2; }.
Типы балансировщиков
L4 (TCP/UDP): HAProxy, LVS. L7 (HTTP): Nginx, HAProxy, Envoy. Managed cloud LB: AWS ALB/NLB, Yandex Cloud Load Balancer. Для микросервисов — Envoy + Kubernetes Ingress. Для VPS кластера — HAProxy или Nginx upstream.
Сессии и SSL Termination
SSL Termination: балансировщик расшифровывает HTTPS, на бэкенды отправляет HTTP. Для session affinity без sticky-сессий — вынос сессий в Redis. Health check: балансировщик исключает недоступные узлы из ротации через активные HTTP-проверки.