开发者社区> 问答> 正文

Swarm mode 集群的概述

swarm mode 是 Docker 1.12 版开始推出的新功能,它将 Docker Engine、swarm 的集群管理和容器编排功能集成在一起,并新增了 service 概念及基于 LVS 的 4 层负载均衡功能(RoutingMesh)。
阿里云容器服务第一时间支持了 swarm mode,并在上面做了很多功能扩充。

Swarm mode 与 Swarm 的区别

swarm 集群swarm mode 集群
管控全部在容器服务内部,用户机器都是工作机。用户机器宕机不影响集群。Manager 在用户机器上,当健康的 Manager 机器少于两台时,集群无法工作。另外,重置 Manager 机器会丢失集群管控数据,相当于 manager 下线。
编排模板支持 compose V1/V2支持compose V1/V2/V3,V1、V2 是 swarm 应用,V3是 swarm mode 应用
容器启动参数支持几乎 docker run 的所有参数不支持 privileged、host network、host pid 等参数
修改应用配置只有有变化的服务会被重启。目前所有服务都会被重启,后续会改进成只重启有变化的服务。
健康检查容器不健康时,只会从路由中摘掉容器容器不健康时,会从路由中摘掉容器,同时重启容器
容器迁移容器挂掉时,原地重启;或者配置 reschedule 环境变量,当机器掉线时迁移自动保证服务的容器数量,数量不足时会重启或者迁移容器
有状态应用更新容器时,继承原容器的数据卷,保证数据不丢失更新容器时不继承数据卷,除非使用命名数据卷,否则数据会丢失
基于SLB的负载均衡需要用户手工配置 SLB 的监听及后端机器,一个 SLB 只能绑定一个服务自动配置 SLB,一个 SLB 可以绑定多个服务
蓝绿发布支持基于 routing 和 SLB 的蓝绿发布只支持基于 routing 的蓝绿发布


使用限制
目前,swarm mode 集群处于公测阶段。

Swarm mode 简介
swarm mode 集群的架构图如下所示。

该架构有以下特点:
  • 无任何外部依赖。Manager 之间通过 Raft 协议组成一个分布式 KVStore,替代了原 swarm 中的 etcd。
  • Daemon 身兼 Engine、Manager、Agent 三职。
  • Manager 不直接发送命令给 Worker 的 Daemon,只是同步 Task 信息。
  • 高可用架构,只需将 Manager 设置成 ≥3 的奇数个。
  • 由于没有外部依赖,swarm mode 集群的部署非常简单,只需要安装好 Docker Engine,再设置好节点角色即可。


阿里云容器服务上的 Swarm mode 集群
集群部署
部署 swarm mode 集群和部署 swarm 集群没有什么差别,您只需要在创建时将 [backcolor=transparent]集群模式 设置为 [backcolor=transparent]Swarm Mode集群,容器服务会自动完成 Docker 安装、集群角色设置的工作。
为了实现高可用,集群至少需要有 3 个节点。容器服务会默认设置 3 个 Manager。当添加节点到集群时,如果当前 Manager 数量不足 3 个,节点会被设置为 Manager,否则会被设置为 Worker。
具体操作参见 创建集群

应用部署
容器服务支持通过编排模板和交互界面两种方式来部署应用。具体操作参见 使用镜像创建应用使用编排模板创建应用

编排模板(compose)
swarm mode 集群支持 compose V1、compose V2 和 compose V3 版本的编排模板。
具体的语法格式参见 compose V1compose V2compose V3
下面是一个简单 compose V3 的示例。
  1. [backcolor=transparent]version[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]"3.1"
  2. [backcolor=transparent]services[backcolor=transparent]:
  3. [backcolor=transparent]    nginx[backcolor=transparent]:
  4. [backcolor=transparent]        image[backcolor=transparent]:[backcolor=transparent] nginx[backcolor=transparent]:[backcolor=transparent]latest
  5. [backcolor=transparent]        deploy[backcolor=transparent]:
  6. [backcolor=transparent]            mode[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]global
  7. [backcolor=transparent]        ports[backcolor=transparent]:
  8. [backcolor=transparent]          [backcolor=transparent]-[backcolor=transparent] [backcolor=transparent]80[backcolor=transparent]:[backcolor=transparent]80


扩展功能标签
有关原 swarm 集群上的扩展功能在 swarm mode 集群上的支持情况,参见 扩展能力标签

路由与负载均衡
原 swarm 集群支持 7 层(aliyun.routing)和 4 层(aliyun.lb)路由,swarm mode 集群也支持这两种模式,且语法不变。
有关 swarm mode 集群下路由与负载均衡的详细信息,参见 路由与负载均衡

展开
收起
反向一觉 2017-10-30 13:45:02 2561 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
基于Kubernetes实现弹性的CI/CD系统 立即下载
Microservices on DC/OS and Container Orchestration on Mesos 立即下载
Kubernetes在大规模场景下的service性能优化实战 立即下载