在erlang中向远程节点端口发送消息

时间:2017-02-09 02:38:32

标签: erlang rpc epmd

在两个远程节点之间发送消息时。

erlang:send会使用像epmd那样的单个端口吗?

1 个答案:

答案 0 :(得分:3)

erlang:发送使用像epmd那样的单个端口。 Erlang使用EPMD端口查找其他节点,因此所有服务器必须能够在此端口上相互通信。在Erlang集群中,所有节点都连接到网格中的所有其他节点。 Erlang epmd将使用两个端口,一个用于发现其他erlang节点(默认端口4369)和实际通信的动态范围。

群集中的所有节点必须使用相同的epmd端口号进行监听

另请注意,Epmd会跟踪哪个Erlang节点正在使用本地计算机上的哪些端口。如果要限制Erlang将用于Erlang间节点通信的端口范围(例如9100-9105),可以在app.config中添加以下行,设置内核变量“ inet_dist_listen_min '和' inet_dist_listen_max '。

示例:

{ kernel, [
              {inet_dist_listen_min, 9100},
              {inet_dist_listen_max, 9105}
             ]},

或者在使用内核变量“ inet_dist_listen_min ”和“ inet_dist_listen_max ”启动erlang节点时。

<强> 实施例

erl -sname foo -kernel inet_dist_listen_min 9100 inet_dist_listen_max 9105

确保您设置的范围为群集中的所有节点提供了足够的端口。