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

Elastic Load Balancing

Elastic Load Balancing (ELB) — это облачный сервис автоматического распределения входящего трафика между несколькими целевыми ресурсами (например, виртуальными серверами, контейнерами или IP-адресами) в одной или нескольких зонах доступности. Сервис предоставляется компанией Amazon Web Services (AWS) и является частью её инфраструктурной платформы. Основная функция ELB — обеспечение высокой доступности, отказоустойчивости и масштабируемости приложений за счёт равномерной загрузки целевых ресурсов и автоматического исключения неисправных из пула обработки запросов.

История и развитие

Первая версия Elastic Load Balancing была запущена компанией Amazon в мае 2009 года. Изначально сервис представлял собой классический балансировщик нагрузки (Classic Load Balancer, CLB), работавший на четвёртом (транспортном) и седьмом (прикладном) уровнях модели OSI. Он поддерживал протоколы HTTP, HTTPS и TCP и был тесно интегрирован с сервисом Amazon EC2.

В 2016 году AWS представила два новых типа балансировщиков: Application Load Balancer (ALB) и Network Load Balancer (NLB). ALB был оптимизирован для работы на прикладном уровне (HTTP/HTTPS), поддерживал маршрутизацию на основе содержимого запроса (путь, домен, заголовки) и интеграцию с контейнерными сервисами, такими как Amazon ECS и Kubernetes. NLB, в свою очередь, работал на транспортном уровне (TCP/UDP/TLS) и обеспечивал сверхнизкую задержку (до нескольких миллисекунд), что сделало его подходящим для высоконагруженных приложений и протоколов реального времени.

В 2017 году появился Gateway Load Balancer (GWLB), предназначенный для прозрачного внедрения виртуальных сетевых устройств (межсетевых экранов, систем обнаружения вторжений) в сетевую инфраструктуру. GWLB работает на третьем (сетевом) уровне модели OSI и использует протокол GENEVE для инкапсуляции трафика.

В 2021 году AWS объявила о постепенном выводе из эксплуатации Classic Load Balancer (CLB), рекомендовав пользователям мигрировать на ALB или NLB.

Типы балансировщиков нагрузки

Elastic Load Balancing включает четыре основных типа балансировщиков, каждый из которых оптимизирован для определённых сценариев использования.

Classic Load Balancer (CLB)

Устаревший тип, поддерживающий базовые функции балансировки на транспортном и прикладном уровнях. CLB распределяет трафик между экземплярами Amazon EC2, используя простые алгоритмы (например, round-robin) и проверки состояния (health checks). Не поддерживает маршрутизацию на основе содержимого запроса и интеграцию с контейнерными оркестраторами. Рекомендуется использовать только для приложений, которые не могут быть адаптированы под ALB или NLB.

Application Load Balancer (ALB)

Работает на седьмом уровне модели OSI (прикладной уровень) и предназначен для HTTP и HTTPS-трафика. ALB поддерживает:

Network Load Balancer (NLB)

Работает на четвёртом уровне модели OSI (транспортный уровень) и обеспечивает балансировку TCP, UDP и TLS-трафика. Ключевые характеристики:

Gateway Load Balancer (GWLB)

Работает на третьем уровне модели OSI (сетевой уровень) и предназначен для прозрачного внедрения виртуальных сетевых устройств. GWLB использует протокол GENEVE (Generic Network Virtualization Encapsulation) для инкапсуляции трафика. Основные сценарии использования:

Принцип работы

Elastic Load Balancing функционирует на основе следующих компонентов и механизмов:

Целевые группы (Target Groups)

Каждый балансировщик направляет трафик в одну или несколько целевых групп. Целевая группа может содержать:

Проверки состояния (Health Checks)

Балансировщик регулярно отправляет запросы (например, HTTP GET на определённый путь) к каждому целевому ресурсу. Если ресурс не отвечает в течение заданного тайм-аута или возвращает код ошибки, он считается нездоровым и временно исключается из пула обработки запросов. После восстановления работоспособности ресурс автоматически возвращается в пул.

Алгоритмы балансировки

Для распределения трафика используются различные алгоритмы:

Зоны доступности (Availability Zones)

Балансировщик автоматически распределяет трафик между целевыми ресурсами, расположенными в разных зонах доступности AWS. В случае выхода из строя целой зоны доступности балансировщик перенаправляет трафик только на здоровые зоны.

Применение и значение

Elastic Load Balancing является ключевым компонентом архитектуры микросервисов, контейнерных сред и высоконагруженных веб-приложений. Основные сценарии использования:

Ограничения и критика

Несмотря на широкие возможности, Elastic Load Balancing имеет ряд ограничений:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →