欢迎来到窥视未来的博客

https://github.com/lwx57280 https://gitee.com/li_VillageHead

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/

软连接管理JDK

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]# 

  

下载 | RocketMQ

image-20250702172042031

 

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指定jvm大小,将JAVA_OPT参数改为适当的数值

# 编辑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

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

http://192.168.110.17:8080/

image-20250714110852881

 

常见问题解决

 

报错以及解决方法

  1. 启动时报内存不足

    • 修改 runserver.shrunbroker.sh 中的内存参数

    • 确保系统可用内存 > 1GB

  2. 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配置文件中

2.将文件中的数值修改为图中的512m和256m

 

image-20250702174430865

 

    • 检查 broker.conf 中的 IP 是否正确

    • 确保端口未被占用

  1. 控制台无法连接

    • 检查防火墙设置

    • 验证 NameServer 地址是否正确

    • 确认 RocketMQ 服务已正常运行

 

总结

本文详细介绍了在 CentOS 7 系统上部署 RocketMQ 的完整流程,包含:

  1. JDK 17 环境配置

  2. RocketMQ 安装与配置优化

  3. 服务管理脚本编写

  4. 管理控制台部署

  5. 防火墙配置

  6. 常见问题解决方案

通过本指南,您可以快速搭建 RocketMQ 服务,为分布式系统提供可靠的消息服务支持。

posted on 2025-08-12 13:21  窥视未来  阅读(106)  评论(0)    收藏  举报

导航