Redis 系列(三)——哨兵机制

java架构师之路 2017-12-02 17:21:32

如下文章字数大约1200字,阅读时间需要15分钟左右。

Redis 系列因个人时间限制,对应发表未按照Redis对应的知识体系结构的顺序,而是根据自己想到哪一部分就总结写出了对应部分,特此声明,望理解。

Redis 哨兵的服务框架

Redis 本身是不支持主备切换的,所以应用而生的哨兵机制。哨兵也是 Redis 服务器,只是它与我们平时提到的 Redis 服务器职能不同,哨兵负责监视普通的 Redis 服务器,提高一个服务器集群的健壮和可靠性。哨兵和普通的 Redis 服务器所用的是同一套服务器框架,这包括:网络框架,底层数据结构,订阅发布机制等。

Redis 系列(三)——哨兵机制_第1张图片

【1】它的主要功能有以下几点:

Redis 系列(三)——哨兵机制_第2张图片

--如上为选举算法(主从分为:一主一从,一主多从)

【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

Redis 系列(三)——哨兵机制_第3张图片

哨兵启动完成后,会首先找到配置的监听的主机的相关信息,其会自动找到跟这台主机相关的从机的内容,在从机右侧显示对应主机的内容。

查看进程:

Redis 系列(三)——哨兵机制

如上:哨兵启动完成。

【4】哨兵机制下主从自动切换

因为哨兵会根据配置的时间间隔(心跳时间)不断的连接主机,所以,主机down掉的时候,其会切换从机为主机。

对应文件配置的心跳时间为30,则,当主机down掉后30秒切换主机:

人为kill掉对应进程:

Redis 系列(三)——哨兵机制_第4张图片

然后观察 哨兵的日志:

Redis 系列(三)——哨兵机制_第5张图片

当没有接收到主机的心跳信息时,哨兵自动将从机切换为主机.对应原来的主机切换为从机..

然后登陆从机查看对应状态.登陆从服务器发现其RepLication 属性,role 已经为 master。

至此,哨兵机制完成。其他未涉及到的情况可以自己测试。

已上内容,纯属一家之言,因本人能力一般,见识有限,如有问题,请不吝指正,感谢。

相关技术内容会持续更新,大家可随时交流,欢迎关注本头条号。

你可能感兴趣的:(Redis 系列(三)——哨兵机制)