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
наша віртуальна адреса.