2

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

在查看日志时,失败的差异似乎只有~1-2ms。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

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

让我知道我是否遗漏了什么。只是想知道在滚动更新或部署期间如何为群模式设计,他们说这是零停机时间吗?(我已启用所有健康检查)。

4

1 回答 1

2

我们使用 DotNet Core 执行此操作,但这意味着两端的大量工作(giggity)。您需要确保您的图像在实例化的那一刻就可以启动。在编译语言中,您需要确保在容器实例化之前完成所有构建操作,即构建阶段的 IE。

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

如果你做 docker service update --image new/image:version --update-delay 10s,

该服务将重建该服务上的一个容器,但会等待 10 秒,然后再移动到下一个容器。这需要一些计划,而且我仍然会在 swarm 主机前有一个应用程序负载均衡器,但我们可以毫无问题地管理它。

于 2017-04-04T20:34:05.667 回答