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

时间:2016-10-22 06:36:22

标签: erlang distributed epmd

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

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

但是,如果我使用非默认EPMD端口启动其中一个,例如12345,而另一个使用默认EPMD端口,则不能 - 通过net_adm:ping / 1。

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

1 个答案:

答案 0 :(得分:1)

Erlang使用EPMD端口查找其他节点,因此所有服务器必须能够在此端口上相互通信。在Erlang集群中,所有节点都连接到网格中的所有其他节点。 Erlang epmd(erlang port mapper daemon)将使用两个端口,一个用于发现其他erlang节点(默认端口4369)和实际通信的动态范围。

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

另请注意,Epmd会跟踪哪个Erlang节点正在使用本地计算机上的哪些端口。如果要限制Erlang将用于Erlang间节点通信的端口范围(例如9100-9105),可以在app.config中添加以下行,设置内核变量“ inet_dist_listen_min '和' inet_dist_listen_max '。

示例:

{ kernel, [
              {inet_dist_listen_min, 9100},
              {inet_dist_listen_max, 9105}
             ]},

确保您设置的范围为群集中的所有节点提供了足够的端口。