docker swarm 模式(docker 1.13 和 compose v3)真的提供零停机滚动更新或部署吗?



我有一个堆栈,其中包含 10 个带有前端 nginx 的应用程序容器。在堆栈中部署新的应用程序容器映像时,如果我对它运行 apachebenchmark 或 gatling 测试,我会看到 ~1-2% 的请求失败。如果我在部署期间发送 ~100 个请求/秒,大约 2 个请求失败。

在浏览日志时,似乎差异仅为 ~1-2ms 对于故障。Nginx发送请求并群关闭应用程序容器,nginx给出502错误。

错误日志(请参阅响应时间 - 0.002( -

23 Mar 2017 11:07:35.047  192.168.50.68 - - [23/Mar/2017:05:37:34 +0000] "GET http://dev-hapdocker-01/feeds HTTP/1.1" 502 173 "-" "-" 0.002- Context

我怀疑如果您的机器速度较慢,这可能是一个问题。

如果我错过了什么,请告诉我.只是想知道在滚动更新或部署期间如何为群模式设计,他们说它是零停机时间吗?(我已启用所有运行状况检查(。

我们使用DotNet Core来做到这一点,但这意味着两端都需要做很多工作(Giggity(。您需要确保映像在实例化时已准备好启动。在编译语言中,您需要确保在实例化容器之前完成所有生成操作,即在生成阶段。

这意味着每当服务更新映像时,它基本上都在该时间点运行。接下来需要研究的是将更新延迟标志添加到服务更新语句中。

如果你做 docker 服务更新 --image new/image:version --update-delay 10s,

该服务将在服务上重新生成其中一个容器,但将等待 10 秒,然后再移动到下一个容器。这需要一些规划,而且我总是在群主机前面有一个应用程序负载均衡器,但我们管理它没有任何问题。

最新更新