目錄
前言
環境準備
系統要求
檢查Docker狀態
創建網絡和目錄
創建Docker網絡
創建數據目錄
安裝NameServer
啟動NameServer容器
參數說明
驗證NameServer啟動
安裝Broker
創建Broker配置文件
啟動Broker容器
參數說明
驗證Broker啟動
安裝管理控制臺
啟動控制臺容器
參數說明
訪問控制臺
驗證安裝
檢查所有容器狀態
測試消息發送和接收
進入Broker容器測試
常用操作命令
容器管理
查看日志
進入容器
故障排除
常見問題及解決方案
1. 容器啟動失敗
2. 無法訪問管理控制臺
3. 消息發送失敗
4. 內存不足
5. 數據持久化問題
總結
關鍵要點回顧
下一步建議
前言
RocketMQ是阿里開源的一款高性能、高可靠的分布式消息中間件。本教程將手把手教你在CentOS7系統上使用Docker安裝RocketMQ,包括NameServer、Broker和管理控制臺的完整搭建過程。
環境準備
系統要求
- CentOS7系統
- Docker已安裝并啟動
- 至少2GB內存
- 至少5GB磁盤空間
檢查Docker狀態
# 檢查Docker是否正常運行
docker version# 如果Docker未啟動,執行以下命令
sudo systemctl start docker
sudo systemctl enable docker
創建網絡和目錄
創建Docker網絡
為了讓RocketMQ各個組件能夠相互通信,我們需要創建一個自定義網絡:
# 創建名為rocketmq的網絡
docker network create rocketmq
創建數據目錄
在宿主機上創建用于存儲RocketMQ數據的目錄:
# 創建根目錄
sudo mkdir -p /home/rocketmq# 創建各組件的數據目錄
sudo mkdir -p /home/rocketmq/namesrv
sudo mkdir -p /home/rocketmq/broker
sudo mkdir -p /home/rocketmq/broker/logs
sudo mkdir -p /home/rocketmq/broker/store# 設置目錄權限(重要!)
sudo chmod -R 777 /home/rocketmq
為什么要設置777權限? Docker容器內的進程可能使用不同的用戶ID,設置777權限確保容器能夠正常讀寫這些目錄。
安裝NameServer
NameServer是RocketMQ的注冊中心,負責管理Broker的路由信息。
啟動NameServer容器
docker run -d \--name rmqnamesrv \--network rocketmq \-p 9876:9876 \-v /home/rocketmq/namesrv:/home/rocketmq/namesrv \-e "MAX_POSSIBLE_HEAP=100000000" \apache/rocketmq:4.9.4 \sh mqnamesrv
參數說明
--name rmqnamesrv
:容器名稱--network rocketmq
:使用我們創建的網絡-p 9876:9876
:端口映射,9876是NameServer默認端口-v /home/rocketmq/namesrv:/home/rocketmq/namesrv
:數據卷掛載-e "MAX_POSSIBLE_HEAP=100000000"
:設置JVM堆內存大小apache/rocketmq:4.9.4
:使用的鏡像版本sh mqnamesrv
:啟動NameServer的命令
驗證NameServer啟動
# 查看容器狀態
docker ps | grep rmqnamesrv# 查看容器日志
docker logs rmqnamesrv
如果看到類似"The Name Server boot success"的日志,說明啟動成功。
安裝Broker
Broker是RocketMQ的核心組件,負責消息的存儲和轉發。
創建Broker配置文件
首先創建Broker的配置文件:
# 創建配置文件
sudo vi /home/rocketmq/broker/broker.conf
在文件中添加以下內容:
# Broker配置
brokerClusterName=DefaultCluster
brokerName=broker-a
brokerId=0
deleteWhen=04
fileReservedTime=72
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH# 網絡配置(重要!)
brokerIP1=你的服務器IP地址
namesrvAddr=rmqnamesrv:9876# 存儲配置
storePathRootDir=/home/rocketmq/broker/store
storePathCommitLog=/home/rocketmq/broker/store/commitlog
storePathConsumeQueue=/home/rocketmq/broker/store/consumequeue
storePathIndex=/home/rocketmq/broker/store/index# 其他配置
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
重要提醒: 請將
brokerIP1=你的服務器IP地址</