双主双从-RocketMQ平滑升级

环境:centos7

版本:4.7.1–>4.9.7

部署架构:双主双从

(brocker-a、broker-a-s、btoker-b、broker-b-s)–>(brocker-c、broker-c-s、btoker-d、broker-d-s)

服务器信息:

192.168.88.80 –> broker-a –> brocker-c

192.168.88.81 –>  broker-a-s   –> broker-c-s

192.168.88.82 –>  broker-b –> btoker-d

192.168.88.83 –>  broker-b-s –> broker-d-s

升级步骤

1、rocketmq-4.7.1处于启动状态,上传rocketmq4.9.1(只上传安装包不启动)

2、配置文件修改

broker-c、broker-d,区别就只有brokerName和ip地址而已,还有要注意rocektmq_data的地址

brokerClusterName=DefaultCluster

brokerName=broker-c

brokerId=0

namesrvAddr=192.168.88.80:9876;192.168.88.82:9876

#本机地址

brokerIP1=192.168.88.80

#配置跟brokerIP1一样,主节点才需要加

#从节点会连接主节点配置的brokerIP2进行同步

brokerIP2=192.168.88.80

#表示Broker对外服务的监听端口

listenPort=10911

#表示Master监听Slave请求的端口

haListenPort=10912

#清除过期文件时间,默认凌晨4

deleteWhen=04

#文件过期时间,默认72小时

fileReservedTime=72

#物理磁盘使用率阈值,默认85%

diskMaxUsedSpaceRatio=75#同步复制master

brokerRole=SYNC_MASTER

#异步刷盘

flushDiskType=ASYNC_FLUSH

#开启通过用户自定义属性进行消息过滤

enablePropertyFilter=true

#关闭自动创建topic

autoCreateTopicEnable=false

#自动创建topic的队列数量

defaultTopicQueueNums=4

#这里不能变,因为数据地址还是原来的

#store存储路径

storePathRootDir=/home/rocketmq-4.7.1/rocketmq_data/data/master1

#commitLog存储路径

storePathCommitLog=/home/rocketmq-4.7.1/rocketmq_data/data/master1/commitlog

#消费队列的存储路径

storePathConsumeQueue=/home/rocketmq-4.7.1/rocketmq_data/data/master1/consumequeue

#消息索引存储路径

storePathIndex=/home/rocketmq-4.7.1/rocketmq_data/data/master1/index

#checkpoint文件存储路径

storeCheckpoint=/home/rocketmq-4.7.1/rocketmq_data/data/master1/checkpoint

#异常中止文件存储路径

abortFile=/home/rocketmq-4.7.1/rocketmq_data/data/master1/abort

#限制的消息大小为64M

maxMessageSize=67108864

#同步超时时间 默认5s,单位毫秒

syncFlushTimeout=30000

#发送线程池任务队列的等待时间,默认200ms

waitTimeMillsInSendQueue=500

#写入线程池的数量,建议配置为cpu核数

sendMessageThreadPoolNums=8

#发送消息是否使用可重入锁

useReentrantLockWhenPutMessage=true

#一次拉取允许的最大条数,默认是32

maxTransferCountOnMessageInMemory=128

#关闭通过堆外内存传输数据

transferMsgByHeap=true

#HA主从同步传输的最大字节长度3M

haTransferBatchSize=3145728

#Linux 环境开启Epoll IO模型

useEpollNativeSelector=true

#消息堆积时当单次最大拉取消息量,默认8

maxTransferCountOnMessageInDisk=32

# IO线程池大小,建议配置为cpu核数

serverSelectorThreads=8

# 工作线程大小,建议配置为cpu核数 * 2

serverWorkerThreads=16

同理,broker-c-s和broker-d-s 区别就只有brokerName和ip地址而已,还有要注意rocektmq_data的地址

brokerClusterName=DefaultCluster

brokerName=broker-c

brokerId=1

namesrvAddr=192.168.88.80:9876;192.168.88.82:9876

# 本机地址

brokerIP1=192.168.88.81

#brokerIP2=192.168.88.81

#表示Broker对外服务的监听端口

listenPort=10911

#表示Master监听Slave请求的端口

haListenPort=10912

#清除过期文件时间,默认凌晨4

deleteWhen=04

#文件过期时间,默认72小时

fileReservedTime=72

#物理磁盘使用率阈值,默认85%

diskMaxUsedSpaceRatio=75

#broker从节点

brokerRole=SLAVE

#异步刷盘

flushDiskType=ASYNC_FLUSH

#开启通过用户自定义属性进行消息过滤

enablePropertyFilter=true

#关闭自动创建topic

autoCreateTopicEnable=false

#自动创建topic的队列数量

defaultTopicQueueNums=4

#store存储路径

storePathRootDir=/home/rocketmq-4.7.1/rocketmq_data/data/slave1

#commitLog存储路径

storePathCommitLog=/home/rocketmq-4.7.1/rocketmq_data/data/slave1/commitlog

#消费队列的存储路径

storePathConsumeQueue=/home/rocketmq-4.7.1/rocketmq_data/data/slave1/consumequeue

#消息索引存储路径

storePathIndex=/home/rocketmq-4.7.1/rocketmq_data/data/slave1/index

#checkpoint文件存储路径

storeCheckpoint=/home/rocketmq-4.7.1/rocketmq_data/data/slave1/checkpoint

#异常中止文件存储路径

abortFile=/home/rocketmq-4.7.1/rocketmq_data/data/slave1/abort

#限制的消息大小为64M

maxMessageSize=67108864

#同步超时时间 默认5s,单位毫秒

syncFlushTimeout=30000

#发送线程池任务队列的等待时间,默认200ms

waitTimeMillsInSendQueue=500

#写入线程池的数量,建议配置为cpu核数

sendMessageThreadPoolNums=8

#发送消息是否使用可重入锁

useReentrantLockWhenPutMessage=true

#一次拉取允许的最大条数,默认是32

maxTransferCountOnMessageInMemory=128

#关闭通过堆外内存传输数据

transferMsgByHeap=true

#HA主从同步传输的最大字节长度3M

haTransferBatchSize=3145728

#Linux 环境开启Epoll IO模型

useEpollNativeSelector=true

#消息堆积时当单次最大拉取消息量,默认8

maxTransferCountOnMessageInDisk=32

# IO线程池大小,建议配置为cpu核数

serverSelectorThreads=8

# 工作线程大小,建议配置为cpu核数 * 2

serverWorkerThreads=16

4、日志文件路径更换

sed -i 's|${user.home}|/home/mq4.9|' /home/rocketmq-4.9.7/conf/logback_broker.xml

sed -i 's|${user.home}|/home/mq4.9|' /home/rocketmq-4.9.7/conf/logback_namesrv.xml

sed -i 's|${user.home}|/home/mq4.9|' /home/rocketmq-4.9.7/conf/logback_tools.xml

上边的命令用于批量替换 RocketMQ 配置文件中 ${user.home} 变量为 /home/mq4.9 路径:

这三条命令分别处理 RocketMQ 4.9.7 版本的三个日志配置文件:

  1. logback_broker.xml – Broker 服务的日志配置
  2. logback_namesrv.xml – NameServer 服务的日志配置
  3. logback_tools.xml – 相关工具的日志配置

替换的作用是将默认使用用户主目录(${user.home})的日志路径统一修改为 /home/mq4.9,这样可以集中管理 RocketMQ 的日志文件,避免日志分散在不同用户的主目录下。

5、数据备份

备份rocketmq_data/data数据,包括store、commitLog、消费队列、消息索引、checkpoint文件、异常中止文件等数据

cp -r /home/rocketmq-4.7.1/rocketmq_data /home/rocketmq-4.7.1/rocketmq_data.bak

所以在部署rocketmq时,数据文件和日志文件建议单独部署在rocketmq安装目录之外,便于数据迁移,升级、扩容等操作。

注意:备份前,需要保证所有消息队列被消费完

6、开始升级

首先关停4.7的一台namesrv,启动4.9的一台namesrv,观察broker状态,再关闭4.7的另一台namesrv,启动4.9的另一台namesrv

启停broker

(1)停止4.7.1的broker-a,启动4.9.7的broker-c,观察4.9.7的broker是否正常;

(2)停止4.7.1的broker-a-s,启动4.9.7的broker-c-s,观察4.9.7的broker是否正常;

(3)停止4.7.1的broker-b,启动4.9.7的broker-d,观察4.9.7的broker是否正常;

(4)停止4.7.1的broker-b-s,启动4.9.7的broker-d-s,观察4.9.7的broker是否正常;

已经重启完成后观察业务及应用是否正常

(1)检查是否有错误日志

(2)登录web页面检查各个模块功能是否正常

(3)通过页面发送消息是否正常

(4)通过接口发送消息是否正常

查看日志:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇