2010-09-12 8 views
2

Problème de connexion de 2 nœuds fonctionnant sur des boîtiers séparés. Je ai essayé de assurez-vous qu'il n'y a pas de problèmes habituels avec la synchronisation des cookies, DNS ou pare-feu.Problème de connectivité d'un nœud Erlang

D'abord, je cours epmd en mode débogage tel que recommandé par Erlang docs:

epmd -d -d

ensuite sur la boîte # 1:
ERL -nom [email protected] -kernel inet_dist_listen_min 6000 inet_dist_listen_max 6050 -setcookie TestCookie

et sur la boîte # 2:
ERL -nom xmpp2 @ serveur 2.net -kernel inet_dist_listen_min 6000 inet_dist_listen_max 6050 -setcookie testcookie

Pas de chance avec ping. Par exemple, sur la boîte # 2:

Erlang (BEAM) emulator version 5.6.4 [source] [64-bit] [smp:4] [async-threads:0] [kernel-poll:false] Eshell V5.6.4 (abort with ^G)
([email protected])1> net_adm:ping('[email protected]').
pang

epmd sur les émissions de server1.net suivantes:

epmd: Sun Sep 12 01:40:32 2010: opening connection on file descriptor 6
epmd: Sun Sep 12 01:40:32 2010: got 8 bytes
***** 00000000 00 06 7a 78 6d 70 70 31 |..zxmpp1|
epmd: Sun Sep 12 01:40:32 2010: ** got PORT2_REQ
epmd: Sun Sep 12 01:40:32 2010: got 18 bytes
***** 00000000 77 00 17 70 4d 00 00 05 00 05 00 05 78 6d 70 70 |w..pM.......xmpp|
***** 00000010 31 00 |1.|
epmd: Sun Sep 12 01:40:32 2010: ** sent PORT2_RESP (ok) for "xmpp1"
epmd: Sun Sep 12 01:40:32 2010: closing connection on file descriptor 6

dire, semble recevoir requête ping du deuxième noeud et répondre avec ok.

tshark écoute sur le port EPMD (TCP 4369) donne (I remplacé les adresses IP réelles avec des noms de serveur):

1 0.000000 server2.net -> server1.net TCP 43809 > epmd [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SACK_PERM=1 TSV=776213773 TSER=0 WS=5
2 0.000433 server1.net -> server2.net TCP epmd > 43809 [SYN, ACK] Seq=0 Ack=1 Win=5792 Len=0 MSS=1460 SACK_PERM=1 TSV=1595930818 TSER=776213773 WS=6
3 0.000483 server2.net -> server1.net TCP 43809 > epmd [ACK] Seq=1 Ack=1 Win=5856 Len=0 TSV=776213773 TSER=1595930818
4 0.000545 server2.net -> server1.net EPMD 43809 > epmd [PSH, ACK] Seq=1 Ack=1 Win=5856 Len=8 TSV=776213773 TSER=1595930818
5 0.001445 server1.net -> server2.net TCP epmd > 43809 [ACK] Seq=1 Ack=9 Win=5824 Len=0 TSV=1595930818 TSER=776213773
6 0.001466 server1.net -> server2.net EPMD epmd > 43809 [PSH, ACK] Seq=1 Ack=9 Win=5824 Len=18 TSV=1595930818 TSER=776213773
7 0.001474 server2.net -> server1.net TCP 43809 > epmd [ACK] Seq=9 Ack=19 Win=5856 Len=0 TSV=776213773 TSER=1595930818
8 0.001481 server1.net -> server2.net TCP epmd > 43809 [FIN, ACK] Seq=19 Ack=9 Win=5824 Len=0 TSV=1595930818 TSER=776213773
9 0.001623 server2.net -> server1.net TCP 43809 > epmd [FIN, ACK] Seq=9 Ack=20 Win=5856 Len=0 TSV=776213773 TSER=1595930818
10 0.001990 server1.net -> server2.net TCP epmd > 43809 [ACK] Seq=20 Ack=10 Win=5824 Len=0 TSV=1595930818 TSER=776213773

Il me semble qu'il n'y a pas de problèmes de pare-feu, comme des instances EPMD parlent l'un à l'autre. Qu'est-ce que je rate?

Votre avis est grandement apprécié!

Meilleures salutations, Boris

Répondre

0

se révèle être un problème de pare-feu. Un grand merci à Michael Santos qui m'a montré la bonne direction. Consultez sa réponse here.

0

Je suis aussi un débutant à Erlang

Mes premières expériences ont été avec une liaison adresse IP absolue.

  1. Erl -nom [email protected] -setcookie thusismadness
  2. Erl -nom [email protected] -setcookie thusismadness

Si vous connectez sur Internet assurez-vous que vous ouvrez des ports spécifiés inet_dist_listen_min & inet_dist_listen_max dans votre routeur (port d'application) + port epmd.

Serveur1 -> ports Router1 ouverts pour EPMD & port app Server2 -> ports ROUTEUR2 ouverts pour EPMD & port app S'il vous plaît se lier sur l'adresse IP avant d'utiliser l'espace de noms.