本文介绍 RabbitMQ 业务迁移的操作步骤,您可以参考本文档将自建 RabbitMQ 集群或其他云厂商 RabbitMQ 集群迁移至火山引擎消息队列 RabbitMQ 版。
注意事项
- 业务迁移之前,请确认您已根据业务需求选择了对应迁移方案。迁移方案对比请参见迁移概述。
- 业务迁移只迁移消息生产和消费链路,并不会迁移 RabbitMQ 旧集群上的消息数据。
- 创建 RabbitMQ 实例、迁移消息收发链路之前,请先确定 RabbitMQ 实例可正常访问,以免因访问异常造成迁移失败。您可以访问 RabbitMQ 实例详情页中对应协议的接入点,确认实例的网络连通性。
1 环境准备
迁移之前,您需要根据业务量合理评估资源需求,并创建 RabbitMQ 实例及相关的依赖资源。
根据现有业务量和消息量估算所需的消息队列 RabbitMQ版资源,例如 TPS 峰值、建议队列数和最大连接数等。不同规格的 RabbitMQ 实例代表不同的计算能力及存储空间,请根据业务量合理评估资源需求。
确认资源需求之后,还需要准备相关资源,例如私有网络和子网、ECS 云服务器和 RabbitMQ 实例。
- 您需要创建私有网络和子网、购买 ECS 云服务器。迁移后您的服务需要和 RabbitMQ 实例处于相同的区域(Region)和 VPC 内,才能正常访问实例。具体操作,请参见准备环境。
- 请根据业务量评估结果合理选择 RabbitMQ 实例的计算规格和存储规格,保证资源充足。具体操作,请参见创建实例。
2 迁移元数据
迁移元数据需要将开源 RabbitMQ 的 Vhost、Exchange 和 Queue 等配置信息迁移到消息队列 RabbitMQ版的新实例中。迁移元数据时,并不会迁移队列中的消息数据。
- 从开源 RabbitMQ 中导出 Vhost 元数据。
- 在 Overview 页签中,展开 Export definitions,并填写文件名。
- 您可以选择 All 导出全部 Vhost 的元数据文件,或者选择某个 Vhost 名称,即导出指定 Vhost 的元数据文件。
- 单击 Download broker definitions。
- 在消息队列 RabbitMQ版中导入 Vhost 元数据。
- 登录消息队列 RabbitMQ版实例的详情页面,复制 Web UI 接入点的域名。
- 通过 Web UI 接入点访问开源 RabbitMQ 控制台,并通过用户名及密码登录。
- 在 Overview 页签中,展开 Import definitions ,并选择前文中下载的元数据文件。
- 单击 Upload broker definitions,将元数据导入 RabbitMQ 实例中。
-
3 迁移消息服务
本方案不迁移队列中的消息数据,仅对生产者与消费者应用进行分批灰度切换,以实现业务从旧 RabbitMQ 集群向火山引擎消息队列 RabbitMQ版的平滑迁移。推荐迁移步骤如下:
说明
建议分批进行迁移,且先迁移部分消息消费集群,保证新实例具备消费能力,再迁移部分消息生产集群,确认业务运行稳定后再迁移剩余流量。
- 将部分消费客户端的接入点地址改为消息队列 RabbitMQ版新实例的接入点地址,重启消费业务,消费者从新 RabbitMQ 实例中消费消息,将这部分消费者接入到云上的消息队列 RabbitMQ版。
- 切换的这部分消费者将消费消息队列 RabbitMQ版集群中的消息,剩余消费者继续消费旧 RabbitMQ 集群中的消息。
- 您可以模拟生产一些消息,验证新的消息通路是否已打通。
- 将部分生产客户端的接入点地址改为消息队列 RabbitMQ版实例的接入点地址,重启生产业务,生产者将新的消息发送到新 RabbitMQ 实例中,将这部分生产者接入到云上消息队列 RabbitMQ版。
- 切换的这部分生产者将发送消息到消息队列 RabbitMQ版实例中;剩余的生产者还是将消息发送到旧 RabbitMQ 集群中。
- 在火山引擎云监控中确认新实例消息生产和消费速率、确认是否有消息堆积。
在首批切换验证正常后,分多批重复执行“切换部分消费者 → 切换对应生产者”的流程,逐步扩大灰度范围,每批切换后观察监控指标稳定再继续下一批。
当所有批次迁移完成,新集群承载全部流量且稳定运行后,进行最后的收尾工作。
- 确认所有生产者已不再向旧集群写入数据。旧集群监控上,所有业务 Queue 的生产速率应为 0。
- 保持旧集群的消费者运行,直到所有存量消息被消费完毕。核心标准是所有相关 Queue 的 Ready 和 Unacked 消息数均为 0 并保持稳定。更多信息,请参见如何确认集群消息已被消费完毕。
分批迁移过程中、完成全部的生产者和消费者节点迁移之后,建议在火山引擎云监控服务控制台监控新实例和旧实例的生产和消费相关状态与流量数据,确认消息通路已成功迁移至新实例,确保业务正常运行。
您可以通过以下方式判断流量的分发情况。
- 旧集群:生产写入速率为 0,消息消费速率为 0,所有业务 Queue 的 Ready 和 Unacked 消息数均为 0。
- 新实例的生产和消费 TPS 应和迁移前基本一致。