Docker教程经常说我可以运行更多的容器,以提高我的Web应用程序的可用性。但是,这是一个非常广泛的声明,没有说明我应该在不同情况下实际运行多少个容器。我怎么知道我是否需要1、5、10、100或1000个容器实例?
示例-我只有一台服务器,并且正在使用docker运行nginx和php-fpm。每个容器一个。通过这种简单的设置,我的webapp可以正常工作并且似乎响应良好。我可以通过在同一服务器上扩展其他php-fpm副本获得任何好处吗?假设一个容器用于nginx,而10个容器用于php-fpm。
据我了解,php-fpm的10个容器只会在它们之间分配可用的计算资源。因此,我可以使用一个拥有大量资源的容器,也可以拥有10个拥有较少资源的容器。哪个更好,为什么?
答案 0 :(得分:0)
如何知道我是否需要1、5、10、100或1000个容器实例?
这完全取决于您的用例或系统负载。如果您有一百个用户,那么1
容器可能就足够了。
但是如果没有适当的 load test ,就不能简单地回答这个问题。
所以我可以有一个拥有大量资源的容器,也可以有十个 资源较少的容器。哪个更好,为什么?
建议与许多云提供商一起使用资源较少的容器,因为AWS建议使用300至500 MB的内存,以便您可以在一个实例上运行多个容器。
在MiB中为您的容器定义硬和/或软内存限制。硬 和软限制对应于
memory
和memoryReservation
任务定义中的参数。 ECS建议300-500 MiB是Web应用程序的起点。
答案 1 :(得分:0)
在生产环境中,您想要设置某种监视系统来报告错误率和请求延迟。如果请求开始变得缓慢得令人无法接受,那么您将拥有更多的副本和更多的硬件。通常,运行超过硬件支持或当前负载无法承受的副本并不有用。
另一方面,运行2个副本比运行1个副本困难得多;运行3或10,并不比运行2难。所以我建议:
答案 2 :(得分:0)
两种情况都有优点和缺点。
如果您正在使用大量资源运行应用程序的1个Pod,则有1个故障点。如果您的吊舱死亡(到某一时刻它将死亡);例如在滚动更新期间,您将有少量停机时间。
如果您有许多Pod在运行您的应用程序副本,请考虑到它们是容器,因此,除了您的应用程序之外,还存在基础映像和依赖项。因此,每个副本都是一个基础映像以及您要部署的依赖项,因此您将在应用程序上花费更多的资源。
通常,最好有一个以上的副本,但是您不要为之疯狂。研究您的应用程序正在消耗什么,设置正确的资源请求。设置HPA以获得更好的弹性和更好的群集资源管理。