【问题标题】:ClusterSingletonManager not failing overClusterSingletonManager 没有故障转移
【发布时间】:2014-07-24 00:05:13
【问题描述】:

我一直在测试具有以下设置的 Master / Worker 集群:

  • 2个虚拟服务器,每个服务器有一个Master和一个Worker(独立的jvm)
  • Master 使用 ClusterSingletonManager 实例化
  • Master 也是种子节点。

我正在通过手动关闭“活动”主节点来测试主节点的故障转移。在工人不处理任务的情况下,故障转移工作正常。 “非活动”主节点确实检测到另一个节点无法访问,并最终将启动它的主角色。

但是如果工作人员很忙,那么故障转移就不会完全起作用。如以下消息所示,“非活动”主节点确实将另一个节点检测为不可访问并隔离,但该节点从不启动主参与者。

2014-07-23 23:52:31,777 INFO [JobRunner-akka.actor.default-dispatcher-17] 隔离地址 [akka.tcp://JobRunner@12.3.201.135:40000] 仍然无法访问或没有被重新启动。保持隔离。

有人知道为什么会发生这种情况以及是否有解决办法吗?

谢谢。 问候。

【问题讨论】:

    标签: java akka akka-cluster


    【解决方案1】:

    最终将主节点放到自己的服务器上(与工人分开)工作。

    【讨论】:

      【解决方案2】:

      您使用的是哪个版本的 Akka?最近在心跳优先化方面有所改进 - 请升级到 2.3.4 并检查。

      【讨论】:

      • 我正在使用 2.3.2,将尝试 2.3.4。谢谢。
      • 更新,在切换到 2.3.4 之前,故障转移工作正常。我让它在一夜之间运行,关闭工人,大约 17 小时后,节点决定启动 Master Actor。切换到版本 2.3.4 (Scala 2.10) 并没有解决问题。无法访问的检测仍然有效,隔离区也是如此,但由于某种原因,当工作人员忙于处理时,它不会启动主服务器。工作人员和服务器是否必须在不同的服务器上?
      • 不,它们不必位于不同的物理服务器上。它们实际上可能是相同的 jvm - 但在不同的端口上监听。你见过这个:hseeberger/akkamazing 和这个示例应用程序:akka-sample-cluster-scala esp。此示例:StatsSampleOneMaster.scala。这也许可以帮助您发现一些不同之处?
      • 没有看到代码很难调试这个问题。我认为 akka-user 邮件列表是讨论这些可能需要长代码或记录 sn-ps 的问题的更好地方。
      • 感谢大家的投入。当我有更多时间研究这个问题时,我会将其发布在 akka-user 邮件列表中。
      猜你喜欢
      • 2013-04-25
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      相关资源
      最近更新 更多