第二部分:Redis数据库的三种模式(②:哨兵模式)


以下是本篇文章正文内容,如有错误麻烦请指出。 谢谢 !!!


一、哨兵模式简介

1、哨兵模式描述

  1. 哨兵模式是一个分布式系统,是Redis的一种特殊模式。用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的Master并将所有Slave连接到新的Master;
  2. 哨兵是一个独立的进程,作为进程,它会独立运行;
  3. 一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式

2、哨兵模式作用

  1. 监控
    (1)不断的检查Master和Slave是否正常运行;
    (2)Master存活检测、Master与Slave运行情况检测。
  2. 通知(提醒)
    (1)当被监控的服务器出现问题时,向其他(哨兵间,客户端)发送通知。
  3. 自动故障转移
    (1)断开Master与Slave连接,选取一个Slave作为Master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机,其他Slave连接到新的Master,并告知客户端新的服务器地址。
  4. 注意:
    (1)哨兵也是一台redis服务器,只是不提供数据服务,通常哨兵配置数量为单数。

二、启用哨兵模式

1、配置哨兵

  1. 配置一拖二的主从结构

  2. 配置三个哨兵

     参看sentinel.conf
     # 如果是在一台机器上,需要设置端口号不一样;
     # 如果不在一台机器上,配置相同。
    
  3. 启动哨兵

     redis-sentinel sentinel.conf
    
  4. 哨兵的其它配置项

配置项范例说明
sentinel auth-pass <服务器名称> <password>sentinel auth-pass mymaster itcast连接服务器口令
sentinel down-after-milliseconds <自定义服务名称> <主机地址> <端口> <主从服务器总量>sentinel monitor mymaster 192.168.194.131 6381 1设置哨兵监听的主服务器信息,最后的参数决定了最终参与选举的服务器数量(-1)
sentinel parallel-syncs <服务名称> <服务器数(整数)>sentinel parallel-syncs mymaster 1指定同时进行主从的slave数量,数值越大,要求网络资源越高,网络资源越小,同步时间越长
sentinel failover-timeout <服务名称><毫秒数(整数)>sentinel failover-timeout mymaster 9000指定出现故障后,故障切换的最大超时时间,超过该值,认定切换失败,默认3分钟
sentinel notification-script <服务名称><脚本路径>服务器无法正常联通时,设定的执行脚本,通常调试使用

三、哨兵工作原理

1、主从切换

  1. 哨兵在进行主从切换过程中经历三个阶段

     监控
     通知
     故障转移
    

2、监控阶段

  1. 描述

(1)哨兵首先获取各个哨兵的状态是否在线;
(2)其次获取Master的状态

Master的属性:
	runid
	role:master

(3)再次获取各个Slave的详细信息(根据Master中的Slave信息)

Slave属性
	runid
	role:slave
	master_host、master_port
	offset
	......

在这里插入图片描述

3、通知阶段

  1. 描述
    (1)哨兵之间也会进行相互通信,监控在线状态,形成哨兵之间的集群模式;
    (2)由于每次哨兵和主节点Master和从节点Slave进行通信的可能不是同一个,所以每一个哨兵通信完成之后都会通知其它的哨兵,是否正常,共享信息。

在这里插入图片描述

4、故障转移阶段

  1. 主观下线

    假设主服务器宕机,哨兵1先检测到这个结果,系统并不会马上进行Failover过程,仅仅是哨兵1主观的认为主服务器不可用,这个现象成为主观下线。

  2. 客观下线

    当有其中一个哨兵检测到Master下线以后,就会共享信息给其它的哨兵,其它的哨兵接收到消息以后就会去检测Master服务器是否可用,其它的哨兵也检测到Master服务器不可用,并且数量达到一定值时,那么哨兵之间就会进行一次投票,投票的结果由一个哨兵发起,进行Failover操作。切换成功后,就会通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。这样对于客户端而言,一切都是透明的。
    在这里插入图片描述

  3. 投票机制

    比如:哨兵1与哨兵4同时给哨兵2发送消息,哨兵2会根据先收到谁的信息就会把票投给谁,最后所有的信息处理完以后,谁的票数达到了哨兵数的一半以上,就会选举成功。如果没有哨兵的票数达到总数的一半,就会进行重新选举,并且参与的哨兵竞选次数加1。
    选举出来的哨兵就会进行问题的处理。
    在这里插入图片描述

  4. 选择新的Master节点的条件

(1)先过滤出经常在线的
(2)接着过滤出响应快的
(3)再次过滤出与主节点断开时间久的
(4)最后根据优先优先原则

优先级:
	offset:偏移量
	runid:就是id号,越小的越优先

(5)选举完成之后就会将选举出来的Slave节点成为新的Master节点,然后通知其他的Slave节点新Master的IP和端口,然后进行连接。
在这里插入图片描述
对以前的知识回顾,加深基础知识!
每天进步一点点,也许某一天你也会变得那么渺小!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值