什么是Docker Swarm

Docker Swarm是Docker官方的一种容器编排方案,用于管理跨主机的Docker容器,可以快速对指定服务进行水平扩展、部署、删除

一个Docker Swarm集群通常由多个安装有Docker且运行在Docker Swarm Mode的主机组成,角色包含Managers(管理者)、Workers(执行节点),一个节点可以兼拥有这两个角色或之一

在Docker 1.12以前,Docker Swarm作为一个独立的集群容器编排软件(Swarmkit)形式存在,在之后,它与Docker集成在了一起,可以称之为Docker Swarm Mode

特性

  • 集群管理与Docker集成 - 在Docker 1.12以后,Docker Swarm不再作为单独的集群管理软件,而是直接集成到Docker Engine.
  • 去中心化 - 你可以将Docker镜像部署到一台或多台服务器上
  • 声明式服务模式 - 你可以使用声明式的方法定义一套应用stack
  • 扩展 - 你可以指定task(Swarm的最小粒度) 的数量,简单理解就是容器数
  • 状态自动调节 (Desired state reconciliation)- Swarm Manager角色会不断地检查服务与其副本的状态,当有副本不可用时,会创建新的副本替换不可用副本,保证可用性
  • 多主机网络 - 当为Swarm集群指定overlay网络时,Swarm自动为容器指定overlay的网络ip
  • 服务发现 - Docker Swarm的管理节点会为服务分配唯一DNS名称与负载均衡,Docker Swarm内置了DNS server
  • 负载均衡 - 除了自动的负载均衡,你还可以使用自定义的负载均衡器转发各服务的对外暴露的端口
  • 默认安全通信 - 节点间通信默认强制使用TLS加密,可选使用自签发的密钥或CA组织发的证书
  • 滚动升级 - 升级服务过程中,可以配置延迟部署的时间,如果出现问题时,可以快速还原之前的版本

Docker Swarm 模式核心概念

节点(Nodes)

每台加入Docker Swarm的主机即是一个节点,这是最简单的理解,每个节点可以是管理节点(Manager Nodes),也可以是执行节点(Worker Nodes),亦可兼具这两个角色

当部署服务到Swarm集群的时候,你将一个Service提交到Manager Nodes,Manager Nodes会被服务拆分成Task(Swarm中最小粒度,可能仅包含一个容器),分发到Worker Nodes,Worker Nodes执行接收到的Task,完成部署,Manager Nodes监听服务的状态

服务与任务 (Services And Tasks)

一个Service定义了很多执行在Workers节点与Managers节点上的Task

创建一个Service时需要指定docker镜像,以及执行的命令或参数,当使用replicated services 模式时,Manager节点分发你指定的scale因子数量的复制Task到一个Worker节点上;使用global services模式时,则为集群中每一个Worker节点创建指定数量的复制Task

每个Task承载着一个运行着应用服务的容器,Manager节点通过设置的scale因子数分配Task到执行节点上,一个Task只能运行在一个Worker节点中,只有运行与失败两个状态

负载均衡(Load balancing)

Swarm Manager通过入口负载均衡ingress load balancing)暴露的端口作为负载均衡策略

Manager默认会为Service会分配一个未被占用的端口,称为PublishedPort(也可自行指定),范围在30000-32767之间,外部服务访问Publishedport来访问运行中的Task

Swarm会将所有集群内的请求,转发到正常运行的节点上

Docker Swarm Mode简介与核心概念的更多相关文章

  1. Docker(一)简介及核心概念

    1.简介 Docker是一个开源的应用容器引擎:是一个轻量级容器技术: Docker支持将软件编译成一个镜像:然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像: 运行中的这 ...

  2. Docker Swarm 中最重要的概念- 每天5分钟玩转 Docker 容器技术(94)

    从主机的层面来看,Docker Swarm 管理的是 Docker Host 集群.所以先来讨论一个重要的概念 - 集群化(Clustering). 服务器集群由一组网络上相互连接的服务器组成,它们一 ...

  3. ZooKeeper学习之路(一)—— ZooKeeper简介及核心概念

    一.Zookeeper简介 Zookeeper是一个开源的分布式协调服务,目前由Apache进行维护.Zookeeper可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调/通知. ...

  4. ZooKeeper系列(一)—— ZooKeeper 简介及核心概念

    一.Zookeeper简介 Zookeeper 是一个开源的分布式协调服务,目前由 Apache 进行维护.Zookeeper 可以用于实现分布式系统中常见的发布/订阅.负载均衡.命令服务.分布式协调 ...

  5. Nifi简介及核心概念整理

    简介 Apache NiFi 是一个易于使用.功能强大而且可靠的数据拉取.数据处理和分发系统,用于自动化管理系统间的数据流. 它支持高度可配置的指示图的数据路由.转换和系统中介逻辑,支持从多种数据源动 ...

  6. Hive学习之路(一)—— Hive 简介及核心概念

    一.简介 Hive是一个构建在Hadoop之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类SQL查询功能,用于查询的SQL语句会被转化为MapReduce作业,然后提交到Hadoop上运行. ...

  7. Hive 系列(一)—— Hive 简介及核心概念

    一.简介 Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 ...

  8. Docker Swarm Mode 入门实践

    本文来源 翻译并总结官方文档,添加自定义示例,参考自Docker 19.03版本官方文档 未来可能归档为:https://docs.docker.com/v19.03/ 2020.01.03为http ...

  9. 20、docker swarm

      Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.Swarm和Kuber ...

随机推荐

  1. 实践分享:开始用Cordova+Ionic+AngularJS开发App

    http://www.cocoachina.com/webapp/20150707/12395.html 本文是一篇关于我本人在使用Cordova+Ionic以及AngularJS开发移动App的过程 ...

  2. shell不排序去重

    一条命令搞定:   awk '!a[$0]++' file 如果是第一次出现a[$0]++的值为0(假),而!a[$0]++的值就为1(真),之后就执行print $0 第二次或者两次以上的出现a[$ ...

  3. LeetCode63 Unique Paths II

    题目: Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. H ...

  4. [C#] 如何分析stackoverflow等clr错误

    有时候由于无限递归调用等代码错误,w3wp.exe会报错退出,原因是clr.exe出错了. 这种错误比较难分析,因为C#代码抓不住StackOverflowException等异常. 处理方法是:生成 ...

  5. MySQL列出当前月的每一天

    因为工作的原因,要用MySQL列出当前月份每一天的日期,自己查了下网上资料都是列出最近一个月的日期的解决方案,自己根据查到的的方案,修改成了下面两个方案,在此记录下: 方案一: SELECT date ...

  6. 安装visualStudio 出现 cant install Microsoft.TeamFoundation.OfficeIntegration.Resources

    本文告诉大家在安装 VisualStudio 时出现cant install Microsoft.TeamFoundation.OfficeIntegration.Resources如何安装 如果在安 ...

  7. behavior planning——15.cost function design weightTweaking

    Designing cost functions is difficult and getting them all to cooperate to produce reasionable vehic ...

  8. poj 3743 LL’s cake (PSLG,Accepted)

    3743 -- LL’s cake 搞了好久都过不了,看了下题解是用PSLG来做的.POJ 2164 && LA 3218 Find the Border (Geometry, PSL ...

  9. px em rem %作为单位使用

    博客地址 :https://www.cnblogs.com/sandraryan/ px 我们都很熟悉啦,但是固定大小无法适配各种屏幕. rem是CSS3新增的一个相对单位(root em,根em), ...

  10. PyCharm indexing goes into infinite loop pycharm 不同的indexing

    https://stackoverflow.com/questions/24955896/pycharm-indexing-goes-into-infinite-loop 5 1 I opened u ...