Erlang:如何编程启动远程节点

9
我知道节点可以从shell中启动。我正在寻找的是一种从模块内部启动远程节点的方法。我已经搜索了,但没有找到任何内容。
非常感谢您的帮助。
2个回答

13

有一个pool(3)功能:

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

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

使用pool可以获得免费的负载均衡功能。

可以通过以下方式启动主节点:

erl -sname poolmaster -rsh ssh

这里的键-rsh指定了在远程主机上启动从节点时的替代方式,我们使用SSH。请确保您的机器具有可用的SSH密钥,并且可以使用这些密钥验证到远程主机。

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

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

Arg = "-mnesia_dir " ++ M,
slave:start(H, Name, Arg).

为了启动Erlang节点,请确保远程计算机上正在运行epmd(1)

希望能帮到你。


11

比连接池更底层的一个模块是slave(3)。连接池是在slave的功能基础上构建。

使用slave:start启动新的slave。

你可能还需要在命令行上指定-rsh ssh

如果你需要连接池提供的这种功能,就使用它,否则你可以通过slave自己构建不同的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接