1.創(chuàng)建掛載目錄
mkdir -p /home/docker/rocketmq/namesrv/logs
mkdir -p /home/docker/rocketmq/broker/conf
mkdir -p /home/docker/rocketmq/broker/logs
mkdir -p /home/docker/rocketmq/broker/store
chmod -R 777 /home/docker/rocketmq
2.創(chuàng)建 rocketmq 網(wǎng)絡(luò)
docker network create mynet
3.下載 rocketmq 鏡像
docker pull apache/rocketmq:latest
4.啟動(dòng)namesrv
docker run -d --restart=always --name rmqnamesrv --privileged=true --network=mynet -p 9876:9876 -v /home/docker/rocketmq/namesrv/logs:/root/logs -e "MAX_POSSIBLE_HEAP=100000000" apache/rocketmq sh mqnamesrv
5.創(chuàng)建break配置文件
vim /home/docker/rocketmq/conf/broker.conf
插入下面內(nèi)容
# 所屬集群名稱,如果節(jié)點(diǎn)較多可以配置多個(gè)
brokerClusterName = DefaultCluster
#broker名稱放祟,master和slave使用相同的名稱,表明他們的主從關(guān)系
brokerName = broker1
#0表示Master即碗,大于0表示不同的slave
brokerId = 0
#表示幾點(diǎn)做消息刪除動(dòng)作,默認(rèn)是凌晨4點(diǎn)
deleteWhen = 04
#在磁盤上保留消息的時(shí)長(zhǎng)沟沙,單位是小時(shí)
fileReservedTime = 48
#有三個(gè)值:SYNC_MASTER施戴,ASYNC_MASTER,SLAVE皇耗;同步和異步表示Master和Slave之間同步數(shù)據(jù)的機(jī)制南窗;
brokerRole = ASYNC_MASTER
#刷盤策略,取值為:ASYNC_FLUSH郎楼,SYNC_FLUSH表示同步刷盤和異步刷盤万伤;SYNC_FLUSH消息寫入磁盤后才返回成功狀態(tài),ASYNC_FLUSH不需要呜袁;
flushDiskType = ASYNC_FLUSH
# 設(shè)置broker節(jié)點(diǎn)所在服務(wù)器的ip地址(**這個(gè)非常重要,主從模式下敌买,從節(jié)點(diǎn)會(huì)根據(jù)主節(jié)點(diǎn)的brokerIP2來同步數(shù)據(jù),如果不配置傅寡,主從無法同步放妈,brokerIP1設(shè)置為自己外網(wǎng)能訪問的ip,服務(wù)器雙網(wǎng)卡情況下必須配置荐操,比如阿里云這種芜抒,主節(jié)點(diǎn)需要配置ip1和ip2,從節(jié)點(diǎn)只需要配置ip1即可)
# 此ip由使用環(huán)境決定 本機(jī)使用 127 局域網(wǎng)使用 192 外網(wǎng)使用 外網(wǎng)ip
brokerIP1 = 192.168.9.14
#nameServer地址托启,分號(hào)分割
namesrvAddr = 192.168.9.14:9876
#Broker 對(duì)外服務(wù)的監(jiān)聽端口,
listenPort = 10911
#是否允許Broker自動(dòng)創(chuàng)建Topic
autoCreateTopicEnable = true
#是否允許 Broker 自動(dòng)創(chuàng)建訂閱組
autoCreateSubscriptionGroup = true
#linux開啟epoll
useEpollNativeSelector = true
6.啟動(dòng)broker
docker run -d \
--restart=always \
--name mynet\
--link rmqnamesrv:namesrv \
--network mynet \
-p 10911:10911 \
-p 10909:10909 \
-p 10912:10912 \
-v? /home/docker/rocketmq/broker/logs:/root/logs \
-v? /home/docker/rocketmq/broker/store:/root/store \
-v /home/docker/rocketmq/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.9.4/conf/broker.conf \
-e "NAMESRV_ADDR=namesrv:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
apache/rocketmq \
sh mqbroker -c /home/rocketmq/rocketmq-4.9.4/conf/broker.conf
7.下載rocketmq-console并啟動(dòng)
docker run -d \
--restart=always \
--network mynet \
--name rmqadmin \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.9.14:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9999:8080 \
pangliang/rocketmq-console-ng