私は、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" と私のノードを起動する必要があります。それは正しいようですか?私はこれが、ノードとデスクトップの両方に対してコンパイル/アセンブルを行うのと同じチュートリアルプロジェクトだと思いますか?または、ノード用に全く異なるプロジェクトを作成する必要がありますか?私は困惑している。このチュートリアルは初心者にとってはひどいものです。
あなたが正しいと思う場合は、あなたの設定を追加してください – Vasilisck
こんにちは、助けてくれてありがとう。私のconfファイルの編集を参照してください。私は間違いなく2番目のノードを手に入れる方法を知らない!私はホスト名としてIPを使用して私のノードのjar(sbtアセンブリを使用して)を生成しようとしましたが、起動するときに "No route to host"を取得しました。ホスト名を192.168.0.99としてデスクトップバージョンをコンパイルしました。 – Stradigos
あなたの拳の設定でエラーが発生しました。 netty.tcp { hostname = "192.168.0.99" port = 2552 }ホスト名は192.168.0.8 – Vasilisck