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 节点数量为偶数 改为奇数,避免选举平局
相关推荐
Jinkxs17 小时前
LoadBalancer- 常见负载均衡算法:轮询 / 加权轮询 / 最少连接等基础实现
运维·算法·负载均衡
eastyuxiao17 小时前
流程图 + 配置清单 在团队 / 公司运维场景的落地应用方法
运维·人工智能·流程图
拾光Ծ18 小时前
【Linux系统】进程信号(上)
linux·运维·服务器·面试·信号处理
咖喱o18 小时前
网络-堆叠
linux·运维·服务器·网络
Java面试题总结18 小时前
一文搞定 Linux Nginx 从安装、启动到 nginx.conf 全配置详解(新手也能看懂)
linux·运维·nginx
齐齐大魔王1 天前
linux-僵死进程处理
linux·运维·服务器
.小小陈.1 天前
Linux 线程概念与控制:从底层原理到实战应用
linux·运维·jvm
网络工程小王1 天前
【LangChain 大模型6大调用指南】调用大模型篇
linux·运维·服务器·人工智能·学习
wangbing11251 天前
各linux版本的包管理命令
linux·运维·服务器
Joseph Cooper1 天前
Linux/Android 跟踪技术:ftrace、TRACE_EVENT、atrace、systrace 与 perfetto 入门
android·linux·运维