Docker单机、双主集群部署RocketMQ容器

本文介绍了如何从零基础开始,使用Docker在单机和集群环境中部署RocketMQ。首先,详细说明了单机部署RocketMQ的步骤,包括下载镜像、创建存储路径、启动namesrv和broker容器。接着,展示了如何部署RocketMQ控制台容器。最后,讲解了如何在集群环境中设置两个节点的namesrv和broker,以及启动控制台容器。整个过程提供了具体的命令行参数和注意事项。
摘要由CSDN通过智能技术生成

1 问题背景


零基础,搭建RocketMQ玩玩

参考自:【Rocketmq】通过 docker 快速搭建 rocketmq 集群环境

2 单机部署


下载镜像

docker pull rocketmqinc/rocketmq:4.4.0

准备RocketMQ的存储路径

mkdir -p /mydata/rocketmq

创建并启动namesrv容器

docker run --name rmqnamesrv  -d \
-p 9876:9876 \
--privileged=true \
--restart=always \
-m 1g \
-v /mydata/rocketmq/data/namesrv/logs:/root/logs \
-v /mydata/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

创建并配置broker配置文件

mkdir -p /mydata/rocketmq/config

vim /mydata/rocketmq/config/broker.conf

brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1 = {外网IP}

注意:外网ip指容器外的网络ip,即虚拟机使用的IP,可以通过ip addr命令查看

创建并启动broker容器

docker run --name rmqbroker -d \
-p 10909:10909 \
-p 10911:10911 \
--privileged=true \
--restart=always \
-m 1g \
-v  /mydata/rocketmq/data/broker/logs:/root/logs \
-v  /mydata/rocketmq/data/broker/store:/root/store \
-v /mydata/rocketmq/config/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
--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

下载rocketmq控制台镜像

docker pull styletang/rocketmq-console-ng

创建并启动rocketmq控制台容器

docker run --name rmqconsole -p 10084:8080 -d \
--privileged=true \
--restart=always \
-m 512m \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.199.130:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false \
-Dserver.contextPath=/rmqconsole" \
styletang/rocketmq-console-ng

注意:访问rocketmq控制台时需要加上项目路径/rmqconsole

3 集群部署


准备RocketMQ的存储路径:

mkdir -p /mydata/rocketmq

分别在两台主机上部署namesrv

docker run --name rmqnamesrv  -d \
-p 9876:9876 \
--privileged=true \
--restart=always \
-m 1g \
-v /mydata/rocketmq/data/namesrv/logs:/root/logs \
-v /mydata/rocketmq/data/namesrv/store:/root/store \
-e "MAX_POSSIBLE_HEAP=100000000" \
rocketmqinc/rocketmq:4.4.0 sh mqnamesrv

分别在2台机器上配置broker:

#192.168.199.130主机
brokerClusterName = MyCluster
brokerName = broker-130
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1=192.168.199.130

#192.168.199.131主机
brokerClusterName = MyCluster
brokerName = broker-131
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1=192.168.199.131

分别在2台机器上创建broker容器的命令如下:

docker run --name rmqbroker -d \
-p 10909:10909 \
-p 10911:10911 \
--privileged=true \
--restart=always \
-m 1g \
-v  /mydata/rocketmq/data/broker/logs:/root/logs \
-v  /mydata/rocketmq/data/broker/store:/root/store \
-v /mydata/rocketmq/config/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf \
--link rmqnamesrv:namesrv \
-e "NAMESRV_ADDR=192.168.199.130:9876;192.168.199.131:9876" \
-e "MAX_POSSIBLE_HEAP=200000000" \
rocketmqinc/rocketmq:4.4.0 sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf

注意:上面-e "NAMESRV_ADDR=xxx:xx;xxx:xx"需要填写自己namesrv的地址,有多个namesrv则用分号隔开

创建RocketMQ控制台容器:

docker run --name rmqconsole -p 10084:8080 -d \
--privileged=true \
--restart=always \
-m 512m \
-e "JAVA_OPTS=-Drocketmq.namesrv.addr=192.168.199.130:9876;192.168.199.131:9876 \
-Dcom.rocketmq.sendMessageWithVIPChannel=false \
-Dserver.contextPath=/rmqconsole" \
styletang/rocketmq-console-ng

注意:

  1. 上面-e "JAVA_OPTS=-Drocketmq.namesrv.addr=xxx:xx;xxx:xx"需要填写自己namesrv的地址,有多个namesrv则用分号隔开
  2. 访问该控制台时需要在端口号后加上/rmqconsole,例子:http://localhost:10084/rmqconsole
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值