Установка HAProxy на Ubuntu

Протестировано
Ubuntu: 22.04, 24.04

HAProxy (High Availability Proxy) — это бесплатное программное обеспечение с открытым исходным кодом для балансировки нагрузки и проксирования. Оно предназначено для упрощения и защиты современных архитектур приложений, позволяя распределять входящие запросы по нескольким backend-серверам. Это особенно полезно при высокой нагрузке, когда один сервер не справляется с потоком подключений. HAProxy популярен благодаря своей эффективности, надежности, низкому потреблению ресурсов (памяти и CPU) и поддержке различных протоколов, включая HTTP, HTTPS и TCP.

В этой статье мы рассмотрим процесс установки и настройки HAProxy на Ubuntu для балансировки нагрузки между двумя веб-серверами Apache. Все команды выполняются с правами root или с использованием sudo.

Схема балансировки нагрузки с HAProxy и Apache.



Требования

Для настройки нам потребуется:

  • Один сервер с Ubuntu для установки HAProxy (фронтенд).
  • Два сервера с Ubuntu для веб-серверов Apache (backend).
  • Доступ с правами root (или sudo) на всех серверах.
  • Базовые знания работы в терминале Linux.

Предположим, что IP-адреса серверов следующие (замените на свои):

  • HAProxy: 192.168.56.10
  • Apache1 (backend1): 192.168.56.11
  • Apache2 (backend2): 192.168.56.12

Убедитесь, что все серверы обновлены: выполните sudo apt update && sudo apt upgrade -y на каждом.


Настройка backend-серверов Apache

Сначала настроим два backend-сервера с Apache для демонстрации балансировки. Установим Apache из стандартных репозиториев Ubuntu.

На каждом backend-сервере выполните:

Bash
sudo apt update
sudo apt install apache2 -y

Установка веб-сервера Apache на backend-сервере.

После установки создадим простые тестовые страницы, чтобы отличать серверы:

На первом backend1:

Bash
echo "<h1>Это первый backend-сервер Apache</h1>" | sudo tee /var/www/html/index.html

На втором backend2:

Bash
echo "<h1>Это второй backend-сервер Apache</h1>" | sudo tee /var/www/html/index.html

Запустите и добавьте Apache в автозагрузку:

Bash
sudo systemctl start apache2
sudo systemctl enable apache2

Проверьте статус: sudo systemctl status apache2. Серверы готовы.


Установка HAProxy

HAProxy доступен в стандартных репозиториях Ubuntu. Установите его на фронтенд-сервере:

Bash
sudo apt update
sudo apt install haproxy -y

Установка HAProxy из репозиториев Ubuntu.

После установки запустите службу и добавьте её в автозагрузку:

Bash
sudo systemctl start haproxy
sudo systemctl enable haproxy

Проверьте статус: sudo systemctl status haproxy. Вывод должен показывать, что служба активна.

Проверка статуса службы HAProxy после установки.

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

Основной файл конфигурации — /etc/haproxy/haproxy.cfg. Откройте его в редакторе (например, nano: sudo nano /etc/haproxy/haproxy.cfg).

Оставьте разделы global и defaults без изменений (они настроены по умолчанию). Добавьте в конец файла разделы для frontend и backend:

Bash
frontend apache_front
    bind *:80
    mode http
    option forwardfor
    default_backend apache_backend_servers

backend apache_backend_servers
    mode http
    balance roundrobin
    server backend1 192.168.56.11:80 check
    server backend2 192.168.56.12:80 check
  • bind *:80: Прослушивание на порту 80.
  • mode http: Режим для HTTP-трафика.
  • option forwardfor: Передача оригинального IP клиента (X-Forwarded-For).
  • balance roundrobin: Алгоритм балансировки (по кругу).
  • server ... check: Backend-серверы с проверкой доступности.

Сохраните файл и перезапустите HAProxy: sudo systemctl restart haproxy.

Пример конфигурационного файла HAProxy для балансировки HTTP-трафика.

Если возникнут ошибки, проверьте синтаксис: sudo haproxy -f /etc/haproxy/haproxy.cfg -c.


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

Откройте веб-браузер и перейдите по адресу http://192.168.56.10 (IP HAProxy). При первом запросе вы увидите страницу с одного backend-сервера, при обновлении — с другого (благодаря roundrobin).

Ответ от первого backend-сервера через HAProxy.

Обновите страницу несколько раз, чтобы убедиться в балансировке.

Ответ от второго backend-сервера через HAProxy.

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

INI
listen stats
    bind *:8404
    stats enable
    stats uri /stats
    stats hide-version
    stats admin if LOCALHOST

Затем перейдите по http://192.168.1.10:8404/stats для просмотра статистики.


Заключение.

В этой статье мы рассмотрели установку и настройку HAProxy на Ubuntu для распределения нагрузки между двумя веб-серверами Apache. Это простая конфигурация, которая повышает производительность, доступность и отказоустойчивость вашего приложения. Для продакшена рекомендуется добавить HTTPS (с сертификатами), более сложные проверки здоровья серверов и мониторинг логов (/var/log/haproxy.log). HAProxy легко масштабируется — добавьте больше backend-серверов по мере роста нагрузки.

Если у вас возникнут вопросы, ознакомьтесь с официальной документацией HAProxy или форумами Ubuntu.


Читайте также

Было ли это полезно?

1 / 0

Добавить комментарий 0