docker swarm模式(docker 1.13& compose v3)是否真的提供零停机时间滚动更新或部署?

时间:2017-04-04 05:21:14

标签: nginx docker docker-compose docker-swarm docker-swarm-mode

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

在浏览日志的过程中,差异似乎只有1-2分钟。 Nginx发送请求& swarm将应用程序容器放下来& 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

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

如果我错过了什么,请告诉我。只是想知道在滚动更新或部署期间如何为swarm模式设计,他们是否说它是零停机时间? (我启用了所有健康检查)。

1 个答案:

答案 0 :(得分:2)

我们使用DotNet Core进行此操作,但这意味着两端都有很多工作(giggity)。您需要确保图像在实例化后准备启动。在编译语言中,您需要确保在实例化容器之前完成所有构建操作,在构建阶段使用IE。

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

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

该服务将重建服务上的一个容器,但会等待10秒后才能转移到下一个容器。它需要一些规划,我总是会在群主机前面有一个应用程序负载均衡器,但我们管理它没有任何问题。