之前在使用 RocketMQ 官方的包在搭建的時(shí)候,發(fā)現(xiàn)好多問(wèn)題,什么修改內(nèi)存大小,然后啟動(dòng) broker 報(bào)錯(cuò),類似 service not available now, maybe disk full
等等… 最后決定還是重新用 docker 搭建下,感覺(jué)這樣子玩壞了,可以直接把容器干掉,重新啟動(dòng)一個(gè)新的容器,畢竟是在學(xué)習(xí)階段,這樣子快好多。
廢話不多說(shuō),現(xiàn)在開(kāi)始搭建。
具體搭建流程
前提說(shuō)明,由于之前使用非 docker 搭建的時(shí)候會(huì)出現(xiàn)各種內(nèi)存不足的情況(因?yàn)槟莻€(gè)虛擬機(jī)上面還搭建了其他好多東西),所以這次我是新創(chuàng)建了一個(gè)虛擬機(jī),專門用來(lái)搭建 RocketMQ。
第一步:下載官方鏡像
可以去官網(wǎng)看下最新的鏡像 apache/rocketmq Tags | Docker Hub, 我這里使用的是最新的。
docker pull apache/rocketmq
第二步:部署 NameServer
創(chuàng)建掛載文件夾
# 日志目錄
mkdir /apps/rocketmq/nameserver/logs -p
# 保存路勁
mkdir /apps/rocketmq/nameserver/store -p
設(shè)置權(quán)限
# 777 文件所屬者、文件所屬組和其他人有讀取 & 寫入 & 執(zhí)行全部權(quán)限。rwxrwxrwx
chmod 777 -R /apps/rocketmq/nameserver/*
啟動(dòng) namesrv 容器
docker run -d \
--privileged=true \
--name rmqnamesrv \
-p 9876:9876 \
-v /apps/rocketmq/nameserver/logs:/home/rocketmq/logs \
-v /apps/rocketmq/nameserver/store:/root/store \
-e "MAX_HEAP_SIZE=256M" \
-e "HEAP_NEWSIZE=128M" \
-e "MAX_POSSIBLE_HEAP=100000000" \
apache/rocketmq sh mqnamesrv
第三步:部署 broker
創(chuàng)建掛載文件夾
# 創(chuàng)建需要的掛載目錄
mkdir /apps/rocketmq/broker/logs -p \
mkdir /apps/rocketmq/broker/data -p \
mkdir /apps/rocketmq/broker/store -p \
mkdir /apps/rocketmq/broker/conf -p
設(shè)置權(quán)限
# 777 文件所屬者、文件所屬組和其他人有讀取 & 寫入 & 執(zhí)行全部權(quán)限。rwxrwxrwx
chmod 777 -R /apps/rocketmq/broker/*
創(chuàng)建 broker.conf
vi /apps/rocketmq/broker/conf/broker.conf
添加以下配置信息到 broker.conf,這里不對(duì)參數(shù)做過(guò)多的說(shuō)明,在下面Broker配置詳解中有對(duì)Broker常用參數(shù)做詳細(xì)介紹:
下面需要修改對(duì)應(yīng)的 brokerIP1
地址!??!
# 集群名稱
brokerClusterName=DefaultCluster
# 節(jié)點(diǎn)名稱
brokerName=broker-a
# broker id節(jié)點(diǎn)ID, 0 表示 master, 其他的正整數(shù)表示 slave,不能小于0
brokerId=0
# Broker服務(wù)地址 String 內(nèi)部使用填內(nèi)網(wǎng)ip,如果是需要給外部使用填公網(wǎng)ip
brokerIP1=192.168.148.129
# Broker角色
brokerRole=ASYNC_MASTER
# 刷盤方式
flushDiskType=ASYNC_FLUSH
# 在每天的什么時(shí)間刪除已經(jīng)超過(guò)文件保留時(shí)間的 commit log,默認(rèn)值04
deleteWhen=04
# 以小時(shí)計(jì)算的文件保留時(shí)間 默認(rèn)值72小時(shí)
fileReservedTime=72
# 是否允許Broker 自動(dòng)創(chuàng)建Topic,建議線下開(kāi)啟,線上關(guān)閉
autoCreateTopicEnable=true
# 是否允許Broker自動(dòng)創(chuàng)建訂閱組,建議線下開(kāi)啟,線上關(guān)閉
autoCreateSubscriptionGroup=true
# 磁盤使用達(dá)到95%之后,生產(chǎn)者再寫入消息會(huì)報(bào)錯(cuò) CODE: 14 DESC: service not available now, maybe disk full
diskMaxUsedSpaceRatio=95
啟動(dòng) broker
docker run -d \
--name rmqbroker \
--link rmqnamesrv:namesrv \
-p 10911:10911 -p 10909:10909 \
--privileged=true \
-v /apps/rocketmq/broker/logs:/root/logs \
-v /apps/rocketmq/broker/store:/root/store \
-v /apps/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
-e "MAX_POSSIBLE_HEAP=200000000" \
-e "MAX_HEAP_SIZE=512M" \
-e "HEAP_NEWSIZE=256M" \
-e "NAMESRV_ADDR=namesrv:9876" \
apache/rocketmq \
sh mqbroker -c /home/rocketmq/broker.conf
最后一行參數(shù)說(shuō)明
-
sh mqbroker -c /home/rocketmq/broker.conf
啟動(dòng) broker 服務(wù) 使用自定義配置文件。
到此,RocketMQ 就算搭建完了,下面我們來(lái)打個(gè)搭建一個(gè)監(jiān)控看看。
第四步:搭建監(jiān)控
下載鏡像
docker pull apacherocketmq/rocketmq-dashboard:latest
啟動(dòng)容器
這里地址是我們上面對(duì)應(yīng)的 nameserver 所在機(jī)器的 IP文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-647277.html
docker run -p 8087:8080 --name rocketmq-console -d \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.148.129:9876" \
-t apacherocketmq/rocketmq-dashboard
最后搞完的截圖文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-647277.html
到了這里,關(guān)于使用docker搭建RocketMQ(非集群搭建官方鏡像)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!