防止VRRP Master发生故障后成为Master


12

我有两台机器(A和B,A是主服务器)运行VRPP(从keepalived)用于虚拟IP。

如果A发生故障并重新启动(无论出于何种原因),如何防止A再次成为Master?

我这样做是为了让我们有一个故障转移到第二个盒子,要恢复正常,将需要手动干预。


我太新了,无法创建标签“ VRRP”
MrMagu

Answers:


14

根据相对较老的线程KEEPALIVED开发商名单上,是可以做到的。您将两个服务器都设置为相同的优先级(或根本没有优先级),并且不将状态声明为MASTER或BACKUP,而是将两者的状态都设置为EQUAL。

编辑(2017年12月7日):

尽管在发布此答案时似乎提供了预期的效果,但EQUAL似乎实际上不是有效状态。请注意以下评论,尤其是@cristi提供的指向keepalived的当前问题列表的链接


3
谢谢您-同样值得一提的是,如果没有主服务器接管,使用上述配置(具有相同的优先级并使用“ EQUAL”),具有最低IP的VRRP实例将变为MASTER。
MrMagu

1
错了 请参阅来自开发人员的消息:github.com/acassen/keepalived/issues/707
cristi

@cristi-它在发布时(2009年)是一个可行的解决方案,而该解决方案又基于我清楚地承认甚至在那时(2003年)就已经很旧的信息。由于osdir.com似乎不再具有keepalived-devel档案,因此我已经将答案中的链接更新为有效的链接。我猜想,当时该软件会默默地忽略无效EQUAL指令,并将其视为根本没有设置任何优先级(刚好达到了预期的效果)。
James Sneeringer

8

我们解决此问题的方法是将nopreempt标记添加到我们的keepalived配置文件中。无需更改其他任何内容(仍然保留一个as MASTER和一个as BACKUP等)。基本上,这告诉它不要仅因为新服务器联机就切换主服务器,而仅当当前主服务器发生故障时才切换。


4
来自“ article.gmane.org/gmane.linux.keepalived.devel/1537 ”如果将“ state”设置为MASTER,则基本上忽略“ nopreempt”,因为当带有“ state MASTER”的计算机返回时,它将仅从带有“状态备份”的机器,甚至没有举行选举。我必须将两台计算机都设置为具有较高优先级的BACKUP状态,以便“ nopreempt”能够按预期运行。
MrMagu

删除优先级和状态,并添加了nopreempt。很适合我
Rihard诺沃日洛夫

-1

据我了解,当新的VRRP服务器出现时,它将强制进行选举,而当前服务器没有任何好处,因此旧的主服务器将出现并赢得选举。我怀疑,除了相当残酷的射击头上的另一个节点之外,您还有很多事情可以阻止。Keepalive可能具有一些配置来控制选举过程。遗憾的是,我现在没有时间检查,但我会稍后再试。


有一个执行此操作的配置标志,因此此答案是错误的。
davr

投票的答案对于vrrp的常规部署是正确的,在该部署中,您不希望主服务器在其恢复服务时接管。就像您说的那样,还有一种保持这种状态的方法,对于执行Linux HA事情,它可能更正确,而不是仅使用vrrp为默认路由提供L3冗余(使用vrrp的更传统的原因)。
克里斯,2009年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.