我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解redis集群选举机制

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解redis集群选举机制

概要

当redis集群的主节点故障时,Sentinel集群将从剩余的从节点中选举一个新的主节点,有以下步骤:

  • 故障节点主观下线
  • 故障节点客观下线
  • Sentinel集群选举Leader
  • Sentinel Leader决定新主节点

选举过程

1、主观下线

Sentinel集群的每一个Sentinel节点会定时对redis集群的所有节点发心跳包检测节点是否正常。如果一个节点在down-after-milliseconds时间内没有回复Sentinel节点的心跳包,则该redis节点被该Sentinel节点主观下线。

2、客观下线

当节点被一个Sentinel节点记为主观下线时,并不意味着该节点肯定故障了,还需要Sentinel集群的其他Sentinel节点共同判断为主观下线才行。

该Sentinel节点会询问其他Sentinel节点,如果Sentinel集群中超过quorum数量的Sentinel节点认为该redis节点主观下线,则该redis客观下线。

如果客观下线的redis节点是从节点或者是Sentinel节点,则操作到此为止,没有后续的操作了;如果客观下线的redis节点为主节点,则开始故障转移,从从节点中选举一个节点升级为主节点。

3、Sentinel集群选举Leader

如果需要从redis集群选举一个节点为主节点,首先需要从Sentinel集群中选举一个Sentinel节点作为Leader。

每一个Sentinel节点都可以成为Leader,当一个Sentinel节点确认redis集群的主节点主观下线后,会请求其他Sentinel节点要求将自己选举为Leader。被请求的Sentinel节点如果没有同意过其他Sentinel节点的选举请求,则同意该请求(选举票数+1),否则不同意。

如果一个Sentinel节点获得的选举票数达到Leader最低票数(quorumSentinel节点数/2+1的最大值),则该Sentinel节点选举为Leader;否则重新进行选举。

在这里插入图片描述

4、Sentinel Leader决定新主节点

当Sentinel集群选举出Sentinel Leader后,由Sentinel Leader从redis从节点中选择一个redis节点作为主节点:

  • 过滤故障的节点
  • 选择优先级slave-priority最大的从节点作为主节点,如不存在则继续
  • 选择复制偏移量(数据写入量的字节,记录写了多少数据。主服务器会把偏移量同步给从服务器,当主从的偏移量一致,则数据是完全同步)最大的从节点作为主节点,如不存在则继续
  • 选择runid(redis每次启动的时候生成随机的runid作为redis的标识)最小的从节点作为主节点

为什么Sentinel集群至少3节点

一个Sentinel节选举成为Leader的最低票数为quorumSentinel节点数/2+1的最大值,如果Sentinel集群只有2个Sentinel节点,则


Sentinel节点数/2 + 1
= 2/2 + 1
= 2

即Leader最低票数至少为2,当该Sentinel集群中由一个Sentinel节点故障后,仅剩的一个Sentinel节点是永远无法成为Leader。

也可以由此公式可以推导出,Sentinel集群允许1个Sentinel节点故障则需要3个节点的集群;允许2个节点故障则需要5个节点集群。

到此这篇关于详解redis集群选举机制的文章就介绍到这了,更多相关redis集群选举机制内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解redis集群选举机制

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

redis集群选举机制是什么

Redis集群的选举机制是基于Raft算法的一种实现。在Redis集群中,每个节点都有可能成为领导者(leader),而其他节点则成为追随者(follower)。选举机制的目的是为了确保集群中只有一个领导者,以确保数据的一致性和可用性。在
redis集群选举机制是什么
2024-04-09

redis的cluster集群怎么进行选举

在Redis Cluster中,每个节点都有可能成为主节点或从节点。当一个主节点宕机或无法连接时,Redis Cluster会通过选举过程选择一个从节点作为新的主节点来接管服务。选举过程如下:当主节点宕机或无法连接时,将会触发选举过程。从
redis的cluster集群怎么进行选举
2024-04-09

redis集群规范详解

本文档翻译自 http://redis.io/topics/cluster-spec 。 引言这个文档是正在开发中的 Redis 集群功能的规范(specification)文档, 文档分为两个部分:第一部分介绍目前已经在 unstable
2022-06-04

Zookeeper集群管理与选举怎么理解

本篇内容主要讲解“Zookeeper集群管理与选举怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Zookeeper集群管理与选举怎么理解”吧!  1.集群机器监控  这通常用于那种对集群
2023-06-02

redis从节点选举机制是什么

Redis的从节点选举机制是通过主节点选举从节点的方式来实现的。当一个从节点与主节点连接时,它会发送一个SYNC命令来请求复制主节点的数据。主节点在收到SYNC命令后,会执行BGSAVE命令来创建一个RDB快照,并将快照发送给从节点。同时,
2023-09-11

详解redis集群的三种方式

目录主从复制基本原理持久化开关配置哨兵模式基本原理启动配置故障迁移Cluster集群键分布模型配置cluster集群启动集群Redis三种集群方式:主从复制,哨兵模式,Cluster集群。主从复制基本原理当新建立一个从服务器时,从服务器
2022-07-25

MySQL Galera集群容错机制解析

MySQL Galera集群是一种基于InnoDB存储引擎的多主复制解决方案,它通过同步复制和自动节点管理实现了高可用性和数据一致性。以下是MySQL Galera集群容错机制的相关信息:Galera集群的容错机制状态快照传输(SST):
MySQL Galera集群容错机制解析
2024-09-04

zookeeper的Leader选举机制源码解析

这篇文章主要为大家介绍了zookeeper的Leader选举源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-14

解读MySQL Galera集群的锁机制

MySQL Galera集群的锁机制是其确保数据一致性和完整性的关键部分,通过同步复制和多主复制技术实现。以下是对MySQL Galera集群锁机制的详细解读:Galera集群概述Galera集群是一种基于同步复制的高可用性和高可靠性数
解读MySQL Galera集群的锁机制
2024-09-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录