corosync-qdevice中ffsplit与lsm算法的区别

corosync-qdevice中ffsplit与lsm算法的区别

corosync-qdevice目前支持两种算法来设置corosync-qnetd如何为给定的节点或者分区提供投票的行为。

  • ffsplit

    五五平分算法。这仅对具有偶数个节点的集群有意义。 它只为活动节点数最多的分区提供一票。 如果有两个完全相同的分区,它将投票给得分较高的分区。

    分数计算规则为:连接节点数 + 启发式通过的连接节点数 - 启发式失败的连接节点数。

    如果得分相等,则投票分配给连接到 qnetd 服务器的客户端最多的分区。

    如果连接到qnet的客户端个数也相等,则使用 tie_breaker。 如果当前活动分区被分区并且非活动分区仍然具有至少 50% 的活动节点,则它能够获取到投票。 因此,如果 qnetd 连接不活动,则不会提供投票。

    要使用此算法,需要将每个节点的投票数设置为 1(默认),并且 qdevice 投票数也必须为 1。这是通过将 corosync.conf 文件中的 quorum.device.votes 键设置为 1 来实现的。

  • lsm

    最后节点存活算法。 如果该节点是集群中唯一可以看到 qnetd 服务器的节点,那么我们会返回一票。

    如果多个节点可以看到 qnetd 服务器但一些节点不能看到彼此,则集群会根据它们的 ring_id 划分为“分区”,并且该算法将投票返回给启发式得分最高的分区(计算相同 ffsplit 算法的方式),或者如果有超过 1 个得分相等的分区,则为最大的活动分区,或者,如果有超过 1 个相等的分区,则包含 tie_breaker 节点的分区(最低、最高等)。

    要使 LMS 正常工作,必须将 qdevice 投票数设置为默认值(因此只需从 corosync.conf 中删除 quorum.device.votes 键)。

    使用lms算法时,qdevice的票数将由corosync-qdevice自动计算,一般为集群节点数减1。如5个节点的集群,会自动将qdevice的票数设置为4。此时expected votes为9,quorum为5;这种情况下即使只剩下一个节点,最小的得票数也为5,仍然满足quorate。这就保证了即使剩下最后一个节点集群也能提供服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

growdu_real

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值