RocketMQ-基于Docker的安装部署
1.下载rocketmq及rocketmq-console
docker pull rocketmqinc/rocketmq
docker pull styletang/rocketmq-console-ng
安装完成后可通过docker images查看镜像
2.初始化文件夹
//供 namesrv 服务使用
mkdir -p /docker/rocketmq/data/namesrv/logs
mkdir -p /docker/rocketmq/data/namesrv/store
//供 broker 服务使用
mkdir -p /docker/rocketmq/data/broker/logs
mkdir -p /docker/rocketmq/data/broker/store
mkdir -p /docker/rocketmq/conf
初始化配置文件,在/docker/rocketmq/conf目录下新建一个配置文件
vi /docker/rocketmq/conf/broker.conf
broker.conf文件内容:需要将brokerIP1更改为你的虚拟机IP
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = ${虚拟机IP}
3. 创建容器
需要依次创建namesrv->broker->rocketmq-console
3.1 创建namesrv容器
docker run -d \
--restart=always \
--name rmqnamesrv \
-p 9876:9876 \
-v /docker/rocketmq/data/namesrv/logs:/root/logs \
-v /docker/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq \
sh mqnamesrv
解释:
- -d 以守护线程方式启动
- --restart=always docke重启时候镜像自动重启
- –name rmqnamesrv 设置容器名称
- -p 9876:9876 端口映射
- -v 把容器内的/root/logs日志路径挂载到宿主机的自定义路径中(需根据自己的路径自行创建)
- -v 把容器内的/root/store数据存储目录挂载到宿主机的自定义目录(需根据自己的路径自行创建)
- rocketmqinc/rocketmq 使用镜像的名称
- sh mqnamesrv 执行name server脚本
3.2 创建Broker容器
docker run -d
--name rmqbroker
--link rmqnamesrv:namesrv
-p 10911:10911
-p 10909:10909
-v /docker/rocketmq/data/broker/logs:/root/logs
-v /docker/rocketmq/data/broker/store:/root/store
-v /docker/rocketmq/conf/broker.conf:/opt/rocketmq/conf/broker.conf
-e "NAMESRV_ADDR=namesrv:9876"
-e "MAX_POSSIBLE_HEAP=200000000"
rocketmqinc/rocketmq sh mqbroker -c ../conf/broker.conf
解释
- --link rmqnamesrv:namesrv 和rmqnamesrv容器通信
- -p 10911:10911 把容器的非vip通道端口挂载到宿主机
- -p 10909:10909 把容器的vip通道端口挂载到宿主机
- -e “NAMESRV_ADDR=namesrv:9876” 指定namesrv的地址为本机namesrv的ip地址:9876
- -e “MAX_POSSIBLE_HEAP=200000000” rocketmqinc/rocketmq sh mqbroker 指定broker服务的最大堆内存(暂未配置)
- sh mqbroker -c …/conf/broker.conf 读取…/conf/broker.conf配置并启动broker
3.3 创建rocketmq-console容器
docker run -d \
--restart=always \
--name rmqconsoleng \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=${虚拟机IP}:9876
-Dcom.rocketmq.sendMessageWithVIPChannel=false" \
-p 9999:8080 \
styletang/rocketmq-console-ng
解释:
- -e "JAVA_OPTS=-Drocketmq.namesrv.addr=your_nameserver_address:9876 设置nameserver服务的地址
- -p 9999:8080 容器端口映射到宿主机的8080端口
最后就可以正常访问了,访问地址:http://虚拟机IP:9999
参考文章