我有一个堆栈,其中包含 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 秒,然后再移动到下一个容器。这需要一些规划,而且我总是在群主机前面有一个应用程序负载均衡器,但我们管理它没有任何问题。