由于blog各种垃圾评论太多,而且本人审核评论周期较长,所以懒得管理评论了,就把评论功能关闭,有问题可以直接qq骚扰我

Rocketmq 集群平滑迁移数据中心记录

架构设计 西门飞冰 2813℃

背景

因为集团规划,需要将公司业务整体平滑迁移到一个新的数据中心,因为业务是金融类型,所以要保证在迁移数据中心的过程中对业务无感知,下面介绍一下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服务。则整个迁移就完成了。

转载请注明:西门飞冰的博客 » Rocketmq 集群平滑迁移数据中心记录

喜欢 (44)or分享 (0)