Erlang:以编程方式启动远程节点
Posted
技术标签:
【中文标题】Erlang:以编程方式启动远程节点【英文标题】:Erlang: starting a remote node programmatically 【发布时间】:2011-06-18 17:35:33 【问题描述】:我知道节点可以从 shell 启动。我正在寻找的是一种从模块内启动远程节点的方法。我已经搜索过,但什么也没找到。
感谢任何帮助。
【问题讨论】:
【参考方案1】:有一个pool(3)
设施:
pool 可以用来运行一组 Erlang 节点作为一个池 计算处理器。它是 组织为一个主人和一组 从节点..
pool:start/1,2
启动一个新池。 文件.hosts.erlang
被读取到 查找池节点所在的主机名 可以启动。从节点是 以slave:start/2,3
开头, 传递Name
,如果提供,Args
。Name
用作第一个 部分节点名称,使用Args
指定命令行参数。
使用池,您可以免费获得负载分配设施。
主节点可以这样启动:
erl -sname poolmaster -rsh ssh
此处的密钥-rsh
指定了rsh
的替代方法,用于在远程主机上启动从节点。我们在这里使用了 SSH。确保您的机器具有有效的 SSH 密钥,并且您可以使用这些密钥对远程主机进行身份验证。
如果文件.hosts.erlang
中没有主机,则不启动从节点,如果需要,您可以使用slave:start/2,3
手动启动从节点并传递参数。
例如,您可以启动一个远程节点:
Arg = "-mnesia_dir " ++ M,
slave:start(H, Name, Arg).
确保epmd(1)
在远程机器上启动并运行,以便启动 Erlang 节点。
希望对您有所帮助。
【讨论】:
【参考方案2】:更底层的池是slave(3) 模块。 Pool 建立在 slave 的功能之上。
使用slave:start
启动一个新的从站。
您可能还应该在命令行中指定-rsh ssh
。
因此,如果您需要它提供的那种功能,请使用 pool,如果您需要不同的东西,您可以自己从 slave 构建它。
【讨论】:
以上是关于Erlang:以编程方式启动远程节点的主要内容,如果未能解决你的问题,请参考以下文章