Rocket MQ 多主多从异步复制集群搭建
【摘要】RocketMQ 多主多从异步复制集群搭建。
参考:https://blog.csdn.net/momo898821/article/details/105386903
安装前准备
JDK8
RocketMQ 4.5.2
部署方式
RocketMQ有三种部署方式:
1、2m-2s-async。多主多从异步复制
2、2m-2s-sync。多主多从同步复制
3、2m-noslave。多主无从
本文介绍2m-2s-async多主多从异步复制集群安装方式,集群包含三台节点,各节点Broker分布情况:
节点 | 主服务 | 从服务 |
---|---|---|
node1 | broker-a | broker-b-s |
node2 | broker-b | broker-c-s |
node3 | broker-c | broker-a-s |
RocketMQ
1、解压 rocketmq-all-4.5.2-bin-release.zip
[root@ecs-5b25-0001 rocketmq-all-4.5.2-bin-release]# unzip rocketmq-all-4.5.2-bin-release.zip
[root@ecs-5b25-0001 rocketmq-all-4.5.2-bin-release]# ll
total 44
drwxr-xr-x 2 root root 4096 Aug 2 2019 benchmark
drwxr-xr-x 3 root root 4096 Mar 7 17:24 bin
drwxr-xr-x 6 root root 4096 Jul 31 2019 conf
drwxr-xr-x 2 root root 4096 Aug 2 2019 lib
-rw-r--r-- 1 root root 17336 Jul 31 2019 LICENSE
-rw-r--r-- 1 root root 1338 Jul 31 2019 NOTICE
-rw-r--r-- 1 root root 4020 Jul 31 2019 README.md
添加环境变量到/etc/profile
export ROCKETMQ_HOME=/home/rocketmq/rocketmq-all-4.5.2-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin
2、修改conf/2m-2s-async 下面的配置文件
我们要修改2m-2s-async目录下配置文件,按照三台节点分布情况,分别修改对应的配置文件
节点一:修改broker-a.properties、broker-b-s.properties
节点二:修改broker-b.properties、broker-c-s.properties
节点三:修改broker-c.properties、broker-a-s.properties
注:初始只有broker-a,broker-b四个文件,自行添加broker-c文件即可
broker-a.properties配置文件内容:
#集群名
brokerClusterName=Data-Cluster
#broker名字
brokerName=broker-a
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.0.173:9876;192.168.0.32:9876;192.168.0.175:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
brokerIP1=192.168.0.175
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
#fileReservedTime=3600
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#文件磁盘最大利用率
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/rocketmq/data/store-a
#commitLog 存储路径
storePathCommitLog=/home/rocketmq/data/commitlog-a
#消费队列存储路径存储路径
storePathConsumeQueue=/home/rocketmq/data/consumequeue-a
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
broker-a-s.properties配置文件内容:
#集群名
brokerClusterName=Data-Cluster
#broker名字
brokerName=broker-a
#0 表示 Master, >0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.0.173:9876;192.168.0.32:9876;192.168.0.175:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10920
brokerIP1=192.168.0.32
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
#fileReservedTime=3600
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#文件磁盘最大利用率
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/rocketmq/data/store-b
#commitLog 存储路径
storePathCommitLog=/home/rocketmq/data/commitlog-b
#消费队列存储路径存储路径
storePathConsumeQueue=/home/rocketmq/data/consumequeue-b
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
broker-b.properties配置文件内容:
#集群名
brokerClusterName=Data-Cluster
#broker名字
brokerName=broker-b
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.0.173:9876;192.168.0.32:9876;192.168.0.175:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=ture
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=ture
#Broker 对外服务的监听端口
listenPort=10911
brokerIP1=192.168.0.173
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
#fileReservedTime=3600
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#磁盘最大利用率
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/hadmin/data/rocketmq/store-b
#commitLog 存储路径
storePathCommitLog=/home/hadmin/data/rocketmq/commitlog-b
#消费队列存储路径存储路径
storePathConsumeQueue=/home/hadmin/data/rocketmq/consumequeue-b
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
broker-b-s.properties配置文件内容:
#集群名
brokerClusterName=Data-Cluster
#broker名字
brokerName=broker-b
#0 表示 Master, >0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.0.173:9876;192.168.0.32:9876;192.168.0.175:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=ture
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=ture
#Broker 对外服务的监听端口
listenPort=10920
brokerIP1=192.168.0.175
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
#fileReservedTime=3600
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#磁盘最大利用率
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/rocketmq/data/store-b-s
#commitLog 存储路径
storePathCommitLog=/home/rocketmq/data/commitlog-b-s
#消费队列存储路径存储路径
storePathConsumeQueue=/home/rocketmq/data/consumequeue-b-s
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
broker-c.properties配置文件内容:
#集群名
brokerClusterName=Data-Cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-c
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.0.173:9876;192.168.0.32:9876;192.168.0.175:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=ture
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=ture
#Broker 对外服务的监听端口
listenPort=10911
brokerIP1=192.168.0.32
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
#fileReservedTime=3600
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#磁盘最大利用率
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/rocketmq/data/store-c
#commitLog 存储路径
storePathCommitLog=/home/rocketmq/data/commitlog-c
#消费队列存储路径存储路径
storePathConsumeQueue=/home/rocketmq/data/consumequeue-c
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
broker-c-s.properties配置文件内容:
#集群名
brokerClusterName=Data-Cluster
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-c
#0 表示 Master, >0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.0.173:9876;192.168.0.32:9876;192.168.0.175:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=ture
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=ture
#Broker 对外服务的监听端口
listenPort=10920
brokerIP1=192.168.0.173
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
#fileReservedTime=3600
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#磁盘最大利用率
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/home/rocketmq/data/store-c-s
#commitLog 存储路径
storePathCommitLog=/home/rocketmq/data/commitlog-c-s
#消费队列存储路径存储路径
storePathConsumeQueue=/home/rocketmq/data/consumequeue-c-s
#限制的消息大小
maxMessageSize=65536
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
3、启动RoketMQ集群
启动nameserver,三台节点分别执行启动命令:
nohup sh mqnamesrv > /home/rocketmq/logsmqnamesrv.log 2>&1 &
节点一启动broker-a,broker-b-s
//启动broker-a
nohup sh mqbroker -c /home/rocketmq/rocketmq-all-4.5.2-bin-release/conf/2m-2s-async/broker-a.properties > /home/rocketmq/logs/mqbroker-a.log 2>&1 &
//启动broker-b-s
nohup sh mqbroker -c /home/rocketmq/rocketmq-all-4.5.2-bin-release/conf/2m-2s-async/broker-b-s.properties > /home/rocketmq/logs/mqbroker-b-s.log 2>&1 &
节点二启动broker-b,broker-c-s
//启动broker-b
nohup sh mqbroker -c /home/rocketmq/rocketmq-all-4.5.2-bin-release/conf/2m-2s-async/broker-b.properties > /home/rocketmq/logs/mqbroker-b.log 2>&1 &
//启动broker-c-s
nohup sh mqbroker -c /home/rocketmq/rocketmq-all-4.5.2-bin-release/conf/2m-2s-async/broker-c-s.properties > /home/rocketmq/logs/mqbroker-c-s.log 2>&1 &
节点三启动broker-c,broker-a-s
//启动broker-c
nohup sh mqbroker -c /home/rocketmq/rocketmq-all-4.5.2-bin-release/conf/2m-2s-async/broker-c.properties > /home/rocketmq/logs/mqbroker-c.log 2>&1 &
//启动broker-a-s
nohup sh mqbroker -c /home/rocketmq/rocketmq-all-4.5.2-bin-release/conf/2m-2s-async/broker-a-s.properties > /home/rocketmq/logs/mqbroker-a-s.log 2>&1 &
4、查看RoketMQ集群情况
[root@ecs-5b25-0001 ~]# mqadmin clusterList -n 192.168.0.173:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0).
RocketMQLog:WARN Please initialize the logger system properly.
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
Data-Cluster broker-a 0 192.168.0.175:10911 V4_5_2 0.00(0,0ms) 0.00(0,0ms) 0 448643.22 -1.0000
Data-Cluster broker-a 1 192.168.0.32:10920 V4_5_2 0.00(0,0ms) 0.00(0,0ms) 0 448643.22 -1.0000
Data-Cluster broker-b 0 192.168.0.173:10911 V4_5_2 0.00(0,0ms) 0.00(0,0ms) 0 448643.22 -1.0000
Data-Cluster broker-b 1 192.168.0.175:10920 V4_5_2 0.00(0,0ms) 0.00(0,0ms) 0 448643.22 0.0897
Data-Cluster broker-c 0 192.168.0.32:10911 V4_5_2 0.00(0,0ms) 0.00(0,0ms) 0 448643.22 -1.0000
Data-Cluster broker-c 1 192.168.0.173:10920 V4_5_2 0.00(0,0ms) 0.00(0,0ms) 0 448643.22 0.0898