25.1 简介
Docker Swarm是Docker公司推出的官方容器集群平台,基于Go语言实现,代码开源在https://github.com/docker/swarm。目前,包括Rackspace在内的许多平台都采用了Swarm,用户也很容易在AWS等公有云平台使用Swarm。

Swarm的前身是Beam项目和libswarm项目,首个正式版本(Swarm V1)在2014年12月初发布。为了提高可扩展性,2016年2月对架构进行重新设计,推出了V2版本,支持超过1千个节点。最新的Docker Engine已经集成了Swarm Kit,加强了对Swarm的协作支持。
作为容器集群管理器,Swarm最大的优势之一就是100%支持标准的Docker API。各种基于标准API的工具,如Compose、docker-py,各种管理软件,甚至Docker本身等都可以很容易地与Swarm进行集成。这大大方便了用户将原先基于单节点的系统移植到Swarm上。同时Swarm内置了对Docker网络插件的支持,用户可以很容易地部署跨主机的容器集群服务。
Swarm V1的结构图如图25-1所示。可以看出,Swarm是典型的master-slave结构,通过发现服务来选举manager。manager是中心管理节点,各个node上运行agent接受manager的统一管理。

图25-1 Swarm基本结构图
在V2中,集群会自动通过Raft协议分布式选举出manager节点,无需额外的发现服务支持,避免了单点瓶颈。同时,V2中内置了基于DNS的负载均衡和对外部负载均衡机制的集成支持。
目前,Swarm V1支持的Docker版本为1.6.0+,V2支持的Docker版本为1.12.0+。本章将以Swarm V1为主进行介绍,并结合V2的部分最新特性进行讲解。
