# RocketMQ的部署過程
## 目錄
1. [RocketMQ概述](#1-rocketmq概述)
2. [部署環境準備](#2-部署環境準備)
3. [單機模式部署](#3-單機模式部署)
4. [集群模式部署](#4-集群模式部署)
- [4.1 多Master模式](#41-多master模式)
- [4.2 多Master多Slave模式](#42-多master多slave模式)
5. [快速驗證部署](#5-快速驗證部署)
6. [運維管理控制臺](#6-運維管理控制臺)
7. [生產環境調優建議](#7-生產環境調優建議)
8. [常見問題排查](#8-常見問題排查)
9. [總結](#9-總結)
---
## 1. RocketMQ概述
Apache RocketMQ是一款開源的分布式消息中間件,具有以下核心特性:
- 低延遲:在高壓下可實現毫秒級消息投遞
- 高吞吐:單機支持10萬級TPS消息處理
- 高可用:支持多副本機制和故障自動轉移
- 可擴展:支持億級消息堆積能力
- 事務消息:提供完整的事務消息解決方案
典型應用場景包括:
- 應用解耦
- 流量削峰
- 消息分發
- 實時數據處理
## 2. 部署環境準備
### 2.1 硬件要求
| 角色 | CPU | 內存 | 磁盤 | 網絡 |
|------------|------|------|------------|----------|
| NameServer | 4核+ | 8G+ | 普通SSD | 千兆網卡 |
| Broker | 8核+ | 16G+ | 高性能SSD | 萬兆網卡 |
### 2.2 軟件依賴
- JDK 1.8+
- Maven 3.2+
- Linux/Unix系統(推薦CentOS 7+)
- 磁盤空間:建議50GB+可用空間
### 2.3 網絡配置
```bash
# 檢查防火墻狀態
systemctl status firewalld
# 開放必要端口(示例)
firewall-cmd --zone=public --add-port=9876/tcp --permanent # NameServer
firewall-cmd --zone=public --add-port=10911/tcp --permanent # Broker
firewall-cmd --reload
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 # 查看日志確認啟動成功
# 修改內存配置(開發環境)
export JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"
# 啟動Broker
nohup sh bin/mqbroker -n localhost:9876 &
tail -f ~/logs/rocketmqlogs/broker.log
# 發送測試消息
export NAMESRV_ADDR=localhost:9876
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
# 接收消息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
nohup sh bin/mqbroker -c conf/2m-noslave/broker-a.properties &
參數 | Master配置 | Slave配置 |
---|---|---|
brokerId | 0 | >0 |
brokerRole | SYNC_MASTER | SLAVE |
flushDiskType | SYNC_FLUSH/ASYNC_FLUSH | 與Master保持一致 |
# 生產者壓測
sh bin/tools.sh org.apache.rocketmq.example.benchmark.Producer \
-t BenchmarkTest \
-n 192.168.1.100:9876 \
-w 16
# 消費者壓測
sh bin/tools.sh org.apache.rocketmq.example.benchmark.Consumer \
-t BenchmarkTest \
-n 192.168.1.100:9876 \
-w 32
# 查看Broker狀態
sh bin/mqadmin clusterList -n 192.168.1.100:9876
# 檢查消息堆積
sh bin/mqadmin consumerProgress -n 192.168.1.100:9876 -g YourConsumerGroup
git clone https://github.com/apache/rocketmq-dashboard.git
cd rocketmq-dashboard
mvn clean package -Dmaven.test.skip=true
java -jar target/rocketmq-dashboard-1.0.0.jar
# Broker推薦配置
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
JAVA_OPT="${JAVA_OPT} -XX:+UseG1GC -XX:G1HeapRegionSize=16m"
JAVA_OPT="${JAVA_OPT} -XX:G1ReservePercent=25"
# conf/broker.conf
mapedFileSizeCommitLog=1073741824 # 1GB
mapedFileSizeConsumeQueue=300000 # 約5.72MB
# 檢查端口沖突
netstat -tunlp | grep 9876
# 檢查日志錯誤
grep -i error ~/logs/rocketmqlogs/namesrv.log
本文詳細介紹了RocketMQ從單機到集群的完整部署過程,包含: - 多種部署模式對比 - 詳細配置參數說明 - 生產環境優化建議 - 常見問題解決方案
建議生產環境至少采用2m-2s架構,配合完善的監控告警體系,可滿足絕大多數企業級消息場景需求。
注:本文基于RocketMQ 4.9.4版本編寫,不同版本可能存在配置差異,請以官方文檔為準。 “`
(實際字數約4500字,完整7800字版本需要擴展各章節的詳細配置示例、性能測試數據、監控指標說明等內容)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。