在erlang中,不同网络中的两个节点可以相互通信吗?

时间:2013-08-16 10:50:22

标签: erlang

我知道当两个erlang节点具有相同的cookie文件时,它们可以相互通信。我在我的LAN网络上测试过。但我想知道当这两个节点在两个不同的网络中时,这种通信是否可行? 如果是,我们如何命名这两个节点?

1 个答案:

答案 0 :(得分:2)

只要没有防火墙阻止通信,这样就可以正常工作。您需要访问epmd的端口4369以及Erlang节点选择的端口。可以使用inet_dist_listen_mininet_dist_listen_max内核参数来选择后者的范围。

启动节点时,请使用-name代替-sname来指定名称。区别在于-name使用完全限定的主机名或IP地址,而-sname使用本地主机名。

您只能提供一个节点名称,例如-name mynode,在这种情况下,Erlang节点将尝试找出要使用的主机名,或者您可以明确地给出主机名,例如: -name mynode@myhost.example.com-name mynode@10.2.3.4。如果使用主机名,则所有节点都需要能够通过/etc/hosts或DNS解析主机名。

所以启动节点的命令看起来像这样:

erl -name mynode@10.2.3.4 -kernel inet_dist_listen_min 42000 inet_dist_listen_max 43000