2016-11-28 2 views
4

J'essaye de construire un cluster en utilisant des instances d'Amazon EC2. Dois-je définir le nom d'hôte de chaque noeud sur le fichier .hosts.erlang?nom d'hôte pour la création d'un cluster erlang

Actuellement, .hosts.erlang pour chaque nœud a:

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

qui sont le DNS privé de nœuds.

et dans le vm.args des noeuds, j'ai quelque chose comme ceci:

-name [email protected] 

J'ai essayé de changer le nom d'hôte à la dns privée complète, mais il seulement changé à:

ip-10-0-5-10

J'ai vérifié le cluster, j'ai vide:

$ 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(). 
[] 

Je déploie mon application en utilisant edliver, comment puis-je déboguer pourquoi erlang ne crée pas le cluster attendu?

J'ai essayé dans IEX:

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

modifier

Je peux confirmer que le .hosts.erlang peut être lu:

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"} 

est-il un dossier spécifique que je dois courir erl de?

Dans le navigateur, je peux voir l'application fonctionne normalement, mais je ne suis pas sûr du cluster .. s'il vous plaît aider!

Comme je suis en utilisant AWS, voici le groupe de sécurité Je suis en ce moment:

enter image description here

+0

(Vouliez-vous dire faire 'Path.expand ("~/.host/.erlang")' dans l'extrait IEX? Pourriez-vous aussi 'File.read' sur elle, juste pour confirmer?) – Dogbert

+0

s'il vous plaît voir modifier ci-dessus – simo

+0

Par le début Si vous utilisez un shell avec erl sans nom, vous lancez simplement un noeud local sans distribution. Quelle est la sortie lorsque vous exécutez 'mix edeliver ping production' (ou staging, dépend de l'environnement que vous testez) –

Répondre

1

Ok, j'ai trouvé la solution, je devais définir l'adresse IP de nœuds dans le fichier hosts à /etc/hosts de chaque noeud

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