RocketMQ安装与部署指南

RocketMQ安装与部署指南

系统要求

在安装RocketMQ之前,需要确保系统满足以下要求:

  1. 操作系统:64位Linux/Unix/macOS/Windows
  2. Java版本:JDK 1.8或更高版本
  3. 内存:至少4GB RAM(开发环境)
  4. 磁盘空间:至少50GB可用空间
  5. 网络:确保相关端口未被防火墙阻止

安装方式

方式一:二进制包安装(推荐)

  1. 下载RocketMQ

    bash 复制代码
    # 下载最新版本的RocketMQ二进制包
    wget https://archive.apache.org/dist/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip
  2. 解压安装包

    bash 复制代码
    unzip rocketmq-all-5.1.4-bin-release.zip
    cd rocketmq-all-5.1.4-bin-release
  3. 目录结构说明

    复制代码
    rocketmq-all-5.1.4-bin-release/
    ├── bin/              # 可执行脚本目录
    ├── conf/             # 配置文件目录
    ├── lib/              # 依赖库目录
    └── logs/             # 日志文件目录

方式二:源码编译安装

  1. 克隆源码

    bash 复制代码
    git clone https://github.com/apache/rocketmq.git
    cd rocketmq
  2. 编译构建

    bash 复制代码
    mvn -Prelease-all -DskipTests clean install -U
    cd distribution/target/rocketmq-5.1.4/rocketmq-5.1.4

单机部署

1. 启动NameServer

bash 复制代码
# 启动NameServer
nohup sh bin/mqnamesrv &

# 查看启动日志
tail -f ~/logs/rocketmqlogs/namesrv.log

2. 启动Broker

bash 复制代码
# 启动Broker(带代理功能)
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &

# 查看启动日志
tail -f ~/logs/rocketmqlogs/proxy.log

3. 验证部署

bash 复制代码
# 查看Java进程
jps

# 正常情况下应该看到以下进程:
# XXXX BrokerStartup
# XXXX NamesrvStartup

集群部署模式

1. 单Master模式

  • 适用场景:开发或测试环境
  • 优点:配置简单,成本低
  • 缺点:存在单点故障风险

2. 多Master模式

  • 适用场景:生产环境
  • 优点:性能高,配置简单
  • 缺点:单台机器宕机期间,该机器上未被消费的消息在机器恢复前不可订阅

3. 多Master多Slave模式(异步复制)

  • 适用场景:对消息实时性要求不高的场景
  • 优点:性能高,且磁盘损坏不会丢失消息
  • 缺点:主备有短暂消息延迟,极端情况下可能丢失少量消息

4. 多Master多Slave模式(同步双写)

  • 适用场景:对消息实时性和可靠性都有很高要求的场景
  • 优点:数据与服务都无单点故障,性能高,消息丢失概率低
  • 缺点:同步双写会略微影响性能

配置文件详解

broker.conf配置示例

properties 复制代码
# 所属集群名字
brokerClusterName=DefaultCluster

# broker名字,注意此处不同的配置文件填写的不一样
brokerName=broker-a

# 0 表示Master,>0 表示Slave
brokerId=0

# nameServer地址,分号分割
namesrvAddr=localhost:9876

# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4

# 是否允许Broker自动创建Topic,建议线下开启,线上关闭
autoCreateTopicEnable=true

# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true

# Broker对外服务的监听端口
listenPort=10911

# 删除被废弃文件的时间戳,默认凌晨4点
deleteWhen=04

# 文件保留时间,默认48小时
fileReservedTime=120

# commitLog每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824

# ConsumeQueue每个文件默认存30W条,根据业务情况调整
mapedFileSizeConsumeQueue=300000

# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88

# 存储路径
storePathRootDir=/usr/local/rocketmq/store

# commitLog存储路径
storePathCommitLog=/usr/local/rocketmq/store/commitlog

# 是否启用异步刷新
flushDiskType=ASYNC_FLUSH

环境变量配置

/etc/profile中添加以下环境变量:

bash 复制代码
export ROCKETMQ_HOME=/path/to/rocketmq-all-5.1.4-bin-release
export PATH=$PATH:$ROCKETMQ_HOME/bin
export NAMESRV_ADDR=localhost:9876

使配置生效:

bash 复制代码
source /etc/profile

内存调整

根据实际环境调整脚本中的JVM参数:

runserver.sh

bash 复制代码
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

runbroker.sh

bash 复制代码
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"

常见问题及解决方案

1. 内存不足问题

错误信息:

复制代码
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000005c0000000, 8589934592, 0) failed; error='Cannot allocate memory'

解决方案:修改runbroker.sh中的JVM参数,减小内存分配。

2. NameServer地址未设置

错误信息:

复制代码
connect to [remoting://127.0.0.1:9876] failed

解决方案:确保设置了NAMESRV_ADDR环境变量或在代码中显式指定。

3. 端口占用问题

错误信息:

复制代码
Address already in use

解决方案:修改conf/broker.conf中的listenPort配置项。

关闭服务

bash 复制代码
# 关闭Broker
sh bin/mqshutdown broker

# 关闭NameServer
sh bin/mqshutdown namesrv

小结

本章介绍了RocketMQ的安装和部署方法,包括单机部署和集群部署的不同模式。通过合理的配置和部署,可以确保RocketMQ稳定运行。在下一章节中,我们将学习如何编写简单的消息生产和消费程序。

相关推荐
雨中飘荡的记忆1 小时前
Spring表达式详解:SpEL从入门到实战
java·spring
Coder-coco1 小时前
个人健康管理|基于springboot+vue+个人健康管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·mysql·论文
K哥11251 小时前
【9天Redis系列】基础+全局命令
数据库·redis·缓存
s***46981 小时前
【玩转全栈】----Django模板语法、请求与响应
数据库·python·django
f***R81 小时前
redis分页查询
数据库·redis·缓存
5***26221 小时前
Spring Boot问题总结
java·spring boot·后端
g***72701 小时前
【mysql】导出导入mysql表结构或者数据
数据库·mysql
煎蛋学姐1 小时前
SSM汽车租赁管理系统mfobv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·汽车·ssm 框架·汽车租赁管理系统
xkroy1 小时前
Spring Boot日志
java·spring boot·后端