RocketMQ集群4.9.2升级4.9.6版本

本文主要记录生产环境短暂停机升级RocketMQ版本的过程

一、整体思路

1.将生产环境MQ4.9.2集群同步到测试环境,并启动,确保正常运行。

2.参照4.9.2配置4.9.6集群

3.停掉4.9.2集群,启动4.9.6集群,测试确保正常运行。

4.停掉4.9.6集群,复制4.9.2集群的store存储文件夹到4.9.6,再次启动观察有无异常,Topic及历史消息是否可以正常查询和使用。

5.停掉4.9.6集群,再启动4.9.2集群,确保两个版本的集群都正常可用,无异常,目的是保证都可用,再生产机器升级遇到问题时可以及时切回老版本,不至于长时间停机影响业务。

6.生产环境备份4.9.2集群

7.生产环境配置4.9.6集群(参照测试环境配置过程)

8.生产环境停机4.9.2集群,复制store存储目录到4.9.6集群,启动4.9.6集群,并测试4.9.6有无异常。

注意:1-5步骤在测试机器进行,重点是验证升级思路及可行性,避免在生产环境升级时遇到问题不能及时解决导致消息队列长时间停机。6-8步骤在生产环境进行,第8步骤生产MQ停机约在10分钟左右。

二、实际操作(生产环境单机双主双从异步集群)

1.上传4.9.6mq程序包并解压

2.调整/rocketmq-4.9.6/bin目录下runserver.sh、runbroker.sh里的JVM内存参数(参照4.9.2版本的JVM参数即可)。

3.rocketmq-4.9.6/conf/2m-2s-async添加配置文件(可以直接copy原4.9.2的,再逐个检查修改):

4.在rocketmq-4.9.6目录下创建logs文件夹用于存储日志文件(我在broker中配置了日志输出在/rocketmq-4.9.6/logs下)

5.调整LINUX机器ROCKETMQ_HOME环境变量到4.9.6目录,并重新加载确保可用。

bash 复制代码
修改/etc/profile文件,
修改后可以通过命令 echo $ROCKETMQ_HOME  查询环境变量信息,
若未改变,需要通过命令 source /etc/profile 重新加载下即可。

6.停机4.9.2集群,复制store存储目录到4.9.6,启动4.9.6集群。

提示:此步骤涉及到生产环境MQ停机,停机时间越短越好,故提前准备好4.9.2停机命令、store存储目录复制命令、4.9.6集群启动命令等,避免因LINUX命令不熟悉延长停机时间。

7.通过rocketmq-dashboard仪表板查看MQ启动情况,并及时进行消息的生产和消费测试,第一时间确保升级后无异常。

启动命令:

bash 复制代码
# namesrv启动
nohup ${ROCKETMQ_HOME}/bin/mqnamesrv -c ${ROCKETMQ_HOME}/conf/2m-2s-async/namesrv-a.properties &>${ROCKETMQ_HOME}/logs/mqnamesrv_a.log 2>&1 &
nohup ${ROCKETMQ_HOME}/bin/mqnamesrv -c ${ROCKETMQ_HOME}/conf/2m-2s-async/namesrv-b.properties &>${ROCKETMQ_HOME}/logs/mqnamesrv_b.log 2>&1 &
#broker启动
nohup ${ROCKETMQ_HOME}/bin/mqbroker -c ${ROCKETMQ_HOME}/conf/2m-2s-async/broker-a.properties &>${ROCKETMQ_HOME}/logs/broker_a.log 2>&1 &
nohup ${ROCKETMQ_HOME}/bin/mqbroker -c ${ROCKETMQ_HOME}/conf/2m-2s-async/broker-a-s.properties &>${ROCKETMQ_HOME}/logs/broker_as.log 2>&1 &
nohup ${ROCKETMQ_HOME}/bin/mqbroker -c ${ROCKETMQ_HOME}/conf/2m-2s-async/broker-b.properties &>${ROCKETMQ_HOME}/logs/broker_b.log 2>&1 &
nohup ${ROCKETMQ_HOME}/bin/mqbroker -c ${ROCKETMQ_HOME}/conf/2m-2s-async/broker-b-s.properties &>${ROCKETMQ_HOME}/logs/broker_bs.log 2>&1 &

三、发送消息测试过程记录

  1. 生产者发送MQ消息:

2.rocketmq-dashboard仪表板查看刚刚发送的消息

  1. 消费者成功消费MQ消息
相关推荐
jameslogo3 天前
RocketMQ与Kafka零拷贝机制
分布式·kafka·rocketmq
IT界的老黄牛4 天前
从 MQ 积压追到事件总线:诊断 4K 线程吃光 7G 内存的实战
java·运维·rocketmq
电魂泡哥4 天前
RocketMQ Dledger 集群与 Raft 协议
java·rocketmq·java-rocketmq
jameslogo5 天前
如何用RocketMQTemplate发送事务消息
java·spring boot·rocketmq
犬小哈5 天前
滴滴二面:你项目为什么选择 RocketMQ,而不是 Kafka? 我:支支吾吾....
分布式·kafka·rocketmq
武子康5 天前
Java-219 RocketMQ Spring Boot 集成指南:生产者与消费者实战
java·spring boot·分布式·kafka·消息队列·rocketmq·java-rocketmq
武子康6 天前
Java-221 RocketMQ 消息存储核心原理:CommitLog、ConsumerQueue、IndexFile 与消息过滤机制
java·大数据·分布式·消息队列·rabbitmq·rocketmq·java-rocketmq
Thanks_ks7 天前
消息队列的进阶修炼:从 “不可靠交付” 到 “分布式最终一致性”
消息队列·rabbitmq·rocketmq·分布式事务·微服务架构·分布式系统·最终一致性
Apache RocketMQ7 天前
RocketMQ 源码解析——Controller 高可用切换架构
架构·rocketmq·java-rocketmq
Apache RocketMQ8 天前
Apache RocketMQ 5.0 架构解析:如何基于云原生架构支撑多元化场景
云原生·架构·apache·rocketmq·java-rocketmq