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

Установка и настройка HAProxy на Debian 11

• 4 min read • DevOps • Обновлено 24 Nov 2025
HAProxy на Debian 11 — установка и настройка
HAProxy на Debian 11 — установка и настройка

Изображение: логотип или иллюстрация HAProxy

О чём эта статья

Это практическое руководство показывает, как шаг за шагом установить и настроить HAProxy на Debian 11 для балансировки HTTP‑трафика между двумя Apache‑серверами. Подойдёт для тестовой и начальной production‑настройки.

Важно: HAProxy — это балансировщик нагрузки и прокси уровня L4/L7. Он отвечает за распределение запросов между серверами и проверку их работоспособности.

Требования

  • Сервер с Debian 11 для HAProxy.
  • Два сервера с Debian 11 для Apache (бэкенды).
  • Пароль root настроен на всех серверах (или эквивалентный доступ через sudo).

Подготовка бэкенд‑веб‑серверов

На каждом из двух бэкендов установите Apache и создайте простую тестовую страницу.

На первом бэкенд‑сервере выполните:

apt-get install apache2 -y

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

echo "

Welcome to the first Apache Server

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

На втором бэкенд‑сервере повторите:

apt-get install apache2 -y

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

echo "

Welcome to the second Apache Server

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

После этого переходите к установке HAProxy.

Установка HAProxy

HAProxy входит в стандартные репозитории Debian 11. Установите пакет и включите сервис в автозагрузку:

apt-get install haproxy -y

Запустите сервис и включите автозапуск:

systemctl start haproxy
systemctl enable haproxy

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

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

nano /etc/haproxy/haproxy.cfg

Добавьте (или измените) секции фронтенда и бэкенда, например:

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 192.168.1.10:80 check
        server             backend02 192.168.1.11:80 check

Сохраните файл. Примечание: 192.168.1.10 и 192.168.1.11 — IP‑адреса ваших первых и вторых Apache‑серверов соответственно.

Перезапустите HAProxy для применения изменений:

systemctl restart haproxy

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

systemctl status haproxy

Пример ожидаемого вывода сервиса (в вашем окружении значения PID/время будут другими):

? haproxy.service - HAProxy Load Balancer
     Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2021-11-07 03:47:14 UTC; 9s ago
       Docs: man:haproxy(1)
             file:/usr/share/doc/haproxy/configuration.txt.gz
    Process: 86678 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS (code=exited, status=0/SUCCESS)
   Main PID: 86680 (haproxy)
      Tasks: 3 (limit: 4679)
     Memory: 34.2M
        CPU: 61ms
     CGroup: /system.slice/haproxy.service
             ??86680 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
             ??86682 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock

Nov 07 03:47:14 debian11 systemd[1]: Starting HAProxy Load Balancer...
Nov 07 03:47:14 debian11 haproxy[86680]: Proxy apache_front started.
Nov 07 03:47:14 debian11 haproxy[86680]: Proxy apache_front started.
Nov 07 03:47:14 debian11 systemd[1]: Started HAProxy Load Balancer.
Nov 07 03:47:14 debian11 haproxy[86680]: [NOTICE] 310/034714 (86680) : New worker #1 (86682) forked
Nov 07 03:47:14 debian11 haproxy[86680]: Proxy apache_backend_servers started.
Nov 07 03:47:14 debian11 haproxy[86680]: Proxy apache_backend_servers started.

Проверка работы

Откройте в браузере http:// и обновляйте страницу несколько раз: ответы должны чередоваться между первой и второй тестовой страницей (roundrobin). Также можно использовать curl:

curl -s http:/// | grep -i Welcome

Тестовая страница первого сервера

Тестовая страница второго сервера

Дополнительно: статистика HAProxy (опционально)

Для контроля удобно открыть встроенную страницу статистики. Пример добавления простого слушателя статистики в конфиг (разместите в конце /etc/haproxy/haproxy.cfg):

listen stats
  bind *:9000
  stats enable
  stats uri /haproxy_stats
  stats refresh 30s
  stats auth admin:strongpassword

После перезапуска вы сможете открыть http://:9000/haproxy_stats и увидеть статус бэкендов. Настройте безопасный доступ (через VPN/ACL или HTTPS) в production.

Безопасность и рекомендации для production

  • Не публикуйте страницу статистики в открытый интернет. Используйте VPN/ACL или HTTPS с базовой аутентификацией.
  • Отключите ненужные возможности в конфиге и запустите haproxy от отдельного пользователя (обычно haproxy). Задайте chroot, если это поддерживается и необходимо.
  • Для HTTPS‑терминации лучше настроить TLS на HAProxy (bind *:443 ssl crt /etc/ssl/private/site.pem) и пробросать HTTP на бэкенды.
  • Включите логирование в syslog для последующего мониторинга.
  • Настройте health checks (команда check уже используется в примере) и таймауты в конфиге для корректного обнаружения недоступных бэкендов.

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

  • Проблема: при запросе виден только один бэкенд. Причины: кеш браузера, отсутствие roundrobin, sticky‑сессии на бэкенде. Решение: очистите кеш, проверьте конфиг, убедитесь, что у Apache нет собственных механизмов удержания сессий.
  • Проблема: бэкенды помечаются как DOWN. Причины: firewall, неправильный порт, приложение не слушает. Решение: проверить доступность бэкенда с HAProxy (curl или telnet по IP:порт), проверьте правила iptables/ufw.
  • Логи: смотрите /var/log/syslog или конкретные логи haproxy при наличии отдельного файла логов.

Когда HAProxy не подойдёт

  • Если вам нужна глубокая обработка приложений на уровне кода (например, бизнес‑логика маршрутизации), это задача уровня reverse‑proxy с интеграцией в приложение.
  • Для extremely high throughput на уровне L4 в некоторых случаях используют LVS или аппаратные решения.

Модель принятия решения (коротко)

  • Нужна ли балансировка? Да, если несколько копий сервиса или требуется высокая доступность.
  • Нужен ли L7‑функционал (перезапись URL, header‑manipulation, SSL termination)? Тогда HAProxy подходит.
  • Нужны ли sticky‑сессии? HAProxy поддерживает, но подумайте о хранении сессий в общем хранилище (Redis) как более масштабируемой опции.

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

  1. HAProxy отвечает на порту 80 с IP сервера.
  2. При обновлении страницы ответы чередуются между двумя бэкендами (roundrobin) или поведение соответствует выбранной политике балансировки.
  3. Оба бэкенда находятся в состоянии UP согласно странице stats или через curl к сокету статистики.
  4. Логи не содержат критических ошибок после перезапуска.
  5. Настроен способ доступа к stats (VPN/ACL/HTTPS), если stats включены.

Чек‑лист ролей

  • Оператор/DevOps:
    • Настроить сервер HAProxy, резервные копии конфига, мониторинг и алерты.
    • Обеспечить доступ к странице stats только для админов.
  • Разработчик:
    • Проверить корректность ответов приложения и заголовков X‑Forwarded‑For.
    • Убедиться, что приложение корректно обрабатывает повторные запросы.
  • QA:
    • Прогнать сценарии отказа бэкендов и проверить поведение HAProxy.

Откат изменений (быстрый план)

  1. Вернуть резервную копию /etc/haproxy/haproxy.cfg.bak:
cp /etc/haproxy/haproxy.cfg.bak /etc/haproxy/haproxy.cfg
systemctl restart haproxy
  1. Если проблема критична — временно отключить HAProxy и направить трафик напрямую на бэкенд (маршрутизация/обновление DNS/внешний балансировщик) до устранения.

Короткая методология развертывания

  1. Подготовить бэкенды и проверить работоспособность приложений.
  2. Установить HAProxy и сделать резервную копию стандартного конфига.
  3. Внедрить базовую конфигурацию фронтенда/бэкенда.
  4. Добавить мониторинг и страницу stats (опционально).
  5. Прогнать тесты отказоустойчивости.
  6. Плавно перевести боевой трафик.

Краткое резюме

HAProxy — лёгкое и эффективное решение для балансировки нагрузки на Debian 11. Начинайте с базовой конфигурации, добавьте мониторинг и TLS‑терминацию для production. Тщательно тестируйте сценарии отказа и имейте план отката.

Поделиться: 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 быстро