Elastic Load Balancer
Elastic Load Balancer — это облачный сервис автоматического распределения входящего трафика между несколькими целевыми ресурсами (виртуальными машинами, контейнерами, IP-адресами) в рамках одной или нескольких зон доступности. Относится к категории балансировщиков нагрузки как услуги (LBaaS) и является компонентом инфраструктуры Amazon Web Services (AWS). Обеспечивает отказоустойчивость, масштабируемость и высокую доступность приложений путём перенаправления запросов только на работоспособные экземпляры.
История
Первый тип балансировщика — Classic Load Balancer (CLB) — был запущен в 2009 году. Он работал на четвёртом (транспортном) уровне модели OSI, поддерживая протоколы TCP и SSL/TLS, а также базовое HTTP/HTTPS-балансирование. В 2016 году AWS представила Application Load Balancer (ALB), работающий на седьмом (прикладном) уровне, что позволило выполнять маршрутизацию на основе содержимого запроса (путь, заголовки, параметры). В 2017 году появился Network Load Balancer (NLB), ориентированный на сверхнизкие задержки и работу на четвёртом уровне. В 2021 году был анонсирован Gateway Load Balancer (GWLB), предназначенный для прозрачной интеграции сетевых устройств (межсетевых экранов, систем обнаружения вторжений) в сетевой трафик.
Типы
AWS выделяет четыре типа Elastic Load Balancer, каждый из которых оптимизирован для определённых сценариев.
Classic Load Balancer (CLB)
Устаревший тип, поддерживаемый для обратной совместимости. Работает на четвёртом и седьмом уровнях, но с ограниченной функциональностью. Поддерживает протоколы TCP, SSL/TLS, HTTP и HTTPS. Не поддерживает маршрутизацию на основе содержимого запроса. Рекомендуется заменять на ALB или NLB.
Application Load Balancer (ALB)
Работает на седьмом уровне (прикладном). Основные возможности:
- Маршрутизация на основе содержимого: по пути URL, домену, заголовкам HTTP, методу запроса, параметрам строки запроса.
- Поддержка контейнерных сред: интеграция с Amazon ECS и Kubernetes (EKS) через целевые группы.
- Поддержка WebSocket и HTTP/2.
- Аутентификация пользователей: встроенная поддержка OpenID Connect, OAuth, SAML.
- Защита от DDoS-атак: интеграция с AWS WAF (Web Application Firewall).
- Микросегментация: возможность балансировки трафика между разными сервисами внутри одного приложения.
Network Load Balancer (NLB)
Работает на четвёртом уровне (транспортном). Отличается минимальными задержками (до 1 мс) и высокой пропускной способностью. Основные характеристики:
- Обработка TCP, UDP, TLS.
- Сохранение исходного IP-адреса клиента (не требуется X-Forwarded-For).
- Статические IP-адреса: возможность назначения Elastic IP.
- Поддержка PrivateLink: безопасное подключение к сервисам в других VPC.
- Зональная отказоустойчивость: автоматическое переключение при отказе зоны доступности.
Gateway Load Balancer (GWLB)
Предназначен для развёртывания и масштабирования виртуальных сетевых устройств (межсетевых экранов, систем предотвращения вторжений, WAF). Работает на третьем (сетевом) уровне. Особенности:
- Прозрачность для трафика: не изменяет IP-адреса источника и назначения.
- GENEVE-инкапсуляция: перенос трафика между GWLB и целевыми устройствами.
- Автомасштабирование: автоматическое увеличение или уменьшение числа экземпляров устройств.
Устройство и принцип работы
Elastic Load Balancer состоит из следующих компонентов:
- Слушатель (Listener): проверяет входящие соединения на заданном порту и протоколе. Для каждого слушателя определяется правило маршрутизации.
- Целевая группа (Target Group): группа ресурсов (EC2-инстансы, IP-адреса, Lambda-функции, контейнеры), на которые балансировщик направляет трафик. Каждая целевая группа имеет собственный протокол и порт.
- Проверка состояния (Health Check): периодическая отправка запросов к целевым ресурсам для определения их работоспособности. Неисправные экземпляры исключаются из ротации.
- Правила маршрутизации (Rules): для ALB и GWLB определяют, какому слушателю и какой целевой группе направлять запрос в зависимости от условий (путь, заголовок, IP-адрес).
Процесс обработки запроса:
- Клиент отправляет запрос на DNS-имя балансировщика.
- DNS-сервер AWS возвращает IP-адреса балансировщика в одной или нескольких зонах доступности.
- Слушатель принимает запрос и применяет правила маршрутизации.
- Балансировщик выбирает целевой ресурс из целевой группы (по алгоритму round-robin, наименьшее количество запросов или наименьшее время отклика).
- Запрос перенаправляется на выбранный ресурс. Для ALB и NLB возможна поддержка липких сессий (sticky sessions) для сохранения привязки клиента к одному экземпляру.
Характеристики
- Масштабируемость: автоматическое масштабирование балансировщика в зависимости от объёма трафика. Не требует ручного увеличения мощности.
- Отказоустойчивость: поддержка нескольких зон доступности (Availability Zones). При отказе одной зоны трафик автоматически перенаправляется в другие.
- SSL/TLS-терминация: возможность расшифровки HTTPS-трафика на балансировщике, снижая нагрузку на целевые ресурсы.
- Ведение логов: запись логов доступа в Amazon S3, CloudWatch Logs или Kinesis Data Firehose.
- Интеграция с сервисами AWS: Auto Scaling, CloudFormation, Route 53, Certificate Manager (ACM), WAF, Shield.
Применение
Elastic Load Balancer используется в следующих сценариях:
- Микросервисные архитектуры: ALB маршрутизирует запросы к разным сервисам на основе пути URL (например,
/api/users→ сервис пользователей,/api/orders→ сервис заказов). - Веб-приложения с высокой нагрузкой: NLB обеспечивает минимальные задержки для real-time приложений (игры, финансовые транзакции, видеоконференции).
- Контейнерные оркестрации: интеграция с Amazon ECS и EKS для балансировки трафика между контейнерами.
- Защита от DDoS-атак: ALB в паре с AWS WAF и Shield Advanced фильтрует вредоносный трафик.
- Гибридные сети: GWLB используется для централизованного управления сетевыми устройствами в гибридных и мультиоблачных средах.
- Развёртывание с нулевым временем простоя: с помощью ALB можно реализовать стратегии канареечного развёртывания (canary deployment) и сине-зелёного развёртывания (blue-green deployment).
Примеры
- Сайт электронной коммерции: ALB распределяет запросы между несколькими EC2-инстансами в разных зонах доступности. При выходе из строя одного инстанса трафик перенаправляется на другие. Health Check каждые 30 секунд проверяет работоспособность.
- Система видеоконференций: NLB с протоколом UDP обеспечивает низкую задержку и высокую пропускную способность. Статические IP-адреса упрощают настройку межсетевых экранов клиентов.
- Сеть с межсетевым экраном: GWLB прозрачно направляет трафик через кластер виртуальных межсетевых экранов, которые проверяют пакеты на наличие угроз.
Интересные факты
- Первый Elastic Load Balancer (CLB) был запущен одновременно с сервисом Amazon EC2 в 2009 году.
- NLB способен обрабатывать миллионы запросов в секунду при задержке менее 1 мс.
- ALB поддерживает до 100 правил маршрутизации на один слушатель.
- GWLB использует протокол GENEVE (Generic Network Virtualization Encapsulation) для инкапсуляции трафика, что обеспечивает совместимость с широким спектром сетевых устройств.
- Elastic Load Balancer является частью сервиса AWS Global Accelerator, который оптимизирует маршрутизацию трафика по сети AWS.
Критика
- Стоимость: для небольших проектов затраты на ELB могут быть значительными, особенно при использовании нескольких балансировщиков и зон доступности.
- Сложность конфигурации: настройка правил маршрутизации для ALB и GWLB требует глубоких знаний сетевых протоколов и архитектуры AWS.
- Ограничения ALB: не поддерживает протоколы UDP и TCP без TLS, что делает его непригодным для real-time приложений с низкой задержкой.
- Зависимость от AWS: при миграции в другую облачную платформу или on-premises среду потребуется замена балансировщика на аналог (например, HAProxy, NGINX, Azure Load Balancer).
Источники
- Официальная документация AWS: «What is Elastic Load Balancing?»
- AWS re:Invent 2016: «Introduction to Application Load Balancer»
- AWS re:Invent 2017: «Introduction to Network Load Balancer»
- AWS re:Invent 2021: «Gateway Load Balancer Deep Dive»
- «AWS Certified Solutions Architect — Study Guide» (Sybex, 2021)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →