RocketMQ是一款开源的分布式消息中间件,它具有很多特性:
1、分布式、高可用
2、高吞吐、低延时
3、多种消息模式(顺序消费、定时消费、事务消费等)
4、亿级消息堆积能力
5、消息容错机制
JDK8
RocketMQ二进制安装包rocketmq-all-4.5.0-bin-release.zip 官方下载地址
RocketMQ console监控rockemq-console,需要下载源码自行打jar包 GitHub下载地址
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 |
1、解压安装包
unzip rocketmq-all-4.5.0-bin-release.zip
//重命名解压目录
mv rocketmq-all-4.5.0-bin-release rocketmq-4.5.0
2、修改配置文件,位于conf目录下
配置文件目录结构如下
我们要修改2m-2s-async目录下配置文件,按照三台节点分布情况,分别修改对应的配置文件:
安装包解压后2m-2s-async目录下默认只有broker-a,broker-b相关的四个配置文件,没有broker-c的配置文件。只需要将broker-a或者broker-b任意一份文件复制重命名即可。
节点一:修改broker-a.properties、broker-b-s.properties
节点二:修改broker-b.properties、broker-c-s.properties
节点三:修改broker-c.properties、broker-a-s.properties
broker-a.properties配置文件内容:
#集群名
brokerClusterName=Data-Cluster
#broker名字
brokerName=broker-a
#0 表示 Master, >0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=node7:9876;node8:9876;node9:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 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-a
#commitLog 存储路径
storePathCommitLog=/home/hadmin/data/rocketmq/commitlog-a
#消费队列存储路径存储路径
storePathConsumeQueue=/home/hadmin/data/rocketmq/consumequeue-a
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#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=node7:9876;node8:9876;node9:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
#Broker 对外服务的监听端口
listenPort=10912
#删除文件时间点,默认凌晨 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
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#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=10.16.0.14:9876;10.16.0.15:9876;10.16.0.16:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=ture
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=ture
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 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
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#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=10.16.0.14:9876;10.16.0.15:9876;10.16.0.16:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=ture
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=ture
#Broker 对外服务的监听端口
listenPort=10912
#删除文件时间点,默认凌晨 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-s
#commitLog 存储路径
storePathCommitLog=/home/hadmin/data/rocketmq/commitlog-b-s
#消费队列存储路径存储路径
storePathConsumeQueue=/home/hadmin/data/rocketmq/consumequeue-b-s
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#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=10.16.0.14:9876;10.16.0.15:9876;10.16.0.16:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=ture
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=ture
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 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-c
#commitLog 存储路径
storePathCommitLog=/home/hadmin/data/rocketmq/commitlog-c
#消费队列存储路径存储路径
storePathConsumeQueue=/home/hadmin/data/rocketmq/consumequeue-c
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#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=10.16.0.14:9876;10.16.0.15:9876;10.16.0.16:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=3
#是否允许 Broker 自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=ture
#是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=ture
#Broker 对外服务的监听端口
listenPort=10912
#删除文件时间点,默认凌晨 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-c-s
#commitLog 存储路径
storePathCommitLog=/home/hadmin/data/rocketmq/commitlog-c-s
#消费队列存储路径存储路径
storePathConsumeQueue=/home/hadmin/data/rocketmq/consumequeue-c-s
#限制的消息大小
maxMessageSize=65536
#flushCommitLogLeastPages=4
#flushConsumeQueueLeastPages=2
#flushCommitLogThoroughInterval=10000
#flushConsumeQueueThoroughInterval=60000
#Broker 的角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
3、配置环境变量,修改/etc/profile
export ROCKETMQ_HOME=/home/hadmin/rocketmq-4.5.0
export PATH=$PATH:$ROCKETMQ_HOME/bin
//使配置生效
source /etc/profile
1、启动nameserver,三台节点分别执行启动命令:
nohup sh mqnamesrv > /home/hadmin/rokermq-4.5.0/logs/mqnamesrv.log 2>&1 &
2、节点一启动broker-a,broker-b-s
//启动broker-a
nohup sh mqbroker -c /home/hadmin/rocketmq-4.5.0/conf/2m-2s-async/broker-a.properties > /home/hadmin/rokermq-4.5.0/logs/mqbroker-a.log 2>&1 &
//启动broker-b-s
nohup sh mqbroker -c /home/hadmin/rocketmq-4.5.0/conf/2m-2s-async/broker-b-s.properties > /home/hadmin/rokermq-4.5.0/logs/mqbroker-b-s.log 2>&1 &
3、节点二启动broker-b,broker-c-s
//启动broker-b
nohup sh mqbroker -c /home/hadmin/rocketmq-4.5.0/conf/2m-2s-async/broker-b.properties > /home/hadmin/rokermq-4.5.0/logs/mqbroker-b.log 2>&1 &
//启动broker-c-s
nohup sh mqbroker -c /home/hadmin/rocketmq-4.5.0/conf/2m-2s-async/broker-c-s.properties > /home/hadmin/rokermq-4.5.0/logs/mqbroker-c-s.log 2>&1 &
4、节点三启动broker-c,broker-a-s
//启动broker-c
nohup sh mqbroker -c /home/hadmin/rocketmq-4.5.0/conf/2m-2s-async/broker-c.properties > /home/hadmin/rokermq-4.5.0/logs/mqbroker-c.log 2>&1 &
//启动broker-a-s
nohup sh mqbroker -c /home/hadmin/rocketmq-4.5.0/conf/2m-2s-async/broker-a-s.properties > /home/hadmin/rokermq-4.5.0/logs/mqbroker-a-s.log 2>&1 &
1、进入GitHub网站下载源码,https://github.com/apache/rocketmq-externals。下图中rocketmq-console目录就是监控相关源码,右上角按钮点击可进行ZIP压缩包下载或者使用Git工具下载。
2、使用开发工具IntelliJ IDEA打开rocketmq-console工程,修改resources目录下application.properties配置文件
配置文件也可不修改,在运行jar包时候通过参数传入覆盖原有默认配置
mvn clean package -Dmaven.test.skip=true
4、将target目录下rocketmq-console-ng-1.0.1.jar上传到服务器,使用java -jar命令启动
java -jar rocketmq-console-ng-1.0.1.jar --server.port=18080 --rocketmq.config.namesrvAddr=node7:9876;node8:9876;node9:9876
5、浏览器输入http://IP:18080查看监控页面
其他配置和使用请参考项目doc目录下UserGuide_CN.md和UserGuide_EN.md
水平一般,能力有限,大数据小学生一枚。文章主要用于个人学习和总结,如果能给他人带来帮助,纯属意外。