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。这就保证了即使剩下最后一个节点集群也能提供服务。


文章作者: growdu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 growdu !
  目录
分类导航
随笔2 AI27 算法1 计算机基础13 博客搭建7 ChatGPT2 集群63 计算机通信1 数据库34 数据库深入80 DPDK26 Docker11 Elasticsearch4 编辑工具4 FAQ1 Go Web1 hometown2 编程语言16 网络9 OPC1 Linux38 openGauss4 页面12 PostgreSQL54 程序员自我修养1 协议11 成长之路1 stock1 存储5 工具20 VPP18 视频作品1 Vue13 Web1 代码示例11 数据库15 BenchmarkSQL1 PostgreSQL 源码修炼之路14
最热文章
1
13 逻辑复制深入
数据库深入🔥 1570
2
0 Postgresql存储、索引及系统优化、主备切换
PostgreSQL🔥 1495
3
一文读懂openguass dcf网络模块
集群🔥 1420
4
逻辑复制源码分析
数据库深入🔥 1327
5
PostgreSQL 分区表:从一行 `PARTITION BY` 到路由热路径的全链路拆解
数据库🔥 1094
6
applyparallelworker.c 之 LA 端源码深度解析:Leader Apply Worker 的指挥中枢
数据库深入🔥 1082
7
PostgreSQL Background Worker 全解:从 `RegisterBackgroundWorker` 到逻辑复制 4 类 worker 的全生命周期
数据库🔥 1078
8
PostgreSQL的后台进程walsender分析 - 关系型数据库 - 亿速云
PostgreSQL🔥 1033
9
PostgreSQL 逻辑复制的监控:六张视图 + 一组可执行 SQL,把 publisher/subscriber 的速率与健康度彻底看透
数据库🔥 1032
10
PostgreSQL 逻辑复制支持 DDL 之后:DDL 与 DML 的时序难题(重点:分区表)
数据库🔥 999
11
reorderbuffer.c 源码深度解析:PostgreSQL 逻辑复制的"事务重组引擎
数据库深入🔥 953
12
PostgreSQL 内核开发:读取一张表的 9 步标准流程与缓存全景
数据库🔥 938
13
从 `postgres` 二进制到生产级守护 —— PostgreSQL 最外层模块与启动全流程拆解
数据库🔥 936
14
支持逻辑复制同步 DDL 适配 SQL Server 方案
数据库深入🔥 934
15
PostgreSQL 逻辑复制的 ReorderBuffer 与事务机制:从一行 WAL 到一致性变更流的全链路绑定
数据库🔥 913
16
DDL同步架构(美化版)
数据库深入🔥 908
17
PostgreSQL Latch 机制详解:从一行 SetLatch 到 epoll 的内核之旅
数据库🔥 871
18
pgbench 源码全解:一个 C 文件如何撑起 PostgreSQL 官方压测工具
数据库🔥 860
19
PostgreSQL libpq 机制与缓冲区详解
数据库🔥 850
20
PostgreSQL 逻辑复制 spill 文件深度剖析:从 `xid-*.spill` 到 TPC-C 的增长方程
数据库🔥 845