CentOS 7 环境下 RocketMQ 部署与安装指南
RocketMQ部署安装
环境准备
- 
Centos 7.x 
- 
内存: 建议4GB+ (RocketMQ至少需要2GB) 
- 
磁盘空间: 20GB+ 
jdk环境搭建
将jdk文件解压至指定目录下
tar -zxvf jdk-17.0.5_linux-x64_bin.tar.gz -C /home/java/
ln -s /home/java/jdk-17.0.5/ jdk-17 [root@w1-rocketmq java]# ll total 0 lrwxrwxrwx. 1 root root 22 Jul 14 06:12 jdk-17 -> /home/java/jdk-17.0.5/ drwxr-xr-x. 9 root root 136 Jul 14 06:11 jdk-17.0.5 [root@w1-rocketmq java]#
在 /etc/profile 中 添加java环境变量设置
通过vim /etc/profile 命令配置jdk环境变量
# Java Environment export JAVA_HOME=/home/java/jdk-17 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH
执行source /etc/profile 使修改的文件生效
source /etc/profile
验证安装
[root@w1-rocketmq java]# java -version java version "17.0.5" 2022-10-18 LTS Java(TM) SE Runtime Environment (build 17.0.5+9-LTS-191) Java HotSpot(TM) 64-Bit Server VM (build 17.0.5+9-LTS-191, mixed mode, sharing)
确定java安装位置
[root@w1-rocketmq java]# which java /home/java/jdk-17/bin/java [root@w1-rocketmq java]#

2.将下载好的文件存放到Linux的/usr/local/目录下
3.进行解压缩unzip rocketmq-all-5.1.4-bin-release.zip
4.使用mv rocketmq-all-5.1.4-bin-release rocketmq 进行改名
cd /usr/local/rocketmq # 解压 unzip rocketmq-all-5.1.4-bin-release.zip
创建软连
# 创建软连 ln -s /usr/local/rocketmq/rocketmq-all-5.1.4-bin-release /usr/local/rocketmq
# 打开配置文件 vim /etc/profile # 文件末尾追加改信息 export ROCKETMQ_HOME=/usr/local/rocketmq export PATH=$PATH:$ROCKETMQ_HOME/bin
生效配置
# 生效环境变量 source /etc/profile
配置优化
修改启动脚本(jvm内存)
# 编辑runbroker.sh vim /usr/local/rocketmq/bin/runbroker.sh # runbroker.sh 修改 # 这是修改后的样子 JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m" # 配置信息如下:需要根据内存大小进行适当的对JVM参数进行调整 # 开发环境配置 JVM Configuration JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"runserver.sh
# 这是修改后的样子 JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m" ## runserver.sh 修改内容 JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
broker.conf配置修改
# 所属集群名字 brokerClusterName = DefaultCluster brokerName = broker-a # 0 表示 Master,> 0 表示 Slave brokerId = 0 # 删除文件时间点,默认凌晨4点 deleteWhen = 04 # 文件保留时间,默认48小时 fileReservedTime = 48 # Broker 的角色 # - ASYNC_MASTER 异步复制Master # - SYNC_MASTER 同步双写Master # - SLAVE brokerRole = ASYNC_MASTER # 刷盘策略-异步 # - ASYNC_FLUSH 异步刷盘 # - SYNC_FLUSH 同步刷盘 flushDiskType = ASYNC_FLUSH # 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!! autoCreateTopicEnable=true brokerIP1=192.168.110.17 # Broker 对外服务的监听端口 listenPort=10911 # 检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 # 限制的消息大小 maxMessageSize=65536
启动脚本
#!/bin/sh
ROCKETMQ_HOME=/usr/local/rocketmq
echo 'start namesrv...'
nohup ${ROCKETMQ_HOME}/bin/mqnamesrv > ${ROCKETMQ_HOME}/logs/namesrv.log 2>&1 &
echo 'start namesrv finish...'
echo 'start broker...'
nohup ${ROCKETMQ_HOME}/bin/mqbroker -n ip:9876 -c ${ROCKETMQ_HOME}/conf/broker.conf  > ${ROCKETMQ_HOME}/logs/broker.log 2>&1 &
echo 'start broker...'
jps
服务管理脚本
完整的shell 脚本(启动、停止、重启、状态)
创建管理脚本 rocketmq-service.sh
vim /usr/local/rocketmq/rocketmq-service.sh
#!/bin/bash
export JAVA_HOME=/home/java/jdk-17
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$PATH
ROCKETMQ_HOME=/usr/local/rocketmq
NAMESRV_LOG=${ROCKETMQ_HOME}/logs/namesrv.log
BROKER_LOG=${ROCKETMQ_HOME}/logs/broker.log
NAMESRV_PID=
BROKER_PID=
start() {
  echo "Starting RocketMQ NameServer..."
  nohup ${ROCKETMQ_HOME}/bin/mqnamesrv > $NAMESRV_LOG 2>&1 &
  sleep 2
  echo "Starting RocketMQ Broker..."
  nohup ${ROCKETMQ_HOME}/bin/mqbroker -n 127.0.0.1:9876 -c ${ROCKETMQ_HOME}/conf/broker.conf > $BROKER_LOG 2>&1 &
  sleep 2
  echo "RocketMQ started. Running processes:"
  jps
}
stop() {
  echo "Stopping RocketMQ..."
  echo "Stopping NameServer..."
  ${ROCKETMQ_HOME}/bin/mqshutdown namesrv
  sleep 2
  echo "Stopping Broker..."
  ${ROCKETMQ_HOME}/bin/mqshutdown broker
  sleep 2
  echo "RocketMQ stopped."
}
status() {
  echo "RocketMQ processes:"
  jps | grep -E "NamesrvStartup|BrokerStartup" || echo "No RocketMQ process running."
}
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    stop
    sleep 2
    start
    ;;
  status)
    status
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
    ;;
esac
chmod +x rocketmq-service.sh
./rocketmq-service.sh start # 启动 NameServer 和 Broker
./rocketmq-service.sh stop # 停止服务
./rocketmq-service.sh restart # 重启
./rocketmq-service.sh status # 查看状态
启动与验证
启动服务
Starting RocketMQ NameServer... Starting RocketMQ Broker... RocketMQ started. Running processes: 18323 NamesrvStartup 18552 BrokerStartup
[root@localhost rocketmq]# ./rocketmq-service.sh status RocketMQ processes: 18323 NamesrvStartup 18552 BrokerStartup [root@localhost rocketmq]#
部署管理控制台
使用docker部署
docker run --name rocketmq-dashboard -e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.110.17:9876" -d -p 8080:8080 -t apacherocketmq/rocketmq-dashboard:latest
提示
namesrv.addr:port 替换为 rocketmq 中配置的 nameserver 地址:端口号
开放端口号:
- 
rocketmq-dashboard: 8080 
- 
NameServer默认端口:9876 
- 
Broker内部通信端口:10911 
- 
客户端通信端口:10909 
- 
云服务器:设置安全组访问规则 
- 
本地虚拟机:关闭防火墙,或 -add-port
docker-compose脚本
version: '3.7'
services:
  rocketmq-dashboard:
    image: apacherocketmq/rocketmq-dashboard:latest
    container_name: rocketmq-dashboard
    ports:
      - "8080:8080"
    environment:
      JAVA_OPTS: "-Drocketmq.namesrv.addr=192.168.110.17:9876"
      TZ: Asia/Shanghai
    volumes:
      - /etc/localtime:/etc/localtime:ro
    restart: always
启动服务
[root@vbox rocketmq]# docker compose -f docker-compose.yaml up -d WARN[0000] /usr/local/rocketmq/docker-compose.yaml: `version` is obsolete [+] Running 1/1 ✔ Container rocketmq-dashboard Started # 停止服务 [root@vbox rocketmq]# docker compose -f docker-compose.yaml stop WARN[0000] /usr/local/rocketmq/docker-compose.yaml: `version` is obsolete [+] Stopping 1/1 ✔ Container rocketmq-dashboard Stopped 10.2s [root@vbox rocketmq]#
访问控制台
浏览器访问 http://ip:port

常见问题解决
报错以及解决方法
- 
启动时报内存不足: - 
修改 runserver.sh和runbroker.sh中的内存参数
- 
 
- 
- 
Broker 启动失败: 
tail -100 /usr/local/rocketmq/logs/broker.log
- runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
$JAVA" ${JAVA_OPT} --add-exports=java.base/sun.nio.ch=ALL-UNNAMED $@
- runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
# jdk-17 增加如下内容
$JAVA" ${JAVA_OPT} --add-exports=java.base/sun.nio.ch=ALL-UNNAMED $@
内存不足需要修改配置文件中的内存使用
1.进入/usr/local/rocketmq/bin的runbroker.sh配置文件中

- 
- 
- 
确保端口未被占用 
 
- 
- 
控制台无法连接: - 
检查防火墙设置 
- 
验证 NameServer 地址是否正确 
- 
 
- 
总结
本文详细介绍了在 CentOS 7 系统上部署 RocketMQ 的完整流程,包含:
- 
JDK 17 环境配置 
- 
RocketMQ 安装与配置优化 
- 
服务管理脚本编写 
- 
管理控制台部署 
- 
防火墙配置 
- 
常见问题解决方案 
通过本指南,您可以快速搭建 RocketMQ 服务,为分布式系统提供可靠的消息服务支持。
 
                     
                    
                 
                    
                 
                
            
         
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号