RocketMQ安装与部署指南
系统要求
在安装RocketMQ之前,需要确保系统满足以下要求:
- 操作系统:64位Linux/Unix/macOS/Windows
- Java版本:JDK 1.8或更高版本
- 内存:至少4GB RAM(开发环境)
- 磁盘空间:至少50GB可用空间
- 网络:确保相关端口未被防火墙阻止
安装方式
方式一:二进制包安装(推荐)
-
下载RocketMQ
bash# 下载最新版本的RocketMQ二进制包 wget https://archive.apache.org/dist/rocketmq/5.1.4/rocketmq-all-5.1.4-bin-release.zip -
解压安装包
bashunzip rocketmq-all-5.1.4-bin-release.zip cd rocketmq-all-5.1.4-bin-release -
目录结构说明
rocketmq-all-5.1.4-bin-release/ ├── bin/ # 可执行脚本目录 ├── conf/ # 配置文件目录 ├── lib/ # 依赖库目录 └── logs/ # 日志文件目录
方式二:源码编译安装
-
克隆源码
bashgit clone https://github.com/apache/rocketmq.git cd rocketmq -
编译构建
bashmvn -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稳定运行。在下一章节中,我们将学习如何编写简单的消息生产和消费程序。