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

09/01/2026
| instruction | iron_will | 0 | 97 | |
Ubuntu HAProxy Keepalived

Вступ

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

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

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

DevOps iron_will 26/02/2026

Ansible: основи автоматизації, принципи роботи та приклади корисних playbook

Вступ Автоматизація інфраструктури стала стандартом у сучасній розробці та експлуатації програмного забезпечення. Концепції Infrastructure as Code (IaC), безперервної інтеграції та безперервного розгортання (CI/CD), керування конфігураціями та масшт...

DevOps iron_will 24/02/2026

Керівництво з роботи в Ubuntu: основи для системного адміністратора

Керівництво з роботи в Ubuntu: основи для системного адміністратора1. ВступUbuntu - це Linux-дистрибутив, який широко використовується як на серверних платформах, так і на робочих станціях. Для ефективної роботи з системою необхідно розуміти:структур...

IT Fundamentals iron_will 13/02/2026

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

Вступ Операційна система Linux спочатку проєктувалася як багатокористувацька. Це означає, що керування користувачами, групами та правами доступу є базовим механізмом безпеки системи. Коректне налаштування прав дозволяє обмежити доступ до ресурсів, м...

IT Fundamentals iron_will 24/01/2026

Сегментація та контроль доступу в MikroTik

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

instruction iron_will 24/01/2026

SSH: що це таке, навіщо використовується та як налаштувати на Linux

1. Що таке SSH SSH (Secure Shell) — це криптографічний мережевий протокол, який використовується для безпечного віддаленого доступу до операційних систем, серверів і мережевих пристроїв через незахищені мережі. Основні функції SSH: шифрування...

instruction iron_will 12/01/2026

Comments (0)

Commenting is available to authorized users only.

This website uses cookies to improve your experience. Learn more