什么是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. 阿里云POLARDB 2.0重磅来袭!为何用户如此的期待?

    点击报名:POLARDB 2.0 升级发布会 回顾POLARDB 1.0升级之路 POLARDB 1.0主要的改进包括采用了计算存储分离的架构,完全兼容MYSQL,性能是原生MySQL的6倍.一个用户 ...

  2. 从零学React Native之02状态机

    本篇文章首发于简书 欢迎关注 之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 本篇文章主要介绍下下面的知识: 1.简单界面的搭 ...

  3. 8-2udp和tcp网络编程以及粘包和解决粘包的方法

    一  tcp网络编程 server 端 import socket sk=socket.socket() #实例化一个对象 sk.setsockopt(socket.SOL_SOCKET,socket ...

  4. [USACO07JAN]区间统计Tallest Cow

    前缀和 sum[i]表示前i个数的和 每次读入a[i]的时候 sum[i] = sum[i - 1] + a[i]; 查询l ~ r区间的和: sum[r] - sum[l - 1] 差分 即前缀和的 ...

  5. MapReduce数据流-Partiton&Shuffle

  6. include 语句中使用双引号与括号有什么区别?

    Include 的语法 你在学习如何构造函数时,看到了不同的 include 语句: # include <iostream> # include "distance.h&quo ...

  7. 威胁快报|挖矿团伙8220进化,rootkit挖矿趋势兴起

    近日,阿里云安全团队发现8220挖矿团伙为了更持久的驻留主机以获得最大收益,开始使用rootkit技术来进行自我隐藏.这类隐藏技术的使用在watchdogs等挖矿蠕虫使用后开始出现逐渐扩散和进化的趋势 ...

  8. 手机QQ浏览器属于代理服务器吗?

    这两天.上QQ,会员上线提示.老是显示福建省,而没有具体的地方.这是怎么回事呢?而且那个时间段我都没有上QQ.但是有用手机QQ浏览器.偷菜.这是怎么回事,机子也没有病毒 没有木马 到底怎么搞的...! ...

  9. [转]ASP.NET WebApi OWIN 实现 OAuth 2.0

    OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. OAuth 允许用户提供一个令牌, ...

  10. 如何让in/exists 子查询(半连接)作为驱动表?

    一哥们问我,怎么才能让子查询作为驱动表? SQL如下: select rowid rid from its_car_pass7 v where 1 = 1 and pass_datetime > ...