我有一个小型 Mesos 集群,我使用 Marathon 来管理一组长时间运行的服务,每个服务的实例数量可变。
我希望能够根据业务需求启动新节点或终止其中一些节点。但是,当终止一个节点时,我意识到有一个潜在的问题:当我关闭一个 Mesos 从站时,某些服务的实例数会暂时低于定义的minimumHealthCapacity
. 例如,如果要停止的机器正在运行只有一个实例的服务,这可能会导致一些停机时间。
考虑下面的简化场景:节点 1 正在运行服务 A,节点 2 正在运行服务 B,节点 3 正在运行服务 C。minimumHealthCapacity
所有服务的值为 1。我想终止节点 1,只保留 2 和 3 运行。我不希望服务 A 出现任何停机时间。预期行为的一个示例是将服务 A 扩展到 2,然后安全地终止节点 1。
我可以做些什么来确保没有服务低于minimumHealthCapacity
?
理想情况下,我会有一个滚动更新启发的过程——替换是在不同的机器上启动的,然后在要关闭的机器上终止服务。我希望至少有一个自动化的过程来做到这一点,以便缩小规模是一个简单的脚本。我对执行此操作所需的时间没有要求,即只有在我确定 Marathon 迁移完成并成功后才能关闭 Mesos 从站。