背景
消息队列 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. 单击跳过,新建空白演练。
4. 填写完基本信息后,进入演练对象配置,对象类型选择云资源下的 RabbitMQ,然后单击添加实例。单击添加实例后,会列出目标地域下所有的 RabbitMQ 实例信息,可以根据实例 ID 以及实例名称筛选符合要求的实例。
5. 选择目标实例后,单击立即添加,即可添加演练动作。
6. 演练动作选择 Broker 宕机,然后单击下一步。
7. 选择对应的注入可用区,然后点击确定。
8. 单击下一步,进入全局配置,全局配置请参见 快速入门。
9. 确认无误后,单击提交。
10. 可单击跳转演练详情开始演练。
步骤二:执行演练
1. 在执行演练之前,可以通过 消息队列 TDMQ > RabbitMQ > 集群管理 中对应实例的 Web 控制台访问地址进入查看 RabbitMQ 控制台观察。
2. 进入 RabbitMQ 控制台之后,可以看到对应 Broker 的存活状态。
3. 由于演练为手动推进,所以需要手动执行故障动作。可单击执行启动故障注入。启动故障注入,等待故障注入成功。
4. 故障注入成功之后,可以单击动作卡片,查看对应的执行详情。可观测到故障成功发起,该实例指定可用区下的 Broker 已经宕机离线。
5. 前往 RabbitMQ Web 控制台,可以看到已经有一个 Broker 节点宕机处于未运行状态。
6. 执行恢复动作,单击恢复动作的执行按钮。
7. 恢复执行需要一定的时间,待恢复之后,通过 RabbitMQ Web 控制台可以观察到宕机的 Broker 节点已经重新启动。