RocketMQ部署(docker版)
1. 部署开始前的准备
- 一台linux机器。(我这里使用的是阿里云的一个centos7的服务器)
- docker环境以及相关的简单知识。
- 一些计算机网络的简单知识。(可以帮你透彻了解为什么这么部署)
docker部署十分简单快捷,重点就是不同网络的特性,如果了解不同网络特性可以事半功倍地部署相关服务。
点击链接可以在我上篇博客中学习基本的三种基本网络。
博客地址
参考文档:
- RocketMQ github官方文档https://github.com/apache/rocketmq
- docker快速搭建RokcetMQ简称
2.部署过程
注意:官方的教程直接是host网络,即和宿主机网络相同,所以不需要开端口,也尽量不要开多容器,多容器需要更改端口,多容器请使用网桥模式。
2.1.启动name server
docker run -it --net=host apache/rocketmq ./mqnamesrv
启动比较简单不需要额外配置什么文件。
2.2.启动broker
- 创建broker配置(和nameserver不同,broker需要手动配置broker地址,用于路由注册。)
如果你已经启动了broker,但是需要配置下broker在路由中认证的地址,否则无法将消费者导向正确的路由。
错误为下面展示
这里的ip尽量填外网ip(注意:自用电脑一般没公网ip,只能先填本机凑合,这样的话程序也最好在本机运行),因为中间件的通信一般不局限于一台主机上,不同主机,甚至不同位置都是常态,
- 创建broker挂载相关文件夹
mkdir -p /usr/dockerrocketmq/rmqbroker01/logs
mkdir -p /usr/dockerrocketmq/rmqbroker01/conf
mkdir -p /usr/dockerrocketmq/rmqbroker01/store
vi /usr/dockerrocketmq/rmqbroker01/conf/broker.conf
- 创建broker配置文件
#nameserver的外网ip地址,这个一般为9876端口,这个配置项也可以不要,启动的时候指定
namesrvAddr=ip:port
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
#broker主机所在的外网ip,非常关键
brokerIP1 = ip
listenPort=10911
- 创建容器
docker run -it --net=host -v /usr/data/broker/logs:/root/logs -v /usr/dockerrocketmq/rmqbroker01/store:/root/store -v /usr/dockerrocketmq/rmqbroker01/conf/broker.conf:/opt/rocketmq-4.9.4/conf/broker.conf --name rmqbroker rocketmqinc/rocketmq sh mqbroker -n ip:9876 -c /opt/rocketmq-4.9.4/conf/broker.conf
虽然很长,但是核心思想就是挂载三个卷,conf卷是必须挂载的,否则很容易识别不到外网ip,导致中间件处于半残废状态!
2.3.启动ocketmq-dashboard(非必须部署,但是建议新手部署)
docker run -e "JAVA_OPTS=-Drocketmq.namesrv.addr=外网ip:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8082:8080 -t pangliang/rocketmq-console-ng
我这里8080有东西了,我改成8082端口。