You need to enable JavaScript to run this app.
导航

RabbitMQ 迁移上云(方案二)

最近更新时间2022.10.17 19:17:58

首次发布时间2022.05.31 11:12:33

本文介绍通过方案二将开源 RabbitMQ 集群或单机迁移到火山引擎消息队列 RabbitMQ版的操作步骤。

注意事项

  • 业务迁移只迁移消息生产和消费链路,并不会迁移 RabbitMQ 旧集群上的消息数据。
  • 创建 RabbitMQ 实例、迁移消息收发链路之前,请先确定 RabbitMQ 实例可正常访问,以免因访问异常造成迁移失败。您可以访问 RabbitMQ 实例详情页中对应协议的接入点,确认实例的网络连通性。
  • 业务迁移之前,请确认您已根据业务需求选择了对应迁移方案。迁移方案对比请参考迁移概述

1 环境准备

迁移之前,您需要根据业务量合理评估资源需求,并创建 RabbitMQ 实例及相关的依赖资源。

1.1 迁移评估

根据现有业务量和消息量估算所需的消息队列 RabbitMQ版资源,例如 TPS 峰值、建议队列数和最大连接数等。不同规格的 RabbitMQ 实例代表不同的计算能力及存储空间,请根据业务量合理评估资源需求。

1.2 准备相关资源

确认资源需求之后,还需要准备相关资源,例如私有网络和子网、ECS 云服务器和 RabbitMQ 实例。

  • 搭建环境。
    您需要创建私有网络和子网、购买 ECS 云服务器。迁移后您的服务需要和 RabbitMQ 实例处于相同的区域(Region)和 VPC 内,才能正常访问实例。
    详细说明请参考准备环境

  • 购买 RabbitMQ 实例。
    请根据业务量评估结果合理选择 RabbitMQ 实例的计算规格和存储规格,保证资源充足。
    详细操作步骤请参考创建 RabbitMQ 实例

2 迁移元数据

迁移元数据的步骤将开源 RabbitMQ 的 Vhost、Exchange 和 Queue 等配置信息迁移到消息队列 RabbitMQ版的新实例中。迁移元数据时,并不会迁移队列中的消息数据。

  1. 从开源 RabbitMQ 中导出 Vhost 元数据。

    1. 通过浏览器登录开源 RabbitMQ 控制台。

    2. 在 Overview 页签中,展开 Export definitions,并填写文件名。

    3. 设置 Virtual host

      您可以选择 All 导出全部 Vhost 的元数据文件,或者选择某个 Vhost 名称,即导出指定 Vhost 的元数据文件。

    4. 单击 Download broker definitions
      成功下载元数据文件之后,请妥善保管。

  2. 在消息队列 RabbitMQ版中导入 Vhost 元数据。

    1. 登录消息队列 RabbitMQ版实例的详情页面,复制 Web UI 接入点的域名。

    2. 通过 Web UI 接入点访问 RabbitMQ 开源控制台,并通过用户名及密码登录。
      详细步骤请参考连接 RabbitMQ 管理地址

    3. 在 Overview 页签中,展开 Import definitions ,并选择前文中下载的元数据文件。

    4. 单击 Upload broker definetions 将元数据导入RabbitMQ实例中。

3 迁移消息服务

方案二先迁移新的生产端,但不消费,待旧的消息在旧消费端消费完成后再启动新的消费端开始消费。适用于消息消费时序敏感型或对有序消息有依赖的业务场景,例如 MySQL 的 binlog 日志消费。

迁移步骤如下:

  1. 迁移生产端至消息队列 RabbitMQ版实例。

  2. 自建 RabbitMQ 集群中的消费端持续消费存量旧消息。

  3. 在旧消息全部被旧消费者消费完毕后,下线旧消费者以及旧 RabbitMQ 集群。
    如何确认旧消息已被消费完成,请参考如何确认集群消息已被消费完毕

  4. 为消息队列 RabbitMQ版实例启动新的消费端,开始消费消息。
    新的生产者生产的消息开始被新消费者消费时,表示您已完成开源 RabbitMQ 迁移上云。