`

Redis Cluster集群故障转移

 
阅读更多

1. 故障发现

    1.1 主观下线,Redis集群通过Gossip的ping,pong消息来互相通信,比如A节点向B节点发送ping,如果在 cluster-node-timeout时间内一直失败,则节点A会认为B是主观下线,同时将此状态信息在集群内广播

    1.2 客观下线,当半数以上的持有槽的主节点都标记B是主观下线时,触发客观下线流程。

          1.2.1 通知集群内所有节点,标记B为客观下线并立刻生效

          1.2.2 通知故障节点的从节点触发故障转移

2. 故障恢复

    客观下线后,如果故障节点是持有槽的主节点,需要从它的从节点中选一个替换它,保证集群高可用。当从节点通过内部的定时任务发现主节点客观下线,将会触发故障恢复流程。

    2.1 资格检查,从节点检查最后与主节点断线时间,如果超过一定时间(配置参数),则不具备资格。

    2.2 准备选举时间,会让延迟最小的从节点优先发起选举。

    2.3 发起选举

          2.3.1 更新配置纪元(clusterNode.configEpoch),每个主节点维护一个配置纪元,主节点的配置纪元都不相同,从节点复制主节点的配置纪元,整个集群有维护以全局配置纪元用于记录所有的最大版本。从节点每次投票都会自增全局的配置纪元并单独保存,用于标示自己发起选举的版本

          2.3.2 向集群发送消息,保证该从节点在一个配置纪元只发送一次消息

    2.4 选举投票

          只有持有槽的主节点才会处理故障选举,投票过程是领导者选举过程,每个配置纪元内每个节点只有一张选票,因此只能有一个从节点获得N/2+1的选票,当超过一定时间没有从节点选出会选举作废开始下一轮选举。

    2.5 替换主节点

           当从节点获取足够的票后,触发替换主节点,将当前节点变为主节点,讲主节点负责的槽委派给自己,然后广播自己的pong消息,通知所有节点自己变为主节点

分享到:
评论

相关推荐

    【Redis】Redis Cluster-集群故障转移.doc

    Redis Cluster 集群故障转移机制 Redis Cluster 是一种高可用性的分布式存储解决方案,它可以自动检测节点故障并进行故障转移,确保集群的可用性。下面将详细介绍 Redis Cluster 集群故障转移机制的工作原理。 ...

    RedisCluster集群(Spring访问Redis)

    **RedisCluster集群与Spring访问Redis详解** Redis是一个高性能的键值数据库,广泛应用于缓存、消息中间件等场景。在大型分布式系统中,为了提供高可用性和数据冗余,我们通常会采用Redis Cluster来构建集群。本文...

    rediscluster集群demo

    本示例“rediscluster集群demo”旨在展示如何设置和操作一个简单的Redis Cluster实例,确保在本地环境中的正确运行。 首先,Redis Cluster采用无中心架构,每个节点都是对等的,并且负责一部分数据。它通过槽(slot...

    25_你能聊聊redis cluster集群模式的原理吗?.zip

    这些库内部实现了对槽位映射、故障转移等复杂逻辑的处理,简化了开发者的工作。例如,JedisCluster提供了连接池管理,自动处理节点间的通信和数据操作的转发。 六、注意事项 1. 配置时,至少需要三个节点才能构成一...

    redisCluster集群demo

    在`redisCluster-demo`这个项目中,你可以期待找到一个使用Java实现的示例,展示如何配置和使用`JedisCluster`或者`Lettuce`来连接Redis Cluster,以及如何进行基本的数据操作。这个示例可以帮助初学者理解如何在...

    Redis Cluster集群部署搭建详解附件

    本文将详细解析如何搭建Redis Cluster集群,包括集群的基本概念、配置、节点间通信以及常见问题处理。 一、Redis Cluster基础概念 1. 节点:每个运行Redis服务的实例称为一个节点,至少需要3个节点才能创建一个基本...

    RedisCluster集群搭建代码及相应软件

    RedisCluster是Redis官方提供的分布式集群解决方案,它通过数据分片技术实现了高可用性和可扩展性。RedisCluster将数据分散在多个节点上,每个节点存储一部分数据,并通过槽(slot)来管理和分配数据。这种方式允许...

    redis sentinel与redis cluster 集群配置

    Redis Sentinel和Redis Cluster是两种常见的Redis集群解决方案,用于提高Redis数据库的可用性和可扩展性。在本篇文章中,我们将深入探讨这两个系统的工作原理、配置步骤以及它们各自的特点。 首先,让我们了解一下...

    php成功操作redis cluster集群的实例教程

    php操作Redis Cluster集群的实例教程涵盖了多个知识点,包括Redis Cluster集群的基本概念、PHP与Redis交互的不同方法以及如何使用Predis库与Redis Cluster集群进行通信。以下是详细介绍: 1. Redis Cluster概述: ...

    redis cluster 集群配置.conf简约版.zip

    Redis Cluster是Redis官方提供的分布式集群解决方案,它支持数据的分片(sharding)以及自动故障转移,从而在大型系统中实现高性能、高可用性。在本文中,我们将深入探讨Redis Cluster的基本概念、配置要点以及如何...

    rediscluster.rar

    Redis Cluster支持自动故障转移,当某个节点出现问题时,其上的数据可以自动转移到其他健康节点,确保服务的连续性。 **二、Redis Cluster工作原理** 1. **槽(Slot)映射**:Redis Cluster将数据空间划分为16384...

    03-Redis Cluster集群运维与核心原理剖析.zip

    一旦检测到主节点故障,将触发故障转移(failover),从节点通过投票选举新的主节点,并更新槽的映射,保证数据的可用性。 5. **客户端支持** 客户端在与Redis Cluster交互时,需要支持槽的概念,能够根据槽的映射...

    redis高可用笔记,包括RedisCluster集群方式和完全纯手写Redis缓存框架

    为了确保服务的稳定性和可靠性,Redis提供了多种高可用解决方案,其中最常见的是Redis Cluster集群模式以及自定义的手工搭建的缓存框架。下面将对这两个方面进行详细探讨。 ### Redis Cluster集群 Redis Cluster是...

    Redis-Cluster 分布式集群.docx

    此外,Redis Cluster具有自动故障转移的特性,当主节点失败时,其对应的从节点会被提升为主节点,确保服务的连续性。在实际应用中,你可以通过监控和管理这些操作来维护集群的健康和稳定性。 总的来说,Redis ...

    rediscluster配置文件.zip

    8. **故障转移**:当一个主节点发生故障时,其从节点会被提升为主节点,集群会自动进行故障恢复。 9. **客户端连接**:连接到Redis Cluster时,客户端需要支持Cluster模式,例如Jedis或RediStack等。 10. **监控与...

    docker 实现redis集群搭建

    * 高可用性:Redis 集群可以提供高可用性,避免单点故障。 * 高扩展性:Redis 集群可以水平扩展,以应对高并发和大规模数据存储。 * 高性能:Redis 集群可以提供高性能,提高数据读写速度。 六、结语 使用 Docker ...

Global site tag (gtag.js) - Google Analytics