1

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

erlang:send 是否使用像 epmd 那样的单个端口?

4

1 回答 1

4

erlang:send不像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

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

于 2017-02-09T03:05:15.937 回答