Изучаем keepalive

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.

  1. На 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.

Оставить комментарий