Redis | Redis哨兵模式Sentinel简介

发布于:2025-05-01 ⋅ 阅读:(19) ⋅ 点赞:(0)

关注:CodingTechWork

Redis Sentinel 简介

什么是 Redis Sentinel?

  Redis Sentinel 是 Redis 官方提供的高可用性(HA)解决方案,用于监控 Redis 主从架构中的故障检测和故障转移。它是一个分布式系统,可以自动发现主从节点和哨兵节点,通过心跳机制检测节点健康状态,并在主节点故障时自动进行故障转移。

Redis Sentinel 的核心功能

  1. 监控(Monitoring):持续监控 Redis 主从节点的健康状态。
  2. 通知(Notification):当 Redis 实例出现故障时,通知管理员或其他应用程序。
  3. 自动故障转移(Automatic Failover):当主节点故障时,自动将从节点提升为新的主节点。
  4. 配置提供者(Configuration Provider):为客户端提供最新的主节点地址。

Redis Sentinel 的优势

  1. 高可用性:自动故障转移,减少人工干预。
  2. 无缝切换:客户端可以自动感知主从节点的变化。
  3. 易于扩展:支持多个 Sentinel 节点,避免单点故障。

Redis Sentinel 工作原理

哨兵节点

  Sentinel 是一个独立的进程,可以部署在多个服务器上。每个 Sentinel 节点会定期向 Redis 主从节点发送 PING 命令,检测其是否正常运行。

故障检测

  1. 主观下线(Subjectively Down, SDown):如果一个 Sentinel 节点在指定时间内未收到主节点的响应,它会将主节点标记为“主观下线”。
  2. 客观下线(Objectively Down, ODown):多个 Sentinel 节点通过投票机制确认主节点是否“客观下线”。

故障转移

  1. 选举 Leader:当主节点被确认为“客观下线”后,Sentinel 节点会选举一个 Leader 节点来协调故障转移。
  2. 提升从节点:Leader 节点选择一个从节点作为新的主节点,并向其他从节点发送 SLAVEOF 命令,使其复制新的主节点。
  3. 更新配置:Sentinel 会更新客户端的配置,使其连接到新的主节点。

自动发现机制

  Sentinel 使用 Redis 的发布/订阅功能自动发现其他 Sentinel 节点和从节点。每个 Sentinel 每两秒钟会向监控的每个主从节点的发布/订阅频道 __sentinel__:hello 发布一条消息,用 IP 地址、端口和运行 ID 宣布其存在。

Redis Sentinel 配置与使用

环境准备

假设我们有三台主机,分别用于部署 Redis 主节点、从节点和 Sentinel 节点:

IP 主机名 角色
192.168.182.110 local-168-182-110 master, sentinel
192.168.182.111 local-168-182-111 slave1, sentinel
192.168.182.112 local-168-182-112 slave2, sentinel

配置 Sentinel

  1. 创建 Sentinel 配置文件

    cat >/usr/local/redis/sentinel.conf<<EOF
    daemonize yes
    logfile "/usr/local/redis/sentinel.log"
    dir "/opt/software/redis-7.0.3/sentinel"
    sentinel monitor mymaster 192.168.182.110 6379 2
    sentinel auth-pass mymaster 123456
    sentinel down-after-milliseconds mymaster 30000
    EOF
    
    • sentinel monitor:指定监控的主节点名称、IP、端口和故障转移所需的最小 Sentinel 数量。
    • sentinel auth-pass:如果主从节点设置了密码,需要在此指定。
    • sentinel down-after-milliseconds:指定认为节点失效的时间阈值。
  2. 启动 Sentinel

    /usr/local/bin/redis-sentinel /usr/local/redis/sentinel.conf
    netstat -tnlp|grep 26379
    

测试故障转移

  1. 模拟主节点故障:停止主节点的 Redis 服务。
  2. 观察 Sentinel 日志:查看 Sentinel 是否检测到故障并自动进行了故障转移。
  3. 验证从节点提升为主节点:检查新的主节点是否正常工作,其他从节点是否已重新配置为新的主节点。

Redis Sentinel 的使用场景

适用场景

  1. 主从模式:Redis Sentinel 适用于主从模式,用于监控主从节点并自动进行故障转移。
  2. 多主节点架构:可以同时监控多个主节点,为多主节点架构提供高可用性。

不适用场景

  1. Redis Cluster:Redis Cluster 本身已经支持高可用,不需要 Sentinel。
  2. 单机 Redis:单机 Redis 没有从节点,Sentinel 无法执行故障转移。

Redis Sentinel 的优势

  1. 高可用性:自动故障转移,减少人工干预。
  2. 无缝切换:客户端可以自动感知主从节点的变化。
  3. 易于扩展:支持多个 Sentinel 节点,避免单点故障。

总结

  Redis Sentinel 是 Redis 官方提供的高可用性解决方案,通过监控 Redis 主从架构中的故障检测和故障转移,确保服务的高可用性。它具有自动发现机制、故障检测、故障转移和配置管理等功能,适用于主从模式和多主节点架构。通过合理配置和部署 Sentinel,可以大大增强 Redis 集群的高可用性,减少因硬件故障或网络问题导致的服务中断。


网站公告

今日签到

点亮在社区的每一天
去签到