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