【发布时间】: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