zl程序教程

您现在的位置是:首页 >  Java

当前栏目

MariaDB在Oscar故障演练平台的测试实践

2023-02-18 15:37:24 时间

背景

为了进一步增强 TCS MariaDB 高可用能力,验证 MariaDB 在网络分区、删除 Pod 等一系列的故障场景中的表现,需要通过演练工具去模拟这些故障场景。而传统的 chaosblade 等混沌实验工具对于多节点的集群来说注入故障效率低下,功能相对单一。Oscar 是基于 TCS/TCE 的混沌工程演练平台,具备丰富的故障场景,同时兼备操作简单效率高等特点。因此,MariaDB 通过接入 Oscar 演练平台测试实践,模拟更多更为复杂的故障场景,不仅可以提升演练效率,而且还加深研发对 MariaDB 在各种故障场景下表现的认知,从而优化并提升 MariaDB 高可用能力。 

1

TCS MariaDB 介绍

1.1 多主架构

多主模式是基于开源 MariaDB Galera 方案实现,当一个事务在当前写入的节点提交后,通过 wsrep API(write set replication API)将这个事务变成写集(write set)广播到同集群的其他节点中,其他节点收到写集事务后,对这个事务进行可行性检查,并返回结果给 wsrep API。若大多数节点都预估自己可以成功执行这个事务,则 wsrep API 会做出仲裁,通知所有可以成功执行这个事务的节点提交这个事务,并将事务成功提交的消息返回给客户端,同时根据需要剔除没有成功执行事务的节点。

1.2 主从架构(测试中)

如图所示,主从集群基于 Raft+GTID+Semi-Sync 实现的高可用,保证大多数节点接收到数据。三节点之间基于 Raft 进行心跳管理,当 Leader 不可用时,从节点超时收不到主的心跳,会尝试发起选举,多个 Follower 立即参与竞选成为主节点,agent 校验 GTID 值较高的 Follower 成为新的主节点,同时 agent 可调用脚本对各个 Pod 进行标签的更改,进而实现故障切换与自愈。

2

TCS Oscar故障演练平台介绍

Oscar 是专有云第一款基于混沌工程理论实现的故障演练商业化产品,经过两次版本迭代,在产品能力上快速追平了竞品,并在目标域控制策略、演练报告、一键演练等能力上赶超竞品。

Oscar 能够支持多平台多集群,具备丰富的场景和演练方案,提供了稳态观测与爆炸半径控制策略,实现了演练报告、日志等生态体系。除了商业售卖,Oscar 还具备服务于内部产品与 TCE&TCS 交付过程中高可用验收的能力。

2.1 接入流程

Step1 新建组件演练库:

Step2 选择经验库(也就是故障注入类型,包含网络、资源、主机等方面):

Step3 设置经验库参数,包含通用参数(执行等待时间以及持续时长)和经验库的特定参数:

Step4 选择数据源以及注入对象(MariaDB 为自定义-Pod 类型),可通过对象筛选条件的命名空间、标签以及 Pod 状态定位到指定的 Pod:

Step5 配置监控指标:

Step6 配置终止条件:

Step7 点击操作-演练,开启故障演练:

MariaDB 在 Oscar 平台演练实践

1

多主演练 case

多主架构上述 case 演练结果均符合预期。

2

主从演练 case

主从架构从上述 case 演练结果来看,存在一个共性问题,即切主后的数据一致性问题,目前仍在解决该问题,预计2022年11月中下旬可以提供修复后的新版本。

3

Oscar 演练案例

以多主架构为例,一次性在 Oscar 上串行注入删除 Pod、网络分区、DNS 域名解析错误三种故障场景,观察 MariaDB 在这三种故障场景下的表现。

这一步比较关键,数据源选择自定义-POD(k8s 集群),产品选择其他。通过命名空间、标签以及状态筛选出需要注入故障的 MariaDB 的 Pod,点击下一步。

配置监控指标,方便故障期间查看相关监控,也可以不配置直接下一步。

配置终止条件以结束此次演练流程,可以不配置提交。

进入到组件演练库管理,点击操作栏下面的演练案例,开启演练。

可以看到第一个 case 网络分区已经开始执行。

故障注入节点 ping 其他两个节点已经不通,说明网络分区故障注入成功。

演练结果如下:

故障类型

MariaDB行为

恢复情况

可用性

单个节点网络分区+DNS域名解析错误+删除Pod,依次串行执行各个case

网络分区期间MariaDB健康检查会摘掉故障节点流量域名解析期间服务不受影响删除Pod会重建自动加入集群

网络分区跟删除Pod均能实现自动恢复集群DNS域名解析失败不受影响

服务可用

总结与展望

1

总结

  • 从演练结果来看,MariaDB 主从架构存在切主后的数据一致性问题,TCS 数据库团队正在加速修复中。同时也能看出借助 Oscar 的自动化能力,可以更容易测试出极端场景下的高可用以及数据一致性问题。
  • Oscar 有着丰富的故障注入场景,目前支持主机、容器类总共33种演练经验库。从演练案例耗时来看,Oscar 耗时2分钟,chaosblade 耗时20分钟。相比 chaosblade,Oscar 不仅操作简单方便,而且能10倍提升 MariaDB 演练效率。
  • Oscar 功能丰富,支持演练编排、监控、配置终止条件等功能,在可视化以及智能化方面给用户良好体验。

2

展望

  • Oscar 暂不支持演练报告,为了能方便快捷获取到演练任务详细信息,期待下一个 Oscar 支持演练报告的版本。
  • TCS 更多的中间件会陆续接入到 Oscar 演练平台,提升各个中间件的高可用能力以及演练效率。