1、安装jdk
yum install java-11-openjdk-devel -y
2、安装包下载地址并解压
https://dist.apache.org/repos/dist/release/rocketmq/5.3.3/rocketmq-all-5.3.3-bin-release.zip
unzip rocketmq-all-5.3.3-bin-release.zip
mkdir -p /usr/local/rocketmq/
mv rocketmq-all-5.3.3-bin-release /usr/local/rocketmq/rocketmq && mkdir -p /usr/local/rocketmq/rocketmq/logs
3、配置namesrv监听端口
echo 'listenPort=9876' > /usr/local/rocketmq/rocketmq/conf/namesrv.conf
4、启动NameServer集群【其他2个节点也类似以下操作】
#systemd管理NameServer
cat /usr/lib/systemd/system/nameserver.service
[Unit]
Description=nameserver
After=network.target
[Service]
Type=simple
User=root
Group=root
# 设置工作目录
WorkingDirectory=/usr/local/rocketmq/rocketmq
# 启动命令
ExecStart=/usr/local/rocketmq/rocketmq/bin/mqnamesrv -c /usr/local/rocketmq/rocketmq/conf/namesrv.conf
# 标准输出和错误输出到文件
StandardOutput=file:/usr/local/rocketmq/rocketmq/logs/namesrv.log
StandardError=file:/usr/local/rocketmq/rocketmq/logs/namesrv_error.log
# 环境变量
Environment=ROCKETMQ_HOME=/usr/local/rocketmq/rocketmq
# 重启配置
Restart=always
RestartSec=10
# 资源限制(可选)
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
5、启动服务
systemctl daemon-reload && systemctl enable --now nameserver
6、Broker配置master1(其他master和slave也是以下操作)
cat /usr/local/rocketmq/rocketmq/conf/2m-2s-sync/broker-a.properties
#所属集群名字
brokerClusterName=rocketmq-prod
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=0
#nameServer地址,分号分割
namesrvAddr=10.10.x.2:9876;10.10.x.3:9876;10.10.x.4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,生产环境建议关闭
autoCreateTopicEnable=flase
#是否允许 Broker 自动创建订阅组,生产环境建议关闭
autoCreateSubscriptionGroup=flase
#Broker 对外服务的监听端口
listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/master
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/master/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/master/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/master/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/master/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/master/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
7、slave1 配置
cat /usr/local/rocketmq/rocketmq/conf/2m-2s-sync/broker-a-s.properties
#所属集群名字
brokerClusterName=rocketmq-prod
#broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#nameServer地址,分号分割
namesrvAddr=10.10.x.2:9876;10.10.x.3:9876;10.10.x.4:9876
#在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
#是否允许 Broker 自动创建Topic,生产环境建议关闭
autoCreateTopicEnable=flase
#是否允许 Broker 自动创建订阅组,生产环境建议关闭
autoCreateSubscriptionGroup=flase
#Broker 对外服务的监听端口
listenPort=11011
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=120
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
#ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
#destroyMapedFileIntervalForcibly=120000
#redeleteHangedFileInterval=120000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
#存储路径
storePathRootDir=/usr/local/rocketmq/slave
#commitLog 存储路径
storePathCommitLog=/usr/local/rocketmq/slave/commitlog
#消费队列存储路径存储路径
storePathConsumeQueue=/usr/local/rocketmq/slave/consumequeue
#消息索引存储路径
storePathIndex=/usr/local/rocketmq/slave/index
#checkpoint 文件存储路径
storeCheckpoint=/usr/local/rocketmq/slave/checkpoint
#abort 文件存储路径
abortFile=/usr/local/rocketmq/slave/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
8、配置systemd管理broker服务
cat /usr/lib/systemd/system/rocketmq-broker-a.service
[Unit]
Description=rocketmq-broker-a
After=network.target
[Service]
Type=simple
User=root
Group=root
# 设置工作目录
WorkingDirectory=/usr/local/rocketmq/rocketmq
# 启动命令
ExecStart=/usr/local/rocketmq/rocketmq/bin/mqbroker -c /usr/local/rocketmq/rocketmq/conf/2m-2s-sync/broker-a.properties
# 标准输出和错误输出到文件
StandardOutput=file:/usr/local/rocketmq/rocketmq/logs/broker-a.log
StandardError=file:/usr/local/rocketmq/rocketmq/logs/broker-a_error.log
# 重启配置
Restart=always
RestartSec=10
# 资源限制(可选)
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
---------------------------------------------------------------------
cat /usr/lib/systemd/system/rocketmq-broker-a-s.service
[Unit]
Description=rocketmq-broker-a-s
After=network.target
[Service]
Type=simple
User=root
Group=root
# 设置工作目录
WorkingDirectory=/usr/local/rocketmq/rocketmq
# 启动命令
ExecStart=/usr/local/rocketmq/rocketmq/bin/mqbroker -c /usr/local/rocketmq/rocketmq/conf/2m-2s-sync/broker-a-s.properties
# 标准输出和错误输出到文件
StandardOutput=file:/usr/local/rocketmq/rocketmq/logs/broker-a-s.log
StandardError=file:/usr/local/rocketmq/rocketmq/logs/broker-a-s_error.log
# 重启配置
Restart=always
RestartSec=10
# 资源限制(可选)
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
9、启动服务
systemctl daemon-reload
systemctl enable --now rocketmq-broker-a.service
systemctl enable --now rocketmq-broker-a-s.service
10、验证集群状态
/usr/local/rocketmq/rocketmq/bin/mqadmin clusterList -n 10.10.x.2:9876
#可视化平台RocketMq-Dashboard安装
源码包下载:
https://github.com/apache/rocketmq-dashboard
wget https://github.com/apache/rocketmq-dashboard/archive/refs/tags/rocketmq-dashboard-2.1.0.tar.gz
#解压
mkdir -p /usr/local/rocketmq/
tar -zxvf rocketmq-dashboard-2.1.0.tar.gz && mv rocketmq-dashboard-2.1.0 /usr/local/rocketmq/rocketmq-dashboard && cd /usr/local/rocketmq/rocketmq-dashboard
#配置mvn构建jar包
mvn clean package -Dmaven.test.skip=true
#启动服务
nohup java -jar rocketmq-dashboard-2.1.0.jar \
--server.port=8080 \
--rocketmq.config.namesrvAddr=10.10.x.2:9876 > dashboard.log 2>&1 &
#systemd 管理rocketmq-dashboard
cat /etc/systemd/system/rocketmq-dashboard.service
Unit]
Description=rocketmq dashboard
After=network.target
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/usr/local/rocketmq/rocketmq-dashboard
ExecStart=/usr/bin/java -jar rocketmq-dashboard-2.1.0.jar --server.port=8080 --rocketmq.config.namesrvAddr=10.10.x.2:9876
StandardOutput=file:/usr/local/rocketmq/rocketmq-dashboard/dashboard.log
StandardError=file:/usr/local/rocketmq/rocketmq-dashboard/dashboard.log
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
#启动服务
systemctl enable --now rocketmq-dashboard
#监控指标建议
#常用命令
#查看特定主题所在的集群
/usr/local/rocketmq/rocketmq/bin/mqadmin topicclusterlist -n 10.10.x.2:9876 -t myj
#查看集群状态
/usr/local/rocketmq/rocketmq/bin/mqadmin clusterlist -n 10.10.x.2:9876
#查看topic列表
/usr/local/rocketmq/rocketmq/bin/mqadmin topiclist -n 10.10.x.2:9876
#查看所有消费组消费进度
/usr/local/rocketmq/rocketmq/bin/mqadmin consumerprogress -n 10.10.x.2:9876
#查看 myj topic状态
/usr/local/rocketmq/rocketmq/bin/mqadmin topicstatus -n 10.10.x.2:9876 -t myj
#查看topic被哪些消费组订阅
/usr/local/rocketmq/rocketmq/bin/mqadmin statsAll -n 10.10.x.2:9876
#删除topic
/usr/local/rocketmq/rocketmq/bin/mqadmin deletetopic -n 10.10.x.2:9876 -c rocketmq-prod -t myj
#创建topic,设置可读队列数9、可写队列数9
/usr/local/rocketmq/rocketmq/bin/mqadmin updatetopic -n 10.10.x.2:9876 -c rocketmq-prod -t myj -r 9 -w 9
#创建消费组
/usr/local/rocketmq/rocketmq/bin/mqadmin updatesubgroup -n 10.10.x.2:9876 -c rocketmq-prod -g myj
#删除消费组
/usr/local/rocketmq/rocketmq/bin/mqadmin deletesubgroup -n 10.10.x.2:9876 -c rocketmq-prod -g myj
#生产消息
/usr/local/rocketmq/rocketmq/bin/mqadmin sendMessage -n 10.10.x.2:9876 -c rocketmq-prod -t myj -p "test"