【问题标题】:Control over the docker images while scaling up and scaling down在放大和缩小时控制 docker 图像
【发布时间】:2020-08-28 08:51:38
【问题描述】:

假设我们有一个在 docker 容器中运行的微服务。

现在要启动此服务,它使用安装在主机卷上的缓存,该主机卷被所有人共享 相同微服务的其他 docker 镜像。并且在应用程序中构建这个缓存​​需要 10 分钟,然后应用程序准备好为请求提供服务。

但是当我们扩大规模和缩小规模时,这种情况就会失败, 可以说我正在扩大容器将可用,但它仍然没有完全上升,因为我们需要等待 构建缓存。

您建议如何处理这种情况。

并且在这个 docker 服务的字体中,我们计划引入 Nginx 来对请求进行负载均衡。

提前致谢

【问题讨论】:

  • 那么,您需要知道您的 docker 微服务何时完全启动并运行?我拍对了吗?
  • 缓存中有什么?您可以在使用它时动态构建它,还是在图像中构建它的固定副本?我会尝试显着缩短启动时间并消除对共享存储的依赖,但这听起来可能是一次重大的重新设计。

标签: docker nginx docker-compose scale


【解决方案1】:

如果我的理解正确,您想知道您的容器何时完全启动并运行。一种选择可能是Health CheckDocker 1.12 中添加了此功能。

描述(来自Docker Docs):

健康检查将在容器启动后 interval 秒后首先运行,然后在每次之前的检查完成后再次运行 interval 秒。

如果单次运行检查花费的时间超过 timeout 秒,则认为检查失败。

需要 重试 次健康检查连续失败,容器才会被视为 unhealthy。 在那里你可以指定运行任何命令来检查你的服务器状态。

可以使用inspect-命令检查容器的健康状况

docker inspect --format='{{json .State.Health}}' <container-id>

此功能还将“(健康)”-信息添加到docker ps 中的状态。

【讨论】:

  • 不完全是,容器在启动后处于健康状态,但它仍在容器内构建缓存,并且当它构建缓存时,我们需要确保请求不应命中该新容器什么时候我们将扩大容器。
  • 您阅读文档了吗?您可以指定定期在容器内运行的命令。这可用于检查您的微服务是否已启动。例如。 curl 检查服务器是否可访问,ping 或检查 lock-files 等。通过检查状态(即使这可以从其他容器完成,请参阅 here),您可以判断您的服务是否准备好与否。
猜你喜欢
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
相关资源
最近更新 更多