Erlang EPMD使用非默认EPMD端口连接到其他主机

Erlang EPMD使用非默认EPMD端口连接到其他主机,erlang,distributed,epmd,Erlang,Distributed,Epmd,假设有两台主机的IP为192.168.1.11和192.168.1.12 如果启动2个Erlang分布式节点(例如:abc@192.168.1.11及def@192.168.1.12)使用默认的EPMD端口4369,它们可以在net_adm:ping/1后正常连接 但是,如果我使用非默认的EPMD端口(例如12345)启动其中一个,而使用默认的EPMD端口启动另一个,则它们无法通过net_adm:ping/1启动 在这种情况下我应该怎么做?Erlang使用EPMD端口查找其他节点,因此所有服务器

假设有两台主机的IP为192.168.1.11和192.168.1.12

如果启动2个Erlang分布式节点(例如:abc@192.168.1.11及def@192.168.1.12)使用默认的EPMD端口4369,它们可以在net_adm:ping/1后正常连接

但是,如果我使用非默认的EPMD端口(例如12345)启动其中一个,而使用默认的EPMD端口启动另一个,则它们无法通过net_adm:ping/1启动


在这种情况下我应该怎么做?

Erlang使用EPMD端口查找其他节点,因此所有服务器必须能够在此端口上相互通信。在Erlang集群中,所有节点都连接到网格中的所有其他节点。Erlang epmd(Erlang端口映射程序守护进程)将使用两个端口,一个用于发现其他Erlang节点(默认端口4399),另一个用于实际通信的动态范围

群集中的所有节点都必须使用相同的epmd端口号进行侦听

另外,请注意,Epmd跟踪哪个Erlang节点正在使用本地计算机上的哪些端口。如果要将Erlang用于Erlang节点间通信的端口范围限制为9100-9105,可以在app.config设置内核变量“inet\u dist\u listen\u min”和“inet\u dist\u listen\u max”中添加以下行

示例:

{ kernel, [
              {inet_dist_listen_min, 9100},
              {inet_dist_listen_max, 9105}
             ]},
确保设置的范围为群集中的所有节点提供足够的端口