连接到远程节点时,Erlang Observer崩溃

时间:2013-11-15 20:58:42

标签: erlang distributed

我已经使用rebar创建了一个简单的erlang版本,遵循本教程:http://www.metabrew.com/article/erlang-rebar-tutorial-generating-releases-upgrades

我可以通过转到dummynode / bin文件夹并运行来安装和启动dummynode:

dummynode install
dummynode start

在vm.args文件中,我将节点名称设置为dummynode@192.168.1.129

当我用:

启动另一个节点时
erl -name cole@192.168.1.129 -setcookie dummynode

然后我可以启动erlang观察者。在“节点”菜单中,我看到列出了dummynode节点,但是当我尝试连接时,观察者崩溃了。

我无法对崩溃转储文件做出正面或反面,但似乎erlang抱怨未启用分发。

我无法使用net_adm连接节点:ping / 1并且无法弄清楚为什么观察者至少能够看到分离的dummynode节点。

任何人都可以解释我如何连接到dummynode节点吗?

更新:我已确认两个节点上的Cookie相同。此外,AFAICT螺纹钢包装观察者及其所有依赖性都在发布中。

3 个答案:

答案 0 :(得分:0)

如果无法连接net_adm:ping / 1检查两个节点是否具有相同的cookie(erlang:get_cookie / 0)。

2个节点必须具有相同的cookie才能形成分布式系统,但观察者可以向您显示至少所有计算机上存在的节点,即使它们没有samme cookie。

答案 1 :(得分:0)

Observer需要在远程节点上安装一些模块才能运行。如果不在那里出现,它会无声地崩溃。我不记得它是哪些,所以你必须进行实验,所以在目标发行版中添加一些应用程序需求。

答案 2 :(得分:0)

神秘解决了!它既不是cookie也不是依赖问题。生成的vm.args文件有一行:

-name dummynode@127.0.0.1

如果我将节点名称更改为

,那么您认为这意味着什么

-name mynode@mydomain.com

然后钢筋将使用标志启动运行时:

erl -name mynode@mydomain.com

事实并非如此。事实证明,即使您调整节点名称,rebar 始终也会使用-sname标志调用运行时(至少在Windows上)。如果要跨物理机分布集群(使用带有-name标志的长名称),则需要编辑生成的bin\dummynode.cmd文件,并将所有-sname标志更改为{{ 1}}。

我向螺纹钢团队提出了一个问题,但我不知道他们是否认为这是一个错误。