// blog

Как установить и настроить HAProxy на VPS Linux: полное руководство по балансировке нагрузки

August 29, 2026 · by Alex M.

Как установить и настроить HAProxy на VPS Linux: полное руководство по балансировке нагрузки

Если ваш веб-проект активно растёт, один сервер рано или поздно станет узким местом. HAProxy (High Availability Proxy) — один из самых производительных и надёжных балансировщиков нагрузки с открытым исходным кодом. Его используют GitHub, Twitter, Stack Overflow и тысячи других компаний по всему миру.

В этом руководстве мы пошагово установим и настроим HAProxy на VPS NVMe под управлением Ubuntu 22.04 LTS — от установки до полноценного рабочего окружения с SSL и мониторингом.


Что такое HAProxy и зачем он нужен?

HAProxy — это балансировщик нагрузки и прокси-сервер уровня 4 (TCP) и уровня 7 (HTTP). Он принимает входящий трафик и распределяет его между несколькими backend-серверами.

Ключевые преимущества:

  • Высокая доступность: при падении одного из backend-серверов трафик автоматически перенаправляется на рабочие узлы.
  • Горизонтальное масштабирование: добавляйте новые серверы в пул без простоя.
  • Встроенный мониторинг: веб-дашборд со статистикой в реальном времени.
  • Гибкость: поддержка множества алгоритмов балансировки.

HAProxy отлично подходит как для VPS SSD, так и для крупных выделенных серверов.


Архитектура нашего стенда

Мы настроим следующую схему:

  • 1 сервер HAProxy (Frontend): принимает запросы от пользователей.
  • 2 backend-сервера (app1, app2): обрабатывают запросы.
Пользователи → HAProxy (192.168.1.10) → app1 (192.168.1.11:80)
                                        → app2 (192.168.1.12:80)

Схему легко расширить, добавив дополнительные узлы.


Шаг 1: Обновление системы и установка HAProxy

Подключитесь к серверу по SSH и выполните:

sudo apt update && sudo apt upgrade -y
sudo apt install haproxy -y

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

haproxy -v

Вы должны увидеть строку вида HAProxy version 2.4.x. Проверьте статус службы:

sudo systemctl status haproxy

Шаг 2: Подготовка backend-серверов

На каждом backend-сервере установите Nginx для имитации веб-приложения:

sudo apt install nginx -y

Чтобы различать ответы, изменим главную страницу:

На app1:

echo "<h1>Backend: app1</h1>" | sudo tee /var/www/html/index.html

На app2:

echo "<h1>Backend: app2</h1>" | sudo tee /var/www/html/index.html

Запустите Nginx на обоих серверах:

sudo systemctl enable nginx && sudo systemctl start nginx

Шаг 3: Настройка HAProxy

Основной файл конфигурации находится по пути /etc/haproxy/haproxy.cfg. Создайте резервную копию перед редактированием:

sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

Откройте файл для редактирования:

sudo nano /etc/haproxy/haproxy.cfg

Замените содержимое следующей конфигурацией:

global
    log /dev/log local0
    log /dev/log local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon
    maxconn 50000

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5s
    timeout client  30s
    timeout server  30s
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 503 /etc/haproxy/errors/503.http

# Frontend — принимает трафик
frontend http_front
    bind *:80
    default_backend http_back

# Backend — серверы приложения
backend http_back
    balance roundrobin
    option httpchk GET /
    server app1 192.168.1.11:80 check
    server app2 192.168.1.12:80 check

# Дашборд статистики
listen stats
    bind *:8080
    stats enable
    stats uri /haproxy?stats
    stats refresh 10s
    stats auth admin:СильныйПароль123

Важно: замените IP-адреса на реальные адреса ваших backend-серверов, а пароль — на надёжный.


Шаг 4: Проверка конфигурации и перезапуск

Перед применением проверьте синтаксис:

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

Если видите Configuration file is valid — всё в порядке. Перезапустите сервис:

sudo systemctl restart haproxy
sudo systemctl enable haproxy

Шаг 5: Настройка файрвола

Откройте необходимые порты:

sudo ufw allow 80/tcp
sudo ufw allow 8080/tcp
sudo ufw enable

Подробнее о настройке UFW и безопасности сервера читайте в блоге CLIQHOST.


Шаг 6: Тестирование балансировки нагрузки

Обратитесь к IP-адресу HAProxy-сервера несколько раз:

curl http://192.168.1.10
curl http://192.168.1.10
curl http://192.168.1.10

Ответы должны чередоваться между Backend: app1 и Backend: app2 — Round Robin работает.

Дашборд статистики доступен по адресу:

http://192.168.1.10:8080/haproxy?stats

Здесь вы увидите статус каждого backend-сервера, количество активных соединений, частоту запросов и многое другое.


Алгоритмы балансировки в HAProxy

HAProxy поддерживает несколько алгоритмов. Меняйте параметр balance в секции backend:

Алгоритм Описание
roundrobin Циклическое распределение запросов
leastconn Направляет к серверу с наименьшим числом соединений
source IP Hash — один пользователь всегда попадает на один сервер
uri По URI — полезно для кэширования
random Случайный выбор сервера

Для приложений с пользовательскими сессиями (например, интернет-магазины) используйте source или sticky sessions.


SSL-терминация в HAProxy

Для production-окружения трафик должен передаваться по HTTPS. HAProxy умеет самостоятельно обрабатывать SSL-соединения. Получить надёжный сертификат можно через SSL-сертификаты от CLIQHOST.

Объедините сертификат и закрытый ключ в один .pem-файл:

cat mydomain.crt mydomain.key > /etc/haproxy/certs/mydomain.pem

Обновите секцию frontend:

frontend https_front
    bind *:443 ssl crt /etc/haproxy/certs/mydomain.pem
    redirect scheme https if !{ ssl_fc }
    default_backend http_back

frontend http_front
    bind *:80
    redirect scheme https code 301

Проверки работоспособности (Health Checks)

Директива check у каждого backend-сервера включает автоматические проверки. HAProxy периодически отправляет GET / и исключает из ротации серверы, которые не отвечают.

Дополнительная настройка:

server app1 192.168.1.11:80 check inter 3s rise 2 fall 3
  • inter 3s — проверка каждые 3 секунды
  • rise 2 — сервер считается рабочим после 2 успешных ответов подряд
  • fall 3 — исключается после 3 неудачных ответов подряд

HAProxy на выделенных серверах

Если нагрузка вашего проекта превышает возможности одного VPS, рассмотрите управляемый выделенный сервер — CLIQHOST берёт на себя администрирование, мониторинг и обновления. Для тех, кто предпочитает полный контроль, доступен неуправляемый выделенный сервер. HAProxy легко справляется с миллионами запросов в сутки на мощном железе.


Типичные ошибки и как их избежать

  1. Нет резервной копии конфига — всегда делайте cp haproxy.cfg haproxy.cfg.bak перед изменениями.
  2. Открытый дашборд без пароля — обязательно используйте stats auth.
  3. Слишком малые таймауты — для медленных приложений увеличьте timeout server до 60s.
  4. Отсутствие option httpchk — без health checks трафик пойдёт и на упавшие серверы.
  5. Не включён автозапуск — не забудьте systemctl enable haproxy.

Заключение

HAProxy — зрелый и надёжный инструмент, который превращает вашу инфраструктуру из единой точки отказа в масштабируемую и отказоустойчивую систему. Следуя этому руководству, вы получите рабочий балансировщик нагрузки с автоматическими проверками, SSL и веб-мониторингом.

Начните прямо сейчас с VPS NVMe от CLIQHOST — высокая производительность и SSD-хранилище для требовательных задач. Если хотите, чтобы настройку выполнили специалисты, воспользуйтесь услугой администрирования серверов. Есть вопросы? Свяжитесь с нашей командой — мы всегда готовы помочь.

SHARE
// Что говорят наши клиенты

Что говорят наши клиенты

Реальные отзывы клиентов, которые доверяют CLIQHOST за производительность, надёжность и профессиональную техническую поддержку.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău