You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在互通的Linux主机间连接两个Erlang节点?

嘿,这个问题我熟!既然两台Linux主机已经能正常互通,连接Erlang节点其实只需要几个关键步骤,我给你一步步说清楚:

连接两台Linux主机上的Erlang节点步骤

1. 先确保两台主机的Erlang版本一致

Erlang节点对版本兼容性要求很高,版本不一致大概率会连接失败。在两台主机的终端分别执行:

erl -version

确认输出的版本号完全匹配,比如都是Erlang/OTP 26 [erts-14.0.2]这种格式。

Erlang节点之间靠Cookie做身份验证,这是连接成功的核心前提!有两种设置方式:

方式一:临时设置(仅当前会话有效)

在主机A启动Erlang节点时直接指定Cookie:

erl -name node_a@192.168.137.1 -setcookie my_erlang_cookie

在主机B启动节点时用完全一样的Cookie:

erl -name node_b@192.168.137.2 -setcookie my_erlang_cookie

注意Cookie是区分大小写的,别写错字母!

方式二:永久设置(所有会话生效)

如果不想每次启动都输Cookie,可以修改Erlang的全局Cookie文件。两台主机都执行以下命令(确保文件权限是600,否则Erlang会拒绝使用):

# 写入Cookie内容,两台机器要完全一样
echo "my_erlang_cookie" > ~/.erlang.cookie
# 设置严格的文件权限
chmod 600 ~/.erlang.cookie

之后启动节点时只需要指定名称即可:

# 主机A
erl -name node_a@192.168.137.1

# 主机B
erl -name node_b@192.168.137.2

3. 发起连接并验证

现在在任意一个节点的Ershell里发起连接,比如在主机A的Ershell中执行:

net_adm:ping(node_b@192.168.137.2).

如果返回pong,说明连接成功!如果返回pang,可以排查这几个点:

  • 两台主机的防火墙有没有放行Erlang端口(默认用4369端口+随机高端口,临时关闭防火墙测试最快)
  • Cookie是否完全一致(包括大小写、空格)
  • 节点名称格式是否正确:必须是节点名@IP地址,如果用主机名的话,两台机器得能互相解析对方主机名(比如修改/etc/hosts)

4. 确认连接状态

连接成功后,你可以执行以下命令查看已连接的节点列表:

nodes().

比如在主机A上执行会返回[node_b@192.168.137.2]。

还可以跨节点执行命令测试连通性,比如在主机A调用主机B的命令:

rpc:call(node_b@192.168.137.2, os, cmd, ["hostname"]).

会返回主机B的主机名,证明跨节点调用正常。


内容的提问来源于stack exchange,提问作者aeon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:41:55