Keepalived + HAProxy: Настройка отказоустойчивости (Failover)

From wiki.baghirzade.pro
Jump to navigation Jump to search

🛡️ Keepalived + HAProxy: Настройка отказоустойчивости (Failover)

Полная инструкция по установке и настройке Keepalived для автоматического переключения между HAProxy инстансами (MASTER/BACKUP).


📦 Установка Keepalived и создание пользователя

sudo apt install keepalived -y
sudo useradd -s /usr/sbin/nologin keepalived_script

🧪 Скрипт проверки HAProxy

sudo vim /etc/keepalived/check_haproxy.sh

Содержимое:

#!/bin/bash
if ! pgrep haproxy > /dev/null; then
    exit 1
fi
exit 0
sudo chmod +x /etc/keepalived/check_haproxy.sh

🛠️ Разрешение non-local bind

Добавьте в /etc/sysctl.conf:

net.ipv4.ip_nonlocal_bind=1

Примените:

sudo sysctl -p

🟥 Конфигурация для MASTER-сервера

sudo vim /etc/keepalived/keepalived.conf

Пример:

vrrp_script chk_haproxy {

   script "/etc/keepalived/check_haproxy.sh"
   interval 2
   weight -20

}

vrrp_instance VI_1 {

   state MASTER
   interface ens192
   virtual_router_id 51
   priority 200
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 12345
   }
   virtual_ipaddress {
       192.168.166.100
   }
   track_script {
       chk_haproxy
   }

}

Запуск:

sudo systemctl restart keepalived
sudo systemctl enable keepalived
sudo systemctl status keepalived

🟨 Конфигурация для BACKUP-сервера

sudo vim /etc/keepalived/keepalived.conf

Пример:

vrrp_script chk_haproxy {
    script "/etc/keepalived/check_haproxy.sh"
    interval 2
    weight -20
}

vrrp_instance VI_2 {
    state BACKUP
    interface ens192
    virtual_router_id 51
    priority 50
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass 12345
    }

    virtual_ipaddress {
        192.168.166.100
    }

    track_script {
        chk_haproxy
    }
}

Запуск:

sudo systemctl restart keepalived
sudo systemctl enable keepalived
sudo systemctl status keepalived

💡 Рекомендации и дополнения:

  • Убедитесь, что haproxy установлен и настроен на обоих узлах
  • Для HAProxy можно использовать health-check в связке с Keepalived
  • Используйте tcpdump или ip a для проверки привязки 192.168.166.100
  • Проверить работу можно, остановив haproxy на MASTER и убедившись, что IP переехал на BACKUP

🎯 Готово! Теперь при отказе HAProxy на MASTER, трафик автоматически переключится на BACKUP через виртуальный IP 🚦