yum install keepalived
Далее, нам нужно следующий параметр Linux Kernel, чтобы включить поддержку
плавающих IP. На обоих узлах:
echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
После чего выполняем
sysctl -p
На основном сервере в файле /etc/keepalived/keepalived.conf
:
global_defs {
router_id SRV-PP-LB02 #### Строка, идентифицирующая машину (необязательно имя хоста)
! notification_email_from keepalived@ios.in.ua
! smtp_server 192.168.14.5
! smtp_connect_timeout 30
vrrp_skip_check_adv_addr ### Обеспечивает строгое соответствие протоколу VRRP
! Не включать - зафаерволит айпишник
! vrrp_strict
vrrp_garp_interval 0 ### Если установлены глобальные vrrp_garp_interval и / или
### vrrp_gna_interval, любые интерфейсы, которые не указаны в #### garp_group, унаследуютГлобальные настройки.
vrrp_gna_interval 0
! notification_email {
! sr@ios.in.ua
! redacid@ios.in.ua
! }
}
vrrp_script chk_nginx_service { ### Путь к исполняемому скрипту
script "/etc/keepalived/nginx-ha-check"
interval 3
weight 50
user root
}
vrrp_instance NGX_HA01 {
state MASTER
interface ens192
virtual_router_id 250 ### Должны совпадать
priority 110 ### У мастера должен быть выше приоритет
advert_int 1
authentication { ### Должна совпадать и на обоих нодах
auth_type PASS
auth_pass NGX_HA01
}
virtual_ipaddress {
172.17.11.210/24 dev ens192
}
track_interface {
ens192 weight 5
}
track_script {
chk_nginx_service
}
}
На резервном сервере файл отличается только строкой priority 100
, он должен быть ниже.
#!/bin/bash
# Nginx check script
# НЕ ИСПРАВЛЯТЬ ТУТ НИЧЕГО!!! его использует keepalived
ngxStatus=`systemctl is-active nginx`
case "$ngxStatus" in
active)
#echo $ngxStatus
exit 0
;;
*)
#echo $ngxStatus
exit 1
;;
esac
systemctl enable --now keepalived.service
После запуска сервиса на основной ноде мы должны в настройках сетевого интерфейса увидет следующее:
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:b1:a8:d3 brd ff:ff:ff:ff:ff:ff
inet 172.17.11.208/24 brd 172.17.11.255 scope global ens192
valid_lft forever preferred_lft forever
inet 172.17.11.210/24 scope global secondary ens192
Где 172.17.11.210
наш виртуальный адрес.