#>>>>>>>>>>rocketmq<<=======================================
1.拉取RocketMQ镜像
这里以dockerhub上 RocketMQ 5.2.0 版本的镜像为例,介绍部署过程。
docker pull d.vimll.com:9888/root/public/rocketmq:5.2.0
2.创建容器共享网络
RocketMQ 中有多个服务,需要创建多个容器,创建 docker 网络便于容器间相互通信。
docker network create rocketmq
3.启动NameServer
# 启动 NameServer
docker run -d --name rmqnamesrv -p 9876:9876 --network rocketmq d.vimll.com:9888/root/public/rocketmq:5.2.0 sh mqnamesrv
# 验证 NameServer 是否启动成功
docker logs -f rmqnamesrv
信息
我们可以看到 'The Name Server boot success..', 表示NameServer 已成功启动。
4.启动 Broker+Proxy
NameServer 成功启动后,我们启动 Broker 和 Proxy。
Linux
Windows
# 配置 Broker 的IP地址
cat broker.conf
brokerIP1=172.16.100.39
autoCreateTopicEnable=true
autoCreateSubscriptionGroup=true
aclEnable=true
enablePropertyFilter=true
# cat plain_acl.yml
globalWhiteRemoteAddresses:
- 10.10.103.*
- 192.168.0.*
- 172.16.0.*
accounts:
- accessKey: jtkj_mq
secretKey: xxxxxxxxxxxx
whiteRemoteAddress:
admin: false
defaultTopicPerm: PUB|SUB
defaultGroupPerm: PUB|SUB
topicPerms:
- topicA=DENY
- topicB=PUB|SUB
- topicC=SUB
groupPerms:
# the group should convert to retry topic
- groupA=DENY
- groupB=PUB|SUB
- groupC=SUB
- accessKey: adminmq
secretKey: xxxxxxxxxxx
whiteRemoteAddress:
# if it is admin, it could access all resources
admin: true
mkdir /ssd2/rocketmqstore
chmod 777 /ssd2/rocketmqstore
# 启动 Broker 和 Proxy
docker run -d \
--name rmqbroker \
--network rocketmq \
--privileged=true \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e "NAMESRV_ADDR=172.16.100.39:9876" \
-v /ssd2/rocketmqstore:/home/rocketmq/store \
-v ./broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf \
-v ./plain_acl.yml:/home/rocketmq/rocketmq-5.2.0/conf/plain_acl.yml \
d.vimll.com:9888/root/public/rocketmq:5.2.0 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.2.0/conf/broker.conf
# 验证 Broker 是否启动成功
docker exec -it rmqbroker bash -c "tail -n 10 /home/rocketmq/logs/rocketmqlogs/proxy.log"
我们可以看到 'The broker boot success..', 表示 Broker 已成功启动。
docker pull d.vimll.com:9888/root/public/rocketmq-dashboard:latest
docker run -d --name rocketmq-dashboard --privileged=true --network rocketmq -e "JAVA_OPTS=-Drocketmq.namesrv.addr=172.16.100.39:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Drocketmq.config.accessKey=adminmq -Drocketmq.config.secretKey=xxxxxx" -v /root/jintdev-k8s/rocketmq-operator/docker/data:/tmp/rocketmq-console/data -p 8088:8080 -t d.vimll.com:9888/root/public/rocketmq-dashboard:latest
-Drocketmq.config.loginRequired=true
cat docker-compose.yml
version: '3.8'
services:
namesrv:
image: apache/rocketmq:5.2.0
container_name: rmqnamesrv
ports:
- 9876:9876
networks:
- rocketmq
command: sh mqnamesrv
broker:
image: apache/rocketmq:5.2.0
container_name: rmqbroker
ports:
- 10909:10909
- 10911:10911
- 10912:10912
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
depends_on:
- namesrv
networks:
- rocketmq
command: sh mqbroker
proxy:
image: apache/rocketmq:5.2.0
container_name: rmqproxy
networks:
- rocketmq
depends_on:
- broker
- namesrv
ports:
- 8080:8080
- 8081:8081
restart: on-failure
environment:
- NAMESRV_ADDR=rmqnamesrv:9876
command: sh mqproxy
networks:
rocketmq:
driver: bridge