我应该运行多少个Docker容器

时间:2019-10-08 15:53:25

标签: php docker nginx containers reliability

Docker教程经常说我可以运行更多的容器,以提高我的Web应用程序的可用性。但是,这是一个非常广泛的声明,没有说明我应该在不同情况下实际运行多少个容器。我怎么知道我是否需要1、5、10、100或1000个容器实例?

示例-我只有一台服务器,并且正在使用docker运行nginx和php-fpm。每个容器一个。通过这种简单的设置,我的webapp可以正常工作并且似乎响应良好。我可以通过在同一服务器上扩展其他php-fpm副本获得任何好处吗?假设一个容器用于nginx,而10个容器用于php-fpm。

据我了解,php-fpm的10个容器只会在它们之间分配可用的计算资源。因此,我可以使用一个拥有大量资源的容器,也可以拥有10个拥有较少资源的容器。哪个更好,为什么?

3 个答案:

答案 0 :(得分:0)

  

如何知道我是否需要1、5、10、100或1000个容器实例?

这完全取决于您的用例或系统负载。如果您有一百个用户,那么1容器可能就足够了。

但是如果没有适当的 load test ,就不能简单地回答这个问题。

  

所以我可以有一个拥有大量资源的容器,也可以有十个   资源较少的容器。哪个更好,为什么?

建议与许多云提供商一起使用资源较少的容器,因为AWS建议使用300至500 MB的内存,以便您可以在一个实例上运行多个容器。

  

在MiB中为您的容器定义硬和/或软内存限制。硬   和软限制对应于memorymemoryReservation   任务定义中的参数。 ECS建议300-500   MiB是Web应用程序的起点。

答案 1 :(得分:0)

在生产环境中,您想要设置某种监视系统来报告错误率和请求延迟。如果请求开始变得缓慢得令人无法接受,那么您将拥有更多的副本和更多的硬件。通常,运行超过硬件支持或当前负载无法承受的副本并不有用。

另一方面,运行2个副本比运行1个副本困难得多;运行3或10,并不比运行2难。所以我建议:

  • 如果仅运行1个副本可满足您的流量负载和可用性需求,则只需运行1个副本。
  • 如果您在Kubernetes这样的环境中运行,该环境提供负载平衡和零停机升级作为环境的一部分,请运行2或3个副本;不要太过分,但是如果有另一份正在运行以进行故障转移,则如果1份副本崩溃,您将获得一定的弹性。
  • 运行最少数量的副本以满足您的响应时间要求。

答案 2 :(得分:0)

两种情况都有优点和缺点。

如果您正在使用大量资源运行应用程序的1个Pod,则有1个故障点。如果您的吊舱死亡(到某一时刻它将死亡);例如在滚动更新期间,您将有少量停机时间。

如果您有许多Pod在运行您的应用程序副本,请考虑到它们是容器,因此,除了您的应用程序之外,还存在基础映像和依赖项。因此,每个副本都是一个基础映像以及您要部署的依赖项,因此您将在应用程序上花费更多的资源。

通常,最好有一个以上的副本,但是您不要为之疯狂。研究您的应用程序正在消耗什么,设置正确的资源请求。设置HPA以获得更好的弹性和更好的群集资源管理。