Keepalived 不遵守 nopreempt

Keepalived 不遵守 nopreempt

我正在使用 Keepalived 以主/从配置管理两个 Redis 实例。我遇到过这样的情况:如果在主服务器(优先级较高的服务器)上终止 Keepalived,则备份服务器将接管主服务器。但是,当在优先级较高的服务器中重新启动 Keepalived 时,备份服务器会立即将主服务器状态移交给优先级较高的服务器,从而有效地刷新 Redis 缓存。

我尝试将 nopreempt 指令添加到我的 keepalived.conf,但这种行为仍然发生。

以下是来自备份(低优先级)服务器的 keepalived.conf。

global_defs{
        router_id redis_server_2
}

vrrp_script chk_redis {
        script "killall -0 redis-server"
        interval 5
}

vrrp_instance VI_1{
        interface eth0
        virtual_router_id 100
        priority 200
        advert_int 1
        state BACKUP
        nopreempt
        track_script {
                chk_redis
        }

        virtual_ipaddress {
                10.19.105.229
        }

        notify_master "/usr/bin/sudo /var/lib/redis/redis.sh -m"

        notify_backup "/usr/bin/sudo /var/lib/redis/redis.sh -s"

        notify_fault "/usr/bin/sudo /var/lib/redis/redis.sh -k"

答案1

好的,我思考了几分钟后就解决了。

在优先级较高的框上的 VRRP_instance V1 下,我有以下内容:

    state MASTER

现在,nopreempt 不被遵守,因为优先级较高的盒子以主设备身份启动。优先级较低的盒子看到优先级较高的主设备,并切换到从属模式。通过将该行更改为

    state BACKUP

优先级较高的盒子作为从属设备启动,当发现主设备具有更高的优先级时,仍保持从属状态。大功告成。

相关内容