一、哨兵机制
1.当只有主从复制时,只能实现读写分离,假如这个时候主服务器down掉了,那从服务器也无法正常继续工作,无法实现高可用。
所以哨兵(sentinel)可以实现redis集群的高可用,当一台主服务器挂掉后,可以让一台从服务器来顶替主服务器,使其他的服务器作为新主服务器的从节点,并当之前挂掉的那个主服务器重新加入到集群中的时候,自动作为一个从节点加入。
所以哨兵能够自动的完成 FailOver故障转移操作。
sentinel哨兵会不断检查Master和slave是否正常,每一个sentinel可以监控任意多个的master和slave。
2.sentinel哨兵可以构成一个sentinel网络,来实现sentinel的高可用。
sentinel哨兵集群有一个投票机制,当一共有三台sentinel哨兵运行时,假如我们在配置中配置了大于两票,那么投票时三个sentinel的投票大于两票就认为主服务器真的挂掉了,然后再进行failover处理。
当一个sentinel认为被监视的服务器已经下线时,会向sentinel集群中的其他sentinel进行确认,判断该服务器真的已经下线。如果下线的服务器为主服务器,那么就会通过让已经下线的主服务器的某个从服务器提升为新的主服务器,其他的从服务器转为复制新的主服务器,以此实现了高可用。
二、哨兵的配置
1.环境准备
为了测试方便,只在一台服务器上部署了3个redis-server,一主两从。
ip为192.168.9.163,主服务器端口为6379,从服务器端口为6380,6381,。
2.将src下的redis-sentinel和redis主目录下的sentinel.conf分别复制到自己新建的bin和etc目录下
cp /usr/local/software/redis-3.0.0/src/redis-sentinel /usr/local/software/redis/bin/
cp /usr/local/software/redis-3.0.0/sentinel.conf /usr/local/software/redis/etc/
3.在sentinel.conf文件中配置
sentinel monitor <name> <ip> <port> <quorum>
sentinel monitor mymonitor 192.168.9.163 6379 1
只需要配置监控master服务器即可。quorum代表投票机制的票数。
因为我们这里只有一个sentinel哨兵,并没有配置哨兵集群,所以我们设置的是1,只要它认为master 下线了,那么就会做 FailOver处理。
4.启动三台redis的服务测试
启动
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/etc/redis6379.conf
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/etc/redis6380.conf
/usr/local/software/redis/bin/redis-server /usr/local/software/redis/etc/redis6381.conf
登录主服务器的客户端
info一下master服务器(6379端口的server)
5.发现我们的主从复制配置完毕,启动sentinel.
sentinel哨兵启动成功,正在监控。
6.手动使master服务器挂掉
kill -9 6379
7.查看从服务器的状况
成功,原来的6380端口的redis服务器成为了master服务器,并将6381从服务器复制到了此master上。
配置完毕。