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

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

Вступ

У сучасних високонавантажених системах питання відмовостійкості та масштабування є критичними. 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

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

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

category DevOps person iron_will event 14/04/2026

Керування користувачами та правами доступу в Linux на enterprise-рівні

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

category Security person iron_will event 30/03/2026

Корисні команди Linux (Ubuntu): практичний довідник для системних адміністраторів та DevOps

Вступ Linux є основою більшості сучасної серверної інфраструктури. Веб-сервери, системи контейнеризації, хмарні платформи, CI/CD-пайплайни та мережеві сервіси у переважній більшості випадків працюють саме на Linux. Серед різних дистрибутивів особлив...

category CheatSheets person iron_will event 13/03/2026

Systemd: розширені сценарії керування сервісами

Systemd давно перестав бути просто менеджером ініціалізації. Сьогодні це повноцінна екосистема для оркестрації процесів, управління ресурсами, налагодження залежностей і моніторингу сервісів у реальному часі. Незважаючи на це, більшість адміністратор...

category DevOps person iron_will event 03/03/2026

Глибока оптимізація Linux-серверів під production-навантаження

Запустити сервер в Linux - справа нескладна. Але налаштувати його так, щоб він витримував тисячі одночасних з'єднань, мінімізував латентність і не «падав» під піковим навантаженням - це вже інженерна задача, яка потребує системного підходу. Дистрибут...

category DevOps person iron_will event 03/03/2026

Fail2Ban: основи безпеки та практичні способи захисту серверів

Вступ Забезпечення базового рівня безпеки серверів - це не додатковий етап після розгортання інфраструктури, а обов’язкова складова її проєктування. Будь-який публічно доступний сервіс - SSH, вебсервер, поштовий шлюз або VPN - стає об’єктом автомати...

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