1、首先部署注册中心name-server
先创建专属网络,不然可能通信不了,控制台显示连接失败!
1.1 容器网络互联创建docker网络:
name-server,broker,rocketmq-console都会使用该网络
docker network create rocketmq
2.拉取镜像并使用已创建的rockermq网络
docker run -d --name rmqnamesrv -p 9876:9876 --privileged=true --network rocketmq -v /usr/local/mq/data/namesrv/logs:/root/logs -v /usr/local/mq/data/namesrv/store:/root/store -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv autoCreateTopicEnable=true
执行命令之前注意:
1.创建/usr/local/mq/data/namesrv/logs文件夹和/usr/local/mq/data/namesrv/store文件夹
2.1 查看启动日志:
docker logs -f rmqnamesrv
3.部署broker
3.1首先在宿主机创建broker的配置文件目录
3.1.1创建broker的配置文件目录
sudo mkdir -p /docker/rocketmq/broker/conf
3.1.2创建broker的配置文件broker.conf
sudo vi /docker/rocketmq/broker/conf/broker.conf
# broker.conf内容如下(记得修改brokerIP1的值为宿主机的公网ip地址哦)
#所属集群名字
brokerClusterName = DefaultCluster
brokerName = broker-a
#0 表示 Master,>0 表示 Slave
brokerId = 0
#Broker 对外服务的监听端口 可以在命令时指定端口这里可以去掉
#listenPort=10911
#删除文件时间点,默认凌晨 4点
deleteWhen = 04
fileReservedTime = 48
#异步复制Master
brokerRole = ASYNC_MASTER
#异步刷盘
flushDiskType = ASYNC_FLUSH
#broker监听的ip nameServer地址。如果不指定默认是内网的ip
namesrvAddr = (宿主机公网IP地址):9876
brokerIP1 = (宿主机公网IP地址)
3.2 部署broker
docker run -d --name rmqbroker -p 10911:10911 -p 10909:10909 --privileged=true --network rocketmq -v /usr/local/mq/data/broker/logs:/root/logs -v /usr/local/mq/rocketmq/data/broker/store:/root/store -v /usr/local/mq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf -e "NAMESRV_ADDR=公网ip:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker autoCreateTopicEnable=true -c /opt/rocketmq-4.4.0/conf/broker.conf
执行命令之前注意:
1. 修改公网ip
2. 创建/usr/local/mq/data/broker/logs文件夹和/usr/local/mq/rocketmq/data/broker/store文件夹
3.2.1 查看启动日志:
sudo docker logs -f rmqbroker
3.2.2 验证容器之间是否互通:
# 进入broker容器
docker exec -it rmqbroker /bin/bash
# ping name-server的容器名称
ping rmqnamesrv
(容器之间可以通过容器名称链接)
4. 部署控制台
docker run -d --name rmqconsole -p 8080:8080 --network rocketmq -e "JAVA_OPTS=-Drocketmq.namesrv.addr=宿主机公网ip:9876" styletang/rocketmq-console-ng
执行命令之前注意:
1. 修改公网ip
坑点总结:
1. 控制台访问不了的话,去阿里云手动添加需要放开的端口
2. 程序连接超时的话,也是去阿里云放开端口
3. 创建网络并使用网络才可以互相通讯
4. 实践的是4.4.0版本rockermq