DC / OS和并发部署

我们正在运行一个DC / OS集群,并且手动pipe理它,因为运行在其中的容器实例数量less,不需要太多的干预。

现在,我们要从Jenkins部署,而在Marathon插件的情况下,我们遇到了一个或多或less有趣的问题:共享卷。

我们所有的节点都有一个安装在/ srv上的NetApp,而且这些服务都有Docker容器卷,它们将某些容器path映射到/ srv中的子目录。 现在,当Jenkins作业导致重新部署服务时,它将在暂存新版本时离开旧容器,并在新容器达到“健康”状态时切换。

这是一个问题,因为所涉及的映像包含MongoDB和MySQL – 由于在后备数据库文件上存在并发访问,因此中断映像。

我怎样才能将旧的实例缩放到0,只有当旧的实例干净地停止,实际部署新的实例?

在DC / OS中设置共享的MongoDB / MySQL容器是我不太喜欢的,因为它会在开发者机器上的容器之间产生差异,以及容器被播种的数据库内容包含在图像中…

编辑:这个问题也经常咬我们,当有人不小心按下“重新启动服务”,因为不同于命名暗示,它不会做shutdown-wait-redeploy,但也舞台,然后切换…

你可以看看

基本上,你应该像这样使用MARATHON_SINGLE_INSTANCE_APP标签

 "labels":{ "MARATHON_SINGLE_INSTANCE_APP": "true", } 

并相应地指定upgradeStrategy

 "upgradeStrategy":{ "minimumHealthCapacity": 0, "maximumOverCapacity": 0 }