假设有2台主机的IP分别为192.168.1.11和192.168.1.12。
如果我用默认的EPMD端口4369启动两个Erlang分布式节点(例如: abc@192.168.1.11和def@192.168.1.12),在net_adm:ping/1之后,它们可以正常连接。
但是如果我用非默认的EPMD端口启动其中一个,例如12345,而用默认的EPMD端口启动另一个,它们就不能-通过net_adm:ping/1。
在这种情况下我应该怎么做?
发布于 2016-10-22 17:38:06
Erlang使用EPMD端口查找其他节点,因此所有服务器都必须能够在此端口上相互通信。在Erlang集群中,所有节点都连接到网格中的所有其他节点。Erlang epmd (erlang端口映射器守护进程)将使用两个端口,一个用于发现其他erlang节点(默认端口4369),动态范围用于实际通信。
对于侦听,群集中的所有节点必须使用相同的EPMD端口号。
还要注意,Epmd会跟踪哪个Erlang节点正在使用本地计算机上的哪些端口。如果希望将Erlang用于Erlang节点间通信的端口范围限制为9100-9105,可以将以下行添加到设置内核变量'inet_dist_listen_min‘和'inet_dist_listen_max'.的app.config中
示例:
{ kernel, [
{inet_dist_listen_min, 9100},
{inet_dist_listen_max, 9105}
]},请确保您设置的范围为集群中的所有节点提供了足够的端口。
https://stackoverflow.com/questions/40189097
复制相似问题