2026-10-22 10:53:26
Redis哨兵模式解析
一、哨兵模式搭建步骤
哨兵模式通过多个Sentinel实例监控Redis主从集群,实现故障自动转移。搭建流程如下:
端口设置:修改port参数为不同端口(如26379、26380)。
后台运行:将daemonize从no改为yes。
监控主节点:配置sentinel monitor <master-name> <ip> <port> <quorum>,指定主节点名称、IP、端口及法定人数(如quorum=2表示至少2个Sentinel认为主节点下线时触发故障转移)。
认证密码:若Redis启用密码,需通过sentinel auth-pass <master-name> <password>设置统一密码。
下线判定时间:调整sentinel down-after-milliseconds <master-name> <milliseconds>(如3000毫秒),定义主观下线时间阈值。
并行同步数:通过sentinel parallel-syncs <master-name> <numslaves>(如numslaves=1)限制故障转移时同步的从节点数量。
故障转移超时:设置sentinel failover-timeout <master-name> <milliseconds>(如80000毫秒),控制故障转移操作的最大耗时。
二、执行流程
命令连接:向主节点发送命令并接收响应。
订阅连接:订阅主节点的__sentinel__:hello频道,接收其他Sentinel信息。
主节点信息:每10秒发送INFO命令,获取主节点及其从节点列表。
从节点信息:对新发现的从节点建立命令和订阅连接,同样每10秒发送INFO命令更新状态。
状态转换:未投票的Sentinel转为Candidate,增加任期(epoch),发起投票请求。
投票规则:其他Sentinel根据epoch判断是否投票,若Candidate获得超半数且超过quorum的票数,则成为Leader。
选择新主节点:从健康的从节点中筛选优先级最高、复制偏移量最大、运行ID最小的节点。
升级主节点:Leader Sentinel将选中的从节点升级为主节点,并让其他从节点复制新主节点。
更新配置:修改所有节点的配置文件(如replicaof指向新主节点),并通知客户端新主节点地址。
三、关键机制
哨兵模式通过自动化监控和故障转移,显著提升了Redis集群的可用性,适用于对数据一致性要求较高的场景。