【发布时间】:2011-06-18 17:35:33
【问题描述】:
我知道节点可以从 shell 启动。我正在寻找的是一种从模块内启动远程节点的方法。我已经搜索过,但什么也没找到。
感谢任何帮助。
【问题讨论】:
标签: networking erlang erlang-otp
我知道节点可以从 shell 启动。我正在寻找的是一种从模块内启动远程节点的方法。我已经搜索过,但什么也没找到。
感谢任何帮助。
【问题讨论】:
标签: networking erlang erlang-otp
有一个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 节点。
希望对您有所帮助。
【讨论】:
更底层的池是slave(3) 模块。 Pool 建立在 slave 的功能之上。
使用slave:start 启动一个新的从站。
您可能还应该在命令行中指定-rsh ssh。
因此,如果您需要它提供的那种功能,请使用 pool,如果您需要不同的东西,您可以自己从 slave 构建它。
【讨论】: