如下文章字数大约1200字,阅读时间需要15分钟左右。
Redis 系列因个人时间限制,对应发表未按照Redis对应的知识体系结构的顺序,而是根据自己想到哪一部分就总结写出了对应部分,特此声明,望理解。
Redis 哨兵的服务框架
Redis 本身是不支持主备切换的,所以应用而生的哨兵机制。哨兵也是 Redis 服务器,只是它与我们平时提到的 Redis 服务器职能不同,哨兵负责监视普通的 Redis 服务器,提高一个服务器集群的健壮和可靠性。哨兵和普通的 Redis 服务器所用的是同一套服务器框架,这包括:网络框架,底层数据结构,订阅发布机制等。
【1】它的主要功能有以下几点:
--如上为选举算法(主从分为:一主一从,一主多从)
【2】配置文件
其配置文件为 sentinel.conf
【2.1】sentinel montitor mymaster 192.168.0.201 3000 3
重点是结尾的3.表示哨兵的个数。必须为奇数。
哨兵是实时的去ping master主机.如果在规定的时间内收到了master主机回馈,则认为是正常的.
如果,网络条件复杂,master其实是正常的,不过,返回的时间超过了哨兵的规定时间,哨兵也认为是master是不正常的.这就造成了哨兵监控误差.
为了避免这种误差:
哨兵也有一种选举机制.
因为选举机制,所以,为奇数。
如果配置了3,哨兵就必须为3个。
如果有2个哨兵认为主机挂掉了,结果就是master主机挂掉了。
【2.2】sentinel down-after-millseconds mymaster 60000
表示时间间隔。
因为哨兵会不停的ping master 主机,就是这里配置。
其他配置依据默认的即可。
【2.3】sentinel can failover mymaster yes
【2.4】sentinel failover-timeout mymaster 180000
【2.5】sentinel parallel-syncs mymaster 1
哨兵机制,在redis主从模式下时,哨兵主机不做数据存储,其只是实时监控redis中master主机情况.
如果发现master挂掉了,哨兵会将从服务器切换成主服务器.
【3】启动哨兵机制
哨兵机制启动要依赖于Redis主从架构的存在。如下前提为当前环境已存在Redis主从。
在sentinel 文件夹中直接以配置文件的方式启动即可:
redis-sentinel sentinel.conf
哨兵启动完成后,会首先找到配置的监听的主机的相关信息,其会自动找到跟这台主机相关的从机的内容,在从机右侧显示对应主机的内容。
查看进程:
如上:哨兵启动完成。
【4】哨兵机制下主从自动切换
因为哨兵会根据配置的时间间隔(心跳时间)不断的连接主机,所以,主机down掉的时候,其会切换从机为主机。
对应文件配置的心跳时间为30,则,当主机down掉后30秒切换主机:
人为kill掉对应进程:
然后观察 哨兵的日志:
当没有接收到主机的心跳信息时,哨兵自动将从机切换为主机.对应原来的主机切换为从机..
然后登陆从机查看对应状态.登陆从服务器发现其RepLication 属性,role 已经为 master。
至此,哨兵机制完成。其他未涉及到的情况可以自己测试。
已上内容,纯属一家之言,因本人能力一般,见识有限,如有问题,请不吝指正,感谢。
相关技术内容会持续更新,大家可随时交流,欢迎关注本头条号。