Ответ
Сетевой балансировщик нагрузки — это устройство или сервис, который распределяет входящий сетевой трафик между несколькими серверами (бэкендами) для повышения доступности, отказоустойчивости и производительности приложения.
Основные типы балансировщиков:
-
L4 (Transport Layer): Работает на транспортном уровне модели OSI (TCP/UDP). Балансирует трафик на основе IP-адресов и портов. Быстрее, но не анализирует содержимое запросов.
- Примеры: AWS Network Load Balancer (NLB), HAProxy в режиме TCP, MetalLB.
- Использование: Для базовых сервисов, баз данных, игровых серверов, где важна низкая задержка.
-
L7 (Application Layer): Работает на прикладном уровне (HTTP/HTTPS, gRPC). Может анализировать содержимое запросов (заголовки, URL, cookies) для принятия решений о маршрутизации.
- Примеры: NGINX, AWS Application Load Balancer (ALB), Traefik.
- Использование: Для веб-приложений, микросервисов, когда нужна маршрутизация на основе пути (
/api/,/static/) или домена.
Ключевые функции и практика:
-
Health Checks: Балансировщик регулярно проверяет состояние бэкенд-серверов и исключает нерабочие из пула.
# Пример health check в NGINX upstream backend { server backend1:80 max_fails=3 fail_timeout=30s; server backend2:80 max_fails=3 fail_timeout=30s; } -
Алгоритмы балансировки:
round-robin(по умолчанию) — по очереди.least_conn— серверу с наименьшим числом подключений.ip_hash— для sticky sessions (клиент всегда попадает на один сервер).
-
SSL/TLS Termination: Балансировщик L7 может расшифровывать HTTPS-трафик, снимая нагрузку с бэкенд-серверов.
-
Автомасштабирование: В облачных средах (AWS, GCP) балансировщики интегрируются с группами автомасштабирования (Auto Scaling Groups), автоматически добавляя или удаляя серверы под нагрузкой.