Erlang:以编程方式启动远程节点

Mul*_*vil 8 erlang networking erlang-otp

我知道可以从shell启动节点.我正在寻找的是一种从模块内启动远程节点的方法.我搜索过,但一直都找不到.

任何帮助表示赞赏.

Yas*_*aev 13

有一个pool(3)设施:

pool可用于将一组Erlang节点作为计算处理器池运行.它被组织为主节点和一组从节点.

pool:start/1,2开始一个新的游泳池..hosts.erlang读取该文件以查找可以启动池节点的主机名.从节点以启动slave:start/2,3,传递Name和(如果提供)启动 Args.Name用作节点名称的第一部分,Args用于指定命令行参数.

有了游泳池,您可以免费获得负载分配设施.

主节点可以这样启动:

erl -sname poolmaster -rsh ssh
Run Code Online (Sandbox Code Playgroud)

-rsh此处的密钥指定了rsh在远程主机上启动从属节点的替代方法.我们在这里使用SSH.确保您的盒子有可用的SSH密钥,您可以使用这些密钥对远程主机进行身份验证.

如果文件中没有主机.hosts.erlang,则不启动任何从属节点,并且可以slave:start/2,3根据需要使用手动传递参数来启动从属节点.

例如,您可以启动一个远程节点:

Arg = "-mnesia_dir " ++ M,
slave:start(H, Name, Arg).
Run Code Online (Sandbox Code Playgroud)

确保epmd(1)在远程复选框上启动并运行以启动Erlang节点.

希望有所帮助.


Pee*_*ger 11

这个池是slave(3)模块的低级别.池建立在slave的功能之上.

使用slave:start开始新的奴隶.

您可能还应该-rsh ssh在命令行上指定.

因此,如果您需要它提供的功能,请使用池,如果您需要不同的东西,您可以自己从奴隶构建它.