CentOS 部署 RocketMQ 详细指南

news2024/9/27 21:21:38

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 通常部署在不同的节点上,并通过内网进行通信。根据业务需求配置合理的负载均衡策略和消息存储策略。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2104356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Win11怎么把C盘分成几个盘?

很多Windows11用户会发现,系统默认只给电脑分配了一个C盘,而C盘不仅是系统盘,还是软件的默认安装位置,并且个人数据也是保存在C盘。这种情况下,电脑使用时间久了会遇到一个常见问题:C盘空间不足或是需要将C…

elasticsearch文档Delete By Query API(一)

这里的查询需要使用和Search API(后文会讲)相同的方式来将查询条件作为query的值传递,当然也可以使用q关键字,例如如下请求: curl -X POST “localhost:9200/twitter/_delete_by_query?pretty&quser:kimchy” -H…

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp

828华为云征文|华为云Flexus X实例docker部署srs6并调优,协议使用webrtc与rtmp 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务…

六西格玛项目:从定义问题到控制成果,全程无忧——张驰咨询

什么是六西格玛项目 六西格玛项目是一种旨在通过改善企业质量流程管理,以“零缺陷”的完美商业追求,带动质量大幅提高、成本大幅度降低,最终实现企业财务成效的提升与企业竞争力的突破的管理策略。它由摩托罗拉公司的工程师比尔史密斯于1986…

文心一眼 4.0Turbo 免费领取5天体验卡

注:这个是官方的活动,目的在于用户推广,任何账号点击连接都可以领取,被分享者领取5天,分享者获得3天,上限320天。 官方活动跳转地址如下:​​​​​​点击这里 跳转后登录,完成一次…

浅析前端数据埋点监控:用户行为与性能分析的桥梁

在数字化时代,数据是企业决策的重要依据。前端作为用户与产品交互的第一线,其数据埋点监控不仅能够收集用户行为数据,帮助产品团队洞察用户需求,优化用户体验,还能分析性能数据,确保产品运行的流畅性。 简单…

LLM常见问题(思维链变体部分)

1. 为什么需要思维树 Tree of Thoughts(TOT)? 对于需要探索或预判战略的复杂任务来说,传统或简单的提示技巧是不够的。ToT 维护着一棵思维树,思维由连贯的语言序列表示,这个序列就是解决问题的中间步骤。使…

【计算机组成原理】你敢相信5.8+0.9=6.1这个等式居然成立!!!详细解读进制数之间的相互转换

进位计数制及其相互转换 导读一、进位计数法1.1 基数1.2 位权 二、不同进制数之间的相互转化2.1 转化方法2.2 任意进制转化成十进制2.3 十进制转化成任意进制2.4 二进制、八进制以及十六进制之间的相互转换2.4.1 二进制与八进制以及十六进制之间的关系2.4.2 二进制数与八进制数…

【C++】C++中的关键字:const、mutable、auto、new....

七、C中的关键字:const、mutable、auto、new、 本部分打算是尽量多的罗列出C中的关键字和一些花式操作。先总结一下我们之前讲过的:private、public、protect: 参考【C】类、静态、枚举、重载、多态、继承、重写、虚函数_静态与多态:重写、重载、模板-C…

如何使用PTK一键安装opengaussdb 5.0

1、关于PTK工具 MogDB数据库是云和恩墨基于openGauss开源数据库打造,安稳易用的企业级关系型数据库。 PTK是云和恩墨出品的一款工具,帮助用户更便捷地部署管理MogDB数据库。 1.1 使用场景 开发人员快速启动多个本地 MogDB 环境用户通过 PTK 快速安装…

(2)Django生产环境数据库的切换以及环境配置python-dotenv方案

简介 本文分享下个人目前在用的,DRF项目开发环境、生产环境数据库切换的方案。没做过什么大项目,可能实现的不是那么优雅。 主要思路就是通过python-dotenv库,编辑.env环境配置文件区分开发环境和生产环境,再使用数据库路由&…

IP 协议详解

一、认识 IP 地址与网络层的职责 网络层是OSI七层模型中的第三层,也是TCP/IP四层模型中的网络接入层。在这一层,数据包被封装并加上IP层的头部信息,以便在网络之间传输。网络层的主要功能包括路由选择、分段与重组、拥塞控制以及IP地址管理等…

深度学习--机器学习相关(2)

1.适 应 性 矩 估 计 适应性矩估计(Adaptive Moment Estimation,Adam)是一种可以代替传统的梯度下降 (SGD 和 MBGD) 的优化算法。Adam算法结合了适应性梯度算法和均方根传播的优点。 Momentum 在学习机器学习时是很可能遇到的,是动量的意思。动量不是速度和学…

智能提醒助理系列-AIGC模型如何对接公众号2-扣子

本系列文章记录“智能提醒助理”wx公众号 建设历程。 一、需求出发点 在公众号中对接上大模型。 二、实现路径分析 上次使用直接调用火山引擎大模型的方案:智能提醒助理系列-AIGC模型如何对接公众号 近期 跟朋友跟朋友交流的过程中发现,通过扣子制作…

一招制胜!掌握 Python 中pip的8个必备命令

在Python编程中,pip 是一个非常重要的工具。它是Python包管理器,帮助你安装、更新、删除和管理Python软件包。如果你想要轻松地使用第三方库(比如requests、numpy、pandas),就离不开pip。 什么是 pip? pip…

Midjourney提示词——黑神话悟空角色生成提示词!

应广大群友和粉丝要求,我们也来盘一盘最近大火的黑神话悟空的提示词。 这里给大家准备了一份关于AI绘画详细的资料包,扫描下方二维码皆可获取! 1号齐天大圣 The full-body portrait of the Monkey King in-game, clad in intricate war rob…

Java运行环境的下载、安装、配置与运行

一、实验目的及要求 目的:掌握如何下载java JDK软件包,如何设置Java程序的运行环境,如何编写与运行Java程序,了解Java概貌。 要求: 1、安装Java JDK软件包; 2、练习编写简单的Java Application程序并掌握…

2.5 SQL注入之文件读写

SQL注入之文件读写 文件读写注入的原理 就是利用文件的读写权限进行注入,它可以写入一句话木马,也可以读取系统文件的敏感信息。 文件读写注入的条件 高版本的MYSQL添加了一个新的特性secure_file_priv,该选项限制了mysql导出文件的权限 …

步进、闭环、交流伺服三类电机驱动方案对比

1、步进、闭环、交流伺服产品对比 2.4步进电机特点 低速力矩大,转矩会随着转速的提高而降低,一般在800rpm以上力矩下降加快,精度是步距角的3%~5%,整圈没有累积误差,两相混合步进电机精度为0.18;步进电机采…

黑神话悟空小黄龙怎么打 妖王小黄龙攻略

​黑神话悟空小黄龙是游戏中难度较高的BOSS之一,击败他可以解锁[龙]变身、解锁橙武[飞龙宝杖],如果想要获得这两个法宝却又不知道如何击败小黄龙的话,一起来看看下面这篇攻略吧。 一、BOSS位置 【盘丝岭】-【盘丝洞】-【堕龙壁】。 二、Boss…