docker-compose部署rocketmq集群
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker-compose部署rocketmq集群相关的知识,希望对你有一定的参考价值。
参考技术A 测试环境需要一个2m2s的rockermq进行业务测试,此方式推荐使用在测试环境中使用,不推荐生产。///////////////////////////////////如果没起来再看看下面的能不能帮到你/////////////////////////////////
如果你的微服务没有放入docker或者rocketmq容器中,不能用IP直接访问。 请修改broker-a.conf、broker-b.conf、broker-a-s.conf、broker-b-s.conf
的brokerIP为宿主机IP,并去掉#。
否则会报如下错误: com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <172.0.0.120:10909> failed
https://www.cnblogs.com/stcweb/articles/15116551.html
docker-compose命令请在docker-compose.yml文件同目录下
集群启动后,集群各节点不能互相通信,需要设置linux内核转发
https://blog.csdn.net/qq_16605855/article/details/79476615
默认情况下,从容器发送到默认网桥的流量,并不会被转发到外部。要开启转发,需要改变两个设置。这些不是 Docker 命令,并且它们会影响 Docker 主机的内核。
这些设置在重新启动时失效,因此可能需要将它们添加到启动脚本中。
节点 宿主机端口:容器内端口
rmqnamesrv-a 9876:9876
rmqnamesrv-b 9877:9876
rmqbroker-a 10911:10911
rmqbroker-a-s 10912:10911
rmqbroker-b 10913:10911
rmqbroker-b-s 10914:10911
rmqconsole 6080:8080
rmqconsole: http://宿主机IP:6080
docker-compose安装RocketMQ集群
docker-compose安装RocketMQ集群
知识索引
- RocketMQ集群说明
- 基于docker-compose安装namesrv、rocketmq-console、broker
- rocketmq-console演示
1 集群说明
我们安装RocketMQ集群,这里为了演示效果,就安装2Master
结构,为了不受单机影响,先停掉单机版,再安装集群版。
停止单机版命令:
docker stop rmqadmin rmqbroker rmqnamesrv
安装集群版,需要为每个broker创建存储配置文件、日志、数据的目录,我们创建目录如下:
mkdir -p \\
/usr/local/server/rocketmq_cluster/data_namesrv/namesrv/logs \\
/usr/local/server/rocketmq_cluster/data_namesrv/namesrv/store \\
/usr/local/server/rocketmq_cluster/data1/broker/logs \\
/usr/local/server/rocketmq_cluster/data1/broker/store \\
/usr/local/server/rocketmq_cluster/conf1 \\
/usr/local/server/rocketmq_cluster/data2/broker/logs \\
/usr/local/server/rocketmq_cluster/data2/broker/store \\
/usr/local/server/rocketmq_cluster/conf2
2 集群配置
集群结构为2Master
,需要为每个节点配置一个broker.conf
配置文件。
在/usr/local/server/rocketmq_cluster/conf1
创建broker.conf
配置文件:
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = ItmentuCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-a
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
在/usr/local/server/rocketmq_cluster/conf2
创建broker.conf
配置文件:
# 所属集群名称,如果节点较多可以配置多个
brokerClusterName = ItmentuCluster
#broker名称,master和slave使用相同的名称,表明他们的主从关系
brokerName = broker-b
#0表示Master,大于0表示不同的slave
brokerId = 0
#表示几点做消息删除动作,默认是凌晨4点
deleteWhen = 04
#在磁盘上保留消息的时长,单位是小时
fileReservedTime = 48
#有三个值:SYNC_MASTER,ASYNC_MASTER,SLAVE;同步和异步表示Master和Slave之间同步数据的机制;
brokerRole = ASYNC_MASTER
#刷盘策略,取值为:ASYNC_FLUSH,SYNC_FLUSH表示同步刷盘和异步刷盘;SYNC_FLUSH消息写入磁盘后才返回成功状态,ASYNC_FLUSH不需要;
flushDiskType = ASYNC_FLUSH
3 RocketMQ集群搭建
集群安装我们采用docker-compose
方式安装,所以首先要确认你的系统已经安装了docker-compose
,
关于docker-compose
的安装,大家可以参考http://edu.secby.cn/node/view/1472115371169964034#a6124af3b6bcd5072900214f860651c0,这里不做演示了。
使用docker-compose
就可以避免一个一个组件单独安装,可以一次性把namesrv
、broker
、rocketmq-console
一次完成安装,只不过需要写docker-compose
脚本。
创建rocketmq.yml
,配置文件如下:
version: '3.8'
services:
#Service for nameserver
namesrv:
image: rocketmqinc/rocketmq:4.4.0
container_name: cluster_rmqnamesrv
ports:
- 9876:9876
volumes:
- /usr/local/server/rocketmq_cluster/data_namesrv/namesrv/logs:/root/logs
- /usr/local/server/rocketmq/data_namesrv/namesrv/store:/root/store
command: sh mqnamesrv
#Service for another broker -- broker1
broker1:
image: rocketmqinc/rocketmq:4.4.0
container_name: cluster_rmqbroker1
links:
- namesrv
ports:
- 10909:10909
- 10911:10911
- 10912:10912
environment:
- NAMESRV_ADDR=namesrv:9876
volumes:
- /usr/local/server/rocketmq_cluster/data1/broker/logs:/root/logs
- /usr/local/server/rocketmq_cluster/data1/broker/store:/root/store
- /usr/local/server/rocketmq_cluster/conf1/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
#Service for another broker -- broker2
broker2:
image: rocketmqinc/rocketmq:4.4.0
container_name: cluster_rmqbroker2
links:
- namesrv
ports:
- 10929:10909
- 10931:10911
- 10932:10912
environment:
- NAMESRV_ADDR=namesrv:9876
volumes:
- /usr/local/server/rocketmq_cluster/data2/broker/logs:/root/logs
- /usr/local/server/rocketmq_cluster/data2/broker/store:/root/store
- /usr/local/server/rocketmq_cluster/conf2/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq-4.4.0/conf/broker.conf
rmqconsole:
image: pangliang/rocketmq-console-ng
container_name: rmqconsole
ports:
- 7001:7001
environment:
JAVA_OPTS: "-Drocketmq.namesrv.addr=192.168.211.130:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false -Dserver.port=7001"
然后执行docker-compose -f rocketmq.yml up -d
就可以安装RocketMQ
集群了,安装效果如下:
4 控制台安装
rocketmq-console
安装其实在上面我们已经完成了,安装配置如下:
因为在安装broker
集群已经安装了rocketmq-console
,所有我们这里不需要再安装了,直接访问http://192.168.211.130:7001
即可,效果如下:
我们可以看到已经实现了2台服务集群。
以上是关于docker-compose部署rocketmq集群的主要内容,如果未能解决你的问题,请参考以下文章
Docker环境下使用docker-compose一键式搭建RocketMQ(4.5.0版本)集群及其管理工具(外网版)