簡體   English   中英

在Elixir / Erlang中,哪個端口用於`Node.connect`?

[英]In Elixir/Erlang, which port is used for `Node.connect`?

可以使用以下方法通過iex初始化Elixir節點:

iex --sname node1@10.99.1.50 --cookie foo

然后另一個可以使用以下命令在REPL中連接此節點:

Node.connect(:"node1@10.99.1.50")

似乎連接是通過TCP協議。 但是,我沒有在文檔中找到一個參數來指定使用哪個端口。 有沒有人對此有任何想法?

連接節點由Erlang端口映射守護程序(epmd)處理,該守護程序默認在端口4369上運行。 從文檔:

可以指定不同的端口以允許表示獨立節點集群的epmd的多個實例在同一主機上共存。 群集中的所有節點都必須使用相同的epmd端口號。

實際節點打開一個隨機(?)端口,並將其及其sname通知給本地epmd 當您現在連接到'node1@10.99.1.50' ,您的Erlang VM將詢問端口4369上10.99.1.50上運行的遠程epmd ,以獲取有關'node1' 它將回答您的進程直接連接到的實際端口號。

根據這篇文章, Erlang Distribution Erlang在TCP上使用端口4369。 該帖子有關於此的更多信息。

對於防火牆:Erlang發行版使用端口4369用於epmd以及每個節點的隨機端口。 您可以使用Erlang內核應用程序環境設置inet_dist_listen_min和inet_dist_listen_max來限制這些隨機端口的范圍。 您需要允許這些端口上的傳入TCP連接 ,但僅允許來自群集的其他主機。

您可能也對此感興趣: Chris McCoord就此問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM