1

ノードを開始しました

erl -name n1@198.XXX.X.XX -setcookie somecookie

(n1@198.XXX.X.XX)>

しかし、登録したばかりのノード (n1@198.XXX.X.XX) を使用したいモジュールがある別の erlang アプリケーションがあります。コード net_adm:ping(n1@198.XXX.X.XX) から直接実行しようとしました。そして私は痛みを感じます。net_adm:names() が表示されます。登録済みの生きているすべてのノードをタプルに返します。{ok [{node, 999}],[{n1,9993}],[{theappnode, 8383}]}

n1 に接続してから、rpc で別のリモート ノードに ping を実行する方法が必要です。

conn = ノード (n1) に接続し、rpc を実行します... これらはすべて、別の erlang アプリケーションのモジュール コードからのものです... 上記は可能ですか?

4

1 に答える 1

1

他のノードが同じ Cookie で開始されていない可能性があります。次の 2 つの解決策があります。

  1. 同じ Cookie を使用して他のノードを開始する

    erl -name otherapp -setcookie some cookie
    1> net_adm:ping('n1@198.X.X.X').
    pong
    
  2. もう一方のノードを開始し、n1 ノードの Cookie を伝えます。

    erl -name otherapp
    1> net_adm:ping('n1@198.X.X.X').
    pang
    2> erlang:set_cookie('n1@198.X.X.X', 'somecookie').
    true
    3> net_adm:ping('n1@198.X.X.X').
    pong
    

分散クラスターで短い名前と長い名前 (-sname と -name) を混在させることはできません。

于 2013-08-12T07:52:22.703 に答える