RocketMQ迁移
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RocketMQ迁移相关的知识,希望对你有一定的参考价值。
参考技术A 1、把旧目录下logs、store移动到新硬盘目录下,比如:/disk1/rocketmq-data2、修改数据存储路径
打开conf/broker.conf,增加以下内容:
#存储路径
storePathRootDir=/disk1/rocketmq-data/store
#commitLog存储路径
storePathCommitLog=/disk1/rocketmq-data/store/commitlog
#消费队列存储路径
storePathConsumeQueue=/disk1/rocketmq-data/store/consumequeue
#消息索引存储路径
storePathIndex=/disk1/rocketmq-data/store/index
#checkpoint 文件存储路径
storeCheckpoint=/disk1/rocketmq-data/store/checkpoint
#abort 文件存储路径
abortFile=/disk1/rocketmq-data/store/abort
3、修改日志存储路径
进入到:conf,执行以下命令:
sudo sed -i 's#$user.home#/disk1/rocketmq-data#g' *.xml
4、重启RocketMQ
消息中间件学习总结(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服务。则整个迁移就完成了。
以上是关于RocketMQ迁移的主要内容,如果未能解决你的问题,请参考以下文章
消息中间件学习总结(24)—— Rocketmq 集群平滑迁移数据中心记录
消息中间件学习总结(24)—— Rocketmq 集群平滑迁移数据中心记录
腾讯宣布开源 RoP:Apache Pulsar 支持原生 RocketMQ 协议