2010-09-12 101 views
2

正在連接運行在不同盒子上的2個節點。試圖 請確保沒有通常的問題與Cookie同步, DNS或防火牆。Erlang節點連接問題

首先,我在調試模式下運行的EPMD所推薦二郎文檔:

EPMD -d -d

然後在對話框#1:
ERL -name [email protected] -kernel inet_dist_listen_min 6000 inet_dist_listen_max 6050 -setcookie testcookie

和箱#2:
ERL -name xmpp2 @服務器2.net -kernel inet_dist_listen_min 6000 inet_dist_listen_max 6050 -setcookie testcookie

ping不行。例如,在框#2:server1.net節目

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以下:

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

即,似乎從第二節點接收ping請求,然後按OK響應。

tshark的聽EPMD端口(TCP 4369)上給出如下(我替換服務器名真正的IP地址):

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

所以在我看來,沒有防火牆問題,作爲EPMD實例說話對彼此。我錯過了什麼?

您的建議非常感謝!

最好的問候, 鮑里斯

回答

0

可謂是防火牆的問題。非常感謝邁克爾桑托斯向我展示了正確的方向。看看他的回答here

0

我也是新手二郎神

我的頭幾個實驗用約束力的絕對IP地址。

  1. Erl的-name [email protected] -setcookie thusismadness
  2. Erl的-name [email protected] -setcookie thusismadness

如果要連接互聯網請確保您指定的開放口岸in inet_dist_listen_min & inet_dist_listen_max在您的路由器(app端口)+ epmd端口中。

服務器1 - >路由器1的端口開放情況下的EPMD &應用端口 Server2上 - >路由器2端口開放EPMD &應用端口 請在IP地址首先使用命名空間之前綁定。