2016-11-28 143 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