背景
消息队列 TDMQ RabbitMQ 版(TDMQ for RabbitMQ,简称 TDMQ RabbitMQ 版)是一款腾讯自主研发的消息队列服务,支持 AMQP 0-9-1 协议,完全兼容开源 RabbitMQ 的各个组件与概念,同时具备计算存储分离,灵活扩缩容的底层优势。TDMQ RabbitMQ 版拥有极为灵活的路由来适应各类业务的消息投递规则,能有缓冲上游流量压力的能力,保证消息系统的稳定运行。持久化机制确保了 TDMQ RabbitMQ 版的高可靠性。设置 Exchange、Queue、消息的持久化,保证服务重启后元数据与消息内容不丢失。消息采用三副本存储策略,某台物理机故障时,能够实现数据的快速迁移,保证用户数据3个备份可用,服务可用性达99.95%。为便于用户验证 TDMQ RabbitMQ 在面对可用区级时的容灾能力,腾讯云混沌演练平台提供了对 TDMQ RabbitMQ (跨AZ实例)可用区级Broker宕机故障演练动作,用于模拟真实可用区灾难。通过对Broker进行容灾演练,可以验证业务本身的容灾能力,测试持久性机制,评估故障影响范围及时间等。
注意事项
Broker宕机故障演练动作仅支持对跨可用区部署的TDMQ RabbitMQ实例,否则无法进行故障注入。非跨可用区部署实例请升级为跨可用区实例之后进行演练。
若需要对多个实例进行故障注入,建议拆分为多个动作组,每个动作组一个实例进行。
故障注入之后,生产端或消费端可能会出现闪断,请谨慎操作。
演练准备
准备一台可以进行演练的跨可用区部署的TDMQ RabbitMQ实例。
步骤一:创建演练
1. 登录 腾讯云混沌演练平台 控制台。
2. 在左侧导航栏选择演练管理页面,单击新建演练。
3. 单击跳过,新建空白演练。![](https://qcloudimg.tencent-cloud.cn/image/document/a1de8143de208a8481dc2461eb5dd11d.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/a1de8143de208a8481dc2461eb5dd11d.png)
4. 填写完基本信息后,进入演练对象配置,对象类型选择云资源下的 RabbitMQ,然后单击添加实例。单击添加实例后,会列出目标地域下所有的 RabbitMQ 实例信息,可以根据实例 ID 以及实例名称筛选符合要求的实例。
![](https://qcloudimg.tencent-cloud.cn/image/document/d022dffaf32f73a46194a3332e15f547.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/d022dffaf32f73a46194a3332e15f547.png)
5. 选择目标实例后,单击立即添加,即可添加演练动作。![](https://qcloudimg.tencent-cloud.cn/image/document/57813267edbbae4af93e5caf2864d57b.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/57813267edbbae4af93e5caf2864d57b.png)
6. 演练动作选择 Broker 宕机,然后单击下一步。![](https://qcloudimg.tencent-cloud.cn/image/document/fe77b9b6c6078440141f117873863f27.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/fe77b9b6c6078440141f117873863f27.png)
7. 选择对应的注入可用区,测试实例选择对广州四区的 Broker 进行故障注入,然后点击确定。![](https://qcloudimg.tencent-cloud.cn/image/document/b612d7635947cd0959123e0de47eabec.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b612d7635947cd0959123e0de47eabec.png)
8. 单击下一步,进入全局配置,全局配置请参见 快速入门。![](https://qcloudimg.tencent-cloud.cn/image/document/b8fd637ad3d3b38519ae6dc10d417744.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/b8fd637ad3d3b38519ae6dc10d417744.png)
9. 确认无误后,单击提交。
![](https://qcloudimg.tencent-cloud.cn/image/document/21d189196d9e378c831a705123c4bc12.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/21d189196d9e378c831a705123c4bc12.png)
10. 可单击跳转演练详情开始演练。
![](https://qcloudimg.tencent-cloud.cn/image/document/bc186ed07621fa8eb3778d6c4d7225ee.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/bc186ed07621fa8eb3778d6c4d7225ee.png)
步骤二:执行演练
1. 在执行演练之前,可以通过 消息队列 TDMQ > RabbitMQ > 集群管理 中对应实例的 Web 控制台访问地址进入查看 RabbitMQ 控制台观察。
![](https://qcloudimg.tencent-cloud.cn/image/document/43bf4897863ebc5e3c1cf4655a0fb60b.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/43bf4897863ebc5e3c1cf4655a0fb60b.png)
2. 进入 RabbitMQ 控制台之后,可以看到对应 Broker 的存活状态。
![](https://qcloudimg.tencent-cloud.cn/image/document/faf03ab4b37790885d4f469b177a44cf.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/faf03ab4b37790885d4f469b177a44cf.png)
3. 由于演练为手动推进,所以需要手动执行故障动作。可单击执行启动故障注入。启动故障注入,等待故障注入成功。![](https://qcloudimg.tencent-cloud.cn/image/document/8151e6b819fcce3bbb79ea8ae5c59682.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/8151e6b819fcce3bbb79ea8ae5c59682.png)
4. 故障注入成功之后,可以单击动作卡片,查看对应的执行详情。由图可见,故障成功发起,该实例广州四区下的 Broker 已经宕机离线。![](https://qcloudimg.tencent-cloud.cn/image/document/3c2fd01e6714b40c8942014e82e41245.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/3c2fd01e6714b40c8942014e82e41245.png)
5. 前往 RabbitMQ Web 控制台,可以看到已经有一个 Broker 节点宕机处于未运行状态。![](https://qcloudimg.tencent-cloud.cn/image/document/4ee65bf03f7eb3dcffe19a9c8fb31ece.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/4ee65bf03f7eb3dcffe19a9c8fb31ece.png)
6. 执行恢复动作,单击恢复动作的执行按钮。![](https://qcloudimg.tencent-cloud.cn/image/document/c1f901176bbc0b8cc13f6459b7bafc44.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/c1f901176bbc0b8cc13f6459b7bafc44.png)
7. 恢复执行需要一定的时间,待恢复之后,通过 RabbitMQ Web 控制台可以观察到宕机的 Broker 节点已经重新启动。![](https://qcloudimg.tencent-cloud.cn/image/document/e69abaada5794f0e381c3714ba6b1179.png)
![](https://qcloudimg.tencent-cloud.cn/image/document/e69abaada5794f0e381c3714ba6b1179.png)