CentOS 部署 RocketMQ 详细指南

1. RocketMQ 5.3.0 简介

什么是 RocketMQ?

Apache RocketMQ 是一个分布式消息中间件,最初由阿里巴巴开发并开源。它基于发布-订阅(Pub-Sub)模式,具有高性能、低延迟和高可靠性等特点。RocketMQ 支持大规模消息流处理,常用于电商交易、金融支付等场景。

RocketMQ 的核心组件

RocketMQ 的核心组件包括:

  • NameServer:负责管理 Broker 节点,提供路由信息,类似于服务发现。
  • Broker:消息存储与转发的核心,处理客户端的消息生产和消费请求。
  • Producer:消息的生产者,负责将消息发送到 Broker。
  • Consumer:消息的消费者,从 Broker 获取并处理消息。
  • RocketMQ Console:Web 管理界面,用于监控和管理 RocketMQ 集群。

版本 5.3.0 的新特性

RocketMQ 5.3.0 带来了一系列改进,包括但不限于:

  • 性能优化:进一步优化了消息传输的效率,提升了集群的扩展能力。
  • 配置增强:引入了更灵活的配置方式,方便在复杂场景下的部署。
  • 安全性更新:加强了对权限控制和加密通信的支持。

2. 部署环境准备

在部署 RocketMQ 之前,确保你的服务器满足以下要求:

系统要求

  • 操作系统:CentOS 7 或更高版本(本文以 CentOS 7 为例)
  • 内核版本:推荐 3.10 及以上
  • 磁盘空间:至少 10GB 可用空间
  • 网络环境:确保服务器之间的网络连通性

硬件需求

  • CPU:至少 2 核,推荐 4 核或以上
  • 内存:至少 4GB,推荐 8GB 或以上
  • 磁盘 IOPS:高并发场景建议使用 SSD 磁盘

软件依赖

  • JDK 版本:RocketMQ 5.3.0 需要 JDK 8 或以上版本
  • Maven:用于编译 RocketMQ 控制台(可选)

3. 安装和配置 JDK

RocketMQ 依赖于 Java 运行环境(JDK),建议使用 OpenJDK 8。

检查 JDK 版本

首先,检查系统中是否已经安装了 JDK:

java -version

在这里插入图片描述

如果输出结果中显示了 openjdk version "1.8.x"jdk1.8.x,说明已经安装了合适的 JDK 版本。

安装 OpenJDK 8

如果没有安装 JDK 或版本不合适,执行以下命令安装 OpenJDK 8:

sudo yum install -y java-1.8.0-openjdk-devel

配置环境变量

确认 JDK 安装路径,并设置 JAVA_HOME 环境变量:

# 查找 JDK 安装路径
sudo update-alternatives --config java

# 配置 JAVA_HOME
echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk' >> ~/.bash_profile
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile

执行 java -version 验证是否正确配置。

4. 下载并安装 RocketMQ 5.3.0

获取 RocketMQ 5.3.0 安装包

使用以下命令下载 RocketMQ 5.3.0 安装包:

wget https://archive.apache.org/dist/rocketmq/5.3.0/rocketmq-all-5.3.0-bin-release.zip

解压与目录结构说明

解压安装包并重命名:

unzip rocketmq-all-5.3.0-bin-release.zip
mv rocketmq-all-5.3.0-bin-release /usr/local/rocketmq

RocketMQ 的目录结构如下:

  • bin/:包含启动脚本和管理工具
  • conf/:包含配置文件
  • lib/:包含运行时依赖的库文件
  • logs/:存放 RocketMQ 的日志文件

5. 配置 RocketMQ

RocketMQ 的配置分为两个部分:NameServer 和 Broker。我们将详细讨论如何调整这些配置以满足特定需求。

NameServer 配置

NameServer 是一个无状态的组件,只需要启动就可以正常工作。默认配置足够满足大多数场景。

启动前,可以通过修改 conf/ 目录下的配置文件自定义端口和日志路径等参数。

Broker 配置

Broker 是 RocketMQ 的核心组件,负责处理消息的存储和转发。它的配置更为复杂,默认配置如下:

# 启动命令中的配置文件路径
vi /usr/local/rocketmq/conf/broker.conf

配置文件中的主要参数包括:

  • brokerName: Broker 的名称,集群中必须唯一。
  • brokerId: Broker 的 ID,0 表示主节点,其他为从节点。
  • namesrvAddr: NameServer 的地址列表。
  • autoCreateTopicEnable: 是否允许自动创建 Topic。

可以根据需求调整这些参数。

修改 JVM 内存参数

由于 RocketMQ 是一个高性能的消息中间件,合理的 JVM 内存配置至关重要。默认情况下,RocketMQ 的 NameServer 和 Broker 使用的 JVM 参数在启动脚本 bin/runserver.shbin/runbroker.sh 中设置。

如果你的服务器内存有限,建议调整这些参数。以 Broker 为例:

vi /usr/local/rocketmq/bin/runserver.sh
vi /usr/local/rocketmq/bin/runbroker.sh

# 将默认的 JVM 配置修改为适合当前机器环境的配置(我的机器内存较小,只有3G,故此处内存设置小点)
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

在这里插入图片描述

在这里插入图片描述

这里的 XmsXmx 控制了 JVM 的初始和最大堆内存大小,而 Xmn 则指定了年轻代的大小。你可以根据服务器的内存和实际使用场景进行调整。

6. 启动 NameServer 和 Broker

启动 NameServer

执行以下命令启动 NameServer:

nohup sh /usr/local/rocketmq/bin/mqnamesrv &

使用以下命令查看 NameServer 启动日志,确认启动成功:

tail -f ~/logs/rocketmqlogs/namesrv.log

日志中出现 The Name Server boot success... 即表示 NameServer 启动成功。

启动 Broker

在 NameServer 启动后,启动 Broker:

nohup sh /usr/local/rocketmq/bin/mqbroker -n localhost:9876 &

使用以下命令查看 Broker 启动日志:

tail -f ~/logs/rocketmqlogs/broker.log

日志中出现 The broker[broker-a, 172.17.0.2:10911] boot success... 时,说明 Broker 启动成功。

7. 安装并配置 RocketMQ 控制台

RocketMQ 控制台提供了图形化界面,方便监控和管理集群。

下载与安装 RocketMQ Console

git clone https://github.com/apache/rocketmq-dashboard.git
cd rocketmq-dashboard
mvn clean package -DskipTests

配置 NameServer 地址

编辑 src/main/resources/application.yml 文件:

rocketmq:
  config:
    namesrvAddr: "localhost:9876"

然后启动控制台:

java -jar target/rocketmq-dashboard-1.0.0-SNAPSHOT.jar

控制台功能简介

访问 http://localhost:8080 可以看到 RocketMQ 控制台的管理界面,提供对 Topic、Consumer、Broker 和消息流的全面监控。

8. 设置 RocketMQ 开机启动

为了让 RocketMQ 在系统启动时自动启动,我们需要将 NameServer 和 Broker 配置为 systemd 服务。

使用 systemd 创建服务

配置 NameServer 服务

创建并编辑 /etc/systemd/system/rocketmq-nameserver.service

[Unit]
Description=RocketMQ NameServer Service
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/rocketmq/bin/mqnamesrv
ExecStop=/usr/local/rocketmq/bin/mqshutdown namesrv
User=root
Restart=on-failure

[Install]
WantedBy=multi-user.target
配置 Broker 服务

创建并编辑 /etc/systemd/system/rocketmq-broker.service

[Unit]
Description=RocketMQ Broker Service
After=network.target rocketmq-nameserver.service

[Service]
Type=forking
ExecStart=/usr/local/rocketmq/bin/mqbroker -n localhost:9876
ExecStop=/usr/local/rocketmq/bin/mqshutdown broker
User=root
Restart=on-failure

[Install]
WantedBy=multi-user.target

启用并验证开机启动

启用并启动服务:

chmod +x /usr/local/rocketmq/bin/*
systemctl enable rocketmq-nameserver
systemctl enable rocketmq-broker
systemctl start rocketmq-nameserver
systemctl start rocketmq-broker

验证服务状态:

systemctl status rocketmq-nameserver
systemctl status rocketmq-broker

9. 常见问题与排查

启动失败问题

常见的启动失败问题包括端口冲突、内存不足和配置错误。通过检查日志可以快速定位问题。

日志分析

RocketMQ 日志包括 NameServer 和 Broker 的启动日志、运行日志等,位于 ~/logs/rocketmqlogs/ 目录下。定期检查日志有助于发现潜在问题。

10. 进阶配置与优化

多 NameServer 和多 Broker 配置

在高可用场景下,建议配置多 NameServer 和多 Broker。通过集群化部署,可以增强系统的容灾能力。

性能优化建议

  1. 调整 JVM 内存和垃圾回收策略。
  2. 使用 SSD 提高磁盘 I/O 性能。
  3. 通过调优网络参数减少延迟。

分布式环境下的部署

在分布式环境中,NameServer 和 Broker 通常部署在不同的节点上,并通过内网进行通信。根据业务需求配置合理的负载均衡策略和消息存储策略。

  • 26
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值