环境信息
- EMQX 版本:5.0.0
- 操作系统及版本:Ubuntu 20.04
- 其他
问题描述
因业务需要,在尝试搭建EMQX集群方案
当前资源不够,所以是在Ubuntu中使用Docker手动创建3个emqx容器,尝试组成伪集群
3容器分别为:
emqx1,emqx2,emqx3
分别对应192.168.0.11/12/13
3个emqx容器挂载于同一个网桥下,彼此容器间通信正常
端口均区分,不冲突,Dashboard均可用
其他:
防火墙已关闭
但容器组成集群失败
配置文件及日志
容器间通信正常
容器
加入集群失败
为什么在你emqx2上ping emqx1时的IP是 0.10
但是你join 时看到的emqx1的IP是0.11
join 命令要用节点的全名称?
例如 emqx_ctl cluster join emqx1@192.168.0.10
应该是需要使用全名称
目前怀疑的地方是3个容器的4370,8001,5369节点应该冲突了,因为伪集群,且没有指定
因为你没发全部的docker配置,也看不出来,我给我祖传的docker compose 给你对比下,里面还加了ha。
只要改一下emqx具体的版本就能用。
docker-compose -f docker-compose-emqx-cluster.yaml up
docker-compose -f docker-compose-emqx-cluster.yaml down
docker.zip (16.0 KB)
1 个赞
感谢,我试下,我这边没有用yaml,单独创建的容器,参数如下:
第一台
docker run -d \
--hostname emqx1 \
--name emqx1 \
--network emqx_bridge \
--ip 192.168.0.10 \
-p 60001:1883 \
-p 60004:8083 \
-p 60010:8883 \
-p 60007:8084 \
-p 60016:18083 \
-p 60013:11883 \
-v /etc/localtime:/etc/localtime:ro emqx/emqx:latest
第二台
docker run -d \
--hostname emqx2 \
--name emqx2 \
--network emqx_bridge \
--ip 192.168.0.11 \
-p 60002:1883 \
-p 60005:8083 \
-p 60011:8883 \
-p 60008:8084 \
-p 60017:18083 \
-p 60014:11883 \
-v /etc/localtime:/etc/localtime:ro emqx/emqx:latest
第三台
类似,端口递增
还尝试过
第一台
-p 4370:4370
第二台
-p 4371:4371
实际加入集群时仍然报错
三台端口递增的方式是正确的,只不过运行起来的emqx的节点名可能冲突。
分别修改下emqx/etc/emqx.conf
里的
node.name =emqx@192.168.0.10
node.name =emqx@192.168.0.11
试试
你好,很荣幸看到你祖传的配置哈,这个对docker compose 不是很熟,有些配置好像很复杂,能否帮忙解读下各项配置和要修改的地方,学习借鉴下,有相关文章介绍吗
大佬,你这个是专门针对单节点伪集群的,有哪种“两个节点,每个节点多个emqx容器”的例子吗?