说到Redis不得不提哨兵模式,那么究竟哨兵是什么意思?为什么要使用哨兵呢?
接下来一一为您讲解:
1.为什么要用到哨兵
哨兵(Sentinel)主要是为了解决在主从(master-slave)复制架构中出现宕机的情况,主要分为两种:
1.1 从Redis宕机(slave)
在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据。
在Redis2.8版本后,主从断线后恢复的情况下实现增量复制。
1.2 主Redis宕机(master)
需要以下2步才能完成:
i.第一步,在从数据库中执行 SLAVEOF NO ONE 命令,断开主从关系并且提升为主库继续服务;
ii.第二步,将主库重新启动后,执行 SLAVEOF 命令,将其设置为其他库的从库,这时数据就能更新回来。
由于这个手动完成恢复的过程其实是比较麻烦的并且容易出错,所以Redis提供的哨兵(sentinel)的功能来解决.
2.什么是哨兵
Redis-Sentinel是用于管理Redis集群,该系统执行以下三个任务:
2.1 监控(Monitoring):
Sentinel会不断地检查你的主服务器和从服务器是否运作正常;
2.2 提醒(Notification):
当被监控的某个Redis服务器出现问题时,Sentinel可以通过API向管理员或者其他应用程序发送通知;
2.3 自动故障迁移(Automatic failover):
当一个主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。
3.Sentinel集群搭建
3.1 Sentinel集群拓扑图
而哨兵也分为单哨兵和多哨兵两种模式:
单哨兵模式
<