RockerMQ简介
RocektMQ是阿里巴巴在2012年开源的一个纯java、分布式、队列模型的第三代消息中间件,不仅在传统高频交易链路有着低延迟的出色表现,在实时计算等大数据领域也有着不错的吞吐。
2016年11月11号,双十一大促见证了RocketMQ低延迟存储架构的成功试水,99.996%的延迟落在了10ms以内,极个别由于GC引发的停顿在50ms以内,其高性能、低延时和高可靠的特性承载了近年来双十一17万笔/秒的交易峰值,在整个生产链路上都有着稳定和出色的表现。其在同年捐赠给Apache后正式进入孵化期。并于2017年9月RocketMQ正式从Apache社区正式毕业,成为Apache顶级项目。
服务器配置表
ip地址 | 部署角色 | 模式 |
192.168.1.20 | Nameserver1,Brokerserver1 | Master1 |
192.168.1.20 | Nameserver1,Brokerserver1 | Master2-Slave |
192.168.1.21 | Nameserver2,Brokerserver2 | Master2 |
192.168.1.21 | Nameserver2,Brokerserver2 | Master1-Slave |
系统部署架构图
分别修改20 和21的服务器hosts 文件
$sudo vim /etc/hosts IP NAME 192.168.1.20 nameserver1 192.168.1.20 master1 192.168.1.20 master1-slave1 192.168.1.21 nameserver2 192.168.1.21 master2 192.168.1.21 master2-slave2 下载官方源码 下载地址 $unzip rocketmq-all-4.5.1-bin-release.zip -d /workspace/ 分别在20和21两台服务器上创建持久化存储目录 Msater 目录设置 mkdir /data/rocketMQ-2m2s/store mkdir /hdata/rocketMQ-2m2s/store/commitlog mkdir /data/rocketMQ-2m2s/store/consumequeue mkdir /data/rocketMQ-2m2s/store/index Slave目录设置 mkdir /data/rocketMQ-2m2s/store-s mkdir /hdata/rocketMQ-2m2s/store-s/commitlog mkdir /data/rocketMQ-2m2s/store-s/consumequeue mkdir /data/rocketMQ-2m2s/store-s/index
RocketMQ配置文件
20服务器配置
sudo vim /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-a.properties
sudo vim /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-b-s.properties
21服务器配置
sudo vim /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-b.properties
sudo vim /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-a-s.properties
20服务器 broker-a.properties配置文件
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=192.168.1.20:9876;192.168.1.21:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 haListenPort=10912 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=18 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/data/rocketMQ-2m2s/store #commitLog 存储路径 storePathCommitLog=/data/rocketMQ-2m2s/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/data/rocketMQ-2m2s/store/consumequeue #消息索引存储路径 storePathIndex=/data/rocketMQ-2m2s/store/index #checkpoint 文件存储路径 storeCheckpoint=/data/rocketMQ-2m2s/store/checkpoint #abort 文件存储路径 abortFile=/data/rocketMQ-2m2s/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=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128 #强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误 brokerIP1=192.168.1.20 |
21服务器 broker-a-s.properties配置文件
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=192.168.1.20:9876;192.168.1.21:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10923 haListenPort=10924 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=18 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/data/rocketMQ-2m2s/store-s #commitLog 存储路径 storePathCommitLog=/data/rocketMQ-2m2s/store-s/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/data/rocketMQ-2m2s/store-s/consumequeue #消息索引存储路径 storePathIndex=/data/rocketMQ-2m2s/store-s/index #checkpoint 文件存储路径 storeCheckpoint=/data/rocketMQ-2m2s/store-s/checkpoint #abort 文件存储路径 abortFile=/data/rocketMQ-2m2s/store-s/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #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 #强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误 brokerIP1=192.168.1.21 |
21服务器 broker-b.properties配置文件
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=192.168.1.20:9876;192.168.1.21:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10911 haListenPort=10912 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=18 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/data/rocketMQ-2m2s/store #commitLog 存储路径 storePathCommitLog=/data/rocketMQ-2m2s/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/datarocketMQ-2m2s/store/consumequeue #消息索引存储路径 storePathIndex=/data/rocketMQ-2m2s/store/index #checkpoint 文件存储路径 storeCheckpoint=/data/rocketMQ-2m2s/store/checkpoint #abort 文件存储路径 abortFile=/data/rocketMQ-2m2s/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=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128 #强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误 brokerIP1=192.168.1.21 |
20服务器 broker-b-s.properties配置文件
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-b #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=192.168.1.20:9876;192.168.1.21:9876 #在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 #是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true #是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true #Broker 对外服务的监听端口 listenPort=10923 haListenPort=10924 #删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=18 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir=/data/rocketMQ-2m2s/store-s #commitLog 存储路径 storePathCommitLog=/data/rocketMQ-2m2s/store-s/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/data/rocketMQ-2m2s/store-s/consumequeue #消息索引存储路径 storePathIndex=/data/rocketMQ-2m2s/store-s/index #checkpoint 文件存储路径 storeCheckpoint=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/checkpoint #abort 文件存储路径 abortFile=/data/rocketMQ-2m2s/store-s/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 #强制指定本机IP,需要根据每台机器进行修改。官方介绍可为空,系统默认自动识别,但多网卡时IP地址可能读取错误 brokerIP1=192.168.1.20 |
启动参数设置
RocketMQ启动文件位于/workspace/rocketmq-all-4.5.1-bin-release/bin/目录下,Linux中nameserver启动文件为:mqnamesrv,broker启动文件为:mqbroker,mqnamesrv和mqbroker启动文件分别调用了runserver.sh和runbroker.sh文件,这两个文件分别设置了nameserver和broker的启动内存,目前内存启动参数分别为nameserver启动内存4G,最大内存4G,新生代2G,broker启动内存8G,最大内存8G,新生代4G。
启动Nameserver
分别启动20、21的Nameserver
cd /workspace/rocketmq-all-4.5.1-bin-release/bin/ nohup sh mqnamesrv & |
启动Broker
20上Master启动:
nohup sh mqbroker -c /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-a.properties & |
21上Master启动:
nohup sh mqbroker -c /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-b.properties & |
20上Slave启动:
nohup sh mqbroker -c /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-b-s.properties & |
21上Slave启动:
nohup sh mqbroker -c /workspace/rocketmq-all-4.5.1-bin-release/conf/2m-2s-async/broker-a-s.properties & |
至此,Nameserver、Broker启动完成,可以用jobs命令查看当前运行进程,如下是服务端相关shutdown,即在bin目录下:
sh mqshutdown namesrv sh mqshutdown broker |
RocketMQ监控平台部署
Apache版的RocketMQ管理界面部署工具可以从github上下载源码,地址:https://github.com/apache/rocketmq-externals,部署流程如下
修改配置文件,关联rocketMQ集群到管理界面
首先解压并进入解压后rockemq-externals-master目录rocketmq-externals-master/rocketmq-externals-master/rocketmq-console/src/main/resources,修改目录下application.properties配置文件
rocketmq.config.nameservAddr=192.168.1.20:9876,192.168.1.21:9876 rocketmq.config.dataPath=/data/rocketMQ-2m2s |
然后编译打包成rocketmq-console-ng-1.0.0.jar 上传到服务器
运行jar包
nohup java -jar rocketmq-console-ng-1.0.0.jar -Xms512m -Xmx512m -Xmn256m -XX:MaxMetaspaceSize=64m -XX:MetaspaceSize=64m > /dev/null & |
访问管理界面
浏览器输入:http://192.168.1.20:8080/回车显示监控界面