Sentinel 哨兵本质上是一个运行在特殊模式下的Redis实例,只是初始化的过程和工作与普通的Redis不同,本质上也是一个单独的进程。
Sentinel 哨兵 是Redis的高可用解决方案:一个或多个Sentinel实例(instance)组成的Sentinel系统(system)可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在主服务器下线时可以自动切换从服务器升级为主服务器。
1、Sentinel系统
下图是一个简单的Sentinel系统架构图,一个Sentinel系统监视一个主从集群,其中server1是Redis主服务器,server2/3/4是Redis 从服务器。主从之间利用主从复制来达到主从一致。而Sentinel系统监视整个主从集群。
a、当Sentinel系统察觉到Server1主服务器下线时,就会终止server2/3/4的复制。
b、同时Sentinel将server2升级为主服务器,server3/4从新的主服务器进行复制。同时等待server1的再次上线。
c、sentinel系统也可以主动降级主服务为从服务器,将从服务器升级为主服务器。
2.1、Sentinel 哨兵监控过程
Sentinel 哨兵监控集群过程:
1、命令 Sentinel哨兵通过发送命令,让redis服务器返回运行状态。
2、发布订阅 当主服务器状态发生变化时,Sentinel哨兵通过发布订阅模式通知其他从服务器。
2.2、Sentinel 哨兵故障转移
Sentinel 故障转移:
1、Sentinel系统中的Sentinel实例每隔1s就像集群发送PING命令
2、如果集群中有实例的回复Sentinel实例时间超过了 down-after-milliseconds,那么这个实例就会发送PING命令的Sentinel实例被主观下线
3、那么什么时候会客观下线呢?需要Sentinel系统中其他实例也确认集群中该实例主观下线。
如果master主服务器被标记为主观下线,则Sentinel系统中监视master的Sentinel进程需要以每秒一次的频率确认Master是否进入主观下线状态
4、当有足够的Sentinel实例(取决于配置)确认Master进入了主观下线,则Master会被标记为客观下线。
3、Sentinel 哨兵优缺点
优点:
1、哨兵模式基于主从复制,因此主从复制的优点哨兵都具备
2、哨兵具备了主从切换和故障转移,因此集群有了更高的可用性
缺点:
1、Redis较难支持在线扩容,在线扩容比较复杂。
寄语:sentinel 哨兵主要用来监控redis主从集群,提高了redis 主从集群的可用性。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/154707.html