Назад | Перейти на главную страницу

keepalived при перезапуске, освобождая VIP, даже если перезапуск находится в пределах периода 3 * Advert_int

У нас есть 2 узла (CentOS Linux 7.4.1708) с keepalived (1.3.5-16.el7.x86_64), оба используют VIP. Ниже представлена ​​конфигурация поддержки активности на обоих узлах.

Узел 1

global_defs {
        script_user root
        router_id my_router
}

vrrp_script check_script {
        script "/opt/scripts/check_script.sh"
        interval 30
        timeout 10
        fall 3
        rise 2
}
vrrp_instance node1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 200
        advert_int 60
        authentication {
                auth_type PASS
                auth_pass xxxx
        }
        virtual_ipaddress {
                x.x.x.x dev eth0
        }
        track_script {
                check_script
        }
        notify "/opt/scripts/notify_script.sh"
}

Узел 2

global_defs {
        script_user root
        router_id my_router
}

vrrp_script check_script {
        script "/opt/scripts/check_script.sh"
        interval 30
        timeout 10
        fall 3
        rise 2
}
vrrp_instance node1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 150
        advert_int 60
        authentication {
                auth_type PASS
                auth_pass xxxx
        }
        virtual_ipaddress {
                x.x.x.x dev eth0
        }
        track_script {
                check_script
        }
        notify "/opt/scripts/notify_script.sh"
}

Ниже приведена последовательность выполняемых операций -

  1. Keepalived настроен на Node1 и запущен. Результат - Node1 запускается как BACKUP и преобразуется в MASTER, владеющего VIP.
  2. Keepalived настроен на Node2 и запущен. Результат - Node2 запускается как BACKUP и остается BACKUP.
  3. check_script возвращает ненулевой код выхода на Node1. Результат - VIP назначен Node2.
  4. Перезапуск Node1. Результат - Node2 начинает владеть VIP, так как перезапуск Node1 занимает более 3 минут (3 * Advert_int настроено выше), а Node1 при запуске появляется как BACKUP
  5. Перезапуск Keepalived на Node1. Результат - Node1 преобразуется в BACKUP, освобождая VIP и Node2 переходы на MASTER. Перезапуск Keepalived занимает около 30 секунд (сценарий для его запуска делает немного больше, чем просто запускается)

В Шаге 4 возникает путаница - Разве Узел 1 не должен оставаться Мастером, владеющим VIP, поскольку он появляется намного раньше (30 секунд), чем определено Master_Down_Interval (3 * advvert_int)?

Похоже, переход VIP с узла 1 на узел 2 происходит после завершения перезапуска узла 1. Я что-то здесь упускаю? Есть ли способ остановить здесь переход VIP?