mac下rocketmq各种集群模式搭建实战


首先去rocketmq官网下载安装包,地址为:http://mirrors.hust.edu.cn/apache/rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.zip
将下载好的安装包rocketmq-all-4.3.2-bin-release.zip解压到/Users/conan/software目录下,解压命令为unzip rocketmq-all-4.3.2-bin-release.zip。
本文使用的jdk版本为:
mac下rocketmq各种集群模式搭建实战
下面开始进入实战:

0:搭建nameserver集群

说明:由于broker集群是需要依赖nameserver集群的,所以要首先搭建好nameserver集群。

第一步:将解压后的安装包复制一份并重命名为rocketmq-all-4.3.2_nameserver,目的是为了搭建rocketmq命名服务器,nameserver相当于zookeeper注册中心的角色。各个nameserver互相独立,可水平扩展。
第二步:在conf目录下新建两个文件,namesrv1.properties和namesrv2.properties。其中,
namesrv1.properties内容为:

listenPort=19876

namesrv2.properties内容为:

listenPort=29876

第三步:在rocketmq-all-4.3.2_nameserver根目录下新建start.sh文件,文件内容为:

echo "starting nameserver1"
nohup sh bin/mqnamesrv -c conf/namesrv1.properties &
echo "started nameserver1"
echo "starting nameserver2"
nohup sh bin/mqnamesrv -c conf/namesrv2.properties &
echo "started nameserver2"

第四步:执行脚本,sh start.sh即可将两个端口分别为19876和29876的nameserver服务启动起来。

经过以上四个步骤,nameserver集群就搭建好了。

1、单master模式

第一步:将解压后的安装包复制一份并重命名为rocketmq-all-4.3.2_single-m
第二步:修改配置文件conf/broker.conf的内容为:

#所属集群名字
brokerClusterName=rocketmq-cluster_single-m
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker_single-m
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=13911
#删除文件时间点,默认凌晨 0点
deleteWhen=00
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocketmq-4.3.2_single-m/data
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocketmq-4.3.2_single-m/data/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocketmq-4.3.2_single-m/data/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocketmq-4.3.2_single-m/data/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocketmq-4.3.2_single-m/data/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocketmq-4.3.2_single-m/data/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

第三步:在rocketmq-all-4.3.2_nameserver根目录下新建脚本文件start.sh,内容为:

echo "starting broker"
nohup sh bin/mqbroker -c conf/broker.conf &
echo "started broker"

第四步:执行脚本,sh start.sh即可启动broker。

2、双master模式(2m-noslave)

第一步:将解压后的安装包复制一份并重命名为rocketmq-all-4.3.2_2m-noslave
第二步:修改conf/2m-noslave/目录下的broker-a.properties和broker-b.properties文件,修改后的内容分别为:
broker-a.properties:

#所属集群名字
brokerClusterName=rocketmq-cluster-2m-noslave
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a_2m-noslave
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=11911
#删除文件时间点,默认凌晨 0点
deleteWhen=00
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocketmq-4.3.2_2m-noslave-a/data
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocketmq-4.3.2_2m-noslave-a/data/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocketmq-4.3.2_2m-noslave-a/data/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocketmq-4.3.2_2m-noslave-a/data/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocketmq-4.3.2_2m-noslave-a/data/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocketmq-4.3.2_2m-noslave-a/data/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

broker-b.properties:

#所属集群名字
brokerClusterName=rocektmq-cluster_2m-noslave
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-b_2m-noslave
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=12911
#删除文件时间点,默认凌晨 0点
deleteWhen=00
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocketmq-4.3.2_2m-noslave-b/data
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocketmq-4.3.2_2m-noslave-b/data/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocketmq-4.3.2_2m-noslave-b/data/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocketmq-4.3.2_2m-noslave-b/data/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocketmq-4.3.2_2m-noslave-b/data/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocketmq-4.3.2_2m-noslave-b/data/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

第三步:在rocketmq-all-4.3.2_single-m根目录下新建脚本文件start.sh,内容为:

echo "starting broker-a"
nohup sh bin/mqbroker -c conf/2m-noslave/broker-a.properties &
echo "started broker-a"
echo "starting broker-b"
nohup sh bin/mqbroker -c conf/2m-noslave/broker-b.properties &
echo "started broker-b"

第四步:执行命令,sh start.sh即可将两个broker启动起来。

3、双master同步模式(2m-2s-sync)

第一步:将解压后的安装包复制一份并重命名为rocketmq-all-4.3.2_2m-2s-sync
第二步:修改conf/2m-2s-sync下的broker-a.properties、broker-a-s.properties、broker-b.properties和broker-b-s.properties四个文件,修改后的文件内容分别为:
broker-a.properties:

#将a.properties和b.properties文件中的内容全部清掉(用下面的内容替换掉)
#所属集群名字
brokerClusterName=rocketmq-cluster_2m-2s-sync
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-a_2m-2s-sync
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10211
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-a/store
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-a/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-a/store/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-a/store/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-a/store/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-a/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

broker-a-s.properties:

#将a.properties和b.properties文件中的内容全部清掉(用下面的内容替换掉)
#所属集群名字
brokerClusterName=rocketmq-cluster_2m-2s-sync
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-a_2m-2s-sync
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=20111
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocektmq-4.3.2_2m-2s-sync_broker-a-s/store
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocektmq-4.3.2_2m-2s-sync_broker-a-s/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocektmq-4.3.2_2m-2s-sync_broker-a-s/store/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocektmq-4.3.2_2m-2s-sync_broker-a-s/store/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocektmq-4.3.2_2m-2s-sync_broker-a-s/store/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocektmq-4.3.2_2m-2s-sync_broker-a-s/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

broker-b.properties:

#将a.properties和b.properties文件中的内容全部清掉(用下面的内容替换掉)
#所属集群名字
brokerClusterName=rocketmq-cluster_2m-2s-sync
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-b_2m-2s-sync
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10311
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-b/store
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-b/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-b/store/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-b/store/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-b/store/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocketmq-4.3.2_2m-2s-sync_broker-b/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

broker-b-s.properties:

#将a.properties和b.properties文件中的内容全部清掉(用下面的内容替换掉)
#所属集群名字
brokerClusterName=rocketmq-cluster_2m-2s-sync
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-b_2m-2s-sync
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10411
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocketmqdata/rocketmq/2m-2s-sync_broker-b-s/store
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocketmqdata/rocketmq/2m-2s-sync_broker-b-s/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocketmqdata/rocketmq/2m-2s-sync_broker-b-s/store/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocketmqdata/rocketmq/2m-2s-sync_broker-b-s/store/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocketmqdata/rocketmq/2m-2s-sync_broker-b-s/store/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocketmqdata/rocketmq/2m-2s-sync_broker-b-s/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=SYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

第三步:在rocketmq-all-4.3.2_2m-2s-sync根目录下新建脚本文件start.sh,内容为:

echo "starting broker-a"
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties &
echo "started broker-a"
echo "starting broker-a-s"
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties &
echo "started broker-a-s"
echo "starting broker-b"
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties &
echo "started broker-b"
echo "starting broker-b-s"
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties &
echo "started broker-b-s"

第四步:执行命令,sh start.sh即可将两个master和两个slave启动起来。

4、双master异步模式(2m-2s-async)

第一步:将解压后的安装包复制一份并重命名为rocketmq-all-4.3.2_2m-2s-async
第二步:修改conf/2m-2s-async目录下的broker-a.properties、broker-a-s.properties、broker-b.properties和broker-b-s.properties四个配置文件,修改后的文件内容分别为:
broker-a.properties:

#将a.properties和b.properties文件中的内容全部清掉(用下面的内容替换掉)
#所属集群名字
brokerClusterName=rocketmq-cluster_2m-2s-async
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-a_2m-2s-async
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-a/store
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-a/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-a/store/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-a/store/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-a/store/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-a/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

broker-a-s.properties:

#将a.properties和b.properties文件中的内容全部清掉(用下面的内容替换掉)
#所属集群名字
brokerClusterName=rocketmq-cluster_2m-2s-async
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-a_2m-2s-async
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=20911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocektmq-4.3.2_2m-2s-async_broker-a-s/store
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocektmq-4.3.2_2m-2s-async_broker-a-s/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocektmq-4.3.2_2m-2s-async_broker-a-s/store/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocektmq-4.3.2_2m-2s-async_broker-a-s/store/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocektmq-4.3.2_2m-2s-async_broker-a-s/store/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocektmq-4.3.2_2m-2s-async_broker-a-s/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

broker-b.properties:

#将a.properties和b.properties文件中的内容全部清掉(用下面的内容替换掉)
#所属集群名字
brokerClusterName=rocketmq-cluster_2m-2s-async
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-b_2m-2s-async
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=30911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-b/store
#commitLog 存储路径
storePathCommitLog=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-b/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-b/store/consumequeue
#消息索引存储路径
storePathIndex=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-b/store/index
#checkpoint 文件存储路径
storeCheckpoint=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-b/store/checkpoint
#abort 文件存储路径
abortFile=/Users/conan/rocketmq-4.3.2_2m-2s-async_broker-b/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=ASYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

broker-b-s.properties:

#将a.properties和b.properties文件中的内容全部清掉(用下面的内容替换掉)
#所属集群名字
brokerClusterName=rocketmq-cluster_2m-2s-async
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-b_2m-2s-async
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=40911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=//Users/conan/rocketmqdata/rocketmq/2m-2s-async_broker-b-s/store
#commitLog 存储路径
storePathCommitLog=//Users/conan/rocketmqdata/rocketmq/2m-2s-async_broker-b-s/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=//Users/conan/rocketmqdata/rocketmq/2m-2s-async_broker-b-s/store/consumequeue
#消息索引存储路径
storePathIndex=//Users/conan/rocketmqdata/rocketmq/2m-2s-async_broker-b-s/store/index
#checkpoint 文件存储路径
storeCheckpoint=//Users/conan/rocketmqdata/rocketmq/2m-2s-async_broker-b-s/store/checkpoint
#abort 文件存储路径
abortFile=//Users/conan/rocketmqdata/rocketmq/2m-2s-async_broker-b-s/store/abort
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
#checkTransactionMessageEnable=false
#发消息线程池数量
#sendMessageThreadPoolNums=128
#拉消息线程池数量
#pullMessageThreadPoolNums=128

第三步:在rocketmq-all-4.3.2_2m-2s-async根目录下新建脚本文件start.sh,脚本内容为:

echo "starting broker-a"
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a.properties &
echo "started broker-a"
echo "starting broker-a-s"
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-a-s.properties &
echo "started broker-a-s"
echo "starting broker-b"
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b.properties &
echo "started broker-b"
echo "starting broker-b-s"
nohup sh bin/mqbroker -c conf/2m-2s-async/broker-b-s.properties &
echo "started broker-b-s"

第四步:执行命令,sh start.sh即可将两个master和两个slave启动起来

到此为止,四种集群模式都已经搭建完成,可通过命令

jps | grep -v Jps

进行查看:
mac下rocketmq各种集群模式搭建实战
刚好有2个nameserver和11个broker,代表集群启动成功。

5、优化和监控

1、为了同时启动四种不同模式的集群,可在/Users/conan/software目录下新建脚本文件rocketmq-all-cluster-start.sh,文件内容为:

cd ~/software/rocketmq-all-4.3.2_nameserver
sh start.sh
cd ~/software/rocketmq-all-4.3.2_single-m
sh start.sh
cd ~/software/rocketmq-all-4.3.2_2m-noslave
sh start.sh
cd ~/software/rocketmq-all-4.3.2_2m-2s-sync
sh start.sh
cd ~/software/rocketmq-all-4.3.2_2m-2s-async
sh start.sh

之后可直接执行命令sh rocketmq-all-cluster-start.sh即可将四种模式的集群同时启动起来
2、为了更好的了解集群的运行状况,可通过官方提供的rocketmq-console-ng进行监控。首先将rocketmq-console-ng源码下载下来,地址为:https://github.com/apache/rocketmq-externals/tree/master/rocketmq-console,修改src/main/resources/application.properties,内容为:

server.contextPath=/rocketmq-console
server.port=8081
#spring.application.index=true
spring.application.name=rocketmq-console
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
logging.config=classpath:logback.xml
#if this value is empty,use env value rocketmq.config.namesrvAddr  NAMESRV_ADDR | now, you can set it in ops page.default localhost:9876
rocketmq.config.namesrvAddr=192.168.1.18:19876;192.168.1.18:29876
#if you use rocketmq version < 3.5.8, rocketmq.config.isVIPChannel should be false.default true
rocketmq.config.isVIPChannel=
#rocketmq-console's data path:dashboard/monitor
rocketmq.config.dataPath=/tmp/rocketmq-console/data
#set it false if you don't want use dashboard.default true
rocketmq.config.enableDashBoardCollect=true

执行命令

mvn clean package -DskipTests && java -jar target/rocketmq-console-ng-1.0.0.jar &

mac下rocketmq各种集群模式搭建实战
即可将rocketmq监控程序启动起来。
3、浏览器中输入http://localhost:8081/rocketmq-console/#/cluster,看到如下界面就代表启动成功
mac下rocketmq各种集群模式搭建实战