Что такое Application Load Balancer (ALB)?

«Что такое Application Load Balancer (ALB)?» — вопрос из категории Веб-серверы и балансировка, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Application Load Balancer (ALB) — это балансировщик нагрузки 7-го уровня (L7) модели OSI, который работает с HTTP/HTTPS-трафиком. В отличие от балансировщиков уровня сети (L4), ALB понимает содержимое запросов, что позволяет принимать решения на основе пути URL, заголовков, метода HTTP или содержимого тела запроса.

Ключевые возможности и сценарии использования в DevOps:

  • Маршрутизация на основе пути (Path-based routing): Направление запросов /api/* к одному набору серверов (бэкенд), а /static/* — к другому (например, S3).
  • Маршрутизация на основе хоста (Host-based routing): Перенаправление app1.example.com и app2.example.com на разные целевые группы.
  • Termination SSL/TLS: Снятие шифрования на балансировщике, разгрузка бэкенд-серверов.
  • Интеграция с AWS сервисами: Прямая маршрутизация на AWS Lambda, Amazon ECS (Fargate), EC2.
  • Health Checks: Активные проверки здоровья инстансов в целевых группах и автоматическое исключение нерабочих.
  • WebSocket и HTTP/2: Нативная поддержка современных протоколов.

Пример архитектуры (AWS ALB):

  1. Пользователь делает запрос к https://api.example.com/orders.
  2. ALB анализирует заголовок Host и путь /orders.
  3. На основе предварительно настроенных правил (Rules) ALB перенаправляет запрос в целевую группу (Target Group), состоящую из инстансов EC2 или контейнеров ECS, отвечающих за микросервис заказов.
  4. ALB обеспечивает sticky sessions (при необходимости) и собирает метрики доступа в CloudWatch.