Открыть сервис

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)

Работает на седьмом уровне (прикладном). Основные возможности:

Network Load Balancer (NLB)

Работает на четвёртом уровне (транспортном). Отличается минимальными задержками (до 1 мс) и высокой пропускной способностью. Основные характеристики:

Gateway Load Balancer (GWLB)

Предназначен для развёртывания и масштабирования виртуальных сетевых устройств (межсетевых экранов, систем предотвращения вторжений, WAF). Работает на третьем (сетевом) уровне. Особенности:

  • Прозрачность для трафика: не изменяет IP-адреса источника и назначения.
  • GENEVE-инкапсуляция: перенос трафика между GWLB и целевыми устройствами.
  • Автомасштабирование: автоматическое увеличение или уменьшение числа экземпляров устройств.

Устройство и принцип работы

Elastic Load Balancer состоит из следующих компонентов:

  • Слушатель (Listener): проверяет входящие соединения на заданном порту и протоколе. Для каждого слушателя определяется правило маршрутизации.
  • Целевая группа (Target Group): группа ресурсов (EC2-инстансы, IP-адреса, Lambda-функции, контейнеры), на которые балансировщик направляет трафик. Каждая целевая группа имеет собственный протокол и порт.
  • Проверка состояния (Health Check): периодическая отправка запросов к целевым ресурсам для определения их работоспособности. Неисправные экземпляры исключаются из ротации.
  • Правила маршрутизации (Rules): для ALB и GWLB определяют, какому слушателю и какой целевой группе направлять запрос в зависимости от условий (путь, заголовок, IP-адрес).

Процесс обработки запроса:

  1. Клиент отправляет запрос на DNS-имя балансировщика.
  2. DNS-сервер AWS возвращает IP-адреса балансировщика в одной или нескольких зонах доступности.
  3. Слушатель принимает запрос и применяет правила маршрутизации.
  4. Балансировщик выбирает целевой ресурс из целевой группы (по алгоритму round-robin, наименьшее количество запросов или наименьшее время отклика).
  5. Запрос перенаправляется на выбранный ресурс. Для 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 →