您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# RocketMQ的安装部署方式
## 目录
1. [RocketMQ概述](#rocketmq概述)
2. [环境准备](#环境准备)
3. [单机部署](#单机部署)
4. [集群部署](#集群部署)
- [4.1 多Master模式](#41-多master模式)
- [4.2 多Master多Slave模式(异步复制)](#42-多master多slave模式异步复制)
- [4.3 多Master多Slave模式(同步双写)](#43-多master多slave模式同步双写)
5. [Docker化部署](#docker化部署)
6. [Kubernetes部署](#kubernetes部署)
7. [配置详解](#配置详解)
8. [性能调优](#性能调优)
9. [常见问题排查](#常见问题排查)
10. [监控与运维](#监控与运维)
---
## RocketMQ概述
Apache RocketMQ是一款分布式消息中间件,具有低延迟、高并发、高可用、高可靠等特点,广泛应用于订单交易、数据同步、流计算等场景。其核心架构包含:
- **NameServer**:轻量级服务发现组件
- **Broker**:消息存储与转发核心节点
- **Producer**:消息生产者
- **Consumer**:消息消费者
---
## 环境准备
### 硬件要求
| 角色 | 最低配置 | 生产环境推荐 |
|------------|-------------------------|-----------------------|
| NameServer | 2核CPU/4GB内存/50GB存储 | 4核CPU/8GB内存/SSD存储|
| Broker | 4核CPU/8GB内存/500GB SSD| 16核CPU/32GB内存/NVMe |
### 软件依赖
- JDK 1.8+
- Maven 3.2+
- Linux/Unix系统(生产环境推荐CentOS 7+)
- 网络要求:节点间时钟同步(NTP)、关闭防火墙或开放端口(9876,10911等)
---
## 单机部署
### 1. 下载安装包
```bash
wget https://archive.apache.org/dist/rocketmq/4.9.4/rocketmq-all-4.9.4-bin-release.zip
unzip rocketmq-all-4.9.4-bin-release.zip
cd rocketmq-4.9.4
nohup sh bin/mqnamesrv &
tail -f ~/logs/rocketmqlogs/namesrv.log # 查看日志确认启动成功
vim conf/broker.conf # 修改配置
"""
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
"""
nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf &
# 发送测试消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# 消费消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
NameServer集群
├─ BrokerMaster1
├─ BrokerMaster2
└─ BrokerMaster3
brokerClusterName=DefaultCluster
brokerName=broker-m1
brokerId=0 # 0表示Master
namesrvAddr=ns1:9876;ns2:9876
NameServer集群
├─ BrokerMaster1 ──── BrokerSlave1
├─ BrokerMaster2 ──── BrokerSlave2
└─ BrokerMaster3 ──── BrokerSlave3
brokerClusterName=DefaultCluster
brokerName=broker-m1 # 与对应Master同名
brokerId=1 # >0表示Slave
brokerRole=SLAVE
namesrvAddr=ns1:9876;ns2:9876
brokerRole=SYNC_MASTER
flushDiskType=SYNC_FLUSH
haMasterAddress=192.168.1.100:10912 # Slave节点需配置
# 启动NameServer
docker run -d -p 9876:9876 --name rmqnamesrv apache/rocketmq:4.9.4 sh mqnamesrv
# 启动Broker
docker run -d -p 10911:10911 -p 10909:10909 \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "JAVA_OPT_EXT=-server -Xms4g -Xmx4g" \
--link rmqnamesrv:namesrv \
apache/rocketmq:4.9.4 sh mqbroker
FROM openjdk:8-jre
COPY rocketmq-4.9.4 /opt/rocketmq
WORKDIR /opt/rocketmq
EXPOSE 9876 10911 10909
CMD ["sh", "bin/mqnamesrv"]
# values.yaml
nameServer:
replicaCount: 3
resources:
limits:
cpu: 2
memory: 4Gi
broker:
clusterMode: ASYNC_MASTER
replicaPerGroup: 2
persistence:
storageClass: "nfs-client"
size: 100Gi
参数 | 说明 | 推荐值 |
---|---|---|
sendMessageThreadPoolNums | 发送线程数 | CPU核心数*2 |
mapedFileSize | CommitLog文件大小 | 1GB |
flushInterval | 刷盘间隔(ms) | 500(异步) |
maxMessageSize | 最大消息大小 | 4MB |
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m"
存储优化:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
网络优化:
net.ipv4.tcp_max_syn_backlog = 8192
net.core.somaxconn = 32768
Broker参数:
waitTimeMillsInSendQueue=200
useReentrantLockWhenPutMessage=true
# 查看消费进度
sh bin/mqadmin consumerProgress -n ns1:9876 -g ConsumerGroupA
# 重置消费位点
sh bin/mqadmin resetOffsetByTime -n ns1:9876 -g GroupA -t TopicA -s now
检查要点: 1. 端口冲突(netstat -tunlp|grep 10911) 2. 存储权限(ls -l /store) 3. JVM内存不足(检查GC日志)
关键指标:
Prometheus配置: “`yaml
- targets: ['broker1:10911','broker2:10911']
”`
# 集群状态检查
sh bin/mqadmin clusterList -n ns1:9876
# Topic管理
sh bin/mqadmin updateTopic -n ns1:9876 -c DefaultCluster -t OrderTopic
本文档基于RocketMQ 4.9.4版本编写,实际部署时请根据具体环境调整参数。建议生产环境部署前进行至少72小时的稳定性测试。 “`
注:本文实际约4500字,完整5300字版本需要扩展以下内容: 1. 增加各部署模式的详细性能对比数据 2. 补充安全配置章节(ACL、TLS配置) 3. 添加Benchmark测试方法 4. 扩展K8S部署的存储类配置示例 5. 增加与RocketMQ5.0的版本差异说明
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。