linux pacemaker - 防止脑裂

linux pacemaker - 防止脑裂

自从使用 CentOS 7 以来,我们从常规心跳设置切换到 pacemker。

我们主要拥有在一个节点上处于活动状态的 IP 资源,如果发生故障转移,则切换到第二个节点。此外,我们还会在发生故障转移时执行一些脚本。没什么特别的。

为了使资源始终在主节点上启动,我使用

pcs constraint location Cluster_IP prefers server1=master-server

我也用

pcs resource defaults resource-stickiness=INFINITY

以防止故障转移后资源移回。

如果主机发生故障(例如硬件故障),这对我来说很好。

因为如果故障转移需要一些时间,这对我来说不是问题,所以我想在出现短暂的脑裂的情况下实现某种延迟。

在执行任何操作之前,从属服务器应等待约 2 分钟,然后再接管,以防主服务器在这约 2 分钟内再次可访问。

我想知道,最好的方法是什么?

答案1

我从未将 Corosync 中的令牌超时设置为 10 秒以上的任何值,但您可以尝试增加/设置token您的值corosync.conf120000(120 秒,以毫秒为单位)。应该在您的;部分token中定义以了解更多详细信息。totem{}corosync.confman corosync.conf

这应该可以防止 Corosync 在网络崩溃时宣布节点在 120 秒内死亡。

答案2

您可以使用 更改资源的监控间隔,op monitor interval=Ns其中N是秒数,然后将migration-threshold资源上的 设置为2。请记住,如果设置为 ,120s您可能会看到总延迟为 120-240 秒,具体取决于监控间隔内初始故障发生的时间。

还有其他注意事项,即应用的失败计数器migration-threshold不会在成功时重置。要做到这一点,您还需要设置failure-timeout或手动干预。

使用op monitor interval=120smigration-threshold=2failure-timeout=121s您的resource-stickiness设置,您需要进行测试以确保它提供了您期望的功能以及原始主服务器恢复时故障计数器的行为方式。它可能需要手动干预,但我对此并不 100% 确定

相关内容