2016-10-22 3 views
0

IPが192.168.1.11と192.168.1.12の2つのホストがあるとします。Erlang EPMDはデフォルト以外のEPMDポートを持つ他のホストに接続します

デフォルトのEPMDポート4369を使用して2つのErlang分散ノード(たとえば、[email protected]および[email protected])を起動すると、net_adm:ping/1の後で正常に接続できます。

しかし、デフォルト以外のEPMDポート(たとえば12345)とデフォルトのEPMDポートを使用してそれらのいずれかを起動すると、net_adm:ping/1経由で接続できなくなります。

この場合、どうすればよいですか?

答えて

1

ErlangはEPMDポートを使用して他のノードを検索します。したがって、すべてのサーバーはこのポートで互いに話すことができる必要があります。アーラン・クラスタでは、すべてのノードがメッシュ内の他のすべてのノードに接続されます。 Erlang epmd(erlangポートマッパーデーモン)は、他のerlangノード(デフォルトポート4369)と実際の通信のダイナミックレンジを検出するために2つのポートを使用します。

クラスタ内のすべてのノードがを聴くために同じEPMDのポート番号を使用する必要があります。

また、Ermdは、どのErlangノードがローカルマシン上のどのポートを使用しているかを追跡します。カーネル変数 'inet_dist_listen_min'と 'inet_dist_listen_max'を設定すると、ErlangがErlangノード間の通信に使用するポートの範囲を9100-9105と制限する場合は、app.configに次の行を追加できます。 '。

例:

{ kernel, [ 
       {inet_dist_listen_min, 9100}, 
       {inet_dist_listen_max, 9105} 
      ]}, 

あなたが設定した範囲は、クラスタ内のすべてのノードのための十分なポートを提供していることを確認します。

関連する問題