Han*_*Sun 11 erlang elixir erlang-otp
可以使用以下方法通过iex初始化Elixir节点:
iex --sname node1@10.99.1.50 --cookie foo
Run Code Online (Sandbox Code Playgroud)
然后另一个可以使用以下命令在REPL中连接此节点:
Node.connect(:"node1@10.99.1.50")
Run Code Online (Sandbox Code Playgroud)
似乎连接是通过TCP协议.但是,我没有在文档中找到一个参数来指定使用哪个端口.有没有人对此有任何想法?
连接节点由Erlang端口映射守护程序(epmd)处理,该守护程序默认在端口4369上运行.从文档:
可以指定不同的端口以允许表示独立节点集群的epmd的多个实例在同一主机上共存.群集中的所有节点都必须使用相同的epmd端口号.
实际节点打开一个随机(?)端口,并将其sname与本地一起通知epmd.当您现在连接到时'node1@10.99.1.50',您的Erlang VM将询问远程epmd运行在10.99.1.504369端口上的信息'node1'.它将回答您的进程直接连接到的实际端口号.
根据这篇文章,Erlang Distribution Erlang在TCP上使用端口4369.该帖子有关于此的更多信息.
对于防火墙:Erlang发行版使用端口4369用于epmd以及每个节点的随机端口.您可以使用Erlang内核应用程序环境设置inet_dist_listen_min和inet_dist_listen_max来限制这些随机端口的范围.您将需要允许这些端口上的传入TCP连接,但仅允许来自群集的其他主机.
您可能也对此感兴趣:Chris McCoord就此问题
| 归档时间: |
|
| 查看次数: |
1492 次 |
| 最近记录: |