双主双从集群搭建
暂定两台机器
服务器A
nameserverA brokerA brokerB-slave
服务器B
nameserverB brokerB brokerA-slave
启动顺序
- 启动nameserver 服务(类似注册中心)
- 依次启动 brokerA 、brokerB、brokerA-slave 、 brokerB-slave
关闭顺序
- sh mqshutdown broker
- sh mqshutdown namesrv
依赖环境
- 64 位操作系统,Linux/ Unix/Mac OS
- 64位JDK 1.8+
1、下载安装包
rocketmq-all-4.9.2-bin-release.zip
2、加压安装包
unzip rocketmq-all-4.9.2-bin-release.zip
3、默认配置修改
修改rocketmq/bin目录下 runbroker.sh 、runserver.sh jvm参数(按服务器内存大小适配置,官方推荐8g)
-
runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
-
runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g" JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=15g"
4、broker配置文件
#RocketMQ Name Server地址列表,多个NameServer地址用分号隔开
namesrvAddr=192.168.209.242:9876;192.168.209.243:9876
#集群名
rokerClusterName=game-rocketmq-cluster
brokerIP1=192.168.209.242
brokerName=broker-a
brokerId=0
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#- ASYNC_MASTER 异步复制Master - SYNC_MASTER 同步双写Master - SLAVE
brokerRole=SYNC_MASTER
#- ASYNC_FLUSH 异步刷盘 SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
listenPort=10911
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#Broker 对外服务的监听端口
listenPort=10911
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#存储路径
storePathRootDir=/root/data/mq/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/root/data/mq/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/root/data/mq/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/root/data/mq/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/root/data/mq/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/root/data/mq/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#并发send线程数,多线程来发送消息可能会出现broker busy
sendMessageThreadPoolNums=128
useReentrantLockWhenPutMessage=true
#RocketMQ Name Server地址列表,多个NameServer地址用分号隔开
namesrvAddr=192.168.209.242:9876;192.168.209.243:9876
#集群名
rokerClusterName=game-rocketmq-cluster
brokerIP1=192.168.209.242
brokerName=broker-b
brokerId=1
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#- ASYNC_MASTER 异步复制Master - SYNC_MASTER 同步双写Master - SLAVE
brokerRole=SLAVE
#- ASYNC_FLUSH 异步刷盘 SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
listenPort=10911
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#Broker 对外服务的监听端口
listenPort=10911
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#存储路径
storePathRootDir=/data/mq/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/mq/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/mq/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/mq/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/mq/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/mq/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#并发send线程数,多线程来发送消息可能会出现broker busy
sendMessageThreadPoolNums=128
useReentrantLockWhenPutMessage=true
#RocketMQ Name Server地址列表,多个NameServer地址用分号隔开
namesrvAddr=192.168.209.242:9876;192.168.209.243:9876
#集群名
rokerClusterName=game-rocketmq-cluster
brokerIP1=192.168.209.243
brokerName=broker-b
brokerId=0
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#- ASYNC_MASTER 异步复制Master - SYNC_MASTER 同步双写Master - SLAVE
brokerRole=SYNC_MASTER
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
listenPort=10911
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#Broker 对外服务的监听端口
listenPort=10911
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#存储路径
storePathRootDir=/root/data/mq/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/root/data/mq/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/root/data/mq/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/root/data/mq/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/root/data/mq/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/root/data/mq/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#并发send线程数,多线程来发送消息可能会出现broker busy
sendMessageThreadPoolNums=128
useReentrantLockWhenPutMessage=true
#RocketMQ Name Server地址列表,多个NameServer地址用分号隔开
namesrvAddr=192.168.209.242:9876;192.168.209.243:9876
#集群名
rokerClusterName=game-rocketmq-cluster
brokerIP1=192.168.209.243
brokerName=broker-a
brokerId=1
#删除文件时间点,默认凌晨4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=48
#- ASYNC_MASTER 异步复制Master - SYNC_MASTER 同步双写Master - SLAVE
brokerRole=SLAVE
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
listenPort=10911
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=false
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=false
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#Broker 对外服务的监听端口
listenPort=10911
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#存储路径
storePathRootDir=/data/mq/rocketmq/store
#commitLog 存储路径
storePathCommitLog=/data/mq/rocketmq/store/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/data/mq/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex=/data/mq/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckpoint=/data/mq/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile=/data/mq/rocketmq/store/abort
#限制的消息大小
maxMessageSize=65536
#并发send线程数,多线程来发送消息可能会出现broker busy
sendMessageThreadPoolNums=128
useReentrantLockWhenPutMessage=true
5、初始文件夹
mkdir -p /usr/local/rocketmq/store
mkdir -p /usr/local/rocketmq/store/commitlog
mkdir -p /usr/local/rocketmq/store/consumequeue
mkdir -p /usr/local/rocketmq/store/index
mkdir -p /usr/local/rocketmq/store/checkpoint
mkdir -p /usr/local/rocketmq/store/abort
6、启动脚本
nameserver 启动
nohup sh mqnamesrv -n IP:PORT > /root/data/mq/rokermq/nameserv.log 2>&1 &
broker 启动
nohup sh /root/data/www/rocketmq-4.9.2/bin/mqnamesrv -n IP:PORT > /root/data/mq/roketmq 2>&1 &
broker-a
nohup sh /root/data/www/rocketmq-4.9.2/bin/mqbroker -n IP:PORT -c /root/data/www/rocketmq-4.9.2/conf/2m-2s-sync/broker-a.properties > /root/data/mq/roketmq 2>&1 &
broker-a-s
nohup sh /root/data/www/rocketmq-4.9.2/bin/mqbroker -n IP:PORT -c /root/data/www/rocketmq-4.9.2/conf/2m-2s-sync/broker-a-s.properties > /root/data/mq/roketmq 2>&1 &
broker-b-s
nohup sh /root/data/www/rocketmq-4.9.2/bin/mqbroker -n IP:PORT -c /root/data/www/rocketmq-4.9.2/conf/2m-2s-sync/broker-b-s.properties > /root/data/mq/roketmq 2>&1 &
broker-b
nohup sh /root/data/www/rocketmq-4.9.2/bin/mqbroker -n IP:PORT -c /root/data/www/rocketmq-4.9.2/conf/2m-2s-sync/broker-b.properties > /root/data/mq/roketmq 2>&1 &
#集群机器查询
sh bin/mqadmin clusterList -n 192.168.209.243:9876