AWS Elastic Load Balancer¶
Elastic Load Balancer — это облачный сервис автоматического распределения входящего трафика между несколькими целевыми ресурсами, предоставляемый компанией Amazon Web Services (AWS). Сервис относится к категории балансировщиков нагрузки (load balancers) и используется для повышения отказоустойчивости, масштабируемости и производительности приложений, развёрнутых в облачной инфраструктуре AWS. Elastic Load Balancer (ELB) автоматически направляет запросы пользователей к здоровым экземплярам (инстансам) Amazon EC2, контейнерам в Amazon ECS, функциям AWS Lambda, а также к IP-адресам и ресурсам в локальных центрах обработки данных.
¶История и развитие
Сервис Elastic Load Balancer был запущен компанией Amazon в 2009 году как часть инфраструктуры Amazon Web Services. Первоначально ELB представлял собой единый тип балансировщика, работающий на транспортном уровне модели OSI (уровень 4) и поддерживающий протоколы TCP и SSL. В 2016 году AWS представила Application Load Balancer (ALB), работающий на прикладном уровне (уровень 7), что позволило маршрутизировать трафик на основе содержимого HTTP-запросов. В 2017 году был выпущен Network Load Balancer (NLB), ориентированный на высокую производительность и низкие задержки на транспортном уровне. В 2021 году AWS анонсировала Gateway Load Balancer (GWLB), предназначенный для интеграции с виртуальными сетевыми устройствами, такими как межсетевые экраны и системы обнаружения вторжений.
¶Типы Elastic Load Balancer
На момент написания статьи AWS предлагает четыре типа балансировщиков нагрузки, каждый из которых оптимизирован для определённых сценариев использования.
¶Application Load Balancer (ALB)
Application Load Balancer работает на седьмом уровне модели OSI (прикладной уровень). Он поддерживает протоколы HTTP, HTTPS и HTTP/2. ALB позволяет выполнять маршрутизацию на основе содержимого запроса: пути URL, доменного имени, заголовков HTTP, метода запроса и параметров строки запроса. Это делает его подходящим для микросервисных архитектур, где разные пути URL могут обслуживаться разными сервисами.
ALB поддерживает:
- Привязку SSL-сертификатов для обработки HTTPS-трафика.
- Автоматическое перенаправление HTTP-запросов на HTTPS.
- Поддержку WebSocket и HTTP/2.
- Встроенную аутентификацию пользователей через провайдеров (например, Amazon Cognito, OIDC).
- Поддержку контейнерных приложений в Amazon ECS и Kubernetes (Amazon EKS).
- Отслеживание состояния целевых групп (health checks) по протоколам HTTP, HTTPS и gRPC.
¶Network Load Balancer (NLB)
Network Load Balancer функционирует на четвёртом уровне модели OSI (транспортный уровень). Он предназначен для обработки миллионов запросов в секунду с минимальной задержкой (до нескольких миллисекунд). NLB поддерживает протоколы TCP, UDP, TLS и TCP_UDP.
Основные характеристики NLB:
- Сохранение исходного IP-адреса клиента (source IP preservation) — целевые ресурсы видят настоящий IP-адрес пользователя, а не IP-адрес балансировщика.
- Поддержка статических и эластичных IP-адресов (Elastic IP).
- Возможность балансировки трафика между ресурсами в разных зонах доступности.
- Поддержка протокола QUIC (через UDP).
- Использование для высоконагруженных приложений в реальном времени, таких как игры, финансовые системы и потоковое видео.
¶Gateway Load Balancer (GWLB)
Gateway Load Balancer был представлен в 2021 году и предназначен для развёртывания, масштабирования и управления виртуальными сетевыми устройствами (virtual appliances), такими как межсетевые экраны (firewalls), системы предотвращения вторжений (IPS/IDS) и системы глубокого анализа пакетов (DPI). GWLB работает на третьем уровне модели OSI (сетевой уровень) и использует протокол Geneve для инкапсуляции трафика.
GWLB позволяет:
- Прозрачно встраивать сетевые устройства в путь трафика без изменения конфигурации клиентов.
- Автоматически масштабировать пул виртуальных устройств.
- Обеспечивать высокую доступность и отказоустойчивость сетевых функций.
¶Classic Load Balancer (CLB)
Classic Load Balancer является устаревшим типом балансировщика, который был доступен с момента запуска сервиса. Он поддерживает как транспортный (TCP, SSL), так и прикладной (HTTP, HTTPS) уровни, но имеет ограниченные возможности по сравнению с ALB и NLB. AWS рекомендует использовать CLB только для приложений, которые не были мигрированы на более современные типы балансировщиков. Для новых проектов следует применять ALB или NLB.
¶Архитектура и принцип работы
Elastic Load Balancer состоит из нескольких ключевых компонентов:
- Слушатель (listener) — определяет протокол и порт, на котором балансировщик принимает входящий трафик (например, HTTP:80 или HTTPS:443).
- Целевая группа (target group) — группа ресурсов (экземпляры EC2, функции Lambda, IP-адреса), на которые балансировщик направляет трафик. Каждый слушатель может быть связан с одной или несколькими целевыми группами.
- Правила маршрутизации (routing rules) — для ALB и GWLB задаются правила, определяющие, какой трафик направлять в какую целевую группу (например, по пути URL или по домену).
- Проверки состояния (health checks) — периодические запросы к целевым ресурсам для определения их работоспособности. Если ресурс не отвечает, он временно исключается из балансировки.
Балансировщик автоматически масштабируется в зависимости от объёма трафика. AWS не раскрывает точные технические детали реализации ELB, но известно, что каждый балансировщик состоит из множества узлов, распределённых по зонам доступности (Availability Zones). Для обеспечения отказоустойчивости рекомендуется развёртывать балансировщик как минимум в двух зонах доступности.
¶Применение
Elastic Load Balancer используется в различных сценариях:
- Высокодоступные веб-приложения — распределение HTTP/HTTPS-трафика между несколькими экземплярами EC2 или контейнерами.
- Микросервисные архитектуры — маршрутизация запросов к разным сервисам на основе пути URL или заголовков.
- Обработка трафика в реальном времени — использование NLB для игр, финансовых транзакций и потокового видео.
- Интеграция с сетевыми устройствами — развёртывание межсетевых экранов и систем безопасности с помощью GWLB.
- Гибридные облачные решения — балансировка трафика между ресурсами в AWS и локальными центрами обработки данных (через VPN или AWS Direct Connect).
¶Ценообразование
Стоимость использования Elastic Load Balancer складывается из нескольких компонентов:
- Почасовая плата за каждый активный балансировщик (зависит от типа: ALB, NLB, GWLB).
- Плата за единицу объёма данных (LCU — Load Balancer Capacity Units) — для ALB и NLB, которая учитывает количество новых соединений, активных соединений, обработанных байтов и правил маршрутизации.
- Плата за использование дополнительных функций, таких как привязка Elastic IP, использование SSL-сертификатов AWS Certificate Manager и интеграция с AWS WAF (Web Application Firewall).
Подробные тарифы публикуются на официальном сайте AWS и могут меняться.
¶Ограничения и особенности
- Задержка — ALB вносит небольшую задержку (обычно менее 100 мс) из-за обработки на прикладном уровне. NLB обеспечивает минимальную задержку (единицы миллисекунд).
- Лимиты — каждый балансировщик имеет ограничения на количество целевых групп, слушателей и правил. Эти лимиты можно увеличить по запросу в службу поддержки AWS.
- Региональность — ELB является региональным сервисом. Балансировщик не может распределять трафик между ресурсами в разных регионах AWS (для этого требуется использование AWS Global Accelerator или DNS-балансировка).
- Зависимость от DNS — балансировщик использует DNS-имя для доступа. Изменение IP-адресов узлов балансировщика может происходить автоматически, что требует корректной настройки TTL (time-to-live) для DNS-записей.
¶Интеграция с другими сервисами AWS
Elastic Load Balancer тесно интегрирован с другими сервисами экосистемы AWS:
- Amazon EC2 — автоматическая регистрация и удаление экземпляров из целевых групп при масштабировании.
- Amazon ECS и Amazon EKS — балансировка трафика между контейнерами с поддержкой динамического порта.
- AWS Lambda — использование ALB для вызова функций Lambda через HTTP-запросы.
- AWS WAF — защита веб-приложений от атак на уровне приложений.
- AWS Certificate Manager — управление SSL/TLS-сертификатами для HTTPS-трафика.
- Amazon CloudWatch — мониторинг метрик балансировщика (количество запросов, задержка, количество ошибок).
¶Безопасность
Elastic Load Balancer поддерживает несколько механизмов безопасности:
- Шифрование трафика — поддержка HTTPS и TLS для защиты данных в пути.
- Управление доступом — использование политик IAM (Identity and Access Management) для управления правами на создание и изменение балансировщиков.
- Группы безопасности (security groups) — ограничение входящего и исходящего трафика на уровне балансировщика.
- Защита от DDoS-атак — интеграция с AWS Shield (стандартный и Advanced) для защиты от распределённых атак типа «отказ в обслуживании».
¶Источники
- Документация Amazon Web Services: «Elastic Load Balancing» (AWS Documentation).
- «What is Elastic Load Balancing?» — AWS Whitepapers.
- «AWS Elastic Load Balancing: Developer Guide» — Amazon Web Services.
- «Application Load Balancer vs. Network Load Balancer vs. Classic Load Balancer» — AWS Knowledge Center.
- «Gateway Load Balancer Overview» — AWS re:Invent 2021.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


