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

Установка и настройка HAProxy на Rocky Linux 8

5 min read Сетевое администрирование Обновлено 17 Nov 2025
HAProxy на Rocky Linux 8 — установка и настройка
HAProxy на Rocky Linux 8 — установка и настройка

Иллюстрация балансировки нагрузки с HAProxy

В этом пошаговом руководстве показано, как установить и настроить HAProxy на Rocky Linux 8: установка пакета, базовая конфигурация frontend/backend, логирование через rsyslog, правила firewalld и проверка работы. Приведены рекомендации по безопасности, отладке и контрольный список для администраторов.

Введение

При публикации приложения в Интернете ключевые параметры — доступность, масштабируемость и производительность. HAProxy — надёжный и бесплатный балансировщик нагрузки с открытым исходным кодом. Он распределяет входящий трафик между несколькими backend-серверами, повышая отказоустойчивость.

Для этого руководства используется следующая сеть:

  • HAProxy: 172.16.10.10
  • Backend1: 172.16.10.11
  • Backend2: 172.16.10.12

Важно: в примерах сохранены IPv4-адреса и порты, их нужно заменить на реальные в вашей инфраструктуре.

Что вы получите из этой статьи

  • Пошаговая установка HAProxy на Rocky Linux 8
  • Пример конфигурации frontend и backend
  • Настройка логирования через rsyslog
  • Открытие порта в firewalld
  • Настройка простых проверок состояния (health checks)
  • Проверка работоспособности и отладка
  • Рекомендации по безопасности, альтернативы и чек-листы

Требования

  • Сервер с Rocky Linux 8
  • Доступ root или sudo
  • Базовое представление о systemd и iptables/firewalld

Установка HAProxy

По умолчанию пакет HAProxy доступен в репозитории Rocky Linux 8. Установите его:

dnf install haproxy -y

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

systemctl start haproxy
systemctl enable haproxy

Проверьте базовый статус:

systemctl status haproxy

Если конфигурация содержит синтаксические ошибки, systemd не запустит службу. В этом случае используйте проверку конфига перед рестартом:

haproxy -c -f /etc/haproxy/haproxy.cfg

Базовая конфигурация HAProxy

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

nano /etc/haproxy/haproxy.cfg

Ниже — минимально рабочая конфигурация, адаптированная под наш пример. В разделе frontend указываем bind на IP:порт, включаем опции HTTP и адрес статистики. В backend задаём алгоритм балансировки и здоровье серверов.

frontend http_balancer
    bind 172.16.10.10:80
    option http-server-close
    option forwardfor
    stats uri /haproxy?stats

default_backend     Apache_webservers

backend apache_webservers
    mode        http
    balance     roundrobin
    option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost
    server  apache1  172.16.10.11:80  check
    server  apache2  172.16.10.12:80  check

Замечания:

  • balance roundrobin — простой алгоритм, он циклически распределяет запросы.
  • option httpchk выполняет простой HTTP HEAD-запрос для проверки доступности бэкенда.
  • stats uri позволяет просматривать интерфейс статистики по /haproxy?stats (по умолчанию без аутентификации).

Сохраните файл и перейдите к настройке логирования.

Настройка rsyslog для HAProxy

Отредактируйте /etc/rsyslog.conf и включите UDP-рецептор, если он закомментирован:

nano /etc/rsyslog.conf

Разкомментируйте (если требуется):

module(load="imudp")
input(type="imudp" port="514")

Создайте отдельный файл конфигурации для HAProxy:

nano /etc/rsyslog.d/haproxy.conf

Добавьте правила:

local2.=info     /var/log/haproxy-access.log
local2.notice    /var/log/haproxy-info.log

Перезапустите rsyslog и затем HAProxy:

systemctl start rsyslog
systemctl enable rsyslog
systemctl restart haproxy

Проверьте, что логи создаются:

ls -l /var/log/haproxy-*
tail -f /var/log/haproxy-access.log

Конфигурация брандмауэра (firewalld)

Разрешите порт 80 (HTTP) на всех узлах, где это необходимо:

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

Если в сети используется зональная политика, укажите зону и интерфейс явно:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

Если планируется администрирование через SSH и доступ к статистике, откройте только нужные порты и ограничьте доступ по IP.

Установка и подготовка backend-серверов (Apache)

На каждом backend установите Apache HTTPD:

dnf install httpd -y
systemctl start httpd
systemctl enable httpd

Замените содержимое index.html на каждом сервере для проверки балансировки.

nano /usr/share/httpd/noindex/index.html

На первом беке поместите:

Welcome to First Apache Web Server!

На втором:

Welcome to Second Apache Web Server!

После этого HAProxy будет перенаправлять запросы между ними.

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

Откройте в браузере http://172.16.10.10 — вы должны видеть страницу первого сервера. Обновите страницу — должен отображаться второй сервер (roundrobin). Наглядно это видно на скриншотах:

Страница первого Apache-сервера

Страница второго Apache-сервера

Также можно проверить через curl, чтобы увидеть заголовки и проксирование:

curl -I http://172.16.10.10

Для подробной диагностики используйте логи HAProxy и бэкендов:

tail -n 200 /var/log/haproxy-access.log
journalctl -u haproxy -e

Проверка конфигурации и отладка

Полезные команды:

  • haproxy -c -f /etc/haproxy/haproxy.cfg — проверка синтаксиса конфигурации
  • ss -lnpt | grep haproxy — проверка портов
  • systemctl status haproxy — статус сервиса
  • tcpdump -i any port 80 — сетевой трафик (при необходимости)

Типичные ошибки и способы их устранения:

  • Служба не стартует — проверьте output haproxy -c и systemd journal.
  • Бэкенды в состоянии DOWN — проверьте доступность по IP:port и ответ на HTTP HEAD.
  • Нет логов — убедитесь, что rsyslog запущен и /etc/rsyslog.d/haproxy.conf корректен.

Безопасность и hardening

Рекомендации, которые полезно применить перед продакшен-внедрением:

  • Ограничьте доступ к интерфейсу статистики (/haproxy?stats) по IP или добавьте аутентификацию:
listen stats
    bind 172.16.10.10:9000
    stats enable
    stats uri /haproxy?stats
    stats auth admin:StrongPassword
  • Включите TLS на frontend (ssl termination) или используйте отдельный реверс-прокси с TLS.
  • Отключите ненужные опции и избегайте отображения подробной отладки в логах.
  • Настройте ограничение подключений и timeouts в haproxy.cfg (tune.timeout.connect и др.).
  • Настройте SELinux и проверьте, что процессы имеют доступ к логам и pid-файлам. При проблемах временно проверьте permissive режим.

Пример базовой защиты статистики:

acl allowed_admin src 10.0.0.0/24
http-request deny unless allowed_admin if { path_beg /haproxy }

Когда HAProxy не подходит или альтернативы

Контраргументы/когда не стоит использовать HAProxy:

  • Нужна очень простая балансировка L7 в контейнерной среде — подойдёт Traefik или kube-proxy для Kubernetes.
  • Требуется балансировка L4 с экстремально низкой задержкой — LVS (IPVS) может дать более низкий накладной эффект.
  • Требуется «из коробки» динамическая интеграция с сервис-дискавери — Traefik предлагает встроенную интеграцию с динамической конфигурацией.

Альтернативы:

  • Nginx (reverse proxy + load balancing)
  • Traefik (динамическая маршрутизация в контейнерах)
  • Keepalived + HAProxy (дублирование виртуального IP для высокой доступности)
  • LVS/IPVS (L4)

Методология внедрения (мини-план)

  1. Подготовка окружения: резервные копии конфигов, доступ root, тестовая сеть.
  2. Установка HAProxy на тестовый узел, базовая конфигурация.
  3. Настройка бэкендов и проверка health checks.
  4. Настройка логирования и мониторинга.
  5. Нагрузочное тестирование в QA.
  6. Плавный перевод трафика и мониторинг в производстве.

Ролевые чек-листы

Администратор/DevOps:

  • Установить пакет и включить сервисы (haproxy, rsyslog)
  • Настроить firewall-cmd
  • Проверить SELinux и права на логи

Разработчик/QA:

  • Подготовить тестовые страницы/эндпоинты на бэкендах
  • Провести smoke- и нагрузочное тестирование
  • Проверить корректность заголовков и сессий

Оператор поддержки:

  • Знать команды проверки статуса
  • Уметь читать логи HAProxy и Apache
  • Иметь план rollback при проблемах

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

  • HAProxy успешно стартует и проходит проверку конфигурации (haproxy -c).
  • HTTP-запросы корректно распределяются между backend-серверами.
  • Логи HAProxy пишутся в /var/log/haproxy-*.log.
  • Доступ к статистике защищён или ограничен по IP.
  • Нагрузочные тесты не показывают критического роста ошибок 5xx.

Короткая галерея ошибок (Edge-case gallery)

  • Проблема: backend отвечает медленно — увеличьте timeout и проверьте ресурсную нагрузку.
  • Проблема: сессии теряются — настройте проксирование X-Forwarded-For и sticky-сессии при необходимости.
  • Проблема: системный ресурс (FDs) исчерпан — поднимите лимиты в systemd unit (LimitNOFILE).

1‑строчный глоссарий

  • frontend: входящая точка в HAProxy; принимает соединения.
  • backend: пул серверов, куда HAProxy отправляет запросы.
  • stats: встроенная страница статистики HAProxy.
  • health check: проверка доступности backend-сервера.

Заключение

Вы успешно установили и настроили базовую конфигурацию HAProxy на Rocky Linux 8. Далее подумайте о шифровании трафика, ограничении доступа к статистике и интеграции с мониторингом (Prometheus/Grafana). Перед переводом в продакшен выполните нагрузочные тесты и подготовьте план отката.

Important: всегда тестируйте изменения конфигурации в тестовой среде и храните резервные копии файлов конфигурации.

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

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

Ошибка olicenseheartbeat.exe в Microsoft Office
Windows

Ошибка olicenseheartbeat.exe в Microsoft Office

Бесплатный Microsoft Word в браузере
Программное обеспечение

Бесплатный Microsoft Word в браузере

Обновление образов Docker: руководство по безопасным апдейтам
DevOps

Обновление образов Docker: руководство по безопасным апдейтам

Как исправить потерю пакетов в Rocket League
Игры

Как исправить потерю пакетов в Rocket League

Как защитить сайт на WordPress
Безопасность

Как защитить сайт на WordPress

Как отправить большие файлы: SendSpace и альтернативы
Обмен файлами

Как отправить большие файлы: SendSpace и альтернативы