一、部署環(huán)境
兩臺(tái)服務(wù)器,每臺(tái)一個(gè)nameserver構(gòu)成集群,broker集群雙主雙從。
主機(jī) 容器名稱 IP 與宿主機(jī)的端口映射
- ODL控制器會(huì)同過(guò)vip通道10909去連接mq。
- 主從通過(guò)10912端口同步
- 這兩個(gè)地址是通過(guò)-2 +1 在配置文件端口10911基礎(chǔ)上計(jì)算得出
兩個(gè)宿主機(jī)上都有docker,并且創(chuàng)建了網(wǎng)橋docker-br0。
docker network create --subnet=172.16.1.0/24 docker-br0
docker network create --subnet=172.16.2.0/24 docker-br0
二、部署步驟
(一)、安裝docker compose
參考官方方法:https://docs.docker.com/compose/install/linux/
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose version
拉取mq docker鏡像
docker pull apache/rocketmq:4.3.1
docker pull apacherocketmq/rocketmq-dashboard
(二)、172.16.101.14 主機(jī)docker compose 部署 nameserver和broker 配置文件
- 現(xiàn)在broker master配置文件都是開(kāi)啟自動(dòng)創(chuàng)建topic的。如果
topic消息間隔時(shí)間 > nameserver路由更新時(shí)間30s / (單個(gè)broker topic隊(duì)列數(shù) + 1)
,只會(huì)使用一個(gè)broker。 - 在生產(chǎn)環(huán)境下不開(kāi)啟自動(dòng)創(chuàng)建topic。需要手動(dòng)給每個(gè)broker創(chuàng)建topic。手動(dòng)創(chuàng)建topic后,消息會(huì)輪詢所有broker的隊(duì)列,選擇一個(gè)發(fā)送。
1.創(chuàng)建路徑docker-compose/rocketmq/
,存放主從broker的配置文件:broker-a.conf
broker-b-s.conf
。
broker-a.conf
brokerClusterName = rocketmq-cluster
brokerName = broker-a
# 0表示broker master 非0表示 broker slaver
brokerId = 0
# brokerIP1 當(dāng)前broker監(jiān)聽(tīng)的IP
brokerIP1 = 172.16.101.14
# brokerIP2 存在broker主從時(shí),在broker主節(jié)點(diǎn)上配置了brokerIP2的話,broker從節(jié)點(diǎn)會(huì)連接主節(jié)點(diǎn)配置的brokerIP2來(lái)同步
brokerIP2 = 172.16.101.14
deleteWhen = 04
fileReservedTime = 48
namesrvAddr = rmqnamesrv-a:9876;172.16.101.13:9876
# 是否能夠自動(dòng)創(chuàng)建topic
autoCreateTopicEnable = true
#Broker 對(duì)外服務(wù)的監(jiān)聽(tīng)端口, 默認(rèn)10911
# listenPort = 10911
#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
broker-b-s.conf
brokerClusterName = rocketmq-cluster
brokerName = broker-b
brokerId = 1
brokerIP1 = 172.16.101.14
deleteWhen = 04
fileReservedTime = 48
namesrvAddr = rmqnamesrv-a:9876;172.16.101.13:9876
listenPort = 11911
brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
- docker-compose/下創(chuàng)建文件docker-compose.yml
docker-compose.yml
version: '3.5'
services:
rmqnamesrv-a:
image: apache/rocketmq:4.3.1
restart: always
container_name: rmqnamesrv-a
ports:
- 9876:9876
volumes:
- ./rocketmq/logs/nameserver-a:/opt/logs/rocketmqlogs
- ./rocketmq/store/nameserver-a:/opt/store
environment:
JAVA_OPT_EXT: "-Duser.home=/opt -Xms512m -Xmx512m -Xmn150m"
command: sh mqnamesrv
networks:
- docker-br0
rmqbroker-a:
image: apache/rocketmq:4.3.1
container_name: rmqbroker-a
ports:
- 10911:10911
- 10909:10909
- 10912:10912
volumes:
- ./rocketmq/logs/broker-a:/home/rocketmq/logs
- ./rocketmq/store/broker-a:/home/rocketmq/store
- ./rocketmq/broker-a.conf:/home/rocketmq/rocketmq-4.3.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-a:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /home/rocketmq/rocketmq-4.3.1/conf/broker.conf autoCreateTopicEnable=true &
links:
- rmqnamesrv-a:rmqnamesrv-a
networks:
- docker-br0
rmqbroker-b-s:
image: apache/rocketmq:4.3.1
container_name: rmqbroker-b-s
ports:
- 11911:11911
- 11909:11909
- 11912:11912
volumes:
- ./rocketmq/logs/broker-b-s:/home/rocketmq/logs
- ./rocketmq/store/broker-b-s:/home/rocketmq/store
- ./rocketmq/broker-b-s.conf:/home/rocketmq/rocketmq-4.3.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-a:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /home/rocketmq/rocketmq-4.3.1/conf/broker.conf autoCreateTopicEnable=true &
links:
- rmqnamesrv-a:rmqnamesrv-a
networks:
- docker-br0
networks:
docker-br0:
external: true
(三)、172.16.101.13 主機(jī)docker compose 部署 nameserver和broker 配置文件
1.創(chuàng)建路徑docker-compose/rocketmq/
,存放主從broker的配置文件:broker-b.conf
broker-a-s.conf
。
broker-b.conf
brokerClusterName = rocketmq-cluster
brokerName = broker-b
brokerId = 0
brokerIP1 = 172.16.101.13
brokerIP2 = 172.16.101.13
deleteWhen = 04
fileReservedTime = 48
namesrvAddr = rmqnamesrv-b:9876;172.16.101.14:9876
autoCreateTopicEnable = true
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
broker-a-s.conf
brokerClusterName = rocketmq-cluster
brokerName = broker-a
brokerId = 1
brokerIP1 = 172.16.101.13
deleteWhen = 04
fileReservedTime = 48
namesrvAddr = rmqnamesrv-b:9876;172.16.101.14:9876
listenPort = 11911
brokerRole = SLAVE
flushDiskType = ASYNC_FLUSH
- docker-compose/下創(chuàng)建文件docker-compose.yml
docker-compose.yml
version: '3.5'
services:
rmqnamesrv-b:
image: apache/rocketmq:4.3.1
restart: always
container_name: rmqnamesrv-b
ports:
- 9876:9876
volumes:
- ./rocketmq/logs/nameserver-b:/opt/logs/rocketmqlogs
- ./rocketmq/store/nameserver-b:/opt/store
environment:
JAVA_OPT_EXT: "-Duser.home=/opt -Xms512m -Xmx512m -Xmn150m"
command: sh mqnamesrv
networks:
- docker-br0
rmqbroker-b:
image: apache/rocketmq:4.3.1
container_name: rmqbroker-b
ports:
- 10911:10911
- 10909:10909
- 10912:10912
volumes:
- ./rocketmq/logs/broker-b:/home/rocketmq/logs
- ./rocketmq/store/broker-b:/home/rocketmq/store
- ./rocketmq/broker-b.conf:/home/rocketmq/rocketmq-4.3.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-b:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /home/rocketmq/rocketmq-4.3.1/conf/broker.conf autoCreateTopicEnable=true &
links:
- rmqnamesrv-b:rmqnamesrv-b
networks:
- docker-br0
rmqbroker-a-s:
image: apache/rocketmq:4.3.1
container_name: rmqbroker-a-s
ports:
- 11911:11911
- 11909:11909
- 11912:11912
volumes:
- ./rocketmq/logs/broker-a-s:/home/rocketmq/logs
- ./rocketmq/store/broker-a-s:/home/rocketmq/store
- ./rocketmq/broker-a-s.conf:/home/rocketmq/rocketmq-4.3.1/conf/broker.conf
environment:
TZ: Asia/Shanghai
NAMESRV_ADDR: "rmqnamesrv-b:9876"
JAVA_OPTS: " -Duser.home=/opt"
JAVA_OPT_EXT: "-server -Xms128m -Xmx128m -Xmn128m"
command: sh mqbroker -c /home/rocketmq/rocketmq-4.3.1/conf/broker.conf autoCreateTopicEnable=true &
links:
- rmqnamesrv-b:rmqnamesrv-b
networks:
- docker-br0
networks:
docker-br0:
external: true
(四)、部署
- 執(zhí)行
docker compose up -d
docker compose down
-
此時(shí)已經(jīng)在rocket下創(chuàng)建了logs和store文件夾,設(shè)置權(quán)限
chmod -R 777 logs/ store/
-
部署
docker compose up -d
-
docker部署dashboard
docker run -d -it --net docker-br0 --ip 172.16.1.18 --name dashboard -p 8080:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.101.13:9876;172.16.101.14:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" apacherocketmq/rocketmq-dashboard:latest /bin/bash
啟動(dòng)后進(jìn)入宿主機(jī)ip:8080頁(yè)面文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-490252.html
查看容器內(nèi)網(wǎng)卡ip:hostname -i
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-490252.html
到了這里,關(guān)于RocketMQ集群部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!