在Docker Swarm模式中复制服务有什么意义,而不是可用的主机数量?

时间:2016-06-26 16:18:46

标签: docker docker-swarm

我一直在研究Docker 1.12中可用的新Docker Swarm模式。在这个Docker Swarm Mode Walkthrough视频中,他们创建了一个简单的Nginx服务,该服务由一个Nginx容器组成。在视频中,它们在Swarm集群中有4个节点。在缩放演示期间,它们将复制因子增加到10,从而在群集中的所有4台计算机上创建10个Nginx容器副本。

我认为视频只是一个演示,但在现实世界中,与Swarm集群中的节点相比,创建容器(或服务)的更多副本有什么意义?这似乎毫无意义,因为同一台机器上的两个容器无论如何都会共享机器有限的计算资源。我没有得到什么好处。

所以我的问题是,复制Docker服务或容器超出Swarm集群中的节点数是否有任何现实益处?

由于

4 个答案:

答案 0 :(得分:2)

这取决于应用程序如何处理线程和多个请求。单线程应用程序或仅一次处理一个请求的作业可以使用一小部分OS资源,并从单个主机上运行多个实例中受益。一个被调整为同时处理请求并且完全利用操作系统的应用程序将看不到任何好处,实际上会带走资源来运行多个应用程序实例。

答案 1 :(得分:1)

一个优点是可以执行实时零停机软件更新。请参阅Docker 0.12rc2 Swarm tutorial on rolling updates

答案 2 :(得分:0)

你有一个对数据负载很高的RabbitMQ或其他队列系统。您可以使用工作程序启动更多容器而不是节点来处理RabbitMQ上的高数据负载。

答案 3 :(得分:0)

硬件资源限制并不是您复制服务时唯一需要考虑的因素。

一个简单的例子是,如果您有提供安全性详细信息的服务。此服务的资源消耗将很低(从Db / Cache读取记录并将其发送出去)。但是,如果同一服务有20或30个请求处理,请求将排队。

是的,有更好的方法来实现我的示例,但我相信这足以说明为什么可以在同一主机/节点上复制服务。