【问题标题】:How to gracefully do a rolling deployment in mesos-marathon如何在 mesos-marathon 中优雅地进行滚动部署
【发布时间】:2016-09-28 14:00:18
【问题描述】:

目前,如果您使用 mesos-marathon 框架部署新版本的 docker 镜像,具有旧镜像的容器将获得 SIGTERM,并在 3 秒后获得 SIGKILL 并立即终止。

如果我们将框架与 marathon-lb(haproxy wrapper) 集成,这些容器将继续轮换(haproxy 继续向其发送流量)直到触发下一次健康检查(它发生在 haproxy 可配置的内部) .因此,在该时间间隔内发送到这些容器的所有请求最终都会得到 5XX。那么有没有一种解决方法可以在 SIGKILL 之前让容器从 marathon-lb 中停止旋转。

即使您将健康检查间隔设置为 3 秒,也无法保证优雅部署,因为在下一次健康检查与马拉松向容器发送 SIGKILL 并将健康检查间隔设置为 1 之后的 3 秒之间可能存在竞争条件当后端节点数量增加时,第二个是不可能的。还有其他方法可以实现吗?

【问题讨论】:

    标签: deployment haproxy mesos marathon graceful-degradation


    【解决方案1】:

    您可以查看 Marathon 文档中的蓝绿色部署页面:

    【讨论】:

      【解决方案2】:

      有 3 个选项适合您。

      1. 正如@Tobi 提议的那样,看看blue green deployment 和 Marathon。
      2. 您可以增加executor_shutdown_grace_period 或减少(正如您所说,这不是您的选择) haproxy 健康检查间隔比宽限期短两倍。
      3. 有点 hacky,但您的应用程序在获得 SIGTERM 后可以从 haproxy 本身注销。

      【讨论】:

        猜你喜欢
        • 2015-08-31
        • 2015-10-24
        • 1970-01-01
        • 2016-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多