【发布时间】:2013-08-18 18:11:52
【问题描述】:
我知道,当两个 erlang 节点具有相同的 cookie 文件时,它们可以相互通信。我已经在我的 LAN 网络上进行了测试。但是我想知道当这两个节点在两个不同的网络中时是否可以进行这种通信? 如果是,我们将如何命名这两个节点??
【问题讨论】:
标签: erlang
我知道,当两个 erlang 节点具有相同的 cookie 文件时,它们可以相互通信。我已经在我的 LAN 网络上进行了测试。但是我想知道当这两个节点在两个不同的网络中时是否可以进行这种通信? 如果是,我们将如何命名这两个节点??
【问题讨论】:
标签: erlang
只要没有防火墙阻止通信,就可以正常工作。您需要访问 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
【讨论】: