我知道当两个 erlang 节点具有相同的 cookie 文件时,它们可以相互通信。我已经在我的 LAN 网络上进行了测试。但是我想知道当这两个节点在两个不同的网络中时是否可以进行这种通信?如果是,我们将如何命名这两个节点?
问问题
565 次
1 回答
2
只要没有防火墙阻止通信,它就可以正常工作。您需要访问 epmd 的端口 4369,以及 Erlang 节点选择的端口。后者的范围可以使用inet_dist_listen_min
和inet_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
于 2013-08-16T11:27:12.797 回答