我在运行mesos-master和mesos-slave的3个实例上运行一个mesos集群。我相信要正确配置集群并能够通过docker和marathon在所有三个实例上运行Web应用程序。
我设置了一个Jenkins来执行对集群的部署,并作为马拉松REST API的最后一步发布以重新启动作业,但它无声地失败(只是停留在部署阶段)。但是,如果应用程序在2个实例上运行,则重新启动顺利进行。马拉松是否需要一个实例未被占用来执行应用程序重启?
我在这里遗漏了什么吗?
答案 0 :(得分:3)
群集中是否有足够的免费资源? IIRC默认重启行为将首先启动新版本,然后缩小旧版本(因此您需要2 * app资源)。 请参阅Marathon Deployments for details和the upgrade strategy section here。
此处摘录自the upgrade strategy:
upgradeStrategy
在升级期间,应用程序的所有实例都将被新版本替换。 upgradeStrategy控制Marathon如何停止旧版本并启动新版本。它由两个值组成:
minimumHealthCapacity(可选。默认值:1.0) - 介于0和1之间的数字,与实例计数相乘。这是不牺牲整体应用目的的最小健康节点数。在升级过程中,Marathon将确保在任何时候这些健康的实例都会出现。
maximumOverCapacity(可选。默认值:1.0) - 介于0和1之间的数字,与实例计数相乘。这是升级过程中任何时间点启动的最大额外实例数。
默认的minimumHealthCapacity为1,这意味着在部署另一个健康的新版本之前,不能停止旧实例。值为0.5意味着在升级期间,首先停止一半旧版本实例以为新版本腾出空间。值为0表示立即关闭所有实例并替换为新应用程序。
默认的maximumOverCapacity为1,这意味着在升级过程中所有旧实例和新实例都可以共存。值为0.1意味着在升级过程中,新旧实例可以使用比平时多10%的容量。值0.0意味着即使在升级过程中也不会有比平时更多的容量用于新实例。只有在旧版本停止时,才能部署新实例。