REdis Sentinel 哨兵集群

Redis Sentinel 哨兵集群笔记

一、为什么需要 Sentinel?

主从复制存在的问题:

  • 主节点故障后,需要手动将从节点提升为主节点

  • 需要修改客户端/应用程序的主节点地址

  • 需要手动调整其他从节点的复制关系

Sentinel 解决了上述问题,实现了自动故障转移


二、什么是 Sentinel?

  • Redis 的高可用解决方案

  • 分布式架构,包含若干个 Sentinel 节点和 Redis 数据节点

  • 每个 Sentinel 节点对数据节点和其他 Sentinel 节点进行监控

  • 半数以上 Sentinel 节点认为主节点不可达时,自动完成故障转移


三、故障转移流程(4步)

  1. 主节点故障,从节点与主节点失联

  2. Sentinel 节点发现主节点故障,协商达成一致 ,选举出领导者

  3. 领导者执行故障转移:选择一个从节点提升为新主

  4. 故障转移完成,更新拓扑结构


四、Sentinel 实现原理

4.1 三个定时监控任务
频率 动作 作用
每10秒 向主/从节点发送 info 获取最新拓扑结构,发现新从节点
每2秒 __sentinel__:hello 频道发布消息 发现其他 Sentinel 节点,交换主节点状态
每1秒 发送 ping 心跳检测 确认节点是否可达
4.2 主观下线 vs 客观下线
概念 含义 触发条件
主观下线(SDOWN) 当前 Sentinel 认为节点不可达 超过 down-after-milliseconds 无有效回复
客观下线(ODOWN) 多数 Sentinel 认为主节点不可达 超过半数 Sentinel 同意主观下线

只有主节点才会有客观下线,从节点和 Sentinel 节点只有主观下线。

4.3 领导者选举(Raft 算法)
  • 每个 Sentinel 节点都有资格成为领导者

  • 向其他节点发送请求,要求同意自己为领导者

  • 获得票数 ≥ max(quorum, num/2+1) 即成为领导者

  • 一轮未选出则进入下一轮

4.4 故障转移(选主规则)

领导者从从节点中选出新主,优先级:

  1. 过滤:不健康、断线、响应慢、与主失联过久的节点

  2. 选择 slave-priority 最高的节点

  3. 选择复制偏移量最大的节点(数据最新)

  4. 选择 runid 最小的节点


五、Sentinel 配置要点

核心配置参数

conf

复制代码
port 26379                           # Sentinel 端口
sentinel monitor mymaster 192.168.115.111 6379 2   # 监控主节点,quorum=2
sentinel down-after-milliseconds mymaster 30000    # 主观下线判定时间(30秒)
sentinel parallel-syncs mymaster 1                # 故障转移时同时复制的从节点数
sentinel failover-timeout mymaster 180000         # 故障转移超时(180秒)
sentinel auth-pass mymaster 123456                # 主节点密码
配置说明
  • quorum:至少多少个 Sentinel 同意,主节点才算真正失效

  • parallel-syncs:值越小故障转移越慢,但影响越小

  • 所有 Sentinel 节点的 monitor 配置必须一致

  • 主从节点的密码必须相同


六、部署架构示例

IP 端口 角色
192.168.115.111 6379 master
192.168.115.111 6380 slave1
192.168.115.111 6381 slave2
192.168.115.111 26379 Sentinel1
192.168.115.111 26380 Sentinel2
192.168.115.111 26381 Sentinel3

Sentinel 节点数量建议为奇数(3、5、7...),保证选举机制正常运作。


七、常用命令

bash

复制代码
# 启动 Sentinel
redis-sentinel /path/to/sentinel.conf

# 查看 Sentinel 状态
redis-cli -h <ip> -p <port> info Sentinel

# 查看主从复制状态
redis-cli -h <ip> -p <port> -a <password> info replication

八、Sentinel 集群特点

  • 配置文件启动后自动更新(发现从节点和其他 Sentinel 节点)

  • 个别 Sentinel 节点不可用,集群依然健壮

  • 主节点故障后,原主恢复后会自动变成新主的从节点


九、注意事项

问题 解决方案
Sentinel 无法选举出新主 检查 protected-mode no 是否配置
主从密码不一致 确保所有节点密码相同
故障转移超时 调整 failover-timeout
Sentinel 节点数量为偶数 改为奇数,避免选举平局
相关推荐
XIAOHEZIcode1 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220702 天前
如何搭建本地yum源(上)
运维
大树885 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠5 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质5 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工5 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智5 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_5 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
施努卡机器视觉5 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦5 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw