Docker-Swarm只能在故障转移模式下运行吗?

时间:2017-11-27 07:51:56

标签: docker docker-swarm

我正面临一种情况,我需要在Docker容器中运行大约100个不同的应用程序。在一个硬件上运行所有100个容器是不合理的,因此我需要将应用程序分布在多台机器上。 据我所知,docker-swarm仅用于扩展,这意味着当我在一个群中运行我的容器时,所有100个容器将自动部署并在我的docker-swarm的每个节点上启动。但这不是我要找的东西。我想拆分应用程序,例如在node1上运行50,在node2上运行50。

问题1: 有没有办法以某种方式配置docker-swarm,我的应用程序将在具有最多空闲资源的节点上自动分派?

问题2: 在docker swarm中是否存在一种故障转移模式,它可以在一个节点上停止容器并尝试在另一个节点上启动它以防出现问题?

1 个答案:

答案 0 :(得分:1)

  

所有100个容器将自动部署并在我的docker-swarm

的每个节点上启动

事实并非如此。在swarm中部署100个容器时,容器将分布在swarm中的可用节点上。您将主要在所有节点上均匀分配容器。

  

问题1:有没有办法以某种方式配置docker-swarm,我的应用程序将自动在具有最多空闲资源的节点上调度?

在部署容器之前,Docker swarm不会检查节点上可用的可用资源(内存,cpu ...)。每个节点平衡容器的分布,而不考虑每个节点上的资源可用性。

但是,您可以构建在节点上分发容器的策略。如果可以限制容器的部署位置,则可以使用placement constraints。您可以标记具有大量资源的节点,并将一些重型容器限制为仅在这些节点上运行。

  

问题2:docker swarm中是否存在一种故障转移模式,它可以阻止一个节点上的容器并尝试在另一个节点上启动它以防出现问题?

如果容器崩溃,docker swarm将确保启动一个新容器。同样,无法预先确定部署新容器的节点的决定。