跳到主要内容

Redis 哨兵配置

Redis哨兵(Sentinel)是Redis的高可用性解决方案,用于监控Redis主从实例的状态,并在主节点发生故障时自动进行故障转移。通过哨兵,您可以确保Redis服务在出现问题时仍然可用。

什么是Redis哨兵?

Redis哨兵是一个分布式系统,用于监控Redis主从实例的健康状态。它能够自动检测主节点的故障,并选举一个新的主节点,从而确保系统的高可用性。哨兵还负责通知客户端新的主节点地址,以便客户端可以重新连接到新的主节点。

哨兵的基本配置

要配置Redis哨兵,您需要创建一个哨兵配置文件。以下是一个简单的哨兵配置文件示例:

plaintext
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

配置项解释

  • sentinel monitor mymaster 127.0.0.1 6379 2:监控名为 mymaster 的主节点,地址为 127.0.0.1:6379,并且需要至少2个哨兵同意才能进行故障转移。
  • sentinel down-after-milliseconds mymaster 5000:如果主节点在5000毫秒内没有响应,哨兵将认为它已经下线。
  • sentinel failover-timeout mymaster 10000:故障转移的超时时间为10000毫秒。
  • sentinel parallel-syncs mymaster 1:在故障转移期间,允许同时同步的从节点数量为1。

启动哨兵

要启动哨兵,您可以使用以下命令:

bash
redis-sentinel /path/to/sentinel.conf

或者,您也可以使用Redis服务器来启动哨兵:

bash
redis-server /path/to/sentinel.conf --sentinel

哨兵的工作原理

哨兵通过定期向Redis实例发送PING命令来监控其健康状态。如果主节点没有响应,哨兵会将其标记为“主观下线”(SDOWN)。如果多个哨兵都认为主节点下线,哨兵会将其标记为“客观下线”(ODOWN),并开始进行故障转移。

故障转移过程

  1. 选举新的主节点:哨兵会从从节点中选举一个新的主节点。
  2. 重新配置从节点:哨兵会通知所有从节点连接到新的主节点。
  3. 通知客户端:哨兵会通知客户端新的主节点地址。

实际案例

假设您有一个Redis主从集群,主节点位于 127.0.0.1:6379,两个从节点分别位于 127.0.0.1:6380127.0.0.1:6381。您配置了三个哨兵实例来监控这个集群。

当主节点 127.0.0.1:6379 发生故障时,哨兵会检测到这一情况,并选举 127.0.0.1:6380 为新的主节点。然后,哨兵会通知 127.0.0.1:6381 连接到新的主节点,并通知客户端新的主节点地址。

总结

Redis哨兵是确保Redis高可用性的重要工具。通过配置哨兵,您可以自动检测主节点的故障并进行故障转移,从而确保Redis服务的持续可用性。

附加资源

练习

  1. 配置一个简单的Redis主从集群,并启动三个哨兵实例来监控它。
  2. 模拟主节点故障,观察哨兵如何进行故障转移。
  3. 修改哨兵配置文件中的参数,观察其对故障转移过程的影响。