Redis 哨兵模式

哨兵模式(Sentinel) 是 Redis 提供的一种高可用性(High Availability, HA)解决方案,用于监控和管理 Redis 主从架构中的主节点(Master)和从节点(Slave)。当主节点出现故障时,哨兵可以自动进行故障转移(Failover),将一个从节点提升为新的主节点,从而保证服务的持续可用。


1. 哨兵模式的作用

  • 监控:哨兵会不断检查主节点和从节点的健康状态。
  • 通知:当某个节点出现故障时,哨兵可以通过 API 或脚本通知管理员。
  • 自动故障转移:如果主节点不可用,哨兵会自动将一个从节点提升为新的主节点。
  • 配置提供者:客户端可以通过哨兵获取当前的主节点地址。

2. 哨兵模式的架构

哨兵模式通常由多个哨兵节点和一个 Redis 主从集群组成:

  • Redis 主节点(Master):负责写操作。
  • Redis 从节点(Slave):负责读操作,并复制主节点的数据。
  • 哨兵节点(Sentinel):监控主从节点的健康状态,执行故障转移。

在这里插入图片描述


3. 哨兵模式的配置

配置 Redis 主从集群

假设我们有一个主节点和两个从节点:

  • 主节点:127.0.0.1:6379
  • 从节点 1:127.0.0.1:6380
  • 从节点 2:127.0.0.1:6381

在从节点的配置文件中,添加以下内容:

slaveof 127.0.0.1 6379
配置哨兵节点

创建一个哨兵配置文件(例如 sentinel.conf),内容如下:

port 26379
sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 10000
sentinel parallel-syncs mymaster 1
  • port 26379:哨兵节点的端口号。
  • sentinel monitor mymaster 127.0.0.1 6379 2
    • 监控名为 mymaster 的主节点(127.0.0.1:6379)。
    • 2 表示至少需要 2 个哨兵节点同意才能进行故障转移。
  • sentinel down-after-milliseconds mymaster 5000
    • 如果主节点在 5000 毫秒内没有响应,哨兵会认为它已经下线。
  • sentinel failover-timeout mymaster 10000
    • 故障转移的超时时间为 10000 毫秒。
  • sentinel parallel-syncs mymaster 1
    • 故障转移后,同时同步新主节点的从节点数量为 1。
启动哨兵节点
redis-sentinel /path/to/sentinel.conf

4. 哨兵模式的工作原理

  1. 监控
    • 哨兵节点会定期向主节点和从节点发送 PING 命令,检查它们的健康状态。
  2. 故障检测
    • 如果主节点在指定时间内没有响应,哨兵会将其标记为“主观下线”(Subjectively Down, SDOWN)。
    • 当多个哨兵节点都认为主节点下线时,会将其标记为“客观下线”(Objectively Down, ODOWN)。
  3. 故障转移
    • 哨兵会从从节点中选举出一个新的主节点。
    • 更新其他从节点的配置,使它们复制新的主节点。
    • 通知客户端新的主节点地址。
  4. 恢复
    • 如果旧的主节点重新上线,哨兵会将其配置为从节点,并让它复制新的主节点。

5. 哨兵模式的优点

  • 高可用性:自动故障转移,减少服务中断时间。
  • 自动化:无需人工干预,哨兵会自动处理故障。
  • 可扩展性:支持多个哨兵节点,提高监控的可靠性。

6. 哨兵模式的缺点

  • 配置复杂:需要配置多个哨兵节点和 Redis 主从集群。
  • 脑裂问题:在网络分区的情况下,可能会出现多个主节点。
  • 性能开销:哨兵节点需要不断监控和通信,有一定的性能开销。

7. 哨兵模式 vs Redis Cluster

  • 哨兵模式
    • 适合小规模集群。
    • 提供高可用性,但不支持数据分片。
  • Redis Cluster
    • 适合大规模集群。
    • 提供高可用性和数据分片。

8. 实践建议

  • 至少部署 3 个哨兵节点,以确保高可用性。
  • 监控哨兵节点的状态,确保其正常运行。
  • 在生产环境中,结合 Redis Cluster 使用,以获得更好的扩展性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值