我正在使用 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"
好吧,我想了几分钟就解决了。
在更高优先级框的 VRRP_instance V1 下,我有以下内容:
现在,nopreempt 没有得到尊重,因为更高优先级的盒子开始作为主人。较低优先级的盒子看到一个具有较高优先级的主机并切换到从模式。通过将该行更改为
优先级较高的盒子作为从机开始,看到一个具有较高优先级的主机,并保持从机状态。完成了。