Работали ли вы с балансировщиками нагрузки?

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

Ответ

Да, я настраивал и обслуживал различные балансировщики нагрузки как на уровне приложения (L7), так и на сетевом уровне (L4).

Мой опыт включает:

  • Nginx: Конфигурация как reverse proxy с балансировкой, health checks, termination SSL/TLS и кэшированием.
  • HAProxy: Для TCP-балансировки баз данных (PostgreSQL репликации) и высоконагруженных HTTP-сервисов с продвинутыми алгоритмами балансировки (leastconn).
  • Облачные балансировщики: AWS ALB/NLB (с настройкой Target Groups, правил маршрутизации на основе пути или host), GCP Cloud Load Balancing.
  • Service Mesh: Использование Istio Ingress Gateway для балансировки в Kubernetes с canary-развертываниями.

Пример конфигурации HAProxy для отказоустойчивости:

frontend http_front
    bind *:80
    mode http
    default_backend http_back

backend http_back
    mode http
    balance roundrobin
    option httpchk GET /health
    server web1 10.0.1.10:8080 check fall 3 rise 2
    server web2 10.0.1.11:8080 check fall 3 rise 2
    server web3 10.0.1.12:8080 check backup  # Резервный сервер

Ключевые задачи: обеспечение нулевого времени простоя при деплое (drain connections), настройка правильных health checks, мониторинг метрик (активные соединения, rate, ошибки) и интеграция с системами автоматического обнаружения сервисов (Consul).