Raft consensus in swarm mode 在集群模式中的Raft共识

当Docker引擎在集群模式下运行时,manager节点实现Raft 共识算法来管理全局集群状态。
Docker swarm模式使用共识算法的原因是为了确保集群中负责管理和调度任务的所有manager节点都存储相同的一致性状态。
跨集群具有相同的一致状态意味着在出现故障时,任何管理器节点都可以接收任务并将服务恢复到稳定状态。例如,如果集群中负责调度任务的Leader Manager意外死亡,那么任何其他Manager都可以继续调度任务并重新平衡任务,以匹配所需的状态。

使用共识算法在分布式系统中复制日志的系统确实需要特别注意。它们要求大多数节点对值达成一致,从而确保集群状态在出现故障时保持一致。

Raft可以容忍(N-1)/2次失败,并且需要多数或(N/2)+1个成员仲裁来就建议给集群的值达成一致。这意味着在一个由5个管理器组成的运行Raft的集群中,如果3个节点不可用,系统将无法处理更多请求来调度其他任务。现有任务继续运行,但如果管理器集不健康,调度器无法重新平衡任务以处理失败。

共识算法在群体模式下的实现意味着它具有分布式系统固有的特性:

docker swarm英文文档学习-12-在集群模式中的Raft共识的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

  7. docker swarm英文文档学习-2-关键概念

    参考https://docs.docker.com/engine/swarm/key-concepts/ Swarm mode key concepts集群模式关键概念 本主题介绍Docker Eng ...

  8. docker swarm英文文档学习-1-概述

    参考https://docs.docker.com/engine/swarm/ Swarm mode overview群模式概述 Docker的当前版本包括集群模式,用于本地管理称为集群的Docker ...

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

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

随机推荐

  1. 作用域public、private、protected、以及不写时的区别?

    区别如下: 作用域 当前类 同包 子孙类 其他 public     √ √ √ √ protected   √ √ √ X default    √  √ X X private    √  X X ...

  2. c# 检测是否有Sql非法字符

    /// <summary> /// 检测是否有Sql危险字符 /// </summary> /// <param name="str">要判断字 ...

  3. JS通过百度地图API获取当前定位信息

    $(function(){ var latlon=null; //ajax获取用户所在经纬度 $.ajax({ url:"http://api.map.baidu.com/location/ ...

  4. mysql百万的数据快速创建索引

    测试数据本机一张表users有100百万条记录.在创建此表前没有未相应字段添加索引,所以此时需要为表添加索引.但是因为数据量大的原因,索引添加可能不成功,想了很多办法,终于挖坑成功. 开始准备工作, ...

  5. vue-cli脚手架目录一览

    最近在学习vue,看的稀里糊涂.今天从头开始,把cli配置的vue项目目录和配置文件搞清楚. 先看看整个项目目录结构: 再看看build文件夹下相关文件及目录: config文件夹下目录和文件: 接下 ...

  6. 从零开始学习html(二)认识标签(第一部分)——上

    一.语义化,让你的网页更好的被搜索引擎理 学习html标签过程中,主要注意两个方面的学习:标签的用途.标签在浏览器中的默认样式. 标签的用途:我们学习网页制作时,常常会听到一个词,语义化. 那么什么叫 ...

  7. Angular基础(三) TypeScript

    一.模仿Reddit a) 运行ng new –ng4angular-reddit创建应用,从随书代码中复制样式文件,新建组件app-root,代码为: 界面可以看到了: b) 对于界面输入的数据,获 ...

  8. Universal-ImageLoader,Picasso,Fresco,Glide对比

    Universal-ImageLoader:(估计由于HttpClient被Google放弃,作者就放弃维护这个框架)优点:1.支持下载进度监听2.可以在 View 滚动中暂停图片加载,通过 Paus ...

  9. macos 下安装brew

    1.终端执行 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master ...

  10. python第五十七天------补上笔记

    direct_client:广播接收 #!/usr/bin/env python #_*_coding:utf-8_*_ import pika,time,sys connection = pika. ...