2016-05-30 16 views
0

私は、akka-sample-cluster-appチュートリアルとdocumentationでAkkaクラスタを勉強しています。ローカル(127.0.0.1)で動作していますが、静的IP(192.168.0.99)を使用して動作させることはできません。ラズベリーパイをノードとして使用しようとしているときに同様のメッセージが表示されているので、私は迅速な健全性チェックとしてこれをやっています。Akkaクラスタ "接続が拒否されました"混乱

[WARN] [2016年5月30日11:01:41.432] [ClusterSystem-akka.remote.default-リモートディスパッチャ-8] [akka.tcp://[email protected] :63599/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2FClusterSystem%40192.168.0.99%3A2552-1] リモートシステムとの関連付け [akka.tcp://[email protected]:2552]が失敗しましたアドレスは[5000] msの間に現在ゲートされている です。理由:[協会は [akka.tcpで失敗しました://[email protected]:2552]] によって引き起こさ:[ が拒否した接続:いいえ、さらに情報:/192.168.0.99:2552]

私はポート2552で何も聞いていないので接続が拒否されていると信じていますが、理由については混乱しています。 Akkaプログラムはどのようにノードに乗って実行を開始しますか?静的IPではなく127.0.0.1で動作するのはなぜですか?

私の知る限り、このチュートリアルやドキュメンテーションでは、「ノード用に別のプログラムをコンパイルする必要があります。したがって、プログラムはメインのAkkaサーバーからノードにプッシュされるか、自分のノード用に別のプロジェクトを作成する必要がありますか?

私は前者を推測していますが、どのように/なぜ人々は自分のサーバーと同じプロジェクトでノード開発を行っていますか?それらはどのようにしてサーバーとノードとして同じjarを別々に実行していますか?

EDIT:デスクトップコンピュータ上の

Address of Raspberry Pi Node 1: 192.168.0.8 
Address of Raspberry Pi Node 2: 192.168.0.9 
Address of Desktop Computer: 192.168.0.99 

application.conf(ホスト名注)

#//#snippet 
akka { 

    log-dead-letters = off 
    log-level = "debug" 

    actor { 
    provider = "akka.cluster.ClusterActorRefProvider" 
    } 
    remote { 
    log-remote-lifecycle-events = off 
    netty.tcp { 
     hostname = "192.168.0.99" 
     port = 2552 
    } 
    } 

    cluster { 
    seed-nodes = [ 
     "akka.tcp://[email protected]:2552", 
     "akka.tcp://[email protected]:2552"] 

    #//#snippet 
    # excluded from snippet 
    auto-down-unreachable-after = 10s 
    #//#snippet 
    # auto downing is NOT safe for production deployments. 
    # you may want to use it during development, read more about it in the docs. 
    # 
    # auto-down-unreachable-after = 10s 
    } 
} 

# Disable legacy metrics in akka-cluster. 
akka.cluster.metrics.enabled=off 

# Enable metrics extension in akka-cluster-metrics. 
akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] 

# Sigar native library extract location during tests. 
# Note: use per-jvm-instance folder when running multiple jvm on one host. 
akka.cluster.metrics.native-library-extract-folder=${user.dir}/target/native 
#//#snippet 

(ノード1、ちょうど別のホスト名に類似)ラズベリーパイノード2のapplication.conf

#//#snippet 
akka { 

    log-dead-letters = off 
    log-level = "debug" 

    actor { 
    provider = "akka.cluster.ClusterActorRefProvider" 
    } 
    remote { 
    log-remote-lifecycle-events = off 
    netty.tcp { 
     hostname = "192.168.0.9" 
     port = 2552 
    } 
    } 

    cluster { 
    seed-nodes = [ 
     "akka.tcp://[email protected]:2552", 
     "akka.tcp://[email protected]:2552"] 

    #//#snippet 
    # excluded from snippet 
    auto-down-unreachable-after = 10s 
    #//#snippet 
    # auto downing is NOT safe for production deployments. 
    # you may want to use it during development, read more about it in the docs. 
    # 
    # auto-down-unreachable-after = 10s 
    } 
} 

# Disable legacy metrics in akka-cluster. 
akka.cluster.metrics.enabled=off 

# Enable metrics extension in akka-cluster-metrics. 
akka.extensions=["akka.cluster.metrics.ClusterMetricsExtension"] 

# Sigar native library extract location during tests. 
# Note: use per-jvm-instance folder when running multiple jvm on one host. 
akka.cluster.metrics.native-library-extract-folder=${user.dir}/target/native 
#//#snippet 

これを使用して、私はノードを起動しようとすると、ノード上に「ホストへのルートなし」というメッセージが表示されます。

EDIT 2:

メインはsimple.sample.cluster.simple.SimpleClusterAppであるので、私は "simple.sample.cluster.simple.SimpleClusterApp cluster.jarのjava -cp" と私のノードを起動する必要があります。それは正しいようですか?私はこれが、ノードとデスクトップの両方に対してコンパイル/アセンブルを行うのと同じチュートリアルプロジェクトだと思いますか?または、ノード用に全く異なるプロジェクトを作成する必要がありますか?私は困惑している。このチュートリアルは初心者にとってはひどいものです。

答えて

1

Hihi。

Akkaチュートリアルのこの部分では、2番目のノードをアップする方法を知っていることを前提としています。

これは2番目のactorSystemを開始する必要があります。conf、ここで

netty.tcp { 
     hostname = "192.168.0.99" 
     port = 2552 
    } 

と1番目のノードのシード書き込みアドレス。

+0

あなたが正しいと思う場合は、あなたの設定を追加してください – Vasilisck

+0

こんにちは、助けてくれてありがとう。私のconfファイルの編集を参照してください。私は間違いなく2番目のノードを手に入れる方法を知らない!私はホスト名としてIPを使用して私のノードのjar(sbtアセンブリを使用して)を生成しようとしましたが、起動するときに "No route to host"を取得しました。ホスト名を192.168.0.99としてデスクトップバージョンをコンパイルしました。 – Stradigos

+0

あなたの拳の設定でエラーが発生しました。 netty.tcp { hostname = "192.168.0.99" port = 2552 }ホスト名は192.168.0.8 – Vasilisck

関連する問題