安装RocketMQ(单机&集群)
安装RocketMQ(单机&集群)
安装RocketMQ单机
rocketMQ官网: http://rocketmq.apache.org/
下载并解压安装包
下载rocketmq的安装文件: tsinghua-mirror
解压压缩包
unzip rocketmq-all-4.5.2-bin-release.zip -d /opt/program
配置环境变量
vi /etc/profile
export JAVA_HOME=/opt/program/jdk1.8.0_231
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export MAVEN_HOME=/opt/program/apache-maven-3.5.4
export PATH=$PATH:$MAVEN_HOME/bin
export ROCKETMQ_HOME=/opt/program/rocketmq-all-4.5.2-bin-release
export PATH=$ROCKETMQ_HOME/bin:$PATH
创建数据和日志目录
mkdir -p /opt/program/rocketmq-all-4.5.2-bin-release/data
mkdir -p /opt/program/rocketmq-all-4.5.2-bin-release/logs
配置 broker.conf
vim /opt/program/rocketmq-all-4.5.2-bin-release/conf/broker.conf
# 所属集群名字(同一主从下: Master 和 Slave 名称要一致)
brokerClusterName = DefaultCluster
# Broker 名字,注意此处不同的配置文件填写的不一样
brokerName = broker-a
# 0 表示 Master,> 0 表示 Slave
brokerId = 0
# Broker 对外服务的监听端口, 如果一台机器上启动了多个Broker,则要设置不同的端口号,避免冲突
listenPort = 10911
# nameServer地址,如果nameServer是多台集群的话,就用分号分割,比如
# namesrvAddr = 192.168.0.1:9876;192.168.0.2:9876
# namesrvAddr = 127.0.0.1:9876
namesrvAddr = 172.16.11.125:9876
brokerIP1 = 172.16.11.125
# 是否允许 Broker 自动创建Topic,建议线上关闭
autoCreateTopicEnable = true
# 是否允许 Broker 自动创建订阅组,建议线上关闭
autoCreateSubscriptionGroup = true
# 与fileReservedTime参数呼应,表明在几点做消息删除动作,默认值04表示凌晨4点
deleteWhen = 04
# 在磁盘上保存消息的时长,单位是小时,自动删除超时的消息
fileReservedTime = 48
# brokerRole有3种:SYNC_MASTER、ASYNC_MASTER、SLAVE
# 关键词 SYNC 和 ASYNC 表示 Master 和 Slave 之间同步消息的机制
# SYNC 的意思是当 Slave 和 Master 消息同步完成后,再返回发送成功的状态
brokerRole = ASYNC_MASTER
# 刷盘方式 ASYNC_FLUSH 异步刷盘; SYNC_FLUSH 同步刷盘
flushDiskType = ASYNC_FLUSH
#数据存储位置
storePathRootDir = /opt/program/rocketmq-all-4.5.2-bin-release/data
storePathCommitLog = /opt/program/rocketmq-all-4.5.2-bin-release/logs
修改启动脚本JVM内存大小
vim /opt/program/rocketmq-all-4.5.2-bin-release/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m"
vim /opt/program/rocketmq-all-4.5.2-bin-release/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128m"
启动nameserver和broker
进入 /opt/program/rocketmq-all-4.5.2-bin-release/bin 目录
[root@master bin]# nohup sh mqnamesrv -n 172.16.11.125:9876 &
[1] 2937
[root@master bin]# nohup: 忽略输入并把输出追加到"nohup.out"
[root@master bin]# nohup sh mqbroker -n 172.16.11.125:9876 autoCreateTopicEnable=true -c /opt/program/rocketmq-all-4.5.2-bin-release/conf/broker.conf &
[2] 2968
[root@master bin]# nohup: 忽略输入并把输出追加到"nohup.out"
# 查看broker启动配置:
[root@master bin]# sh mqbroker -m
[root@master bin]# jps
3030 Jps
2940 NamesrvStartup
2972 BrokerStartup
关闭namesrv 和 broker
[root@master bin]# sh mqshutdown broker
The mqbroker(2972) is running...
Send shutdown request to mqbroker(2972) OK
[root@master bin]# sh mqshutdown namesrv
The mqnamesrv(2940) is running...
Send shutdown request to mqnamesrv(2940) OK
停止服务的时候需要注意,要先停止broker,其次停止nameserver。
安装RocketMQ控制台
启动好服务以后,总得有一个可视化界面来看看我们配置的节点情况吧。rocket官方提供了一个可视化控制台,大家可以在这个地址下载
这个是rocketmq的扩展,里面不仅包含控制台的扩展,也包含对大数据 flume、hbase 等组件的对接和扩展。
下载源码包
https://github.com/apache/rocketmq-externals/archive/master.zip
用Maven编译源码
rocketmq-externals/rocketmq-console
mvn clean package -Dmaven.test.skip=true
生成的jar文件目录 rocketmq-externals/rocketmq-console/target/rocketmq-console-ng-1.0.1.jar
运行jar包
java -jar /usr/local/rocketmq/rocketmq-console-ng-1.0.1.jar --rocketmq.config.namesrvAddr='172.16.11.125:9876'
访问链接
http://192.168.100.129:8080/#/
安装RocketMQ集群
部署环境说明
Linux服务器192.168.162.235、192.168.162.236两台(下文均简称235、236),详细部署环境示意表如下:
| IP地址 | 用户名 | 部署角色 | 模式 |
|---|---|---|---|
| 192.168.162.235 | rocketMQ | NameServer1/Brokerserver1 | Master1 |
| 192.168.162.235 | rocketMQ | NameServer1/Brokerserver1 | Master2-Slave |
| 192.168.162.236 | rocketMQ | NameServer2/Brokerserver2 | Master2 |
| 192.168.162.236 | rocketMQ | NameServer2/Brokerserver2 | Master1-Slave |
每台机器上分别启动一个 NameServer、 Brokerserver, 分别对应 Master1、 Master2
配置hosts
192.168.162.235 nameserver1
192.168.162.235 master1
192.168.162.235 master1-slave1
192.168.162.236 nameserver2
192.168.162.236 master2
192.168.162.236 master2-slave2
配置目录
分别上传rocketmq-all-4.5.2-bin-release.zip到235和236服务器的 /home/rocketMQ/ZHF/rocketMQ-2m2s/ 目录下并解压
创建持久化存储目录
Master 目录
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/commitlog mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/consumequeue mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store/indexSlave目录
mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/commitlog mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/consumequeue mkdir /home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/index
修改配置文件
235服务器设置:
sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a.properties sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b-s.properties236服务器设置:
sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b.properties sudo vim /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a-s.propertiesbroker-a.properties文件配置
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr=nameserver1:9876;nameserver2: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=/home/rocketMQ/ZHF/rocketMQ-2m2s/store #commitLog 存储路径 storePathCommitLog=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/consumequeue #消息索引存储路径 storePathIndex=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/index #checkpoint 文件存储路径 storeCheckpoint=/home/rocketMQ/ZHF/rocketMQ-2m2s/store/checkpoint #abort 文件存储路径 abortFile=/home/rocketMQ/ZHF/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.162.235broker-a-s.properties文件配置
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=1 #nameServer地址,分号分割 namesrvAddr=nameserver1:9876;nameserver2: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=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s #commitLog 存储路径 storePathCommitLog=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/consumequeue #消息索引存储路径 storePathIndex=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/index #checkpoint 文件存储路径 storeCheckpoint=/home/rocketMQ/ZHF/rocketMQ-2m2s/store-s/checkpoint #abort 文件存储路径 abortFile=/home/rocketMQ/ZHF/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.162.235broker-b.properties文件配置
参考broker-a.propertiesbroker-b-s.properties文件配置
参考broker-a-s.properties
启动参数设置
RocketMQ启动文件位于/home/rocketMQ/ZHF/rocketMQ-2m2s/bin/目录下,Linux中nameserver启动文件为:mqnamesrv,broker启动文件为:mqbroker,mqnamesrv和mqbroker启动文件分别调用了runserver.sh和runbroker.sh文件,这两个文件分别设置了nameserver和broker的启动内存,目前内存启动参数分别为nameserver启动内存4G,最大内存4G,新生代2G,broker启动内存8G,最大内存8G,新生代4G。
启动Nameserver
分别启动235、236的Nameserver
cd /home/rocketMQ/ZHF/rocketMQ-2m2s/bin/nohup sh mqnamesrv &
启动Broker
235上Master启动:
nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a.properties236上Master启动:
nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b.properties235上对应236Master的Slave启动:
nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-b-s.properti236上对应235Master的Slave启动:
nohup sh mqbroker -c /home/rocketMQ/ZHF/rocketMQ-2m2s/conf/2m-2s-async/broker-a-s.properti
至此,Nameserver、Broker启动完成,可以用jobs命令查看当前运行进程。
参考: