背景需求

一台EC2机器上使用Docker部署两个单实例的RocketMQ服务。

部署流程

第一个 RocketMQ 服务

创建 Docker 网络:

docker network create rocketmq-dev

创建日志目录:

mkdir -p /root/rocketmq520/dev/logs
chmod 777 /root/rocketmq520/dev/logs

创建数据目录:

mkdir -p /root/rocketmq520/dev/store
chmod 777 /root/rocketmq520/dev/store

创建broker.conf文件:

echo "brokerIP1=192.20.8.90" > /root/rocketmq520/dev/broker.conf

创建nameserver启动脚本:

# # cat /root/rocketmq520/dev/start-nameserver.sh
docker run -d --name rmqnamesrv-dev -p 9876:9876 --network rocketmq-dev apache/rocketmq:5.2.0 sh mqnamesrv

创建broker启动脚本:

# cat /root/rocketmq520/dev/start-broker.sh
docker run -d \
--name rmqbroker-dev \
--network rocketmq-dev \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=rmqnamesrv-dev:9876" \
-e "brokerClusterName=rocketmq-dev" \
-v ./broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf \
-v ./logs:/home/rocketmq/logs \
-v ./store:/home/rocketmq/store \
apache/rocketmq:5.2.0 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf

创建Dashboard数据看板:

mkdir -p /root/rocketmq520/dashboard/dev
cat start-dashboard.sh
docker run -d \
--name rocketmq-dashboard-dev \
--network rocketmq-dev \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv-dev:9876" \
-p 58080:8080 \
-t apacherocketmq/rocketmq-dashboard:latest

启动上面三个服务:

sh start-nameserver.sh
sh start-broker.sh
sh start-dashboard.sh

停止/删除服务:

docker stop rmqnamesrv-dev
docker rm rmqnamesrv-dev
docker stop rmqbroker-dev
docker rm rmqbroker-dev
docker stop rocketmq-dashboard-dev
docker rm rocketmq-dashboard-dev

第二个 RocketMQ 服务

创建 Docker 网络:

docker network create rocketmq-uat

创建日志目录:

mkdir -p /root/rocketmq520/uat/logs
chmod 777 /root/rocketmq520/uat/logs

创建数据目录:

mkdir -p /root/rocketmq520/uat/store
chmod 777 /root/rocketmq520/uat/store

创建broker.conf文件:

echo "listenPort=10011" > /root/rocketmq520/uat/broker.conf
echo "brokerIP1=192.20.8.90" >> /root/rocketmq520/uat/broker.conf

创建nameserver启动脚本:

# # cat /root/rocketmq520/uat/start-nameserver.sh
docker run -d --name rmqnamesrv-uat -p 9976:9876 --network rocketmq-uat apache/rocketmq:5.2.0 sh mqnamesrv -n 192.20.8.90:9976

创建broker启动脚本:

# cat /root/rocketmq520/uat/start-broker.sh
docker run -d \
--name rmqbroker-uat \
--network rocketmq-uat \
-p 8092:10912 -p 10011:10011 -p 8094:10909 \
-p 8090:8080 -p 8091:8081 -p 10009:10009 \
-e "NAMESRV_ADDR=192.20.8.90:9976" \
-e "brokerClusterName=rocketmq-uat" \
-v ./logs:/home/rocketmq/logs \
-v ./store:/home/rocketmq/store \
-v ./broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf \
apache/rocketmq:5.2.0 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf

注意:一定要加上-p 10009:10009

创建Dashboard数据看板:

mkdir -p /root/rocketmq520/dashboard/uat
cat start-dashboard.sh
docker run -d \
--name rocketmq-dashboard-uat \
--network rocketmq-uat \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv-uat:9876" \
-p 58081:8080 \
-t apacherocketmq/rocketmq-dashboard:latest

启动上面三个服务:

sh start-nameserver.sh
sh start-broker.sh
sh start-dashboard.sh

停止/删除服务:

docker stop rmqnamesrv-uat
docker rm rmqnamesrv-uat
docker stop rmqbroker-uat
docker rm rmqbroker-uat
docker stop rocketmq-dashboard-uat
docker rm rocketmq-dashboard-uat