Docker Swarm

Docker Swarm是一种用于Docker容器的集群和调度工具,可以将Docker集群抽象成一个虚拟系统进行建立和管理。

群集是容器技术的一个重要功能,通过提供冗余的协作系统,在节点出现故障时进行转移。Docker Swarm具有故障转移能力。

Swarm manager控制Swarm,负责编排和调度容器,swarm manager使用一个原始manager实例和多个副本实例,防止实例失败。

负载匀衡

Swarm使用三种策略确定容器运行的节点。

Spread

默认设置,根据节点的可用CPU和RAM及当前运行的容器数,在群集的各个节点间平衡容器。如果节点发生故障,只会丢失几个容器。

BinPack

调度容器能充分利用每个节点。节点满时将移至群集的下个节点。BinPack使用更少的基础设施,把未使用的主机,留给需要更大空间的容器。

Random

随机选择节点。

节点

两种类型的节点,管理者和工作者节点。

工作节点运行容器,且需要至少1个管理节点才能运行。

管理节点处理的任务包括:调试服务、维护集群状态及公布HTTP API。建议运行多个管理节点,帮助利用swarm的容错功能。

服务节点唯一目的是将应用程序镜像部署到Docker集群。如,数据库服务器,Web服务器,HTTP服务器。

优缺点

易于部署,具Swarm模式是Docker Engine默认附带的。安装简便快捷。使用Docker CLI和Docker compose可实现集成,不需要太多经验,学习门槛低。

为了扩展服务,需要手动干预。具有的容错能力有限。到目前为止,尚无更广泛的功能。与Kubernetes等其他编排工具相比,它的社区较小。