Redis 数据库的哨兵模式

1. 哨兵模式
1.1 哨兵模式的结构和作用
  哨兵(Sentinel)是 Redis 官方提供的一种高可用方案,它可以监控多个 Redis 服务实例的运行情况。本质上,Sentinel 也是一个运行在特殊模式下的 Redis 服务器。主从复制模式下,一般会配置多个 Sentinel 节点,通过互相协作来实现系统的高可用。
 
1.2 哨兵模式的作用
Sentinel 模式的作用如下:
(1)监控:Sentinel 不断的检查主服务和从服务器是否按照预期正常工作;
(2)提醒:被监控的 Redis 出现问题时,Sentinel 会通知管理员或其他应用程序;
(3)自动故障转移:监控的主 Redis 不能正常工作,Sentinel 会自动进行故障迁移操作。即将一个从服务器升级新的主服务器,并让其他从服务器挂到新的主服务器,同时向客户端提供新的主服务器地址。
 
1.3 Sentinel 监控原理
Sentinel 基于心跳机制监测服务状态,每隔 1 秒向集群的每个实例发送 ping 命令:
(1)主观下线:如果某 sentinel 发现某实例未在规定时间响应,则认为该实例主观下线。
(2)客观下线:若超过指定数量(quorum)的 sentinel 都认为该实例主观下线,则该实例客观下线。quorum 值最好超过 Sentinel 实例数量的一半。
 
2. 哨兵模式小结
(1)Sentinel 会不断检查 Master 和 Slave 是否正常;
(2)如果 Sentinel 挂了,就无法监控,所以需要多个哨兵,组成 Sentinel 网络,一个健康的 Sentinel 至少有 3 个 Sentinel 应用;
(3)监控同一个 Master 的 Sentinel 会自动连接,组成一个分布式的 Sentinel网络,互相通信并交换彼此关于被监控服务器的信息;
(4)当一个 Sentinel 认为被监控的服务器已经下线时,它会向网络中的其它Sentinel 进行确认,判断该服务器是否真的已经下线;
(5)如果下线的服务器为主服务器,那么 Sentinel 网络将对下线主服务器进行自动故障转移。通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转移到新的主服务器下,以此来让系统重新回到正常状态;
(6)下线的旧主服务器重新上线,Sentinel 会让它成为从节点,挂到新的主服务器下。
posted @ 2023-04-05 13:59  Linqylin  阅读(88)  评论(0编辑  收藏  举报