8

我有一个小型 Mesos 集群,我使用 Marathon 来管理一组长时间运行的服务,每个服务的实例数量可变。

我希望能够根据业务需求启动新节点或终止其中一些节点。但是,当终止一个节点时,我意识到有一个潜在的问题:当我关闭一个 Mesos 从站时,某些服务的实例数会暂时低于定义的minimumHealthCapacity. 例如,如果要停止的机器正在运行只有一个实例的服务,这可能会导致一些停机时间。

考虑下面的简化场景:节点 1 正在运行服务 A,节点 2 正在运行服务 B,节点 3 正在运行服务 C。minimumHealthCapacity所有服务的值为 1。我想终止节点 1,只保留 2 和 3 运行。我不希望服务 A 出现任何停机时间。预期行为的一个示例是将服务 A 扩展到 2,然后安全地终止节点 1。

我可以做些什么来确保没有服务低于minimumHealthCapacity

理想情况下,我会有一个滚动更新启发的过程——替换是在不同的机器上启动的,然后在要关闭的机器上终止服务。我希望至少有一个自动化的过程来做到这一点,以便缩小规模是一个简单的脚本。我对执行此操作所需的时间没有要求,即只有在我确定 Marathon 迁移完成并成功后才能关闭 Mesos 从站。

4

1 回答 1

1

Mesos 开发团队目前正在研究“维护原语”,以便操作员可以指示特定机器计划在某个时间(或尽快)停机,向每个框架触发消息,通知他们预期的不可用窗口。然后,像 Marathon 这样的框架可以决定将其任务从该节点迁移出去,以便可以安全地终止它而不会造成任何服务停机。

有关更多详细信息/补丁,请参阅https://issues.apache.org/jira/browse/MESOS-1474

于 2015-08-04T03:34:11.727 回答