2017-04-04 48 views
1

我有一个包含前端nginx的10个应用程序容器的堆栈。在堆栈中部署新的应用程序容器映像时,如果我运行apachebenchmark或gatling测试,我会看到〜1-2%的失败请求。如果我在部署期间发送约100次请求/秒,则约2次请求失败。码头群模式(docker 1.13和compose v3)真的提供零停机滚动更新或部署吗?

虽然经历了日志,但看起来差异仅仅是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 

我怀疑这可能是一个问题,如果你的机器是在速度较慢的侧面位。

让我知道如果我失去了一些东西。只是想知道在滚动更新或部署过程中如何设计群集模式,他们是否认为它的宕机时间为零? (我启用了所有健康检查)。

回答

2

我们用DotNet Core来做这件事,但它意味着两端(giggity)的很多工作。您需要确保您的图像是准备在实例化的时刻启动。在编译语言中,你需要确保所有的构建操作都在容器实例化之前完成,IE在构建阶段。

这意味着只要服务更新图像,它就基本上在该时间点运行。接下来你需要考虑的是将update-delay标志添加到服务更新语句中。

如果你这样做搬运工服务更新--image新/图片:版本--update-延时10s,

该服务将重建与服务上的容器之一,但会等待10秒钟移动到前下一个。它需要一些规划,并且我总是会在群主机前拥有一个应用程序负载平衡器,但我们无任何问题地对其进行管理。