【问题标题】:proper way to down a node/member in akka cluster在akka集群中关闭节点/成员的正确方法
【发布时间】:2020-02-16 05:27:50
【问题描述】:

当节点在 akka 集群中变得无法访问时,是否有任何适当的方法来关闭节点。我想在节点无法访问时将 api 暴露给它,但我更喜欢以编程方式找到另一种方式或某些东西。自动关机不再是一种选择,因为我一直有脑裂问题。

我可以在 receive 方法中直接关闭节点吗:

def 接收:接收 = { case MemberUp(member) =>

case UnreachableMember(member) => {      
  Cluster(context.system).down(member.address)
}

【问题讨论】:

    标签: akka akka-cluster akka-persistence akka-monitoring


    【解决方案1】:

    如果节点崩溃了,在任何其他节点上关闭它都可以。

    但是您必须将其作为看到它无法访问的反应,如果它是一个网络分区而不是一个节点崩溃无法访问分区的每一侧将导致集群的其余部分无法访问并且击倒所有这些,你最终会得到两个集群,认为他们已经击倒了另一侧。

    这就是我们在 Akka 2.6 中移除自动关机的确切原因

    如果您想要自动删除具有裂脑分辨率的节点,您将需要使用/实现一个为您处理该问题的宕机提供程序。

    自己实现一个宕机提供程序需要相当多的努力和思考。有关该问题的更多背景信息,您可以在此处阅读商业 Lightbend SBR 的文档:https://doc.akka.io/docs/akka-enhancements/current/split-brain-resolver.html

    【讨论】:

    • 使用这个 conf 我需要订阅吗? : akka.cluster.split-brain-resolver { down-all-when-unstable = 15s stable-after = 20s }
    • 是的,akka.cluster.split-brain-resolver 下的所有配置都将用于答案中提到的商业裂脑解析器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 2015-09-08
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 2021-04-27
    相关资源
    最近更新 更多