通過docker部署rocketmq雙主雙從集群


1. 環境准備

阿某雲:centos 7,47.77.*.*(172.21.*.*),在安全組策略開啟8000-9000之間的端口訪問權限。

2. 創建目錄

mkdir /opt/rocketmq/logs/nameserver-1
mkdir /opt/rocketmq/logs/nameserver-2
mkdir /opt/rocketmq/logs/broker-master-1
mkdir /opt/rocketmq/logs/broker-master-2
mkdir /opt/rocketmq/logs/broker-slave-1
mkdir /opt/rocketmq/logs/broker-slave-2
mkdir /opt/rocketmq/store/nameserver-1
mkdir /opt/rocketmq/store/nameserver-2
mkdir /opt/rocketmq/store/broker-master-1
mkdir /opt/rocketmq/store/broker-master-2
mkdir /opt/rocketmq/store/broker-slave-1
mkdir /opt/rocketmq/store/broker-slave-2
mkdir /root/rocketmq/broker-master-1/conf
mkdir /root/rocketmq/broker-master-2/conf
mkdir /root/rocketmq/broker-slave-1/conf
mkdir /root/rocketmq/broker-slave-2/conf

3. 獲取鏡像

nameserver

docker pull foxiswho/rocketmq:server-4.3.2

broker

docker pull foxiswho/rocketmq:broker-4.3.2

rocketmq-console

docker pull styletang/rocketmq-console-ng

4. 創建容器

nameserver-1

docker create -p 8201:9876 --name rmq-nameserver-1 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -e "JAVA_OPTS=-Duser.home=/opt" -v /opt/rocketmq/logs/nameserver-1:/opt/logs -v /opt/rocketmq/store/nameserver-1:/opt/store foxiswho/rocketmq:server-4.3.2

nameserver-2

docker create -p 8202:9876 --name rmq-nameserver-2 -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -e "JAVA_OPTS=-Duser.home=/opt" -v /opt/rocketmq/logs/nameserver-2:/opt/logs -v /opt/rocketmq/store/nameserver-2:/opt/store foxiswho/rocketmq:server-4.3.2

master-1

docker create --net host --name rmq-master-1 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -v /root/rocketmq/broker-master-1/conf/broker.conf:/etc/rocketmq/broker.conf -v /opt/rocketmq/logs/broker-master-1:/opt/logs -v /opt/rocketmq/store/broker-master-1:/opt/store foxiswho/rocketmq:broker-4.3.2

master-2

docker create --net host --name rmq-master-2 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -v /root/rocketmq/broker-master-2/conf/broker.conf:/etc/rocketmq/broker.conf -v /opt/rocketmq/logs/broker-master-2:/opt/logs -v /opt/rocketmq/store/broker-master-2:/opt/store foxiswho/rocketmq:broker-4.3.2

slave-1

docker create --net host --name rmq-slave-1 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -v /root/rocketmq/broker-slave-1/conf/broker.conf:/etc/rocketmq/broker.conf -v /opt/rocketmq/logs/broker-slave-1:/opt/logs -v /opt/rocketmq/store/broker-slave-1:/opt/store foxiswho/rocketmq:broker-4.3.2

slave-2

docker create --net host --name rmq-slave-2 -e "JAVA_OPTS=-Duser.home=/opt" -e "JAVA_OPT_EXT=-server -Xms128m -Xmx128m -Xmn128m" -v /root/rocketmq/broker-slave-2/conf/broker.conf:/etc/rocketmq/broker.conf -v /opt/rocketmq/logs/broker-slave-2:/opt/logs -v /opt/rocketmq/store/broker-slave-2:/opt/store foxiswho/rocketmq:broker-4.3.2

5. 創建配置文件

/root/rocketmq/broker-master-1/conf/broker.conf
namesrvAddr=172.21.*.*:8201;172.21.*.*:8202
brokerClusterName=myCluster
brokerName=broker01
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
brokerIP1=47.77.*.*
brokerIp2=47.77.*.*
listenPort=8111
/root/rocketmq/broker-master-2/conf/broker.conf
namesrvAddr=172.21.*.*:8201;172.21.*.*:8202
brokerClusterName=myCluster
brokerName=broker02
brokerId=0
deleteWhen=04
fileReservedTime=48
brokerRole=SYNC_MASTER
flushDiskType=ASYNC_FLUSH
brokerIP1=47.77.*.*
brokerIp2=47.77.*.*
listenPort=8211
/root/rocketmq/broker-slave-1/conf/broker.conf
namesrvAddr=172.21.*.*:8201;172.21.*.*:8202
brokerClusterName=myCluster
brokerName=broker01
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
brokerIP1=47.77.*.*
listenPort=8115
/root/rocketmq/broker-slave-2/conf/broker.conf
namesrvAddr=172.21.*.*:8201;172.21.*.*:8202
brokerClusterName=myCluster
brokerName=broker02
brokerId=1
deleteWhen=04
fileReservedTime=48
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
brokerIP1=47.77.*.*
listenPort=8215

6. 啟動容器

先啟動nameserver

docker start rmq-nameserver-1 rmq-nameserver-2

啟動broker

docker start rmq-master-1 rmq-master-2 rmq-slave-1 rmq-slave-2

啟動rocketmq-console

docker run -dit --name rocketmq-console-ng -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.21.*.*:8201;172.21.*.*:8202 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8203:8080 styletang/rocketmq-console-ng

啟動完成后查看容器狀態

 

7. 端口說明

broker會使用3個端口:

listenPort:默認10911,監聽端口,客戶端通過這個端口連接broker,上面分別改成8111和8211

haListenPort:ha端口,用於主從同步,在listenPort基礎上加1,即10912

vipChannelPort:vip通道端口,在listenPort基礎上減2,即10909

如果啟動時出現端口沖突,但是配置文件里面是不同的listenPort,很有可能就是后面2個端口沖突了。

8. 通過rocketmq-console訪問集群

http://47.77.*.*:8203/#/cluster

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM