High-Availability
Keepalived 不尊重 nopreempt
我正在使用 Keepalived 在主/從配置中管理兩個 Redis 實例。我遇到的情況是,如果 Keepalived 在主伺服器(具有更高優先級的伺服器)上終止,則備份伺服器將接管為主伺服器。但是,當在較高優先級的機器上重新啟動 Keepalived 時,備份伺服器立即將 Master 狀態讓給較高優先級的機器,這有效地刷新了 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 下,我有以下內容:
state MASTER
現在, nopreempt 沒有被尊重,因為更高優先級的盒子開始作為主人。較低優先級的框看到具有較高優先級的主機並切換到從機模式。通過將該行更改為
state BACKUP
較高優先級的盒子作為從機開始,看到具有較高優先級的主機,並保持從機。做完了。