Redis的主从模式配置简单,在提高单台服务器数据库读性能的同时,也能间接性的提高写的能力;与此同时,它的弊端也显而易见,那就是当主节点Master宕机后,整个集群就没有可写的节点了,为此就衍生出了一种新的模式,Sentinel(哨兵模式)
Redis的Sentinel系统用于管理多个Redis服务器,主要的工作可分为三点:
1.Monitoring(监视):Sentinel会不断检查主服务器和从服务器运作是否正常
1)Sentinel可以监控任意多个Master和该Master下的Slaves
2)同一哨兵下的,不同主从模型,彼此相互独立
3)Sentinel会不断监察Master和Slaves是否正常
2.Notification(提醒):当被监控的某个Redis服务器出现问题时,可通过API向管理员或其他应用程序发送通知信息
3.Automatic failover(自动故障迁移):当一台主服务器宕机后,Sentinel会开始自动故障迁移的操作,它会通过半数选举的方式,在失效的主服务器中的从服务器变成主服务器;当客户端连接失效的主服务器时,集群也会向客户端返回新主服务器的地址
1)Sentinel网络:监控同一个Master的Sentinel会自动连接,组成一个分布式的Sentinel网络,互相通信并相互交换监视服务器的信息。
2)故障切换的过程:
1.当任何一个Sentinel发现被监控的Master下线时,会通知其他的Sentinel,并进行投票决定该Master是否下线(由于遵循半数原则,所以Sentinel通常配奇数个);
2.当Sentinel确定Master下线后,会在所有的Slaves中,选举一个新的结点升级成为Master,其他结点成为该Master的Slave
3.当下线的Master恢复后,也成为新Master的Slave
配置流程:
1.创建Sentinels目录(s1,s2,s3分别表示三个哨兵)
2.在安装目录下将sentinel.conf拷贝到三个哨兵目录中
3.依次修改s1,s2,s3下的配置文件sentinel.conf(绑定ip,保护模式,端口,Sentinel)
s1的配置
1)是哨兵的名字 2)监视Master的ip地址 3)监视Master的端口 4)在投票过程中超过2个哨兵同意Master下线时,Master即视为宕机状态
s2的配置
s3的配置
4.开启三个不同端口的Redis服务端
6380端口的redis-server(Master)
6381端口的redis-server(Slave)
6382端口的redis-server(Slave)
5.分别通过s1,s2,s3中的配置问起开启三个哨兵(由于监视的为同一个Master,三个哨兵会自动组成哨兵网络)
s1配置文件启动的哨兵
s2配置文件启动的哨兵
s3配置文件启动的哨兵
6.测试
1)断开Master(端口为6380的redis-server)
两个Slaves同时无法连接Master的警告
6381端口的Slave
6382端口的Slave
Sentinel进行检测,投票,选举的操作
6381redis-server变为新Master,6382redis-server成为6381的Slave
6381界面
6382界面
2)原Master6380端口的redis-server重新上线
6380端口的redis-server成为6381端口redis-server的Slave