【发布时间】:2015-07-12 20:17:03
【问题描述】:
在一项研究中,我使用 Docker 在我的计算机上部署了一个云架构。 (Nginx 用于负载平衡一些 Apache 服务器以运行简单的 Php 应用程序。
我想知道是否可以使用多台计算机来部署我的容器以增加可用功率。
(我正在使用带有 Yosemite 的 MacBook Pro。我已经安装了带有 Virtual box 的 boot2docker)
【问题讨论】:
在一项研究中,我使用 Docker 在我的计算机上部署了一个云架构。 (Nginx 用于负载平衡一些 Apache 服务器以运行简单的 Php 应用程序。
我想知道是否可以使用多台计算机来部署我的容器以增加可用功率。
(我正在使用带有 Yosemite 的 MacBook Pro。我已经安装了带有 Virtual box 的 boot2docker)
【问题讨论】:
披露:我是 Swarm Legacy 和 Swarm 模式的维护者
编辑:这个答案提到了 Docker Swarm Legacy,这是 Docker Swarm 的第一个版本。从那时起,一个名为 Swarm 模式 的新版本直接包含在 docker 引擎中,并且在拓扑和功能方面的行为略有不同,尽管重要的想法仍然存在。
是的,您可以在多台机器上部署 Docker,并将它们作为单个资源池进行管理。您可以使用多种解决方案来使用 docker 在多台机器上编排容器。
您可以使用Docker Swarm、Kubernetes、Mesos/Marathon 或Fleet。 (可能还有其他人,因为这是一个快速发展的领域)。还有像Amazon ECS这样的商业解决方案。
在 Swarm 的情况下,它使用 Docker 远程 API 与远程 docker 守护进程通信,并根据负载或一些额外的约束(其他系统或多或少的功能类似)调度容器。这是一个小型 Swarm 部署的示例。
Docker CLI
+
|
|
| 4000 (or else)
| server
+--------v---------+
| |
+------------> Swarm Manager <------------+
| | | |
| +--------^---------+ |
| | |
| | |
| | |
| | |
| client | client | client
| 2376 | 2376 | 2376
| | |
+---------v-------+ +--------v--------+ +--------v--------+
| | | | | |
| Swarm Agent | | Swarm Agent | | Swarm Agent |
| Docker | | Docker | | Docker |
| Daemon | | Daemon | | Daemon |
| | | | | |
+-----------------+ +-----------------+ +-----------------+
选择其中一个系统基本上是以下两种选择:
这主要取决于用例和您正在运行的工作负载类型。有关这些系统之间差异的更多详细信息,请参阅answer。
【讨论】:
这听起来像集群,这就是 docker swarm 所做的(参见它的 github repo)。
它将一个 Docker 主机池变成一个单一的虚拟主机。
例如见issue 247: How replication control and load balancing being taken care of?
【讨论】: