Redis教程

Redis之哨兵模式

本文主要是介绍Redis之哨兵模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

当我们搭建一个主从复制时,master宕机之后我们需要选取一个新的master,用于解决这个问题的策略就是哨兵模式

哨兵模式简介:

哨兵(sentinel)是一个分布式文件系统,用于对主从结构中的每一台服务器进行监控,当出现故障时通过投票机制选出新的master并将所有slave连接到新的master

哨兵的作用:

1.监控:①不断的检查master和slave是否正常运行

2.通知:当被监控的服务器出现了问题,向其它的哨兵和客户端发送通知

3.自动故障转移:断开slave和master的连接,投票选出一个新的master并将所有slave连接新的master,告知客户端新的服务器地址

注意:①哨兵在redis中也是一台服务器,只是不提供数据

           ②通常哨兵配置单数

启用哨兵模式:

1.配置一个1托2的主从结构

 在从节点的配置文件中配置master的ip和port,并以配置文件的形式启动从节点服务器

2. 配置3个哨兵服务器的配置文件,除了端口号不同其它配置项一致(此配置文件在redis解压目录中存在即sentinel.conf,将其复制不修改源文件)

①查看一下setinel.conf中的配置项

setinel monitor <master名称(自定义)> host port  2 :配置master的服务名称、ip和端口号、2是指:哨兵的数量,当超过一般的哨兵认为master已经不能正常工作了就让它下线,这也是为什么哨兵数量一般设置为奇数的原因,偶数的话很容易投票打平。

setinel down-after-milliseconds <master名称(要与monitor的名称一致)>  30000:单位是毫秒,这里默认设置是30秒,用于判断master挂掉的默认时间周期,也是主从切换启动的条件之一

parrallel-syncs <master名称>  1:指定同时进行主从复制slave数量

failover-timeout <master名称> 180000:默认时间单位是毫秒,这里默认设置是3分钟,指定故障出现时故障切换的超大超时时间,超过这个时间就认定故障切换失败

②配置哨兵配置文件并且清空data中的文件

 

 ③启动哨兵服务

redis-sentinel conf/sentinel-6379.conf
redis-sentinel conf/sentinel-6380.conf
redis-sentinel conf/sentinel-6381.conf

从日志中可以看出,本身我们是设置6379为master但是由于网络或者其它原因,在规定时间内没有应答,就让它下线了并且推选出新的master为6381

 

可以看出确实是这样 

哨兵的工作原理:

三个阶段:①监控②通知③故障转移

阶段一:监控阶段

·用于同步各个节点的状态信息

                ·获取各个sentinel的状态

                ·获取master的信息

                        ·master的属性

                                ·runid

                                ·role:master

                        ·各个slave的详细信息

                ·获取所有slave的状态(根据master中的slave信息)

                        ·slave属性

                                ·runid

                                ·role:slave

                                ·master_host、mast_port

                                ·offset

                                ·......

 

 阶段二:通知阶段

阶段三:故障转移阶段 

1.发现故障

 2.推选负责人(投票)

假如sentinel1和sentinel5要竞选故障处理的负责人,它两就同时向sentinel2发送选我的消息,谁的消息先到sentinel就投谁,其它以此类推,假如投票结果一样就比较竞选次数,假如竞选次数也一样就比较runid

 3.优选新master

·服务器列表中挑选master

        ·在线的

        ·响应慢的

        ·与原master断开时间久的

        ·优先原则

                ·优先级

                ·offset

                ·runid

·发送指令(sentinel)

        ·向新的master发送slaveof no one

        ·向其他slave发送slaveof 新master的ip port

        ·原master故障恢复后作为slave连接master

 

 

 

这篇关于Redis之哨兵模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!