我知道当两个erlang节点具有相同的cookie文件时,它们可以相互通信。我在我的LAN网络上测试过。但我想知道当这两个节点在两个不同的网络中时,这种通信是否可行? 如果是,我们如何命名这两个节点?
答案 0 :(得分: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