Keepalived — сервис, для настройки плавающего ip-адреса. В случае выхода из строя одного сервера, плавающий ip-адрес будет сразу переброшен на другой сервер.
Keepalive использует следующие протоколы:
- VRRP разделяет устройства на Master и Backup, плавающий адрес хранится на всегда на Мастере.
- BFD — протокол быстрого обнаружения неисправных линков. Сервера постоянно обмениваются между собой Hello-пакетами. Если пакет не приходит, то протокол отправляет информацию в VRRP и плавающий адрес перелетает на другой сервер. На практике, протокол BFD может определить неисправный линк менее чем за одну секунду.
- IP Multicast
Настройка Keepalived на CentOS 7 (SELinux отключен):
Требования для настройки keepalived: сервера должны находиться в одном VLAN.
Есть 2 сервера: Node1 (192.168.223.222, Master) и Node2 (192.168.223.221, Slave). Настроим плавающий ip 192.158.223.223. В keepalived можно добавить и больше серверов, но все остальные должны иметь роли Backup.
- На node1 и node2 установим keepalived и добавим в автозагрузку, разрешим трафик keepalived в firewalld:
yum install keepalived
systemctl enable keepalived
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
firewall-cmd --reload
2. На node1 внесём изменения в файл /etc/keepalived/keepalived.conf
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id uMASTER
}
#Указываем название задания (VI_1)
vrrp_instance VI_1 {
#Указываем роль сервера
state MASTER
#Указываем имя интерфейса, к которому будет привязан VRRP инстанс
interface ens33
#Указываем id (1-255) роутера, на остальных серверах значение должно остаться таким же
virtual_router_id 230
#Ставим приоритет. У Master приоритет должен быть выше чем у Backup.
#Значение по умолчанию=100
priority 102
#Период проверки доступности сервера. Значение по умолчанию=1
advert_int 1
authentication {
#Указываем тип аутентификации
auth_type PASS
#Указываем пароль для аутентификации
auth_pass YOURPASSWORD
}
virtual_ipaddress {
#Указываем ip-адрес, имя устройства и метку устройства
192.168.223.223/24 dev ens33 label ens33:0
}
}
3.На node2 внесем изменения в файл /etc/keepalived/keepalived.conf
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id uBACKUP
}
vrrp_instance VI_1 { #Имя задания должно совпадать
state BACKUP
interface ens33
virtual_router_id 230
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass YOURPASSWORD
}
virtual_ipaddress {
192.168.223.223/24 dev ens33 label ens33:0
}
}
4. На node1 и node2 перезапускаем службу командой service keepalived restart
5. Проверяем, что на Master сервере появился новый сетевой интерфейс ens33:0


Сетевой интерфейс не должен появится одновременно на двух серверах. Если такое случилось, то keepalived настроен не верно.
6. Теперь можно проверить работу самого keepalive. Поставим постоянный пинг до адреса 192.168.223.223 и немного подождав выключим node1. Мы увидим небольшой разрыв и далее удачный пинг:

При сбое node1 плавающий ip перелетит на node2. Если работа node1 восстановится, то keepalived переведет плавающий ip обратно на node1.