具有非默认EPMD端口的Erlang节点不再响应ping

ttygqcqt  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(138)

如果我启动我的单节点应用程序,ping在默认的EPMD端口4369上会成功。如果我现在将带有ERL_EPMD_PORT: 44370的端口更改为其他端口,我将无法再连接到它。EPMD正在侦听44370。经过一些调试后,我发现由于pang处理,以下ping代码会停止我的应用程序。我在这里排除了pong。
Ping代码:

net_adm:ping(TargetNode) --> pang

注意:我知道群集需要使用相同的EPMD端口才能在群集模式下工作。但我还不知道节点是否已准备好连接到其他节点。它已经在ping自己时停止。另一方面,如果使用默认端口,一切都工作正常。
看起来net_adm:ping(Host)没有使用env变量ERL_EPMD_PORT来ping,我说的对吗?或者问题出在哪里?

wh6knrhe

wh6knrhe1#

$> epmd &     
[1] 10257
 $> epmd -names
epmd: up and running on port 4369 with data:
 $> fg
[1]  + 10257 running    epmd
^C
 $> epmd -port 44370 &    
[1] 10473
 $> epmd -names       
epmd: Cannot connect to local epmd
 $> export ERL_EPMD_PORT=44370
 $> epmd -names               
epmd: up and running on port 44370 with data:
 $> erl -sname client1@localhost                  
Erlang/OTP 23 [erts-11.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]

Eshell V11.1  (abort with ^G)
(client1@localhost)1> net_adm:ping(node()).
pong
(client1@localhost)2>

我将验证本地的epmd是否确实在侦听该端口(在Linux中,可以使用ssss -punta | grep 44370)并且正确构建了TargetNode

相关问题