RocketMQ二进制部署
| 系统 | 架构 | IP | 主机 | 内核 |
|---|---|---|---|---|
| Anolis OS(8.6) | x86_64 | 172.16.5.81 | node1 | 4.19.91-26 |
| Anolis OS(8.6) | x86_64 | 172.16.5.82 | node2 | 4.19.91-26 |
| Anolis OS(8.6) | x86_64 | 172.16.5.83 | node3 | 4.19.91-26 |
本次部署选用的是Dledger模式 (opens new window)
# 1. 安装JDK环境
# java -version
openjdk version "1.8.0_332"
OpenJDK Runtime Environment (build 1.8.0_332-b09)
OpenJDK 64-Bit Server VM (build 25.332-b09, mixed mode)
注: 默认有OpenJDK,可以选择不安装Orcale JDK使用默认的
1
2
3
4
5
6
2
3
4
5
6
# 2.卸载OpenJDK
yum remove java-\*openjdk\* -y
1
# 2.安装Orcale JDK
cat > install-jdk.sh << 'EOF'
#!/bin/bash
curl -O https://github.com/xiaobujiang/service/releases/download/JDK/jdk-8u321-linux-x64.tar.gz
JDK_FILE="jdk-8u321-linux-x64.tar.gz"
INSTALL_PATH="/usr/local"
# 检查安装包是否存在
if [ ! -f "$JDK_FILE" ]; then
echo "未找到安装包 $JDK_FILE,请放在同一目录下"
exit 1
fi
# 解压安装
echo "开始安装..."
tar -zxf $JDK_FILE -C $INSTALL_PATH
# 设置环境变量
echo "配置环境变量..."
echo 'export JAVA_HOME=/usr/local/jdk1.8.0_321' >> /etc/profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /etc/profile
source /etc/profile
# 验证
echo "安装完成,版本信息:"
java -version
source /etc/profile
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 3. 执行脚本
sh install-jdk.sh
1
# 5.创建数据目录,注: 根据实际磁盘大小来选择数据、日志存储目录
mkdir -p /data/rocketmq/{store,logs}
1
# 6. 下载RocketMQ至/home目录下 (opens new window)
wget -P /home https://archive.apache.org/dist/rocketmq/5.0.0/rocketmq-all-5.0.0-bin-release.zip
1
# 7. 部署RocketMQ
cd /home
unzip rocketmq-all-5.0.0-bin-release.zip
mv rocketmq-all-5.0.0-bin-release rocketmq
1
2
3
2
3
# 8.修改日志路径
sed -i 's?${user.home}/logs/rocketmqlogs?/data/rocketmq/logs?' /home/rocketmq/conf/logback_broker.xml
sed -i 's?${user.home}/logs/rocketmqlogs?/data/rocketmq/logs?' /home/rocketmq/conf/logback_controller.xml
sed -i 's?${user.home}/logs/rocketmqlogs?/data/rocketmq/logs?' /home/rocketmq/conf/logback_namesrv.xml
sed -i 's?${user.home}/logs/rocketmqlogs?/data/rocketmq/logs?' /home/rocketmq/conf/logback_tools.xml
1
2
3
4
2
3
4
# 9.修改启动脚本内存及环境变量
# 9.1 修改启动脚本runserver.sh,将环境变量改为实际路径
# 因为是测试机我这边改成1g,生产按需
sed -i 's#${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m#${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m#' /home/rocketmq/bin/runserver.sh
-------------------------------------------------------------
# 按实际修改,openjdk免修改
sed -i 's#\$HOME/jdk/java#/usr/local/jdk1.8.0_321#g; s#/usr/java#/usr/local/jdk1.8.0_321#g' /home/rocketmq/bin/runserver.sh
-------------------------------------------------------------
# 验证java环境是否正确
grep 'JAVA_HOME' /home/rocketmq/bin/runserver.sh
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 9.2 修改启动脚本runbroker.sh,将环境变量改为实际路径
# 因为是测试机我这边改成1g,生产按需
sed -i 's#JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"#JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"#' /home/rocketmq/bin/runbroker.sh
-------------------------------------------------------------
# 按实际修改,openjdk免修改
sed -i 's#\$HOME/jdk/java#/usr/local/jdk1.8.0_321#g; s#/usr/java#/usr/local/jdk1.8.0_321#g' /home/rocketmq/bin/runbroker.sh
-------------------------------------------------------------
# 验证java环境是否正确
grep 'JAVA_HOME' /home/rocketmq/bin/runbroker.sh
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 10. 创建broker配置
# 10.1 172.16.5.81(node1)
cat >/home/rocketmq/conf/broker-n0.conf<<EOF
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=172.16.5.81:9876;172.16.5.82:9876;172.16.5.83:9876
storePathRootDir=/home/rocketmq/store/node00
storePathCommitLog=/home/rocketmq/store/node00/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-172.16.5.81:40911;n1-172.16.5.82:40911;n2-172.16.5.83:40911
dLegerSelfId=n0
sendMessageThreadPoolNums=16
EOF
--------------------
nohup sh /home/rocketmq/bin/mqnamesrv > /data/rocketmq/logs/namesrv.log 2>&1 &
nohup sh /home/rocketmq/bin/mqbroker -c /home/rocketmq/conf/broker-n0.conf > /data/rocketmq/logs/broker-n0.log 2>&1 &
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 10.2 172.16.5.82(node2)
cat >/home/rocketmq/conf/broker-n1.conf<<EOF
brokerClusterName = RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=172.16.5.81:9876;172.16.5.82:9876;172.16.5.83:9876
storePathRootDir=/home/rocketmq/store/node01
storePathCommitLog=/home/rocketmq/store/node01/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-172.16.5.81:40911;n1-172.16.5.82:40911;n2-172.16.5.83:40911
dLegerSelfId=n1
sendMessageThreadPoolNums=16
EOF
---------------------
nohup sh /home/rocketmq/bin/mqnamesrv > /data/rocketmq/logs/namesrv.log 2>&1 &
nohup sh /home/rocketmq/bin/mqbroker -c /home/rocketmq/conf/broker-n1.conf > /data/rocketmq/logs/broker-n1.log 2>&1 &
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 10.3 172.16.5.83(node3)
cat >/home/rocketmq/conf/broker-n2.conf<<EOF
brokerClusterName=RaftCluster
brokerName=RaftNode00
listenPort=30911
namesrvAddr=172.16.5.81:9876;172.16.5.82:9876;172.16.5.83:9876
storePathRootDir=/home/rocketmq/store/node02
storePathCommitLog=/home/rocketmq/store/node02/commitlog
enableDLegerCommitLog=true
dLegerGroup=RaftNode00
dLegerPeers=n0-172.16.5.81:40911;n1-172.16.5.82:40911;n2-172.16.5.83:40911
dLegerSelfId=n2
sendMessageThreadPoolNums=16
EOF
---------------------------
nohup sh /home/rocketmq/bin/mqnamesrv > /data/rocketmq/logs/namesrv.log 2>&1 &
nohup sh /home/rocketmq/bin/mqbroker -c /home/rocketmq/conf/broker-n1.conf > /data/rocketmq/logs/broker-n1.log 2>&1 &
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 10.4 节点依次启动服务
nohup sh /home/rocketmq/bin/mqnamesrv > /data/rocketmq/logs/namesrv.log 2>&1 &
nohup sh /home/rocketmq/bin/mqbroker -c /home/rocketmq/conf/broker-n2.conf > /data/rocketmq/logs/broker-n2.log 2>&1 &
1
2
2
# 11.验证
# 11.1 查看集群服务是否启动成功:jps
[root@node1 ~]# jps -l
104327 org.apache.rocketmq.namesrv.NamesrvStartup
106087 sun.tools.jps.Jps
105164 org.apache.rocketmq.broker.BrokerStartup
[root@node2 ~]# jps -l
100976 org.apache.rocketmq.broker.BrokerStartup
100911 org.apache.rocketmq.namesrv.NamesrvStartup
101854 sun.tools.jps.Jps
[root@node3 ~]# jps -l
101075 org.apache.rocketmq.broker.BrokerStartup
101925 sun.tools.jps.Jps
100318 org.apache.rocketmq.namesrv.NamesrvStartup
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 11.2 在集群中任意一个节点的bin目录下执行如下命令:
[root@node1 ~]# /home/rocketmq/bin/mqadmin clusterList -n 127.0.0.1:9876
#Cluster Name #Broker Name #BID #Addr #Version #InTPS(LOAD) #OutTPS(LOAD) #Timer(Progress) #PCWait(ms) #Hour #SPACE #ACTIVATED
RaftCluster RaftNode00 0 172.16.5.81:30911 V5_0_0 0.00(0,0ms) 0.00(0,0ms) 0-0(0.0w, 0.0, 0.0) 0 486685.67 0.0100 true
RaftCluster RaftNode00 2 172.16.5.82:30911 V5_0_0 0.00(0,0ms) 0.00(0,0ms) 2-0(0.0w, 0.0, 0.0) 0 486685.67 0.0100 false
RaftCluster RaftNode00 3 172.16.5.83:30911 V5_0_0 0.00(0,0ms) 0.00(0,0ms) 2-0(0.0w, 0.0, 0.0) 0 486685.67 0.0100 false
注: 结果中addr中有broker信息
1
2
3
4
5
6
7
2
3
4
5
6
7
# 11.3 172.16.5.81(node1)kill Broker
[root@node1 ~]# kill -9 105164
1
# 11.4 查看集群状态,BID的0表示主,可以看看到172.16.5.82(node2)上的Broker为master,集群自动切换Leader成功
[root@node2 ~]# /home/rocketmq/bin/mqadmin clusterList -n 127.0.0.1:9876
1

# 11.5启动172.16.5.81(node1)后,查看集群可以看到启动后的Broker为从
[root@node2 ~]# /home/rocketmq/bin/mqadmin clusterList -n 127.0.0.1:9876
1

# 11.6 服务停止命令
/home/rocketmq/bin/mqshutdown namesrv
/home/rocketmq/bin/mqshutdown broker
1
2
2
# 12.Dashboard部署
# 12.1 docker-compose部署
# 创建目录
[root@node1 rockertmq]# mkdir -p /root/rockertmq
# 进入目录
[root@node1 rockertmq]# cd /root/rockertmq
# 编译rocketmq-dashboard的docker-compose文件
[root@node1 rockertmq]# cat >docker-compose.yaml<<EOF
version: '3'
services:
rocketmq-dashboard:
container_name: rocketmq-dashboard
image: apacherocketmq/rocketmq-dashboard:latest
environment:
- JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.5.81:9876;172.16.5.82:9876;172.16.5.83:9876
- TZ=Asia/Shanghai
ports:
- "8080:8080"
restart: always
EOF
# 启动rocketmq-dashboard
[root@node1 rockertmq]# docker-compose up -d
# 停止服务
[root@node1 rockertmq]# docker-compose down
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 12.2 jar部署 (opens new window)
java -jar rocketmq-dashboard.jar \
--server.port=8082 \
--rocketmq.config.namesrvAddrs[0]=172.16.5.81:9876 \
--rocketmq.config.namesrvAddrs[1]=172.16.5.82:9876 \
--rocketmq.config.namesrvAddrs[2]=172.16.5.83:9876
1
2
3
4
5
2
3
4
5
上次更新: 2026/05/31, 03:30:34