Docker部署RocketMQ的實(shí)現(xiàn)示例
1.namesrv
1.1 拉取rocketMQ鏡像
docker pull apache/rocketmq:4.9.4
1.2 創(chuàng)建nameserver數(shù)據(jù)存儲(chǔ)目錄
rocketMQ 分為nameserver和broker兩部分,在啟動(dòng)時(shí)應(yīng)該先啟動(dòng)nameserver,因此我們現(xiàn)在先創(chuàng)建nameserver的日志和數(shù)據(jù)存放目錄。這個(gè)目錄可由我們自己定義路徑,這里我將其放到data路徑
mkdir -p /app/rocketmq/logs /app/rocketmq/store
1.3 構(gòu)建namesrv容器并啟動(dòng)
我們已經(jīng)創(chuàng)建好了nameserver的日志和數(shù)據(jù)的存放路徑,此時(shí)我們只需要掛在日志和數(shù)據(jù)路徑,執(zhí)行以下命令啟動(dòng)nameserver即可
docker run -d -p 9876:9876 --restart=always \ -v /app/rocketmq/namesrv/logs:/home/rocketmq/logs \ -v /app/rocketmq/namesrv/store:/home/rocketmq/store \ --name mqnamesrv \ --network rocketmq \ -e"JAVA_OPT_EXT=-server -Xms512m -Xmx512m -Xmn512m" \ apache/rocketmq:4.9.4 \ sh mqnamesrv
2.broker
2.1 創(chuàng)建broker數(shù)據(jù)存儲(chǔ)路徑
在操作這步之前,我們已經(jīng)將nameserver啟動(dòng)成功,則接下來(lái)我們將要為broker創(chuàng)建數(shù)據(jù)掛載目錄和配置文件,以確保broker能夠成功啟動(dòng)。
mkdir -p /app/rocketmq/broker/logs /app/rocketmq/broker/store /app/rocketmq/broker/conf
說(shuō)明:logs:是broker的日志目錄,store:是broker的數(shù)據(jù)目錄(該目錄需求所有讀寫(xiě)權(quán)限),conf是broker的配置信息目錄
2.2 創(chuàng)建broker配置文件
我們剛剛已經(jīng)創(chuàng)建了broker配置目錄(/data/rocketmqbroker/conf),現(xiàn)在我們要在改配置目錄下增加一個(gè)broker的配置文件,命名叫broker.conf
cd /app/rocketmq/broker/conf vi broker.conf
注意:將一下信息復(fù)制到broker.conf文件中,請(qǐng)注意修改brokerIP1,改為您服務(wù)器的IP地址!注意修改namesrvAddr,改為您nameserver的IP地址!
# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # 所屬集群名字 brokerClusterName=DefaultCluster # broker 名字,注意此處不同的配置文件填寫(xiě)的不一樣,如果在 broker-a.properties 使用: broker-a, # 在 broker-b.properties 使用: broker-b brokerName=broker-a # 0 表示 Master,> 0 表示 Slave brokerId=0 # nameServer地址,分號(hào)分割 namesrvAddr=192.168.18.200:9876 # 啟動(dòng)IP,如果 docker 報(bào) com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed # 解決方式1 加上一句 producer.setVipChannelEnabled(false);,解決方式2 brokerIP1 設(shè)置宿主機(jī)IP,不要使用docker 內(nèi)部IP #producer.setVipChannelEnabled=false brokerIP1=192.168.18.200 # 在發(fā)送消息時(shí),自動(dòng)創(chuàng)建服務(wù)器不存在的topic,默認(rèn)創(chuàng)建的隊(duì)列數(shù) defaultTopicQueueNums=4 # 是否允許 Broker 自動(dòng)創(chuàng)建 Topic,建議線(xiàn)下開(kāi)啟,線(xiàn)上關(guān)閉 ?。。∵@里仔細(xì)看是 false,false,false autoCreateTopicEnable=true # 是否允許 Broker 自動(dòng)創(chuàng)建訂閱組,建議線(xiàn)下開(kāi)啟,線(xiàn)上關(guān)閉 autoCreateSubscriptionGroup=true # Broker 對(duì)外服務(wù)的監(jiān)聽(tīng)端口 listenPort=10911 # 刪除文件時(shí)間點(diǎn),默認(rèn)凌晨4點(diǎn) deleteWhen=04 # 文件保留時(shí)間,默認(rèn)48小時(shí) fileReservedTime=120 # commitLog 每個(gè)文件的大小默認(rèn)1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue 每個(gè)文件默認(rèn)存 30W 條,根據(jù)業(yè)務(wù)情況調(diào)整 mapedFileSizeConsumeQueue=300000 # destroyMapedFileIntervalForcibly=120000 # redeleteHangedFileInterval=120000 # 檢測(cè)物理文件磁盤(pán)空間 diskMaxUsedSpaceRatio=88 # 存儲(chǔ)路徑 # storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store # commitLog 存儲(chǔ)路徑 # storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog # 消費(fèi)隊(duì)列存儲(chǔ) # storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue # 消息索引存儲(chǔ)路徑 # storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index # checkpoint 文件存儲(chǔ)路徑 # storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint # abort 文件存儲(chǔ)路徑 # abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort # 限制的消息大小 maxMessageSize=65536 # flushCommitLogLeastPages=4 # flushConsumeQueueLeastPages=2 # flushCommitLogThoroughInterval=10000 # flushConsumeQueueThoroughInterval=60000 # Broker 的角色 # - ASYNC_MASTER 異步復(fù)制Master # - SYNC_MASTER 同步雙寫(xiě)Master # - SLAVE brokerRole=ASYNC_MASTER # 刷盤(pán)方式 # - ASYNC_FLUSH 異步刷盤(pán) # - SYNC_FLUSH 同步刷盤(pán) flushDiskType=ASYNC_FLUSH # 發(fā)消息線(xiàn)程池?cái)?shù)量 # sendMessageThreadPoolNums=128 # 拉消息線(xiàn)程池?cái)?shù)量 # pullMessageThreadPoolNums=128
2.3 構(gòu)建broker容器并啟動(dòng)
docker run -d -p 10911:10911 -p 10909:10909 \ -v /app/rocketmq/broker/logs:/home/rocketmq/logs \ -v /app/rocketmq/broker/store:/home/rocketmq/store \ -v /app/rocketmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf \ --name rmqbroker \ -e "NAMESRV_ADDR=mqnamesrv:9876" \ apache/rocketmq:4.9.4 \ sh mqbroker -n mqnamesrv:9876 \ -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf autoCreateTopicEnable=true
3.RocketMQ-Console可視化界面
3.1 拉取rocketmq-console鏡像
docker pull styletang/rocketmq-console-ng
3.2 構(gòu)建RocketMQ-Console容器并啟動(dòng)
docker run -d --restart=always --name rocketmq-admin -e "JAVA_OPTS=-Drocketmq.namesrv.addr=mqnamesrv:9876 -Dcom.rocketmqsendMessageWithVIPChannel=false" -p 18080 :8080 styletang/rocketmq-console-ng
注意:將一下信息Drocketmq.namesrv.addr后面的IP地址改為您的nameserver IP地址!
到此這篇關(guān)于Docker部署RocketMQ的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)Docker部署RocketMQ內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- docker進(jìn)行RocketMq集群部署方式
- Docker安裝部署rocketmq-console工具教程
- 使用Docker容器部署rocketmq單機(jī)的全過(guò)程
- Docker?部署RocketMQ的詳細(xì)操作
- Docker rocketmq部署的實(shí)現(xiàn)示例
- docker安裝rocketMQ和安裝過(guò)程中出現(xiàn)問(wèn)題的解決
- docker安裝RocketMQ的實(shí)現(xiàn)步驟
- 超詳細(xì)Docker Desktop下安裝rocketmq的教程
- docker安裝rocketMQ教程(最詳細(xì))
- Docker中RocketMQ的安裝與使用詳解
相關(guān)文章
win7下docker安裝與報(bào)錯(cuò)問(wèn)題的解決方法
這篇文章主要為大家詳細(xì)介紹了win7下docker安裝與報(bào)錯(cuò)問(wèn)題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
docker 容器上編譯 go 程序提示找不到文件問(wèn)題
這篇文章主要介紹了docker 容器上編譯 go 程序無(wú)法運(yùn)行提示找不到文件問(wèn)題,解決方法也很簡(jiǎn)單,感興趣的朋友跟隨腳本之家小編一起看看吧2018-05-05
使用Docker和Nginx部署Web服務(wù)的操作指南
本文給大家介紹了Docker和Nginx部署Web服務(wù)的完美指南,Docker是一種容器化技術(shù),它可以將應(yīng)用程序及其依賴(lài)項(xiàng)打包到一個(gè)獨(dú)立的、可移植的容器中,而Nginx則是一款高性能的Web服務(wù)器和反向代理服務(wù)器,感興趣的朋友可以參考下2024-01-01
容器平臺(tái)下部署jumpserver跳板機(jī)全過(guò)程
jumpserver是一款堡壘機(jī)/跳板機(jī),用于加強(qiáng)內(nèi)網(wǎng)服務(wù)器的安全管理,本文介紹了jumpserver的安裝、配置和使用方法,包括生成密鑰、創(chuàng)建容器、測(cè)試連接、創(chuàng)建用戶(hù)和用戶(hù)組、添加資產(chǎn)、用戶(hù)授權(quán)和測(cè)試連接等步驟2025-10-10
Docker+Watchtower實(shí)現(xiàn)容器自動(dòng)更新的終極方案
在容器化應(yīng)用日益普及的今天,如何高效管理容器更新成為了每個(gè)?DevOps?工程師和開(kāi)發(fā)者的必修課,下面我們就來(lái)看看如何使用?Watchtower?這一神器來(lái)實(shí)現(xiàn)?Docker?容器的自動(dòng)更新吧2025-05-05
docker容器查看所有沒(méi)使用的鏡像并刪除的實(shí)現(xiàn)
本文主要介紹了docker容器查看所有沒(méi)使用的鏡像并刪除的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Docker/DockerSwarm部署LNMP并平滑升級(jí)PHP過(guò)程
本文詳細(xì)介紹了如何在CentOS上配置Docker環(huán)境、部署LNMP(Linux, Nginx, MySQL, PHP)服務(wù),并通過(guò)Docker Swarm實(shí)現(xiàn)PHP版本的平滑升級(jí),文章還涵蓋了配置內(nèi)核轉(zhuǎn)發(fā)、安裝Docker、配置鏡像倉(cāng)庫(kù)、拉取鏡像、部署容器、連接容器、解決常見(jiàn)問(wèn)題、升級(jí)應(yīng)用以及回滾測(cè)試等內(nèi)容2025-10-10

