【发布时间】:2017-05-27 05:55:47
【问题描述】:
我在使用 Docker swarm 时遇到问题。
我有 3 个在 Gunicorn 上运行的 Python Web 服务的副本。
问题是,当我在软件更新后重新启动 swarm 服务时,一个正在运行的旧服务被杀死,然后一个新的服务被创建并启动。但是在旧服务已经被杀死,而新服务还没有完全启动的短时间内,网络消息已经路由到尚未准备好的新实例,导致502 bad gateway错误(我从 nginx 代理到服务)。
我使用--update-parallelism 1 --update-delay 10s 选项,但这并不能消除问题,只是稍微降低了出现 502 错误的机会(因为始终至少有 2 个服务在运行,即使其中一个可能仍在启动) .
【问题讨论】:
-
我不知道 docker swarm 是否支持
HEALTHCHECKDockerfile 功能(您可以在docker service create添加)。我很高兴知道它 -
是的,存在:blog.newrelic.com/2016/08/24/docker-health-check-instruction 我不认为它适用于重启,但我会尝试
-
请告诉我,祝你好运!
-
它似乎确实有效,但并不完全完美......请在此处查看我的功能请求:github.com/moby/moby/issues/33410
-
@Robert 是的,这就是我所做的:更简单的健康检查,间隔为一分钟。妥协。
标签: docker docker-swarm