分布式Erlang:了解远程主机和启动功能

时间:2012-06-13 15:56:20

标签: erlang distributed-computing

我正在尝试实现一个非常简单的示例,以便首先了解分布式Erlang 。所以,我在同一台机器上启动两个节点:

erl -sname dilbert
erl -sname dogbert

任务是dogbert使用节点dilbert上的简单Hello, World!使fun () -> io:format("Hello, World!") end输出dilbert。我认为使用dogbert的shell会很容易:

(dogbert@centraldogma.fubar)1> spawn(dilbert, fun () -> io:format("HELLO!") end).
<0.39.0>

=ERROR REPORT==== 13-Jun-2012::17:49:04 ===
** Can not start erlang:apply,[#Fun<erl_eval.20.82930912>,[]] on dilbert **

在同一个shell中,使用nodes().输出[]。好吧,dogbert显然不知道dilbert,但为什么会这样呢?或者,如何让分布式erlang中的节点相互了解?

1 个答案:

答案 0 :(得分:4)

有两个问题:

  1. 您必须为两个节点设置一个公共cookie,以便它们可以进行交互。

    erl -sname dilbert -setcookie pointyhairedboss
    erl -sname dogbert -setcookie pointyhairedboss

  2. 您必须指定要连接的节点的主机名。 spawn('dogbert @ yourhostname',fun() - &gt; io:format(“HELLO!”)end)。