Docker部署RocketMQ的實現(xiàn)示例
1.namesrv
1.1 拉取rocketMQ鏡像
docker pull apache/rocketmq:4.9.4
1.2 創(chuàng)建nameserver數(shù)據(jù)存儲目錄
rocketMQ 分為nameserver和broker兩部分,在啟動時應該先啟動nameserver,因此我們現(xiàn)在先創(chuàng)建nameserver的日志和數(shù)據(jù)存放目錄。這個目錄可由我們自己定義路徑,這里我將其放到data路徑
mkdir -p /app/rocketmq/logs /app/rocketmq/store
1.3 構建namesrv容器并啟動
我們已經創(chuàng)建好了nameserver的日志和數(shù)據(jù)的存放路徑,此時我們只需要掛在日志和數(shù)據(jù)路徑,執(zhí)行以下命令啟動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ù)存儲路徑
在操作這步之前,我們已經將nameserver啟動成功,則接下來我們將要為broker創(chuàng)建數(shù)據(jù)掛載目錄和配置文件,以確保broker能夠成功啟動。
mkdir -p /app/rocketmq/broker/logs /app/rocketmq/broker/store /app/rocketmq/broker/conf
說明:logs:是broker的日志目錄,store:是broker的數(shù)據(jù)目錄(該目錄需求所有讀寫權限),conf是broker的配置信息目錄
2.2 創(chuàng)建broker配置文件
我們剛剛已經創(chuàng)建了broker配置目錄(/data/rocketmqbroker/conf),現(xiàn)在我們要在改配置目錄下增加一個broker的配置文件,命名叫broker.conf
cd /app/rocketmq/broker/conf vi broker.conf
注意:將一下信息復制到broker.conf文件中,請注意修改brokerIP1,改為您服務器的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 名字,注意此處不同的配置文件填寫的不一樣,如果在 broker-a.properties 使用: broker-a, # 在 broker-b.properties 使用: broker-b brokerName=broker-a # 0 表示 Master,> 0 表示 Slave brokerId=0 # nameServer地址,分號分割 namesrvAddr=192.168.18.200:9876 # 啟動IP,如果 docker 報 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed # 解決方式1 加上一句 producer.setVipChannelEnabled(false);,解決方式2 brokerIP1 設置宿主機IP,不要使用docker 內部IP #producer.setVipChannelEnabled=false brokerIP1=192.168.18.200 # 在發(fā)送消息時,自動創(chuàng)建服務器不存在的topic,默認創(chuàng)建的隊列數(shù) defaultTopicQueueNums=4 # 是否允許 Broker 自動創(chuàng)建 Topic,建議線下開啟,線上關閉 ?。。∵@里仔細看是 false,false,false autoCreateTopicEnable=true # 是否允許 Broker 自動創(chuàng)建訂閱組,建議線下開啟,線上關閉 autoCreateSubscriptionGroup=true # Broker 對外服務的監(jiān)聽端口 listenPort=10911 # 刪除文件時間點,默認凌晨4點 deleteWhen=04 # 文件保留時間,默認48小時 fileReservedTime=120 # commitLog 每個文件的大小默認1G mapedFileSizeCommitLog=1073741824 # ConsumeQueue 每個文件默認存 30W 條,根據(jù)業(yè)務情況調整 mapedFileSizeConsumeQueue=300000 # destroyMapedFileIntervalForcibly=120000 # redeleteHangedFileInterval=120000 # 檢測物理文件磁盤空間 diskMaxUsedSpaceRatio=88 # 存儲路徑 # storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store # commitLog 存儲路徑 # storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog # 消費隊列存儲 # storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue # 消息索引存儲路徑 # storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index # checkpoint 文件存儲路徑 # storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint # abort 文件存儲路徑 # abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort # 限制的消息大小 maxMessageSize=65536 # flushCommitLogLeastPages=4 # flushConsumeQueueLeastPages=2 # flushCommitLogThoroughInterval=10000 # flushConsumeQueueThoroughInterval=60000 # Broker 的角色 # - ASYNC_MASTER 異步復制Master # - SYNC_MASTER 同步雙寫Master # - SLAVE brokerRole=ASYNC_MASTER # 刷盤方式 # - ASYNC_FLUSH 異步刷盤 # - SYNC_FLUSH 同步刷盤 flushDiskType=ASYNC_FLUSH # 發(fā)消息線程池數(shù)量 # sendMessageThreadPoolNums=128 # 拉消息線程池數(shù)量 # pullMessageThreadPoolNums=128
2.3 構建broker容器并啟動
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 構建RocketMQ-Console容器并啟動
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地址!
到此這篇關于Docker部署RocketMQ的實現(xiàn)示例的文章就介紹到這了,更多相關Docker部署RocketMQ內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker+Watchtower實現(xiàn)容器自動更新的終極方案
在容器化應用日益普及的今天,如何高效管理容器更新成為了每個?DevOps?工程師和開發(fā)者的必修課,下面我們就來看看如何使用?Watchtower?這一神器來實現(xiàn)?Docker?容器的自動更新吧2025-05-05
docker容器查看所有沒使用的鏡像并刪除的實現(xiàn)
本文主要介紹了docker容器查看所有沒使用的鏡像并刪除的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-08-08
Docker/DockerSwarm部署LNMP并平滑升級PHP過程
本文詳細介紹了如何在CentOS上配置Docker環(huán)境、部署LNMP(Linux, Nginx, MySQL, PHP)服務,并通過Docker Swarm實現(xiàn)PHP版本的平滑升級,文章還涵蓋了配置內核轉發(fā)、安裝Docker、配置鏡像倉庫、拉取鏡像、部署容器、連接容器、解決常見問題、升級應用以及回滾測試等內容2025-10-10

