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)絡
docker network create mynet
3.下載 rocketmq 鏡像
docker pull apache/rocketmq:latest
4.啟動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é)點較多可以配置多個
brokerClusterName = DefaultCluster
#broker名稱,master和slave使用相同的名稱,表明他們的主從關系
brokerName = broker1
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示幾點做消息刪除動作,默認是凌晨4點
deleteWhen = 04
#在磁盤上保留消息的時長,單位是小時
fileReservedTime = 48
#有三個值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和異步表示Master和Slave之間同步數(shù)據(jù)的機制;
brokerRole = ASYNC_MASTER
#刷盤策略,取值為:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盤和異步刷盤;SYNC_FLUSH消息寫入磁盤后才返回成功狀態(tài),ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
# 設置broker節(jié)點所在服務器的ip地址(**這個非常重要,主從模式下,從節(jié)點會根據(jù)主節(jié)點的brokerIP2來同步數(shù)據(jù),如果不配置,主從無法同步,brokerIP1設置為自己外網(wǎng)能訪問的ip,服務器雙網(wǎng)卡情況下必須配置,比如阿里云這種,主節(jié)點需要配置ip1和ip2,從節(jié)點只需要配置ip1即可)
# 此ip由使用環(huán)境決定 本機使用 127 局域網(wǎng)使用 192 外網(wǎng)使用 外網(wǎng)ip
brokerIP1 = 192.168.9.14
#nameServer地址,分號分割
namesrvAddr = 192.168.9.14:9876
#Broker 對外服務的監(jiān)聽端口,
listenPort = 10911
#是否允許Broker自動創(chuàng)建Topic
autoCreateTopicEnable = true
#是否允許 Broker 自動創(chuàng)建訂閱組
autoCreateSubscriptionGroup = true
#linux開啟epoll
useEpollNativeSelector = true
6.啟動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并啟動
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