Какие типы балансировщиков нагрузки вы знаете?

«Какие типы балансировщиков нагрузки вы знаете?» — вопрос из категории Веб-серверы и балансировка, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В зависимости от уровня модели OSI и решаемой задачи, я применял разные типы балансировщиков нагрузки.

По уровню работы:

  1. Балансировщики уровня 4 (Transport Layer), такие как Network Load Balancer (NLB) в AWS или kube-proxy в режиме iptables в Kubernetes. Они работают с TCP/UDP, принимая решения на основе IP-адресов и портов. Я выбираю их для протоколов, где важна максимальная производительность и минимальная задержка, например, для баз данных, игровых серверов или потокового видео. Они «не видят» содержимое HTTP-запроса.
  2. Балансировщики уровня 7 (Application Layer), например, Application Load Balancer (ALB) в AWS, Ingress-контроллеры (Nginx, Traefik) в Kubernetes или HAProxy. Они анализируют HTTP/HTTPS-заголовки, пути URL, cookie. Это мой основной инструмент для веб-приложений и микросервисов, так как они позволяют:
    • Маршрутизировать трафик на разные группы бэкендов на основе пути (/api/* → сервис API, /static/* → сервис статики).
    • Снимать SSL-терминацию, разгружая бэкенды.
    • Внедрять аутентификацию на уровне ALB.
      # Пример Terraform для создания AWS ALB с правилом маршрутизации
      resource "aws_lb_listener_rule" "api" {
      listener_arn = aws_lb_listener.main.arn
      priority     = 100
      action {
      type             = "forward"
      target_group_arn = aws_lb_target_group.api.arn
      }
      condition {
      path_pattern {
        values = ["/api/*"]
      }
      }
      }

По способу реализации:

  • Аппаратные (F5 BIG-IP) — для высоконагруженных и требовательных к безопасности проектов.
  • Программные (Nginx, HAProxy, Envoy) — основа большинства современных облачных и контейнерных развертываний. Я часто настраиваю и кастомизирую их конфигурации.
  • Облачные управляемые сервисы (AWS ALB/NLB, GCP Cloud Load Balancing, Azure Load Balancer) — использую для снижения операционных затрат, так как они масштабируются автоматически и интегрированы с другими сервисами облака.

Выбор всегда зависит от требований: для «умной» маршрутизации HTTP-трафика — уровень 7, для высокой пропускной способности протоколов уровня 4 — NLB, для полного контроля — развертывание своего программного решения (например, на базе Nginx).