Як налаштувати HAProxy для балансування навантаження з Keepalived

event 09.01.2026 00:49
| category Instruction | person iron_will | comment 0 | visibility 235 | |

Вступ

У сучасних високонавантажених системах питання відмовостійкості та масштабування є критичними. HAProxy — один із найпопулярніших L4/L7 балансувальників навантаження, який широко використовується для розподілу трафіку між серверами. Проте сам по собі HAProxy не забезпечує високої доступності (High Availability).

Для усунення цієї проблеми зазвичай використовують Keepalived, який реалізує протокол VRRP (Virtual Router Redundancy Protocol) та дозволяє автоматично перемикати віртуальну IP-адресу (VIP) між кількома вузлами HAProxy у разі збою.

У цій статті розглянемо:

  • базові принципи роботи HAProxy та Keepalived;

  • архітектуру HA-кластера;

  • покрокове налаштування;

  • перевірку працездатності.

Встановлення HAProxy

На обох балансувальниках:

sudo apt update
sudo apt install -y haproxy

Перевірка версії:

haproxy -v

Базове налаштування HAProxy

Файл конфігурації:

/etc/haproxy/haproxy.cfg

Global та defaults

global
    log /dev/log local0
    log /dev/log local1 notice
    daemon
    maxconn 50000

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5s
    timeout client  30s
    timeout server  30s

Frontend

frontend http_front
    bind *:80
    default_backend app_back

Backend з health-check

backend app_back
    balance roundrobin
    option httpchk GET /health
    http-check expect status 200

    server app01 10.0.0.11:80 check
    server app02 10.0.0.12:80 check
    server app03 10.0.0.13:80 check

Перевірка конфігурації

sudo haproxy -c -f /etc/haproxy/haproxy.cfg
sudo systemctl restart haproxy
sudo systemctl enable haproxy

Встановлення Keepalived

На обох HAProxy-вузлах:

sudo apt install -y keepalived

Налаштування Keepalived

Файл:

/etc/keepalived/keepalived.conf

MASTER (LB1)

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass StrongPassword123
    }

    virtual_ipaddress {
        10.0.0.100/24
    }

    track_script {
        chk_haproxy
    }
}

vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2
    weight -20
}

BACKUP (LB2)

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass StrongPassword123
    }

    virtual_ipaddress {
        10.0.0.100/24
    }

    track_script {
        chk_haproxy
    }
}

vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2
    weight -20
}

Важливо:

  • interface має відповідати реальному мережевому інтерфейсу.

  • virtual_router_id має бути однаковим на обох вузлах.

  • priority визначає, який вузол стане MASTER.

Запуск та перевірка

sudo systemctl restart keepalived
sudo systemctl enable keepalived
Перевірка VIP:
ip addr show eth0
На MASTER-вузлі має бути присутня віртуальна IP-адреса.

Тестування failover

  1. Зупиніть HAProxy або Keepalived на MASTER:

    sudo systemctl stop haproxy
  2. Переконайтеся, що VIP перейшла на BACKUP-вузол.

  3. Відновіть сервіс та перевірте повернення ролі MASTER (за потреби).

Рекомендації для production

  • Використовуйте HTTPS та окремий frontend для TLS

  • Додайте HAProxy stats для моніторингу

  • Логування через rsyslog або ELK

  • Використовуйте unicast VRRP у хмарних середовищах

  • Обмежте VRRP трафік firewall-правилами


Related posts

VPN, SSH та базова безпека інфраструктури

Вступ Сучасна IT-інфраструктура функціонує в умовах постійного зовнішнього впливу: сканування портів, автоматизовані брутфорс-атаки, експлуатація вразливостей сервісів та цільові кібератаки. Навіть невеликі системи без належного захисту можуть стати...

category Security person iron_will event 26/05/2026

Kubernetes для новачків: базові концепції

Вступ Сучасна розробка програмного забезпечення дедалі більше орієнтується на мікросервісну архітектуру, контейнеризацію та автоматизацію інфраструктури. У центрі цієї трансформації знаходиться Kubernetes - одна з найпопулярніших платформ оркестраці...

category Kubernetes person iron_will event 17/05/2026

Що таке RAID: рівні RAID, принцип роботи та навіщо він потрібен

Вступ У сучасній ІТ-інфраструктурі дані є одним із найцінніших ресурсів. Сервери, системи віртуалізації, бази даних, файлові сховища та резервні копії постійно працюють із великими обсягами інформації. Втрата даних через збій накопичувача може призв...

category System administration person iron_will event 10/05/2026

Docker: як оптимізувати розмір контейнера з 50 ГБ до керованого рівня

Вступ Контейнери давно стали стандартом де-факто для доставки застосунків у production. Проте з ростом складності систем часто виникає нетривіальна проблема - неконтрольоване збільшення розміру Docker-образів. Сценарій, коли образ досягає 30–50 ГБ,...

category DevOps person iron_will event 06/05/2026

Kubernetes: сучасна платформа оркестрації контейнерів для production-середовищ

Вступ Kubernetes став де-факто стандартом для запуску контейнеризованих застосунків у production-середовищах. Якщо Docker вирішив проблему пакування застосунку разом із залежностями, то Kubernetes вирішує значно складніше завдання - як масштабувати,...

category DevOps person iron_will event 19/04/2026

Файлові системи ext4, XFS, Btrfs - що обрати для production

Вступ Вибір файлової системи в Linux-середовищі - це не просто технічна деталь, а стратегічне рішення, яке безпосередньо впливає на продуктивність, надійність і масштабованість інфраструктури. У production-системах, де критичними є стабільність і пе...

category DevOps person iron_will event 14/04/2026
cookie
This website uses cookies to improve your experience. Learn more