暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MogDB V5.0 CM支持两节点部署特性

原创 吴荣政 云和恩墨 2023-08-04
379

1 背景介绍


1.1 已有方案

     CM(Cluster Manager)是MogDB 3.0引入的一款功能丰富的集群资源管理软件。其能够提供数据库集群的高可用仲裁、运

     行状态监控(网络故障监控、文件系统监控)、故障自动切换、故障自动恢复,支持自定义资源监控。

  •      优点
  • 功能丰富、完备。
  •      缺点
  • 不支持CM两节点部署

1.2 客户价值

  •     集群最小节点数限制从3节点缩减为2节点,带来显著的成本优势
  •     CM集群和数据库集群均能实现高可用,RPO=0

2 特性简介

2.1 方案简介

    基于用户实际应用场景,为有效降低系统部署成本,5.0版本在数据库集群中引入第三方网关IP,同时,结合CM集群运行模式切换机制有效解决CM集群两节点部署模式下的自仲裁问题。同时支持配置CM集群故障切换策略和数据库集群脑裂故障恢复策略。集群最小节点数限制由3变2,带来显著的成本优势。

2.1.1 关键问题

2.1.1.1 CM集群高可用 – 参考CM仲裁网络

     备实例基于其与网关IP的连通性判定自身是否升主,主实例基于其与网关IP的连通性判定自身是否降备。为了降低脑裂故障概率,提供可配参数支持自动故障切换和手动故障切换。

2.1.1.2 数据库集群高可用 – 参考流复制网络和业务网络VIP

      备实例是否failover的判定除去基于流复制状态,额外增加对数据库集群VIP(选配参数)的连通性的探测,以此降低主实例故障的误判概率,进而降低脑裂故障概率。为了确保脑裂故障时数据库集群的数据一致性,提供可配参数支持自动故障恢复和手动故障恢复。手动故障恢复基于mog_xlogdump工具执行差异数据合并,确保数据一致性。

2.1.1.3 CM集群运行模式判定

     依赖分布式配置管理中心DCC的集群状态信息:CM集群状态正常时,也即无网络分区故障场景下,主备实例的查询结果一致且两节点的角色分别为LEADER和FOLLOWER。一旦发生网络分区故障,主实例的查询结果中role值为FOLLOWER的节点上apply_index值在网络分区故障发生的时间内不会被更新,而备实例的查询结果中则不存在role值为LEADER的节点。此外,结合对端dcf端口连通性来进一步确认是否发生网络隔离。


两节点部署组网图

3 测试报告

3.1  CM集群自动故障切换

3.1.1 预置条件

1. cms_enable_failover_on2nodes=true, third_party_gateway_ip配置为有效IP且网络连通性正常,cms_network_isolation_timeout = 20;
2. 存在网络分区故障

3.1.2 测试步骤

1. 两节点集群状态正常;
2. 施加防火墙,模拟网络分区故障,阻断节点间网络;
    iptables -I OUTPUT -d -j DROP; iptables -I INPUT -s -j DROP
3. 待集群状态稳定后查询集群状态;

3.1.3 预期结果

    CM集群脑裂故障,所有实例均为primary角色


测试场景图示


3.2 CM集群手动故障切换

3.2.1 预置条件

1. cms_enable_failover_on2nodes=false, third_party_gateway_ip配置为有效IP且网络连通性正常,cms_network_isolation_timeout = 20;
2. 存在网络分区故障

3.2.2  测试步骤

1. 两节点集群状态正常;
2. 施加防火墙,模拟网络分区故障,阻断节点间网络;
iptables -I OUTPUT -d -j DROP; iptables -I INPUT -s -j DROP
3. 待集群状态稳定后查询集群状态;

3.2.3 预期结果

    CM集群有主实例,原始主实例角色不变,原始备实例角色同样不变


测试场景图示

3.3 数据库集群自动故障恢复

3.3.1 预置条件

1. cms_enable_failover_on2nodes=true, third_party_gateway_ip配置为有效IP,cms_enable_db_crash_recovery = on;
2. CM集群脑裂故障且完成自动故障恢复;

3.3.2 测试步骤

1. 两节点集群状态正常;
2. 施加防火墙,模拟网络分区故障,阻断节点间网络;
    iptables -I OUTPUT -d -j DROP; iptables -I INPUT -s -j DROP
3. 待集群状态稳定后查询集群状态;
4. 消除防火墙,模拟网络分区故障消失,恢节点间网络;

     iptables -I OUTPUT -d -j ACCEPT; iptables -I INPUT -s -j ACCEPT

5. 待集群状态稳定后查询集群状态;

3.3.3 预期结果

    CM集群和数据库集群状态正常,实例角色均一主一备


测试场景图示

3.4 数据库集群手动故障恢复

3.4.1 预置条件

1. cms_enable_failover_on2nodes=ture, third_party_gateway_ip配置为有效IP,cms_enable_db_crash_recovery = off;
2. CM集群脑裂故障且完成自动故障恢复;

3.4.2 测试步骤

1. 两节点集群状态正常;
2. 施加防火墙,模拟网络分区故障,阻断节点间网络;
    iptables -I OUTPUT -d -j DROP; iptables -I INPUT -s -j DROP
3. 待集群状态稳定后查询集群状态;
4. 消除防火墙,模拟网络分区故障消失,恢复节点间网络;
    iptables -I OUTPUT -d -j ACCEPT; iptables -I INPUT -s -j ACCEPT
5. 待集群状态稳定后查询集群状态;

3.4.3 预期结果

    CM集群状态正常,实例角色均为一主一备;数据库集群仅一个primary实例运行,另一个实例为Manually stopped状态


测试场景图示

4 其他说明

    MogDB产品针对CM支持两节点部署特性一共提供了两个版本:MogDB V3.1,MogDB V5.0。需要注意的是,前述两个版本功能上无差异,仅在设计细节差异,且MogDB5.0版本的实现属于恩墨贡献到OG社区5.0版本的回合版本。

最后修改时间:2023-08-04 14:50:34
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论