【问题标题】:Erlang Node with non-Default EPMD port doesn't respond to ping anymore具有非默认 EPMD 端口的 Erlang 节点不再响应 ping
【发布时间】:2021-05-06 18:37:41
【问题描述】:

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

Ping 码:

net_adm:ping(TargetNode) --> pang

注意:我知道集群需要使用相同的EPMD端口才能在集群模式下工作。但到目前为止,节点还没有准备好连接到其他节点。它已经停止 ping 自身。另一方面,如果使用默认端口,一切正常。

似乎net_adm:ping(Host) 没有使用环境变量ERL_EPMD_PORT 进行ping,我说得对吗?或者问题出在哪里?

【问题讨论】:

    标签: erlang epmd


    【解决方案1】:
     $> 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 已正确构建。

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2011-11-12
      • 2011-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 2020-11-09
      • 1970-01-01
      相关资源
      最近更新 更多