首页 > 编程语言 >docker swarm中的raft 一致性算法,究竟有什么作用?

docker swarm中的raft 一致性算法,究竟有什么作用?

时间:2022-10-24 11:00:09浏览次数:43  
标签:swarm 算法 集群 一致性 raft docker 节点

  • 当docker运行在swarm集群模式时,管理节点通过Raft一致性算法来管理全局的集群状态。

 


  • Docker swarm 集群模式使用raft一致性算法的原因是:

 

确保集群中负责管理和调度任务的所有管理节点都存储着相同的一致性状态。


 

  • 在整个集群中保持相同的一致状态意味着在发生故障时,任何Manager节点都可以接替管理的任务,并将service恢复到稳定的状态。

 

  • 在分布式系统中使用一致性算法来复制日志需要特别注意一点!就是,其实是通过要求大多数节点对值达成一致来确保在出现故障时集群状态保持一致的。(要十分的注意!)

 

Raft最多允许(N-1)/2个管理节点失败,并且需要多数,或者(N/2)+1个成员的同意向集群提出的值。

 

意思就是,在一个有5个管理节点运行的集群中,如果3个节点不可用,系统将不会在处理任何调度额外任务的请求!现有的任务将继续运行,但如果管理器集不正常,调度器无法重新平衡任务以应对失败。

 

如果出现这种情况,当执行swarm管理命令的时候,就会出现如下的报错:

 

[root@nccztsjb-node-01 ~]# docker node ls
Error response from daemon: rpc error: code = Unknown desc = The swarm does not have a leader. It's possible that too few managers are online. Make sure more than half of the managers are online.
[root@nccztsjb-node-01 ~]# 

 

在集群模式下实现一致性算法,意味着它具有分布式系统固有的特性:

 

  • 容错系统中值的一致性。

 

  • 通过leader 选举过程相互排斥

 

  • 集群成员管理

 

  • 全局一致的对象排序和CAS(比较和交换)原语

 

 

 

标签:swarm,算法,集群,一致性,raft,docker,节点
From: https://www.cnblogs.com/chuanzhang053/p/16820730.html

相关文章

  • docker安装wordpress--亲测OK
    环境:centos7   Wordpress:6.0.1   Mysql:8.0网上太多资料不全,主要是没有数据的配置。还是自己测试成功,才能明白。大道至简,各有其道。https://baijiahao.baidu.com......
  • Docker的数据管理、dockerfile
    Docker的数据管理、网络通信和dockerfile一、Docker的数据管理管理Docker容器中数据主要有两种方式:数据卷(DataVolumes)和数据卷容器(DataVolumesContainers)。1.数据卷......
  • Docker consul
    Dockerconsul的容器服务更新与发现一、Consul简介1.服务注册与发现服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的,不保障高可用性,也不考虑服......
  • Docker-Compose
    一、Docker-compose简介Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose将所管理的容器分为三层,分别是工程(project),服务......
  • 为docker添加阿里云镜像以及docker中安装mysql与redis
    由于dockerhub访问慢,所以需要借助镜像这里我用阿里云的镜像服务1、sudomkdir-p/etc/docker2、sudotee/etc/docker/daemon.json<<-'EOF'{"registry-mirrors":......
  • dockerfile解析
    定义官方文档https://docs.docker.com/engine/reference/builder/ Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。构建......
  • 持续集成平台Jenkins:docker镜像升级
    Jenkins2.357及LTS2.361.1之后的版本要求Java11或者17,如果使用的是Java8,要升级最新版本的Jenkins,就需要升级JavaJDK版本,本文记录一下如何升级jenkins容器的Java版......
  • docker-compose编排启动LNMP
    2-1、docker-compose启动php #生成php镜像 [root@rocky8data]#vim/data/dockerfile/ubuntu_php/Dockerfile FROMubuntu_base:v1.0 LABELmaintainer="www.wang.......
  • docker部署思源笔记并配置nginx支持https
    dockercompsoe的完整配置docker-compose.yml#构建docker-compose项目#dockercompose--log-levelINFOup--build#dockercompose--log-levelINFOup-d--bu......
  • Docker 与 K8S学习笔记(二十五)—— Pod的各种调度策略(下)
    在实际应用中,我们往往需要提高Kubernetes集群的资源利用率,即允许集群中所有负载所需的资源总量超过集群所提供的资源量,这个时候,当资源不足时,系统可以选择释放一些不重要的......