2016-11-28 17 views
4

我正在尝试使用amazon EC2实例构建集群。用于创建erlang集群的主机名

是否必须将每个节点的主机名设置为.hosts.erlang文件中列出的内容?

目前,.hosts.erlang每个节点有:

'ip-10-0-23-186.eu-central-1.compute.internal'. 
'ip-10-0-5-10.eu-central-1.compute.internal'. 

这是节点的私有DNS。

,并在节点的vm.args,我有这样的事情:

-name [email protected] 

我试图将主机名更改为全独立DNS,但它只能改为:

ip-10-0-5-10

我检查了簇,空了:

$ erl 
Erlang/OTP 19 [erts-8.0] [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false] 

Eshell V8.0 (abort with ^G) 
1> nodes(). 
[] 

我使用edliver部署我的应用程序,我如何调试erlang为什么不创建预期的集群?

我试着在IEX:

iex(3)> hosts_path = Path.expand("/home/admin/.hosts.erlang") 
"/home/admin/.hosts.erlang" 
iex(4)> :net_adm.world(:verbose) 
[] 

编辑

我可以证实,.hosts.erlang可以读取:

iex(2)> File.read("/home/admin/.hosts.erlang") 
{:ok, 
"'ip-10-0-23-186.eu-central-1.compute.internal'.\n'ip-10-0-5-10.eu-central-1.compute.internal'.\n\n"} 

是没有办法,我要运行一个特定的文件夹erl来自?

在浏览器中,我可以看到应用程序正常工作,但我不知道有关群集..请帮助!

由于我使用AWS,这里是安全组我对目前:

enter image description here

+0

(你的意思是做'Path.expand( “〜/ .hosts/.erlang”)'在IEX段?你能不能也做'File.read'就可以了,只是以确认?) – Dogbert

+0

请参阅上面的编辑 – simo

+0

按开始用erl命名一个没有名字的shell,你只是启动一个没有发布的本地节点。当您运行'mix edeliver ping production'(或分段,取决于您正在测试的环境)时,输出是什么? –

回答

1

好吧,我找到了解决办法,我只好来定义的主机节点的IP地址的文件每个节点的/etc/hosts

10.0.23.186 ip-10-0-23-186.eu-central-1.compute.internal 
10.0.5.10 ip-10-0-5-10.eu-central-1.compute.internal