首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Erlang节点未能相互连接

Erlang节点未能相互连接
EN

Stack Overflow用户
提问于 2021-12-26 16:38:09
回答 1查看 158关注 0票数 1

第一。Erlang nodes failed to connectErlang - Nodes don't recognize是无用的。

我试过所有的方法。

同一台机器没问题。但它在机器之间失败了。

代码语言:javascript
运行
复制
test@centos-1:~$ ping apple@centos-1 -c 1
PING apple@centos-1 (192.168.142.135) 56(84) bytes of data.
64 bytes from apple@centos-1 (192.168.142.135): icmp_seq=1 ttl=64 time=0.036 ms

test@centos-1:~$ ping pear@centos-2 -c 1
PING pear@centos-2 (192.168.142.136) 56(84) bytes of data.
64 bytes from pear@centos-2 (192.168.142.136): icmp_seq=1 ttl=64 time=0.292 ms

apple@centos-1启动

代码语言:javascript
运行
复制
@centos-1:~$ erl -sname apple@centos_1 -kernel inet_dist_listen_min 6369 inet_dist_listen_max 7369 -setcookie CKYBWKWCWNLSPZWSLJXT
Erlang/OTP 24 [erts-12.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit]

Eshell V12.2  (abort with ^G)
(apple@centos_1)1>

梨@centos-2开始

代码语言:javascript
运行
复制
test@centos-2:~$ erl -sname pear@centos-2 -kernel inet_dist_listen_min 6369 inet_dist_listen_max 7369 -setcookie CKYBWKWCWNLSPZWSLJXT
Erlang/OTP 24 [erts-12.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit]

Eshell V12.2  (abort with ^G)
(pear@centos-2)1>

连接失败

代码语言:javascript
运行
复制
test@centos-1:~$ erl -sname apple@centos_1 -kernel inet_dist_listen_min 6369 inet_dist_listen_max 7369 -setcookie CKYBWKWCWNLSPZWSLJXT
Erlang/OTP 24 [erts-12.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit]

Eshell V12.2  (abort with ^G)
(apple@centos_1)1> net
net           net_adm       net_kernel
(apple@centos_1)1> net_kernel:connect_node('pear@centos-2').
false
(apple@centos_1)2>

我检查了我发现的所有情况

主机文件

代码语言:javascript
运行
复制
192.168.142.135  apple@centos-1
192.168.142.136  pear@centos-2

饼干

他们有同样的饼干。

防火墙

代码语言:javascript
运行
复制
firewall-cmd --add-port=6000-8000/tcp --permanent

tcpdump

没有任何包裹。

EN

Stack Overflow用户

发布于 2021-12-27 17:01:19

Linux不负责服务名称,因此这个ping应该失败:

test@centos-1:~$ ping apple@centos-1 -c 1

这个linux应该成功:

test@centos-1:~$ ping centos-1 -c 1

Erlang示例经常使用称为ping/pong的函数,这些函数将使用epmd并使用@ synax。

如果域设置正确(虽然注释'-‘和'_’不一样),这看起来很好:

@centos-1:~$ erl -sname apple@centos-1 -kernel inet_dist_listen_min 6369 inet_dist_listen_max 7369 -setcookie CKYBWKWCWNLSPZWSLJXT Erlang/OTP 24 [erts-12.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit]

主持人只是:

代码语言:javascript
运行
复制
192.168.142.135  centos-1
192.168.142.136  centos-2

因此,您设置的pear@centos-2类行不会被erl使用。您可以使用不同的名称运行任意多个erl shell,而不需要更新主机。

一旦该设置正常工作,如果您查看/etc/rupv.conf,您应该有一个域,并且在这两台机器上都应该是相同的。如果是,您可以尝试向主机添加一个别名,如下所示:

代码语言:javascript
运行
复制
192.168.142.135  centos-1 centos-1.example.com
192.168.142.136  centos-2 centos-2.example.com

尽管理想情况下,resolv.conf中的设置是本地dns服务器,它设置了这个命名,所以centos-1.example.com和centos-2.example.com已经可以相互平分了。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70488097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档