操作场景
RocketMQ业务迁移是指将其他厂商或者自建的RocketMQ迁移到天翼云分布式消息服务RocketMQ。
前提条件
- 配置网络环境
分布式消息服务RocketMQ实例分VPC内以及公网地址两种网络连接方式。如果使用公网地址,则消息生产与消费客户端需要有公网访问权限,并配置如下安全组。
表1 安全组规则
方向 | 协议 | 端口 | 源地址 | 说明 |
---|---|---|---|---|
入方向 | TCP | 8200 | 0.0.0.0/0 | 公网访问元数据节点的端口 |
入方向 | TCP | 10100-10199 | 0.0.0.0/0 | 访问业务节点的端口 |
- 购买分布式消息服务RocketMQ实例
具体请参考购买RocketMQ实例。
操作步骤
- 迁移元数据至分布式消息服务RocketMQ实例。
- 获取其他厂商或自建RocketMQ实例的元数据。
- 登录主机,下载RocketMQ软件包。
wget -i https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
- 解压软件包。
unzip rocketmq-all-4.9.4-bin-release.zip
- (可选)如果RocketMQ实例开启了ACL访问控制,执行mqadmin命令时,需要鉴权。切换到解压后的软件包目录下,在“conf/tools.yml”文件中,增加如下内容。
accessKey:*******
secretKey:*******
accessKey和secretKey表示在控制台“用户管理”页面,创建的用户名和密钥。
- 进入解压后的软件包目录下,执行以下命令,查询集群名称。sh ./bin/mqadmin clusterList -n {nameserver地址及端口号}例如:“nameserver地址及端口号”为“192.168.0.65:8100”。
- sh ./bin/mqadmin clusterList -n 192.168.0.65:8100执行以下命令,导出元数据。未开启SSL的实例,执行以下命令。sh ./bin/mqadmin exportMetadata -n {nameserver地址及端口号} -c {RocketMQ集群名称} -f {导出的元数据文件的存放路径}例如:“nameserver地址及端口号”为“192.168.0.65:8100”,“RocketMQ集群名称”为“DmsCluster”,“导出的元数据文件的存放路径”为“/tmp/rocketmq/export”。
- sh ./bin/mqadmin exportMetadata -n 192.168.0.65:8100 -c DmsCluster -f /tmp/rocketmq/export已开启SSL的实例,执行以下命令。JAVA_OPT=-Dtls.enable=true sh ./bin/mqadmin exportMetadata -n {nameserver地址及端口号} -c {RocketMQ集群名称} -f {导出的元数据文件的存放路径}例如:“nameserver地址及端口号”为“192.168.0.65:8100”,“RocketMQ集群名称”为“DmsCluster”,“导出的元数据文件的存放路径”为“/tmp/rocketmq/export”。
- JAVA_OPT=-Dtls.enable=true sh ./bin/mqadmin exportMetadata -n 192.168.0.65:8100 -c DmsCluster -f /tmp/rocketmq/export在控制台迁移元数据。登录控制台。
- 单击RocketMQ实例的名称,进入实例详情页面。
- 在左侧导航栏,选择“元数据迁移”,进入迁移任务列表页面。
- 单击“创建迁移任务”,弹出“创建迁移任务”对话框。
参考,设置迁移任务的参数。
参数 | 说明 |
---|---|
任务名称 | 您可以自定义迁移任务的名称,用于区分不同的迁移任务。 |
是否同名覆盖 | *如果开启同名覆盖,会对已有的同名元数据的配置进行修改。例如:原实例Topic01的读队列个数为3,云上实例Topic01的读队列个数为2,开启同名覆盖后,云上实例Topic01的读队列个数变为3。*如果不开启同名覆盖,同名元数据的迁移将失败。例如:原实例的Topic包含Topic01和Topic02,云上实例的Topic包含Topic01和Topic03,不开启同名覆盖,原实例Topic01的迁移将失败。 |
元数据 | 上传。 |
- 单击“确定”。迁移完成后,在迁移任务列表页面查看“任务状态”。
- 当“任务状态”为“迁移完成”,表示所有元数据都已成功迁移。
- 当“任务状态”为“迁移失败”,表示元数据中部分或全部元数据迁移失败。单击迁移任务名称,进入迁移任务详情页,在“迁移结果”中查看迁移失败的Topic/消费组名称,以及失败原因。
- 迁移生产消息至分布式消息服务RocketMQ版实例。将生产客户端的元数据连接地址改为分布式消息服务RocketMQ版实例的元数据连接地址,重启生产业务,使得生产者将新的消息发送到分布式消息服务RocketMQ版实例中。
- 迁移消费消息至分布式消息服务RocketMQ版实例。待消费组中的消息消费完之后,将消费客户端的元数据连接地址改为分布式消息服务RocketMQ版实例的元数据连接地址,重启消费业务,使得消费者从分布式消息服务RocketMQ版实例中消费消息。
- 如果有多个RocketMQ实例需要迁移到同一个分布式消息服务RocketMQ版实例中,请依次进行迁移