首页
运维
编程

小布江

首页
运维
编程
  • Kubernetes

  • 日常

    • K8s-Minio集群迁移
    • Docker构建多架构镜像
    • Minio备份及恢复
    • cert-manager自动签发Lets Encrypt
    • Ansible批量发送密钥
    • Containerd配置私有Harbor镜像仓库
    • kvm虚拟机修改密码
    • Nexus
    • Nginx之tcp转发
    • Arthas
    • 开启telnet登录
    • CPU亲和
    • Harbor复制镜像
    • KVM虚拟机根目录扩容
    • RabbitMQ RPM部署
    • RabbitMQ Docker-Compose部署
    • RocketMQ二进制部署
      • 1. 安装JDK环境
      • 2.卸载OpenJDK
      • 2.安装Orcale JDK
      • 3. 执行脚本
      • 5.创建数据目录,注: 根据实际磁盘大小来选择数据、日志存储目录
      • 6. 下载RocketMQ至/home目录下
      • 7. 部署RocketMQ
      • 8.修改日志路径
      • 9.修改启动脚本内存及环境变量
        • 9.1 修改启动脚本runserver.sh,将环境变量改为实际路径
        • 9.2 修改启动脚本runbroker.sh,将环境变量改为实际路径
      • 10. 创建broker配置
        • 10.1 172.16.5.81(node1)
        • 10.2 172.16.5.82(node2)
        • 10.3 172.16.5.83(node3)
        • 10.4 节点依次启动服务
      • 11.验证
        • 11.1 查看集群服务是否启动成功:jps
        • 11.2 在集群中任意一个节点的bin目录下执行如下命令:
        • 11.3 172.16.5.81(node1)kill Broker
        • 11.4 查看集群状态,BID的0表示主,可以看看到172.16.5.82(node2)上的Broker为master,集群自动切换Leader成功
        • 11.5启动172.16.5.81(node1)后,查看集群可以看到启动后的Broker为从
        • 11.6 服务停止命令
      • 12.Dashboard部署
        • 12.1 docker-compose部署
        • 12.2 jar部署
    • RocketMQ Docker-Compose部署
    • Nginx版本升级
    • kvm虚拟机磁盘扩容
    • kafka双写
    • linux挂盘分区
    • Oracle-11g单机部署
    • GlusterFS部署
    • 主机磁盘管理
    • SSL自签证书管理
    • PicGo自建图床
    • Docker Mirrors
  • Prometheus

  • Cl

  • 运维
  • 日常
小布江
2024-07-14
目录

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)

常见问题 (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.卸载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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

# 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

image-20250709135954441

# 11.5启动172.16.5.81(node1)后,查看集群可以看到启动后的Broker为从

[root@node2 ~]# /home/rocketmq/bin/mqadmin  clusterList -n 127.0.0.1:9876
1

image-20250709135629395

# 11.6 服务停止命令

/home/rocketmq/bin/mqshutdown namesrv
/home/rocketmq/bin/mqshutdown broker 
1
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

# 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
#RocketMQ
上次更新: 2026/05/31, 03:30:34
RabbitMQ Docker-Compose部署
RocketMQ Docker-Compose部署

← RabbitMQ Docker-Compose部署 RocketMQ Docker-Compose部署→

最近更新
01
Coredns自定义参数
05-18
02
Docker Mirrors
04-24
03
SSL自签证书管理
02-10
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式