参考https://docs.docker.com/engine/swarm/key-concepts/

Swarm mode key concepts集群模式关键概念

本主题介绍Docker Engine 1.12集群管理和编配特性特有的一些概念。

What is a swarm?

  Docker引擎中嵌入的集群管理和编配功能是使用swarmkit构建的。Swarmkit是一个独立的项目,它实现了Docker的编配层,并直接在Docker中使用。
  集群由多台以集群模式运行的Docker主机组成,它们分别充当管理员managers(管理成员和委托)和工作者workers(运行群服务services)。给定的Docker主机可以是经理manager、工人worker,也可以同时扮演这两个角色。创建服务service时,需要定义其最佳状态(副本数量、可用的网络和存储资源、服务对外公开的端口,等等)。Docker的工作是维护所需的状态。例如,如果一个工作节点变得不可用,Docker将在其他节点上调度该节点的任务。任务task是一个运行的容器container,它是集群服务service的一部分,由集群管理器manager管理,而不是一个独立的容器。

  集群服务相对于独立容器的一个关键优势是,你可以修改服务的配置,包括它所连接的网络和卷,而不需要手动重新启动服务。Docker将更新配置,使用过期配置停止服务任务,并创建与所需配置匹配的新任务。
  当Docker以集群模式运行时,你仍然可以在参与集群的任何Docker主机以及集群服务上运行独立容器。独立容器和集群服务之间的一个关键区别是,只有群管理器才能管理群,而独立容器可以在任何守护进程上启动。Docker守护进程可以作为管理人员、工人或两者兼而有之地参与到集群中。

  就像你可以使用 Docker Compose来定义和运行容器一样,你也可以定义和运行集群服务栈(swarm service stacks)。
      请继续阅读有关Docker集群服务的概念的详细信息,包括节点 nodes、服务services、任务tasks和负载平衡load balancing。

Nodes节点

  节点是参与集群的Docker引擎的实例。你也可以将其视为Docker节点。你可以在一台物理计算机或云服务器上运行一个或多个节点,但是生产集群部署通常包括分布在多个物理和云机器上的Docker节点。
  要将应用程序部署到集群中,需要向manager节点提交服务定义。管理器manager节点将称为任务task的工作单元分派给工作节点node。
  Manager节点还执行维护集群所需状态所需的编配和集群管理功能。Manager节点选择一个leader来执行编排任务。

  工作节点接收并执行从管理节点分派的任务。默认情况下,管理器节点也作为工作节点运行服务,但是你可以将它们配置为只运行管理器任务且仅作为管理器节点。代理在每个工作节点上运行,并报告分配给它的任务。工作节点将其分配的任务的当前状态通知管理节点,以便管理器能够维护每个工作人员所需的状态。

Services and tasks 服务和任务

  服务service是要在管理器或工作节点上执行的任务的定义。它是集群体系的中心结构,是用户与集群交互的主要根源。
  在创建服务时,要指定要使用哪个容器镜像,以及在运行的容器中执行哪些命令。
  在副本服务模型中,集群管理器manager根据你在所需状态下设置的规模在节点之间分发特定数量的副本任务。

  对于全局服务,swarm在集群中的每个可用节点上为服务运行一个任务task。
  任务task携带Docker容器和在容器中运行的命令。它是集群的原子调度单元。管理节点根据服务级别中设置的副本数量将任务task分配给工作节点。一旦将任务分配给一个节点,它就不能移动到另一个节点。它只能在指定的节点上运行或失败。

Load balancing负载均衡

  swarm管理器使用入口负载平衡公开你希望向集群外部提供的服务。集群管理器manager可以自动为服务service分配一个发布端口,也可以为服务配置一个发布端口。你可以指定任何未使用的端口。如果你没有指定端口,群管理器将为服务分配一个端口,范围为30000-32767。
  外部组件(如云负载平衡器)可以访问集群中任何节点的PublishedPort上的服务,无论该节点当前是否运行该服务的任务。集群中的所有节点都将连接路由到正在运行的任务实例。
  swarm模式有一个内部DNS组件,它自动为集群中的每个服务分配一个DNS条目。集群管理器使用内部负载平衡,根据服务的DNS名称在集群中的服务之间分发请求。

docker swarm英文文档学习-2-关键概念的更多相关文章

  1. docker swarm英文文档学习-3-开始

    https://docs.docker.com/engine/swarm/swarm-tutorial/ 1)Getting started with swarm mode 本教程向你介绍Docker ...

  2. docker swarm英文文档学习-5-在swarm模式中运行Docker引擎

    Run Docker Engine in swarm mode在swarm模式中运行Docker引擎 当你第一次安装并开始使用Docker引擎时,默认情况下禁用swarm模式.在启用集群模式时,需要处 ...

  3. docker swarm英文文档学习-11-上锁你的集群来保护你的加密密钥

    Lock your swarm to protect its encryption key上锁你的集群来保护你的加密密钥 在Docker 1.13及更高版本中,默认情况下,群管理器使用的Raft日志在 ...

  4. docker swarm英文文档学习-12-在集群模式中的Raft共识

    Raft consensus in swarm mode 在集群模式中的Raft共识 当Docker引擎在集群模式下运行时,manager节点实现Raft 共识算法来管理全局集群状态.Docker s ...

  5. docker swarm英文文档学习-10-使用Docker密钥管理敏感数据

    Manage sensitive data with Docker secrets使用Docker secrets管理敏感数据 About secrets 对于Docker Swarm服务来说,sec ...

  6. docker swarm英文文档学习-6-添加节点到集群

    Join nodes to a swarm添加节点到集群 当你第一次创建集群时,你将单个Docker引擎置于集群模式中.为了充分利用群体模式,可以在集群中添加节点: 添加工作节点可以增加容量.当你将服 ...

  7. docker swarm英文文档学习-7-在集群中管理节点

    Manage nodes in a swarm在集群中管理节点 List nodes列举节点 为了查看集群中的节点列表,可以在管理节点中运行docker node ls: $ docker node ...

  8. docker swarm英文文档学习-4-swarm模式如何运行

    1)How nodes work Docker引擎1.12引入了集群模式,使你能够创建一个由一个或多个Docker引擎组成的集群,称为集群.集群由一个或多个节点组成:在群模式下运行Docker引擎1. ...

  9. docker swarm英文文档学习-8-在集群中部署服务

    Deploy services to a swarm在集群中部署服务 集群服务使用声明式模型,这意味着你需要定义服务的所需状态,并依赖Docker来维护该状态.该状态包括以下信息(但不限于): 应该运 ...

随机推荐

  1. Spring Boot项目使用maven-assembly-plugin根据不同环境打包成tar.gz或者zip

    spring-boot-assembly 在spring boot项目中使用maven profiles和maven assembly插件根据不同环境打包成tar.gz或者zip 将spring bo ...

  2. RocketMQ 概述

    Rocket 火箭 MQ的作用:同步转异步(异步解耦). 难点:如何确保消息一定被消费,而且仅消费一次. 1.消息架构:生产者.服务器.消费者.路由发现. 2.消息顺序:严格按照消息到达服务器的顺序进 ...

  3. Codeforces485D(SummerTrainingDay01-K)

    D. Maximum Value time limit per test:1 second memory limit per test:256 megabytes input:standard inp ...

  4. Python数据模型

    引言 像大多数人一样,我在对一直传统的面向过程语言C一知半解之后,走进了面向对象的世界,尽管对OOP一无所知,还好Python还保留有函数式编程,这使得我才不那么抵触,直到现在,习惯了面向对象之后,也 ...

  5. js-ES6学习笔记-修饰器

    1.修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时.这意味着,修饰器能在编译阶段运行代码. 2. function testable(target) { target.isTestable ...

  6. apt-get update 系列作用

    sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 下面摘自知乎用户回答: apt- ...

  7. go语言练习:数组

    1.创建数组: package main import "fmt" func main() { var lst = [3]int{1, 2, 3} //var name=[数量]类 ...

  8. LeetCode题解之 Reverse Only Letters

    1.题目描述 2.题目描述 利用栈实现逆序. 3.代码 string reverseOnlyLetters(string S) { || S.size() == ) return S; stack&l ...

  9. Android aapt 工具介绍(转)

    目录 AAPT 工具介绍 AAPT 的帮助信息 查看AAPT的版本 使用AAPT列出资源包apk文件列表 使用AAPT打包资源文件 使用AAPT解压资源包apk   来自:http://mmmyddd ...

  10. 【EJB学习笔记】——EJB开发环境搭建(Eclipse集成JBoss)

    之前一直用的EJB开发环境是他们搭建好的,直接拿来用,不过还是感觉老吃别人嚼好的不太好吃,所以自己动手来玩一玩. EJB开发依赖的最基本的环境:JDK.Eclipse.JBoss,这里简单介绍一下最基 ...