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 节点数量为偶数 改为奇数,避免选举平局
相关推荐
小糖学代码2 小时前
LLM系列:1.python入门:6.元组型对象(tuple)
linux·运维·服务器·python
晴天¥2 小时前
使用Openfiler为达梦数据库集群搭建共享存储
运维·服务器·存储
小宋0012 小时前
ROS2 安装指南(Ubuntu 22.04+Humble)
linux·运维·ubuntu
爱学习的小囧2 小时前
VMFS与NFS性能对比(含场景适配+实操建议)
运维·数据库·自动化·esxi·虚拟化
Agent产品评测局3 小时前
企业邮件处理自动化落地,分类回复全流程实现方法 —— 2026企业级智能体选型与落地全景指南丨Agent产品测评局
运维·人工智能·ai·chatgpt·自动化
升职佳兴3 小时前
重启 Docker 导致 VMware 虚拟机断网:一次完整的故障排查记录
运维·docker·容器
同聘云3 小时前
阿里云国际站服务器高防是什么意思?如何选择高防服务器?
运维·服务器·网络
A_QXBlms3 小时前
企业微信客户管理自动化:利用API同步客户标签与画像
运维·自动化·企业微信
如来神掌十八式3 小时前
nginx基础知识
运维·nginx