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

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

Ответ

В проектах я применял балансировщики разных уровней, в зависимости от требований к стекту и инфраструктуре.

1. Nginx (L7-балансировщик / веб-сервер): Использую его чаще всего для балансировки HTTP/HTTPS-трафика между бэкенд-приложениями (например, между инстансами Python/Django или Go-сервисов). Его конфигурация гибкая и понятная.

  • Пример конфигурации upstream блока с health checks:

    upstream backend_app {
        # least_conn; # Алгоритм балансировки (можно менять на ip_hash для sticky sessions)
        server 10.0.1.10:8000 max_fails=3 fail_timeout=30s;
        server 10.0.1.11:8000 max_fails=3 fail_timeout=30s;
        server 10.0.1.12:8000 backup; # Резервный сервер
    }
    
    server {
        listen 80;
        server_name api.myapp.com;
    
        location / {
            proxy_pass http://backend_app;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

2. HAProxy (L4/L7-балансировщик): Выбирал его для проектов, где требовалась максимальная производительность и продвинутые функции для TCP (например, балансировка трафика для баз данных в режиме read-replica, RabbitMQ). Его статистическая панель (stats) очень полезна для мониторинга.

3. Облачные балансировщики (AWS ALB/NLB, GCP Load Balancer): Активно использую в облачных инфраструктурах. Например, настраивал AWS Application Load Balancer (ALB) с правилами маршрутизации на основе пути (/api/* → одна целевая группа, /static/* → другая). Их главные плюсы — интеграция с автоскейлинг-группами и сертификатами ACM/Let's Encrypt, что снимает с меня операционную нагрузку по управлению инстансами балансировщика.

Критерии выбора:

  • Nginx: Когда нужен ещё и мощный веб-сервер/кэш, а логика балансировки относительно проста.
  • HAProxy: Когда нужен "чистый", высокопроизводительный балансировщик с продвинутыми настройками для TCP.
  • Облачный ALB/NLB: Когда инфраструктура полностью в облаке и нужно максимально использовать managed-сервисы для уменьшения overhead.