【Redis】哨兵模式

目录

  • 1、背景
  • 2、核心功能
  • 3、架构组成
  • 4、工作流程
    • 【1】监控阶段
    • 【2】故障判定
    • 【3】选举领导者哨兵
    • 【4】故障转移
  • 5、关键配置参数
  • 6、客户端交互
  • 7、优缺点
  • 8、部署建议

1、背景

Redis哨兵模式(Sentinel)是Redis官方提供的高可用性(HA)解决方案,用于监控和管理Redis主从架构,实现自动故障检测、主从切换和配置更新。

2、核心功能

1、监控:持续检测主节点(master)和从节点(replica)的运行状态
2、自动故障转移:当主节点不可用时,哨兵会选举一个从节点晋升为新主节点
3、配置推送:故障切换后,自动更新客户端和其它redis节点的配置
4、通知:通过API或脚本通知管理员故障事件

3、架构组成

1、哨兵节点:独立运行的进程,不存储数据,仅负责监控和决策
2、Redis主从集群:至少包含1个主节点和若干个从节点(建议至少2个从节点)
3、仲裁机制:通常部署3个或以上哨兵节点(避免单节点故障,基于多数投票决策)

4、工作流程

【1】监控阶段

1、哨兵每秒向主从节点发送PING命令,检测是否存活
2、若节点未响应超过配置的超时时间(down-after-milliseconds),标记未主观下线(SDOWN)

【2】故障判定

1、当多个哨兵均认为主节点主观下线,则标记为客观下线(ODOWN)

【3】选举领导者哨兵

1、使用Raft算法选角一个哨兵领导者(Leader)来执行故障转移

【4】故障转移

1、领导者哨兵选择一个数据最新的从节点,执行SLAVEOF NO ONE将其升级为主节点
2、通知其它从节点复制新主节点
3、更新客户端配置(通过发布/订阅机制或直接修改配置)

5、关键配置参数

# sentinel.conf 示例
sentinel monitor mymaster 127.0.0.1 6379 2  # 监控名为mymaster的主节点,2表示需至少2个哨兵同意
sentinel down-after-milliseconds mymaster 5000  # 5秒无响应视为下线
sentinel failover-timeout mymaster 60000  # 故障转移超时时间(毫秒)

6、客户端交互

1、客户端通过哨兵获取当前主节点地址(SENTINEL get-master-addr-by-name master-name)
2、建议使用支持哨兵的客户端库,自动处理主从切换

7、优缺点

优点:

1、自动容灾,减少人工干预
2、配置简单,与原生redis兼容

缺点:

1、故障转移期间可能出现短暂数据丢失(异步复制导致)
2、不解决水平扩展问题(需结合cluster模式)

8、部署建议

1、至少部署3个哨兵节点(分散在不同物理机)
2、监控哨兵进程本身(避免哨兵单节点故障)
3、测试故障转移场景,验证超时参数合理性

你可能感兴趣的:(Redis,redis,数据库)