翻译自docker官方文档,原文:https://docs.docker.com/engine/swarm/
要使用docker的swarm(集群)模式,先安装docker。查看官方安装简介来了解不同操作系统和平台的安装方式。
目前的docker版本原生就包含swarm模式,用来管理叫做swarm的,由多个docker引擎组成的集群。使用docker命令行接口来创建swarm,发布应用服务到swarm并管理swarm。
如果你用的是docker1.12.0及以前的版本,你可以安装单独的swarm,但我们建议你升级docker。
特性介绍
- 作为docker引擎一部分的集群管理:用docker引擎的命令行接口来创建一个docker引擎的集群,用来部署应用服务。你不需要额外安装软件来创建或管理集群。(译者注:就是docker自带的集群编排管理工具,兼容性好,学习成本低(相比kubernetes))。
- 分散化设计:不是在发布时处理不同的节点角色,而是在运行时,docker引擎才会根据不同的节点角色区别处理。你可以用docker引擎发布节点,管理者和工作者等各种角色。这意味着你可以用一个磁盘镜像构建整个集群。
- 声明式服务模型:docker引擎通过声明式的接口来允许你定义应用栈中服务的希望的状态。比如,你可以定义一个由包含消息查询功能的web前端和一个数据库后端组成的应用。
- 可伸缩:对于每个服务,你可以声明你想要允许的任务(task,应该是运行任务的容器)数量。当你伸缩服务时,集群管理器会通过添加或删除任务来自动到达你期望的状态。
- 期望状态的保持:集群管理器会不断监控集群状态,并会消除任何实际状态和期望状态之间的差别。比如,如果你设置一个服务允许一个容器的10个副本,然后一个运行着副本中的2个的工作机器挂掉了,管理器会创建两个新的副本来代替挂掉的副本,并会把新的副本分配给正在运行且可用的工作机器。
- 多主机的网络:你可以为你的服务指定一个overlay式网络。当集群初始化或更新应用时,集群管理器会自动给网络中的容器分配地址。
- 服务发现:集群管理器会给集群中的每个服务提供唯一的DNS名和运行在容器中的负载均衡功能。你可以通过集群内置的DNS服务器来查询集群中的每个容器。
- 负载均衡:你可以把服务的端口暴露给外部的负载均衡器。在内部,集群允许你指定如何在节点间分布服务容器。
- 默认的安全保证:每个集群中的节点都会开启TLS相互认证(TLS mutual authentication),并会加密它和其他节点间的安全通信。你可以选择是用自定义的root认证还是从常用的rootCA认证。
- 滚动更新:在首次发布时,你可以递增地把服务发布到节点上。集群管理者允许你控制服务发布到不同节点集之间的延时。如果发布出问题,你可以把服务回滚到上一个版本。
译者注:和kubernetes相比,swarm貌似也发展的不错了,集群管理和监控的主要功能:定义状态,状态监控,伸缩,状态保持都有了。但好像kubernetes更适用于大型的分布式集群部署(毕竟是Google用来管理自家应用的工具),而且学习成本也更高。由于个人kubernetes还没学好,也不好做更多评价了,继续学习去了。。。