为什么马拉松在失去法定人数后不会终止工作?

Why marathon does not terminate jobs after the quorum is lost?

我正在使用 Apache mesos 和 marathon。我有 3 个主节点和 3 个从节点。我用 quorum 2 配置 mesos。后来我 post JSON 到 运行 一份马拉松工作,一切看起来都很好。

然后我尝试关闭两个主节点以打破法定人数,在此之后,mesos 取消注册所有从属节点,一切看起来都正常,但是当我检查从属节点时,我发现启动的作业正在继续 运行 ning...正常吗?我原以为马拉松会在法定人数丢失后停止所有工作

Mesos 哲学的一部分,特别是对于长期 运行 服务,一个或多个 Mesos 组件中的故障不需要停止用户应用程序。

如果从站关闭并且框架启用了检查点,执行器驱动程序将在关闭 executor/tasks 之前等待从站的 --recovery_timeout(默认 15 分钟)。为防止这种情况,请在您的框架上禁用检查点(在 Marathon 中,只需在启动 Marathon 时设置 --checkpoint=false)。另见 https://mesosphere.github.io/marathon/docs/command-line-flags.html

上的马拉松 --failover_timeout

另一方面,如果只是 Masters/ZKs 关闭了,而 Slaves 还在运行 运行,slaves 仍然可以监视任务并排队状态更新,所以任务可以保持活力。如果 ZK 失去法定人数,那么就没有领先的 master,每个 slave 将继续独立运行,直到检测到新的 leader,此时它将向 master 重新注册并发送任何排队的状态更新。