修改端口后无法使用命令行Node 'nodeB@175.178.160.222' not responding to pings.

2台公网上的docker,想组成一个集群,由于机器特殊,只能开放8000~9000的端口,所以需要修改emqx的各种端口配置,以下是docker的命令

[root@I emqx]# docker run -d --name emqx \
--restart=always \
-p 8370:8370 \
-p 8369:8369 \
-p 8883:8883 \
-p 8884:8884 \
-p 8083:8083 \
-p 8084:8084 \
-p 8783:18083 \
-v /data/emqx/etc:/opt/emqx/etc \
-v /data/emqx/data:/opt/emqx/data \
-v /data/emqx/log:/opt/emqx/log \
-e EMQX_NODE_NAME="nodeB@175.178.160.222" \
-e EMQX_CLUSTER__DISCOVERY_STRATEGY=static \
-e EMQX_CLUSTER__STATIC__SEEDS="[nodeA@111.29.61.111, nodeB@175.178.160.222]" \
emqx/emqx:5.3.0

配置文件

node {
  cookie = "xxxxxxxxxxxxxx"
  data_dir = "data"
}

cluster {
  name = emqxcl
  discovery_strategy = static
static {
        seeds = ["nodeA@111.29.61.111", "nodeB@175.178.160.222"]
    }
}
rpc {
  port_discovery = manual 
  tcp_server_port = 8370
  ssl_server_port = 8369
}
listeners.tcp.default {
  bind = 8883
}
listeners.ssl.default{
  bind = 8884
}
listeners.ws.default{
  bind = 8083
}
listeners.wss.default{
  bind = 8084
}
dashboard {
    listeners.http {
        bind = 18083
    }
}

运行 emqx ctl status 报错,运行任何命令都报错,是端口还有端口没改吗,还是配置有问题吗

emqx@f735b522126b:/opt/emqx/etc$ emqx ctl status
Node 'nodeB@175.178.160.222' not responding to pings.

你的EMQX版本是多少?

emqx/emqx:5.3.0

我发现配置了node.name为公网地址就报错,不配置就是docke的地址,就没问题,但是2台机器内网不同,需要name的host为公网地址,是不是少开什么端口了


docker中有办法修改吗

你可以试试看做一个从公网ip到内网ip的端口映射

是不是需要开放4370端口

这个等工作日详细回复你。

按我印象里,EMQX 的 Node Name 只能配置为宿主机(这里是容器)的 IP和 Hostname 的(要么改 /etc/hosts) 应该是没办法在容器里面使用宿主机的外网地址的。

另外 EMQX 不推荐公网集群,最多只能做到 Core 节点和 Replicant 进行跨区域,即 Core 节点通过内网集群,Relicant 节点部署在其它地域,并链接到 Core 节点集群。

配置方法可以邀请 @yanzhi.zhang 解答

ok

@starries 请问你从一台机器可以连通另外一台机器的公网IP的4370端口吗?我们之前部署过core和replicant节点在不同的区域的集群,但是也是通过内网IP组网连接的,所以不存在端口被防火墙block的问题

开不了这个端口,只能8000~9000是开放的。

4370这个端口应该是不可以修改的,在配置文件里面没有相关的配置项,如果跨防火墙组网的话是不是试一下VPN?