Redis哨兵模式(Redis Sentinel)
Redis哨兵模式(Redis Sentinel)是用于实现Redis高可用性(High Availability)的一种解决方案。它通过引入哨兵进程来监控和管理Redis主从节点,以实现自动故障转移和节点恢复的功能。
主从模式,当主节点宕机之后,从节点是可以作为主节点顶上来,继续提供服务的。
但是有一个问题,主节点的IP已经变动了,此时应用服务还是拿着原主节点的地址去访问,这…
于是,在Redis 2.8版本开始引入,就有了哨兵这个概念。
哨兵模式的核心功能是在主从复制的基础上,引入了主节点的自动故障转移。
哨兵节点定期向主从节点发送PING命令来检测节点的健康状态。当哨兵发现主节点宕机或无法正常工作时,它会选择一个从节点升级为新的主节点,并通知其他从节点切换到新的主节点。这个过程称为自动故障转移。
哨兵结构
哨兵结构由两部分组成,哨兵节点和数据节点
哨兵节点:哨兵系统由一个或多个哨兵节点组成,哨兵节点是特殊的redis节点,不存储数据。
数据节点:主节点和从节点都是数据节点。
故障转移机制(重要)
由哨兵节点定期监控发现主节点是否出现了故障
每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。
如果主节点在一定时间范围内不回复或者是回复一个错误消息,那么这个哨兵就会认为这个主节点主观下线了(单方面的)。
当超过半数哨兵节点认为该主节点主观下线了,这样就客观下线了。
当主节点出现故障,此时哨兵节点会通过Raft算法(选举算法)实现选举机制共同选举出一个哨兵节点为leader,来负责处理主节点的故障转移和通知。
所以整个运行哨兵的集群的数量不得少于3个节点。
由leader哨兵节点执行故障转移
将某一个从节点升级为新的主节点,让其它从节点指向新的主节点; 若原主节点恢复也变成从节点,并指向新的主节点; 通知客户端主节点已经更换。
主节点选举机制
1)过滤掉不健康的(已下线的),没有回复哨兵 ping 响应的从节点。
2)选择配置文件中从节点优先级配置最高的。(replica-priority,默认值为100)
3)选择复制偏移量最大,也就是复制最完整的从节点。
Redis集群
1)集群,即Redis Cluster,是Redis 3.0开始引入的分布式存储方案。
2)集群由多组节点(Node)组成,Redis的数据分布在这些节点中。
3)集群中的节点分为主节点和从节点:只有主节点负责读写请求和集群信息的维护;从节点只进行主节点数据和状态信息的复制。
集群的作用
数据分区
集群将数据分散到多个节点,一方面突破了Redis单机内存大小的限制,存储容量大大增加;
另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力
高可用
集群支持主从复制和主节点的自动故障转移(与哨兵类似);
当任一节点发生故障时,集群仍然可以对外提供服务。