编程

redis 哨兵模式(sentinel)

809 2023-09-13 18:23:00

主从同步模式,虽然配置简单,但是缺点也十分突出:Master 内存受限,Master 宕机之后不能自动切换,不能水平扩容等等。本篇文章来介绍 Redis 的第二种集群模式 哨兵模式

什么是哨兵模式(Redis Sentinel)

哨兵(Sentinel)模式下会启动多个哨兵进程,哨兵进程的作用如下:

  • 监控:能持续的监控 Redis 集群中主从节点的工作状态
  • 通知:当被监控的节点出现问题之后,能通过 API 来通知系统管理员或其他程序
  • 自动故障处理:如果发现主节点无法正常工作,哨兵进程将启动故障恢复机制把一个从节点提升为主节点,其他的从节点将会重新配置到新的主节点,并且应用程序会得到一个更换新地址的通知

哨兵模式的应用场景

当采用 Master-Slave 的高可用方案时候,如果 Master 宕机之后,想自动切换,可以考虑使用哨兵模式。哨兵模式其实是在主从模式的基础上工作的。

哨兵进程的工作方式

  1. 每个哨兵进程会以每秒钟一次的频率向整个集群中的 Master 结点Slave 节点Sentinel 进程发送一个 PING 命令
  2. 如果一个实例距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值,则这个实例就会被哨兵进程标记为主观下线
  3. 如果一个 Master 节点被标记为 主观下线,则所有监视这个 Master 节点的哨兵进程都需要以每秒一次的频率确认 Master 主服务器的确进入了主观下线状态
  4. 当有足够数量的哨兵进程在指定时间范围内确认了 Master 主节点进入了主观下线状态,则 Master 节点就会被标记为客观下线
  5. 每个哨兵进程会以每 10 秒一次的频率向集群中的所有 Master/Slave 机器发送 INFO 命令,并从回复信息中提取从节点ID、从节点角色、从节点所属的主节点的ip及端口、主从节点的连接状态、从节点的优先级、从节点的复制偏移量等信息;
  6. 若没有足够数量的哨兵进程同意 Master 主节点下线,Master 主节点的客观下线状态就会被移除。若 Master 主节点重新向哨兵进程发送 PING 返回有效的回复, Master 主节点的主观下线状态就会被移除

哨兵模式优缺点

优点

  1. 哨兵模式本身就是基于主从模式,所以具有主从同步模式的优点
  2. 主从可以切换,故障转移,提高系统的可用性
  3. 系统更加健壮稳定

缺点

当 Redis 集群容量达到一定程度时,不能很好的支持在线扩容,所以在使用前必须确保有足够的空间。