Update swarm and mesos chapter

This commit is contained in:
Baohua Yang
2017-05-02 23:17:58 +08:00
parent 2568854736
commit 5786333a3b
25 changed files with 1234 additions and 553 deletions

View File

@@ -1,16 +1,16 @@
## 简介
Docker Swarm 是 Docker公司官方在 2014 年 12月初发布的一套管理 Docker 集群的工具。它将一群 Docker 宿主机变成一个单一的,虚拟的主机。
## Swarm 简介
![Docker Swarm](_images/docker_swarm.png)
Swarm 使用标准的 Docker API 接口作为其前端访问入口,换言之,各种形式的 Docker 工具比如 DokkuComposeKraneDeisdocker-pyDocker 本身等都可以很容易的与 Swarm 进行集成
Docker Swarm Docker 公司推出的官方容器集群平台,基于 Go 语言实现,代码开源在 [https://github.com/docker/swarm](https://github.com/docker/swarm)。目前,包括 Rackspace 等平台都采用了 Swarm用户也很容易在 AWS 等公有云平台使用 Swarm。
![Swarm 结构图](../_images/swarm.png)
Swarm 的前身是 Beam 项目和 libswarm 项目首个正式版本Swarm V1在 2014 年 12 月初发布。为了提高可扩展性2016 年 2 月对架构进行重新设计,推出了 V2 版本,支持超过 1K 个节点。最新的 Docker Engine 已经集成了 SwarmKit加强了对 Swarm 的协作支持。
在使用 Swarm 管理docker 集群时,会有一个 swarm manager 以及若干的 swarm nodeswarm manager上运行 swarm daemon用户只需要跟 swarm manager 通信,然后 swarm manager 再根据discovery service的信息选择一个swarm node 来运行container
作为容器集群管理器Swarm 最大的优势之一就是 100% 支持标准的 Docker API。各种基于标准 API 的工具比如 Compose、docker-py、各种管理软件甚至 Docker 本身等都可以很容易的与 Swarm 进行集成。这大大方便了用户将原先基于单节点的系统移植到 Swarm 上。同时 Swarm 内置了对 Docker 网络插件的支持,用户可以很容易地部署跨主机的容器集群服务
值得注意的是 swarm daemon 只是一个任务调度器(scheduler)和路由器(router),它本身不运行容器,它只接受 Docker client 发送过来的请求,调度合适的 swarm node 来运行 container。这意味着即使 swarm daemon 由于某些原因挂掉了,已经运行起来的容器也不会有任何影响。
![Swarm 基本结构图](_images/swarm.png)
上图是来自官方的 V1 结构图。可以看出Swarm 是典型的 master-slave 结构,通过发现服务来选举 manager。manager 是中心管理节点,各个 node 上运行 agent 接受 manager 的统一管理。
有以下两点需要注意:
在 V2 中,集群中会自动通过 Raft 协议分布式选举出 manager 节点无需额外的发现服务支持避免了单点瓶颈。同时V2 中内置了基于 DNS 的负载均衡和对外部负载均衡机制的集成支持。
* 集群中的每台节点上面的 Docker 的版本都不能小于1.4
* 为了让 swarm manager 能够跟每台 swarm node 进行通信,集群中的每台节点的 Docker daemon 都必须监听同一个网络接口。
目前Swarm V1 支持 Docker 版本为 1.6.0+V2 支持 Docker 版本为 1.12.0+。本章将以 Swarm V1 为主进行介绍,并结合 V2 的部分最新特性。