我已经使用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螺纹钢包装观察者及其所有依赖性都在发布中。
答案 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}}。
我向螺纹钢团队提出了一个问题,但我不知道他们是否认为这是一个错误。