Docker安装RocketMQ

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-10 05:49:35

1、创建一个本地文件夹

在usr/local下,创建rktmq文件夹,当做rocketmq的本地映射目录。(位置或者文件名可自行定义)
在这里插入图片描述

2、安装 Namesrv

拉取镜像:

$ docker pull rocketmqinc/rocketmq:4.4.0

启动namesrv:

$ docker run -d -p 9876:9876 -v {RmHome}/data/namesrv/logs:/root/logs -v {RmHome}/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

{RmHome} 要替换成你的宿主机想保存 MQ 的日志与数据的地方,通过 docker 的 -v 参数使用 volume 功能,把第一步创建的本地目录映射到容器内的目录上。否则所有数据都默认保存在容器运行时的内存中,重启之后就又回到最初的起点。

docker run -d -p 9876:9876  -v /usr/local/rktmq/data/namesrv/logs:/root/logs  -v /usr/local/rktmq/data/namesrv/store:/root/store --name rmqnamesrv -e "MAX_POSSIBLE_HEAP=100000000" rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

3、 安装 broker 服务器

(1) 在 {RmHome}/创建conf 目录,并在conf下创建 broker.conf 文件,里面内容:

brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = 宿主机ip

broker.conf 的文件中的 brokerIP1 是你的 broker 注册到 Namesrv 中的 ip。如果不指定他会默认取容器中的内网 IP, 除非你的应用也同时部署在网络相通的容器中,本地或容器外就无法连接 broker 服务了,进而导致类似 RemotingTooMuchRequestException 等各种异常。

(2)启动broker

$ docker run -d -p 10911:10911 -p 10909:10909 -v {RmHome}/data/broker/logs:/root/logs -v {RmHome}/rocketmq/data/broker/store:/root/store -v {RmHome}/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

同样替换{RmHome}为之前所创建的目录

$ docker run -d -p 10911:10911 -p 10909:10909 -v  /usr/local/rktmq/data/broker/logs:/root/logs -v  /usr/local/rktmq/rocketmq/data/broker/store:/root/store -v  /usr/local/rktmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf --name rmqbroker --link rmqnamesrv:namesrv -e "NAMESRV_ADDR=namesrv:9876" -e "MAX_POSSIBLE_HEAP=200000000" rocketmqinc/rocketmq sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

此时可以查看下容器的情况,说明namesrv和broker已经启动
在这里插入图片描述

4、安装 rocketmq 控制台

录取镜像:

$ docker pull styletang/rocketmq-console-ng

启动:

$ docker run -d --link rmqnamesrv:rmqnamesrv  -e "JAVA_OPTS=-Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8001:8080 -t styletang/rocketmq-console-ng

8001是映射的端口,可自行设置。
启动后可以在浏览器打开:http://mq主机ip:映射端口
在这里插入图片描述
到此,rocketmq服务已启动,相应的控制台项目也启动了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!