背景
消息队列 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. 在演练实例中,选择中间件- RabbitMQ,选择后点击搜索添加,添加 RabbitMQ 实例资源。亦可通过架构图添加方式,直接点击架构图上的 RabbitMQ 资源,选择实例进行添加。


4. 完成添加实例后,点击添加动作,演练动作选择 Broker 宕机,然后点击下一步。


5. 选择对应的注入可用区,然后点击保存。


6. 参数配置完成之后,在全局配置中选择执行方式、护栏策略,及添加可观测指标。配置完成后,点击提交,即可完成演练任务创建。
步骤二:执行演练
1. 在执行演练之前,可以通过 消息队列 TDMQ > RabbitMQ > 集群管理 中对应实例的 Web 控制台访问地址进入查看 RabbitMQ 控制台观察。


2. 进入 RabbitMQ 控制台之后,可以看到对应 Broker 的存活状态。


3. 前往演练详情,点击故障动作组中的执行,或下方开始演练,注入故障。

4. 故障注入成功之后,可以点击动作卡片,查看对应的执行详情。可观测到故障成功发起,该实例指定可用区下的 Broker 已经宕机离线。

5. 前往 RabbitMQ Web 控制台,可以看到已经有一个 Broker 节点宕机处于未运行状态。


6. 执行恢复动作,点击恢复动作的执行按钮。


7. 恢复执行需要一定的时间,待恢复之后,通过 RabbitMQ Web 控制台可以观察到宕机的 Broker 节点已经重新启动。



