`

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】Redis Cluster-集群故障转移.doc

    Redis 3.x 分布式集群搭建.pdf

    redis集群支持动态加入节点,动态迁移slot,以及自动故障转移。 Redis Cluster是由多个Redis实例组成,官方推荐我们使用6实例,其中3个为主节点,3个为从结点。一旦有主节点发生故障的时候,Redis Cluster可以选举...

    Redis cluster最佳实践

    我在做redis cluster的时候发现,两节点的cluster在处理断网或单节点故障时,会出现脑裂情况,为此,我做了实验去测试redis cluster配置的最佳方式,本文包含了测试的全过程。

    Redis Cluster集群数据分片机制原理

    Redis Cluster 一般由多个节点组成,节点数量至少为 6 个才能保证组成完整高可用的集群,其中三个为主节点,三个为从节点。三个主节点会分配槽,处理客户端的命令请求,而从节点可用在主节点故障后,顶替主节点。 ...

    redis-cluster-proxy:Redis集群的代理

    Redis可以在集群模式下运行,在该模式下,一组Redis实例将负责故障转移和分区。 这种特殊模式需要使用了解群集协议的特殊客户端:通过使用此代理,可以将群集抽象化,并且可以与组成Redis群集的一组实例进行交谈,...

    docker-rediscluster:用于设置一次性 redis 集群以测试哨兵故障转移的 Docker 脚本

    设置一次性 redis 集群以测试哨兵故障转移。 拓扑 redis_0 - 主 redis_1 - redis_0 的从属 sentinel_0 sentinel_1 sentinel_2 哨兵配置了具有以下属性的“测试”实例 - down-after-milliseconds 1000 failover...

    Redis三主三从集群(Cluster)搭建

    Redis三主三从集群(Cluster)搭建,简洁明了,按步聚操作即可。 Redis-Cluster采用无...一旦有主节点发生故障的时候,Redis Cluster可以选举出对应的从节点成为新的主节点,继续对外服务,从而保证服务的高可用性。

    Redis cluster集群的介绍

    2、当集群中的某一个节点故障时,redis还可以继续处理客户端的请求。 一个 redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个。集群使用公式 CRC16(key) 384 来计算键 ...

    Reading-and-comprehense-redis-cluster_y123456yz.tar.gz

    分布式NOSQL redis源码阅读中文分析注释,带详尽注释以及相关流程调用注释,提出改造点,redis cluster集群功能、节点扩容、槽位迁移、failover故障切换、一致性选举完整分析,对理解redis源码很有帮助,解决了...

    Redis源码解析:集群手动故障转移、从节点迁移详解

    主要介绍了Redis源码解析:集群手动故障转移、从节点迁移的相关内容,涉及通过集群定时器函数clusterCron实现从节点迁移等知识,具有一定参考价值,需要的朋友可以了解。

    spark-redis:Spark的连接器,允许从Redis集群读写

    与Redis群集一起使用时,Spark-Redis会意识到其分区方案,并会根据重新分片和节点故障事件进行调整。 Spark-Redis还支持Spark流(DStream)和结构化流。版本兼容性和分支该库具有多个分支,每个分支对应于一个受...

    redis集群模式例子,三主三从,非常简单

    Cluster自动具备哨兵监控和故障转移(主从切换)能力 客户端连接集群内部地址可自动发现 高性能、高可用,有效解决了Redis分布式需求 缺点 不支持原子操作:在Redis集群中,不同节点之间的数据访问会出现延迟,...

    Redis集群节点操作方法,及如何测试自动故障转移

    Redis集群以及自动故障转移测试 https://www.cnblogs.com/wy123/p/10325904.html 执行命令: 1、查询出要宕机的redis集群主节点信息 redis-cli -h 30.74.3.50 -p 7224 -c –raw 进入redis服务命令行客户端窗口 ...

    Docker快速搭建Redis集群的方法示例

    Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。 节点 一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都...

    Redis集群增加节点与删除节点的方法详解

     本文主要是承接上一篇文章Redis集群的离线安装成功以后,我们如何进行给集群增加新的主从节点(集群扩容)以及如何从集群中删除节点(集群缩容),也就是集群的伸缩,集群伸缩的原理是控制虚拟槽和数据在节点之间进行...

    redisStudy.zip

    2.Rediscluster集群模式 基本回答:Rediscluster是一个高可用集群,它基于分片(对key进行crc16,然后对16384取余)的原理,可以把他理解为是由多组哨兵集群组成,但是它不依赖哨兵 6.缓存穿透 缓存穿透指的是...

    Undermoon:Mordern Redis Cluster解决方案,易于操作

    月下 Undermoon是基于Redis群集协议的自我管理Redis群集系统,支持: 横向可扩展性和高可用性通过HTTP API进行集群管理对主服务器和副本服务器进行自动故障转移快速缩放群集模式客户端和非群集模式客户端。...

    redis源码阅读中文分析注释

    redis源码阅读中文分析注释,带详尽注释以及相关流程调用注释,提出改造点,redis cluster集群功能、节点扩容、槽位迁移、failover故障切换、一致性选举完整分析

    Redis Cluster解决方案,易于操作。-Linux开发

    支持:水平可伸缩性和高可用性通过HTTP API的群集管理对这两个区域的自动故障转移Undermoon Undermoon是一个基于Redis群集协议的自我管理的Redis集群系统,支持:水平可扩展性和高可用性通过HTTP API的群集管理主...

Global site tag (gtag.js) - Google Analytics