我遇到了对我来说是新的、未知的“状态”变量值 - “EQUAL”。更具体地说:
vrrp_script chk_master {
script "/var/<path>/scripts/cmaster.sh"
timeout 25
interval 30
weight -120
}
vrrp_instance VI {
interface eth0
state EQUAL
priority 101
virtual_router_id 68
advert_int 1
authentication {
auth_type PASS
auth_pass password:
}
virtual_ipaddress {
x.x.x.x/x
}
track_script {
chk_master
}
notify /usr/local/bin/keepalived-notify.sh
}
vrrp_script chk_standby {
script "/var/<path>/scripts/cstandby.sh"
timeout 25
interval 30
weight 20
}
vrrp_instance VI2 {
interface eth0
state EQUAL
priority 100
virtual_router_id 69
advert_int 1
authentication {
auth_type PASS
auth_pass password:
}
virtual_ipaddress {
x.x.x.x/x
}
track_script {
chk_standby
}
notify /usr/local/bin/keepalived-notify2.sh
}
有人知道这个状态是什么意思吗?“EQUAL”和“MASTER”/“BACKUP”状态之间有什么区别?我在官方文档中没有找到答案。谢谢。
答案1
在 MASTER/BACKUP 中,如果操作成功,则始终选择 MASTER。在 EQUAL 中,不会优先选择任何一方。
如果您拥有 MASTER/BACKUP,而主服务器发生故障,您将故障转移到 BACKUP。但是,当 MASTER 恢复时,您将切换回它。使用 EQUAL,这种情况不会发生。
答案2
根据 @SiHa 在接受的答案中的评论,“EQUAL”不是一种状态,GitHub 社区正在解决这个问题仅仅因为在 keepalived 的特定版本(提交)中 EQUAL 没有报告错误,它并不会神奇地变成一个新的状态,现在如果你尝试相等状态,你会收到一个错误“未知状态‘EQUAL’,默认为 BACKUP”。