我有两台机器(A 和 B,A 是 Master)为虚拟 IP 运行 VRPP(来自 keepalived)。
如果 A 失败并重新启动(无论出于何种原因),我如何防止 A 再次成为 Master?
我这样做是为了让我们对第二个盒子进行一次故障转移,恢复正常需要人工干预。
我有两台机器(A 和 B,A 是 Master)为虚拟 IP 运行 VRPP(来自 keepalived)。
如果 A 失败并重新启动(无论出于何种原因),我如何防止 A 再次成为 Master?
我这样做是为了让我们对第二个盒子进行一次故障转移,恢复正常需要人工干预。
根据keepalived开发者名单上这个比较老的线程,是可以做到的。您将两个服务器设置为同等优先级(或根本没有),并且不将状态声明为 MASTER 或 BACKUP,而是将两者的状态设置为 EQUAL。
编辑(2017 年 12 月 7 日):
尽管在发布此答案时它似乎提供了预期的效果,但 EQUAL 似乎实际上并不是一个有效的状态。请注意下面的评论,特别是@cristi 提供的 keepalived 当前问题列表的链接。
我们解决这个问题的方法是将
nopreempt
标志添加到我们的 keepalived 配置文件中。无需更改任何其他内容(仍然留下一个 asMASTER
和一个 asBACKUP
等等)。基本上这告诉它不要仅仅因为新服务器上线而切换主服务器,只有在当前主服务器出现故障时才切换。As I understand it, when a new VRRP server comes up, it forces an election, and the current server doesn't get any benefit, so the old master will come up and win the election. 我怀疑你可以做很多事情来阻止这种情况,除了相当残酷的射击头部的另一个节点。Keepalive 可能有一些配置来控制选举过程。遗憾的是我现在没有时间查看,但我会尝试稍后查看。