Docker部署RocketMQ超詳細步驟(圖文并茂)
更新時間:2025年04月23日 10:58:13 作者:水藍煙雨
RocketMQ?是一款開源的分布式消息隊列系統(tǒng),具有低延遲、高并發(fā)、高可用等特性,這篇文章主要介紹了Docker部署RocketMQ超詳細步驟的相關(guān)資料,通過這些步驟,用戶可以成功搭建一個RocketMQ集群,并通過控制臺進行管理和監(jiān)控,需要的朋友可以參考下
部署 RocketMQ ( Docker )
[Step 1] :拉取 RocketMQ 鏡像
docker pull apache/rocketmq:5.1.0
[Step 2] : 創(chuàng)建容器共享網(wǎng)絡(luò) rocketmq
docker network create rocketmq
為什么要創(chuàng)建 docker 共享網(wǎng)絡(luò)?
- 容器間通信:創(chuàng)建一個 Docker 網(wǎng)絡(luò)可以確保同一個網(wǎng)絡(luò)中的容器可以通過容器名稱進行通信,而不需要知道對方的 IP 地址。這對于需要相互通信的服務(wù)非常重要,比如 RocketMQ 的多個組件(如 NameServer 和 Broker)。
- 隔離性和安全性:Docker 網(wǎng)絡(luò)提供了一個隔離的網(wǎng)絡(luò)環(huán)境,不同網(wǎng)絡(luò)中的容器彼此隔離。這增加了安全性,防止外部或其他不相關(guān)的容器訪問敏感服務(wù)。
- 簡化配置:使用 Docker 網(wǎng)絡(luò),配置變得更加簡單。容器可以通過名稱互相訪問,無需擔(dān)心容器重啟后 IP 地址發(fā)生變化。
[Step 3] : 部署 NameServer 前提條件
創(chuàng)建目錄?? 授予文件 ?? 創(chuàng)建容器 ?? 拷貝啟動腳本 ?? 刪除容器
# 創(chuàng)建目錄 mkdir -p /data/rocketmq/nameserver/{bin,logs} # 授權(quán)文件 chmod 777 -R /data/rocketmq/nameserver/* # 創(chuàng)建容器 docker run -d \ --privileged=true --name rmqnamesrv \ apache/rocketmq:5.1.0 sh mqnamesrv # 拷貝啟動腳本 docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh /data/rocketmq/nameserver/bin/ # 刪除容器 NameServer docker rm -f rmqnamesrv
[Step 4] : 啟動容器 NameServer
# 啟動容器 NameServer docker run -d --network rocketmq \ --privileged=true --restart=always \ --name rmqnamesrv -p 9876:9876 \ -v /data/rocketmq/nameserver/logs:/home/rocketmq/logs \ -v /data/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh \ apache/rocketmq:5.1.0 sh mqnamesrv # 部分命令解釋 : 1. -e "MAX_HEAP_SIZE=256M" 設(shè)置最大堆內(nèi)存和堆內(nèi)存初始大小 2. -e "HEAP_NEWSIZE=128M" 設(shè)置新生代內(nèi)存大小 # 查看啟動日志 docker logs -f rmqnamesrv
[Step 5] : 查看 NameServer 啟動日志
- 看到 ‘The Name Server boot success…’, 表示NameServer 已成功啟動。
[Step 6] : 部署 Broker + Proxy
- 創(chuàng)建掛載文件夾并授權(quán)
mkdir -p /data/rocketmq/broker/{store,logs,conf,bin} chmod 777 -R /data/rocketmq/broker/*
[Step 7] : 創(chuàng)建broker.cnf文件
vim /data/rocketmq/broker/conf/broker.conf # nameServer 地址多個用;隔開 默認值null # 例:127.0.0.1:6666;127.0.0.1:8888 namesrvAddr = 192.168.100.100:9876 # 集群名稱 brokerClusterName = DefaultCluster # 節(jié)點名稱 brokerName = broker-a # broker id節(jié)點ID, 0 表示 master, 其他的正整數(shù)表示 slave,不能小于0 brokerId = 0 # Broker服務(wù)地址 String 內(nèi)部使用填內(nèi)網(wǎng)ip,如果是需要給外部使用填公網(wǎng)ip brokerIP1 = 192.168.100.100 # Broker角色 brokerRole = ASYNC_MASTER # 刷盤方式 flushDiskType = ASYNC_FLUSH # 在每天的什么時間刪除已經(jīng)超過文件保留時間的 commit log,默認值04 deleteWhen = 04 # 以小時計算的文件保留時間 默認值72小時 fileReservedTime = 72 # 是否允許Broker 自動創(chuàng)建Topic,建議線下開啟,線上關(guān)閉 autoCreateTopicEnable=true # 是否允許Broker自動創(chuàng)建訂閱組,建議線下開啟,線上關(guān)閉 autoCreateSubscriptionGroup=true # 禁用 tsl tlsTestModeEnable = false # 下面是沒有注釋的版本, 記得修改"namesrvAddr", "brokerIP1"的地址 namesrvAddr = 192.168.100.233:9876 brokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 brokerIP1 = 192.168.100.233 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH deleteWhen = 04 fileReservedTime = 72 autoCreateTopicEnable=true autoCreateSubscriptionGroup=true tlsTestModeEnable = false
[Step 8] : 拷貝啟動腳本
# 啟動 Broker 容器 docker run -d \ --name rmqbroker --privileged=true \ apache/rocketmq:5.1.0 sh mqbroker # 拷貝腳本文件 docker cp rmqbroker:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh /data/rocketmq/broker/bin
[Step 9] : 啟動容器 Broker
# 刪除容器 Broker docker rm -f rmqbroker # 啟動容器 Broker docker run -d --network rocketmq \ --restart=always --name rmqbroker --privileged=true \ -p 10911:10911 -p 10909:10909 \ -v /data/rocketmq/broker/logs:/root/logs \ -v /data/rocketmq/broker/store:/root/store \ -v /data/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \ -v /data/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.1.0/bin/runbroker.sh \ -e "NAMESRV_ADDR=rmqnamesrv:9876" \ apache/rocketmq:5.1.0 sh mqbroker --enable-proxy -c /home/rocketmq/broker.conf # 查看啟動日志 docker logs -f rmqbroker
- 啟動成功日志如下
[Step 10] : 部署RocketMQ控制臺(rocketmq-dashboard)
- 拉取鏡像
docker pull apacherocketmq/rocketmq-dashboard:latest
[Step 11] : 啟動容器 Rocketmq-dashboard
docker run -d \ --restart=always --name rmq-dashboard \ -p 8080:8080 --network rocketmq \ -e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ apacherocketmq/rocketmq-dashboard
[Step 12] : 查看啟動日志
docker logs -f rmq-dashboard
[Step 13] : 訪問RMQ控制臺
- http://192.168.100.233:8080/ ( IP地址改成自己的 )
[Step 14] : 查看創(chuàng)建的 RocketMQ
總結(jié)
到此這篇關(guān)于Docker部署RocketMQ超詳細步驟的文章就介紹到這了,更多相關(guān)Docker部署RocketMQ內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker報錯Container is not running問題及解決
這篇文章主要介紹了docker報錯Container is not running問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05Docker打包SpringBoot鏡像的實現(xiàn)方式
docker打包springboot鏡像,并不是簡單的將springboot項目的jar包上傳容器里,然后啟動,這個操作很簡單,但是如果我每次要查看容器中的日志就需要每次都進入容器內(nèi)部進行查看,這就非常麻煩了,所以本文介紹了Docker打包SpringBoot鏡像的實現(xiàn)方式,需要的朋友可以參考下2024-03-03