Redis Sentinel是用于监控和管理Redis集群的高可用性解决方案。它是Redis的官方组件,旨在确保Redis在面对故障时能够自动进行故障切换,从而保障Redis集群的稳定性和可用性。
主要特点和功能
1.监控主从节点状态: Sentinel能够实时监控Redis主从节点的状态,包括主节点的运行状态、从节点的同步状态等。它通过发送心跳检测来保持与Redis节点的连接,并根据节点的响应情况判断节点的状态。
2.自动故障转移: 当Redis主节点发生故障或下线时,Sentinel会自动进行故障转移,将一个可用的从节点升级为新的主节点,继续提供服务。这个过程是自动的,无需人工干预。
3.配置中心: Sentinel作为一个独立的进程,它的配置文件中包含了Redis集群的拓扑信息以及故障切换的相关配置。这样,可以将Sentinel作为Redis的配置中心,集中管理多个Redis实例的配置。
4.哨兵机制: Sentinel使用哨兵(Sentinel)之间的协作来监控和决策。当一个Sentinel发现主节点状态发生变化时,它会通知其他Sentinel,并通过共识机制决定是否进行故障转移。
5.Quorum(法定人数): Sentinel中的Quorum是一个重要的概念,用于决定故障转移的条件。Quorum是一个由Sentinel节点组成的子集,只有在Quorum中大多数Sentinel节点认为主节点不可用时,才会进行故障转移。所以哨兵节点个数通常要求为奇数个。
6.配置动态更新: Sentinel支持动态更新配置,可以在运行时修改Sentinel的配置文件,并且不需要重启Sentinel进程。
redis节点在sentinel中的几种状态
- master:主节点(Master)状态,表示该节点是Redis的主节点,负责接收写操作和同步数据给从节点。
- slave:从节点(Slave)状态,表示该节点是Redis的从节点,负责接收主节点同步过来的数据,并只能进行读操作。
- s_down:主观下线状态(Subjectively Down),表示Sentinel认为该节点已经下线,但并未得到其他大多数Sentinel的确认。
- o_down:客观下线状态(Objectively Down),表示多数Sentinel都认为该节点已经下线。当某个节点状态为s_down时,在Sentinel中仍然可以看到这个节点,当状态变为o_down时,就会从sentinel中移除。
- disconnected:断开连接状态,表示该从节点与主节点失去了连接,暂时无法进行数据同步。
- sentinel:Sentinel节点状态,表示该节点是Redis Sentinel监控节点。
- failover_in_progress:故障转移进行中状态,表示当前节点正在进行故障转移。
sentinel常用的命令
- PING:检查Sentinel是否在线。
- SENTINEL MASTERS:列出所有被监控的主节点。
- SENTINEL SLAVES <master-name>:列出指定主节点的所有从节点。
- SENTINEL GET-MASTER-ADDR-BY-NAME <master-name>:获取指定主节点的IP地址和端口号。
- SENTINEL MASTER <master-name>:获取指定主节点的详细信息。
- SENTINEL IS-MASTER-DOWN-BY-ADDR <ip> <port> <current-epoch> <run-id>:检查指定主节点是否已经下线。
- SENTINEL FAILOVER <master-name>:手动触发故障转移操作。
- SENTINEL MONITOR <master-name> <ip> <port> <quorum>:监控新的主节点。
- SENTINEL REMOVE <master-name>:从监控列表中移除指定主节点。
- SENTINEL SET <master-name> <option> <value>:设置主节点的配置选项。
- SENTINEL SLAVEOF <master-name> <ip> <port>:将指定从节点设置为主节点的从属节点。
- SENTINEL RESET <master-name>:Sentinel会尝试将处于DISCONNECTED状态的从节点标记为SLAVE状态,然后让其重新连接到主节点。
日常使用中需要注意的点
-
当Sentinel监控的主节点(Master)由于故障导致下线并进行了主从切换,一旦原主节点恢复,它会自动升级为新的主节点,这个过程是自动进行的,而不需要人工干预。当原主节点恢复时,它会成为新的从节点(Slave)并开始与新的主节点进行数据同步。同时,Sentinel会监测到原主节点的状态变化,并在得到多数Sentinel节点的确认后,将原主节点升级为新的主节点。
-
在Redis的主节点发生故障,而一个从节点被选举为新的主节点(主从切换)时,其他从节点会进行全量同步。需要注意的是,选主期间整个集群是不可用状态,而且其他从节点进行全量同步时会导致这些从节点也是不可用状态。所以建议redis数据量不要太大,因为数据量太大,全量同步的时间也会比较长。
网友评论