智能顾问 MongoDB 存储节点故障模拟

MongoDB 数据库实例为用户提供多数据存储节点和 HA 机制,保障数据的安全性和服务的高可用性。为验证用户业务对腾讯云 MongoDB 容灾能力的利用情况,智能顾问 – 混沌演练提供多种故障场景实现存储节点故障模拟。

相关产品
智能顾问 产品页,含版本规格、价格与购买入口。

一、演练准备

·购买云上跨可用区 MongoDB 实例,部署本地或者云上服务端测试环境,连接 MongoDB 实例。

·模拟常规客户端请求的脚本。

#!/usr/bin/python"""通过简单的数据读写方式,模拟十万级数据量的操作。在数据插入中途,通过混沌演练平台操作进行故障注入,观察前后变化。本脚本只作为参考示例,真实演练时建议使用贴近生产环境的业务场景进行故障模拟。"""import pymongoimport random# 演练时以实际注入故障的MongoDB实例Uri进行替换,具体可参考MongoDB [实例详情-网络配置-连接地址]mongodbUri = 'mongodb://mongouser:thepasswordA1@ip:port/admin'client = pymongo.MongoClient(mongodbUri)# 数据库指定db = client.somedb# 数据集删除db.user.drop()# 自定义插入数据量。建议采用较大数据量,方便演练过程观察element_num = 3 * 10 ** 6for id in range(element_num): # 插入随机文档 name = random.choice(['R9', 'caÒt', 'owen', 'lee', 'J']) sex = random.choice(['male', 'female']) try: db.user.insert_one({'id': id, 'name': name, 'sex': sex}) except Exception as e: print('error id', id)# 查询全量文档content = db.user.find()for i in content: print(i)

二、步骤1:创建演练

1. 登录 智能顾问 > 混沌演练控制台,进入演练管理页面,单击新建演练。

2. 单击跳过,新建空白演练。

三、步骤2:添加 MongoDB 实例和动作

1. 在演练对象配置环节中,可通过批量实例 ID 输入或选择 VPC 过滤并添加期望参加演练的 MongoDB 实例。

2. 添加演练动作。

·MongoDB 主节点重启:模拟 MongoDB 主节点故障重启的过程对业务的影响以及 MongoDB 的 HA 机制。

·MongoDB 主从切换:模拟 MongoDB 节点主从切换过程和切换后产生节点 IP 发生变更的场景,动作支持优先同可用区切换和优先跨可用区切换两种执行模式。

四、结果观测

通过脚本模拟生产环境用户行为,观察故障前,故障中,故障后三个时态下的业务响应。

五、主节点重启

·故障前

业务表现:大批量数据持续插入数据库,MongoDB以稳定的速率处理。

实例状态:主节点、从节点、Hidden 节点均已配置并生效。

·故障中

业务表现:脚本中插入失败,可通过配置驱动的重试机制进行重试,同时检测到Mongo节点异常,出现短时间的数据积压。

实例状态:从节点中选择一个节点提主,由于 Hidden 节点不参与选举,则选择原从节点作为主节点,原主节点将作为从节点被重新拉起。

·故障后

业务表现:将积压的数据和当前未插入的数据同时插入,MongoDB以近两倍的速率进行处理。

实例状态:MongoDB自动恢复节点主从关系,将权重较高的节点重新选举为主节点,若权重一致,则保持不变。

·结论

完成后检查数据库数据正常,故障过程业务无感知,整体情况符合预期。

六、主从切换

·故障前

业务表现:大批量数据持续插入数据库,MongoDB以稳定的速率处理。

实例状态:主节点、从节点、Hidden 节点均已配置并生效。

·故障中

业务表现:节点可用区发生切换,业务发生与节点重启类似的现象,存在短时间内的数据积压。

实例状态:根据动作模式优先从实例从节点中选择同可用区或跨可用区节点,将其提升为主节点,原主节点作为从节点被重新拉起。

·故障后

业务表现:发生可用区切换,业务正常运行,数据插入动作和数据查询动作不受影响。

·手动故障恢复

实例状态:执行故障恢复动作,恢复至故障开始前状态。

·结论

故障过程业务无感知,数据库数据完整,整体表现正常,符合预期。

赞 (0)
上一篇 4天前
下一篇 4天前