我知道节点可以从 shell 启动。我正在寻找的是一种从模块内启动远程节点的方法。我已经搜索过,但什么也没找到。
任何帮助表示赞赏。
有一个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 构建它。