消息中间件学习总结(24)—— Rocketmq 集群平滑迁移数据中心记录

Posted 科技D人生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息中间件学习总结(24)—— Rocketmq 集群平滑迁移数据中心记录相关的知识,希望对你有一定的参考价值。

背景

因为集团规划,需要将公司业务整体平滑迁移到一个新的数据中心,因为业务是金融类型,所以要保证在迁移数据中心的过程中对业务无感知,下面介绍一下Rocketmq 中间件的数据中心迁移方式。架构简述:

1、我们迁移rocketmq 集群之前两个数据中心直接通过20GB的裸光互连。

2、我们在新的当前数据中心的rocketmq 架构是,两个nameserver和三组主从架构的broker节点,迁移到新的数据中心是两个nameserver和两组主从架构的broker节点,因为新的数据中心硬件更强。

第一步:新机房完成扩容

 迁移之前需要在新的数据中心部署一套rocketmq 集群,版本和原数据中心需要保持一致。部署完成之后需要使用脚本查询原broker中所有topic,再将topic都添加至新扩容的broker-d和broker-e中。

./bin/mqadmin topicList -n old-namesrv:9876 | grep -v "%"   # 查询topic

./bin/mqadmin updateTopic -n new-namesrv:9876 -b new-broker:10911 -t topic-name # 新创建topic

第二步:新机房 broker 扩容到原 nameserver

因为这个时候所有的client还都连接着现有机房的nameserver,所以我们要把新机房部署的broker节点扩容到当前的机房,供业务使用。(注:扩容完成后需要在rocketmq 控制台观察,新的broker节点是否有数据生产和消费) 

第三步:旧broker节点,接入新机房的nameserver

 新的broker节点扩容到当前数据中心之后,当前数据中心的broker节点也要扩容到新的数据中心,只有完成了这一步,才能保证新老数据中心nameserver 数据一致,client端才可以切换到新的数据中心。

第四步:应用切换nameserver地址

 当broker节点都注册到了两个数据中心的四个nameserver后,client就可以切换到新的数据中心了。如果客户端是域名连接则直接修改DNS解析到新的数据中心nameserver即可。

第五步:缩减nameserver和broker

 当客户端都连接到了新的数据中心之后,我们就可以对原来数据中心的broker和nameserver进行下线操作了。

broker下线:

(1)broker下线之前需要先对要下线的broker组发送禁写命令,防止下线后消息丢失

sh mqadmin wipeWritePerm -n "namesrv1:9876;namesrv2:9876" -b broker-a

(2)当broker 的Produce TPS减少到0,且Consumer Message TPS为0时,就可以kill 掉master和slave节点了

(3)同样的操作,执行第二组和第三组的broker

nameserver下线:

(1)当原来机房的broker都下线完成之后,新机房的broker就可以去掉连接旧机房的nameserver配置了。

(2)当新的机房broker连接都去掉旧的机房的nameserver后,直接kill掉旧机房的nameserver服务。则整个迁移就完成了。

以上是关于消息中间件学习总结(24)—— Rocketmq 集群平滑迁移数据中心记录的主要内容,如果未能解决你的问题,请参考以下文章

消息中间件学习总结(24)—— Rocketmq 集群平滑迁移数据中心记录

RocketMQ吐血总结

消息中间件 - RocketMQ 详解(从软件安装到案例实现)

消息中间件 - RocketMQ 详解(从软件安装到案例实现)

消息中间件 - RocketMQ 详解(从软件安装到案例实现)

rocketmq总结以及自动化部署策略