集群搭建的一些问题

环境信息

  • EMQX 版本:4.4.2 docker
  • 操作系统及版本:华为云&阿里云

问题描述

起因是想在2台不同的云服务器上部署 emqx docker,然后使用手动集群模式,但是一直无法成功。
然后就使用命令检测得出下面情况

没有指定 node.name 的情况下

emqx_ctl 命令提示started
emqx console 命令报错端口占用,实际没有占用

docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 -p 5370:5370 -p 5371:5371 -p 5372:5372 -p 4370:4370 -p 4371:4371 -p 4372:4372 emqx/emqx:4.4.2

没查到11883 端口被占用
image

指定 node.name 的情况下

EMQX_NODE_NAME=emqx1@实际的公网地址
emqx_ctl 命令提示 no responding for ping
emqx console 报端口占用

docker run -d --name emqx -e “EMQX_NODE_NAME=emqx1@xx.xx.xx.xx” -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 -p 5370:5370 -p 5371:5371 -p 5372:5372 -p 4370:4370 -p 4371:4371 -p 4372:4372 emqx/emqx:4.4.2

image

还有一个问题,用 docker 启动,一开始没指定 node.name, 那么默认的 node.name 是随机字符+ip。
然后我修改配置文件的 node.name,然后 restart,新的 node.name 没有生效。这个现象是正常的吗

不是正常现象,看起来是docker没有弄好,这个要查看一下docker的文档了

docker 内部是可以跟外部通信的。也能ping同主机ip。
想看日志,发现 log 目录下没日志,我也没挂载 log 目录。目前没头绪了

试用 docker log 命令,可以查找一下教程


docker logs 看到这个错误日志。

另外请问一下一个问题:

node name 指定设置为内网地址时执行: emqx_ctl status 正常

-e “EMQX_NAME=emqx” -e “EMQX_HOST=内网地址”

node name 指定设置为公网地址时执行: emqx_ctl status 不正常,
提示:Node ‘emqx@公网地址’ not responding to pings

-e “EMQX_NAME=emqx” -e “EMQX_HOST=公网地址”

针对这个情况,毫无头绪排查, icmp 协议,文档的端口全都开放了。

是按照自己能找到的网卡地址来区分的,不可以用公网地址,如果你一定要公网地址,需要让EMQX和公网网卡绑定而不是端口映射