我正在使用Akka Cluster 2.4.3并尝试在我的机器中设置一个简单的集群,以了解它的工作效果。我有一个单一的集群,启用了远程主服务器和一个工作节点的远程处理。这3个中的每一个都在不同的JVM中运行
第一次启动所有节点时,工作正常。如果我杀死并重新启动工作人员,我会看到发生以下问题
重新启动工作人员
当工作人员在重新启动后返回时,接收MemberUp
事件的主人尝试通过以下方式从成员地址解析actorRef
context.actorSelection(member.address.toString).resolveOne(15 seconds)
此操作失败,并显示ActorNotFound
。当群集中的所有节点第一次出现时,这没有问题。
重新启动工作人员
这次,工作人员提出以下信息
[WARN] [04/15/2016 18:24:24.991] [clustersystem-akka.remote.default-remote-dispatcher-5] [akka.remote.Remoting] Tried to associate with unreachable remote address [akka.tcp://clustersystem@host1:2551]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: [The remote system has quarantined this system. No further associations to the remote system are possible until this system is restarted.]
重新启动工作人员
这次resolveOne
活动的MemberUp
有效。
我在理解这里发生的事情时遇到了一些困难,我已经查看了文档,但我找不到任何可以帮助我的内容。
application.conf
akka {
actor {
provider = "akka.cluster.ClusterActorRefProvider"
}
remote {
enabled-transports = ["akka.remote.netty.tcp"]
}
log-dead-letters = off
jvm-exit-on-fatal-error = on
loglevel = "DEBUG"
remote {
log-remote-lifecycle-events = off
netty.tcp {
hostname = "host1"
port = 0
}
}
cluster {
seed-nodes = [
"akka.tcp://clustersystem@host1:2551",
"akka.tcp://clustersystem@host1:2552"]
auto-down-unreachable-after = 10s
}
extensions = ["akka.cluster.metrics.ClusterMetricsExtension"]
}
我在端口2551和2552启动主节点(将端口作为命令行参数提供)并在端口3551上启动工作程序