如何停止整个Akka集群(分片)

yacmzcpb  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(184)

如何停止整个集群,并从一个参与者进行分片(跨越多个计算机-节点)?
我知道我可以在“this”节点context.system.terminate()上停止参与者系统
我知道我能阻止当地的碎片区。
我找到了.prepareForFullClusterShutdown(),但它实际上并没有停止节点。
我想没有单一的命令可以做到这一点,但一定有某种方法可以做到这一点。

fnatzsnv

fnatzsnv1#

据我所知,没有现成的方法可以做到这一点:总的期望是存在管理此的外部控制平面(例如,Kubernetes)。
但是,可以在集群的每个节点上都有一个执行元,用于监听成员资格事件并订阅pubsub主题。它发布了(例如)ShutdownCluster消息发送到主题,并跟踪哪些节点离开。(因为分布式pubsub最多只发送一次)如果除此节点之外还有其他节点没有离开,它会再次发送该消息。最终,在集群中的所有其他节点都离开后,此参与者会关闭其节点。当其他节点看到ShutdownCluster消息时,他们立即关闭了自己。
当然,这种方案可能无法很好地与任何形式的外部编排配合使用(无论是像kubernetes、mesos或nomad这样的容器调度程序;或者甚至是像monit这样的简单操作,它注意到服务没有运行并重新启动它)。

相关问题