DC / OS和并发部署

时间:2017-02-22 22:28:18

标签: jenkins docker dcos

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

现在,我们想要从Jenkins进行部署 - 虽然这与Marathon插件一起使用,但我们遇到了一个或多或少有趣的问题:共享卷。

我们所有节点都在/ srv上安装了NetApp,并且服务具有Docker容器卷,这些容器卷将某些容器路径映射到/ srv中的子目录。现在,当Jenkins作业导致服务的重新部署时,它会在暂存新版本时保持旧容器运行,并在新容器到达"健康"状态。

这是一个问题,因为有问题的图像包含MongoDB和MySQL - 因为后备数据库文件上有并发访问而中断。

如何将旧实例扩展为0并且仅在旧实例完全停止时实际部署新实例?

在DC / OS中设置共享的MongoDB / MySQL容器是我不太喜欢的,因为它会导致开发人员计算机上的容器之间的差异,以及容器所用的数据库内容包含在图像中......

编辑:当有人意外按下"重新启动服务时,这个问题也会经常引发我们的注意事项,因为与命名建议不同,它不会执行shutdown-wait-redeploy,而是进行阶段然后切换..

1 个答案:

答案 0 :(得分:1)

您可以查看

基本上,您应该使用MARATHON_SINGLE_INSTANCE_APP这样的标签

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

并相应地指定upgradeStrategy

"upgradeStrategy":{
    "minimumHealthCapacity": 0,
    "maximumOverCapacity": 0
}
相关问题