Гид по технологиям

Установка и настройка HAProxy на Ubuntu 22.04

• 5 min read • Инфраструктура • Обновлено 23 Nov 2025
HAProxy на Ubuntu 22.04: установка и настройка
HAProxy на Ubuntu 22.04: установка и настройка

Схема балансировщика HAProxy

Что такое HAProxy

HAProxy (High Availability Proxy) — это свободный и открытый балансировщик нагрузки и прокси‑решение. Он распределяет входящие HTTP/HTTPS запросы между несколькими серверами, повышая отказоустойчивость и масштабируемость приложений. Ключевые преимущества: высокая производительность, надёжные health‑checks и невысокая нагрузка на память и CPU.

Краткое определение: балансировщик нагрузки — компонент, который принимает запросы от клиентов и равномерно распределяет их по группе серверов.

Предварительные требования

  • Сервер с Ubuntu 22.04 для HAProxy.
  • Два сервера с Ubuntu 22.04, на которых будут работать Apache (backend).
  • Настроенный пароль root или аккаунт с sudo на всех серверах.

Настройка Apache как backend

На каждом из двух backend‑серверов выполните установку Apache и создайте простую тестовую страницу.

На первом backend:

apt-get update
apt-get install apache2 -y

Создайте тестовую страницу:

echo "

Success! This is my first Apache Server

" | tee /var/www/html/index.html

На втором backend выполните те же команды и создайте страницу с текстом “Success! This is my second Apache Server”:

apt-get update
apt-get install apache2 -y

echo "

Success! This is my second Apache Server

" | tee /var/www/html/index.html

После этого убедитесь, что оба сервера отвечают по HTTP на порту 80.

Установка HAProxy

HAProxy доступен в стандартном репозитории Ubuntu 22.04. Установите и запустите сервис:

apt-get install haproxy -y

systemctl start haproxy
systemctl enable haproxy

Проверьте статус:

systemctl status haproxy

Ожидаемый ответ покажет, что служба запущена и активна.

Конфигурация HAProxy

Откройте основной конфигурационный файл:

nano /etc/haproxy/haproxy.cfg

Добавьте блок frontend и backend. Пример минимальной конфигурации для HTTP на порту 80:

frontend apache_front
        # Frontend listen port - 80
        bind *:80
        # Set the default backend
        default_backend    apache_backend_servers
        # Enable send X-Forwarded-For header
        option             forwardfor
  
# Define backend
backend apache_backend_servers                                                                                                                      
        # Use roundrobin to balance traffic
        balance            roundrobin
        # Define the backend servers
        server             backend01 172.16.0.200:80 check
        server             backend02 172.16.0.201:80 check

Сохраните файл и перезапустите HAProxy:

systemctl restart haproxy

Пояснение: 172.16.0.200 — IP первого Apache, 172.16.0.201 — IP второго Apache.

Тестирование работы

  1. Откройте в браузере http://.
  2. Перезагружайте страницу несколько раз. При корректной настройке вы должны видеть страницы от серверов по очереди (roundrobin).

Ответ от первого Apache‑сервера в браузере

Ответ от второго Apache‑сервера в браузере

Критерии приёмки

  • HAProxy успешно принимает соединения на порту 80.
  • Запросы равномерно распределяются между backend‑ами (при нескольких обновлениях видны ответы от разных серверов).
  • При остановке одного backend‑а HAProxy перестаёт направлять на него трафик (health‑check отмечает недоступность).
  • systemctl status haproxy показывает Active: active (running).

Рекомендации по безопасности и надёжности

  • Используйте SSL/TLS: терминируйте HTTPS на HAProxy (bind *:443 ssl crt /etc/ssl/certs/your.pem) и перенаправляйте HTTP на HTTPS.
  • Включите rate‑limiting и защиту от DDoS по необходимости (frontend с acl/track).
  • Запустите HAProxy под системным пользователем haproxy, не под root.
  • Регулярно обновляйте пакет haproxy и пакеты OS.
  • Храните сертификаты в защищённом хранилище, используйте automated renew (например, certbot).

Важно: для продакшна добавьте мониторинг (Prometheus/StatsD) и логирование высокого уровня.

Отладка и типичные проблемы

  • Проблема: на HAProxy нет доступа к backend‑ам.

    • Проверьте сетевую доступность: curl http://172.16.0.200:80 с сервера HAProxy.
    • Убедитесь в межсетевых правилах (firewall/ufw) и в том, что Apache слушает на 0.0.0.0:80.
  • Проблема: health‑checks всегда помечают backend как DOWN.

    • Проверьте формат health‑check: по умолчанию HAProxy делает TCP check. Для HTTP можно указать опцию httpchk.
    • Убедитесь, что ответ сервера возвращает 200 OK.
  • Проблема: X‑Forwarded‑For отсутствует.

    • Включите option forwardfor в frontend и убедитесь, что backend корректно читает этот заголовок.

Когда HAProxy не подходит (контрпример)

  • Если у вас крайне простое приложение на одном сервере, балансировщик может быть избыточен.
  • Если вы используете специфичные протоколы на прикладном уровне (не HTTP/HTTPS) и нужны сложные трансформации — подберите решение с поддержкой этих протоколов.

Альтернативные подходы

  • Nginx как балансировщик — простая альтернатива для HTTP/HTTPS с меньшим набором фич.
  • Облачные балансировщики (AWS ELB, GCP Load Balancer) — управляемые сервисы с интегрированным SSL и авто‑масштабированием.

Контрольный чеклист по ролям

  • Администратор:

    • Установить и запустить HAProxy, настроить systemd.
    • Настроить firewall и SELinux/AppArmor (если используется).
    • Настроить резервное копирование конфигураций.
  • Разработчик:

    • Проверить корректность X‑Forwarded‑For и перенаправлений.
    • Убедиться, что сессии либо stateless, либо настроено сохранение сессий (stickiness).
  • Тестировщик:

    • Проверить балансировку (roundrobin), эмуляцию падения backend‑ов и отклик при failover.
    • Выполнить нагрузочное тестирование (ab/hey) на тестовой среде.

Тесты и сценарии приёмки

  1. Функциональный: запросы распределяются между backend01 и backend02 при 10 последовательных обновлениях.
  2. Отказ одного backend: остановить Apache на backend01 — все новые запросы должны идти на backend02.
  3. Health‑check: воспроизвести неверный HTTP‑ответ и убедиться, что HAProxy пометит сервер как DOWN.

Краткая методология внедрения (шаги)

  1. Подготовить backend‑серверы и убедиться в их работоспособности по HTTP.
  2. Установить HAProxy и сделать минимальную конфигурацию на тестовой машине.
  3. Проверить балансировку и health‑checks.
  4. Добавить SSL/TLS, логирование и мониторинг.
  5. Перенести конфигурацию в production по плану и протестировать на реальном трафике.

Итог

Мы показали, как установить HAProxy на Ubuntu 22.04, настроить фронтенд на 80‑м порту и два backend‑сервера Apache с простыми health‑checks. Для продакшна дополните настройку SSL, мониторингом и правилами безопасности. HAProxy остаётся хорошим выбором, когда требуется быстрый и надёжный балансировщик нагрузки для веб‑приложений.

Сводка:

  • Установите Apache на backend‑ах и проверьте доступ.
  • Настройте haproxy.cfg с frontend/ backend и health‑checks.
  • Перезапустите HAProxy и проверьте распределение запросов.

Заметки: при миграции в продакшн обязательно прогоните нагрузочные тесты и настройте мониторинг.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро