一 .起因

我们使用主从时有一个非常大的问题,就是故障转移完全是通过人工的手段进行的,

为了实现高可用性的要求,redis为我们提供了一个哨兵的模式进行高可用的完善.


 二 . 哨兵模式概述 

  哨兵模式的原理非常简单,就是使用一个脚本程序充当监听者,当故障出现时,自动实现故障的转移.当主节点出现问题时,会从从节点之中选出一个充当主节点,这就是哨兵模式的基本原理.

  实际上使用哨兵模式非常简单,也只需要进行简单的配置就可以完成了.

整个基本的架构如下:

哨兵监控微服务_数据库

 

配置 :

  现在按照一个一主二从,三个sentinel完成监控的形式配置一下整个结构.

[1]配置三个redis,完成一主二从的模型.

  只需要创建两个从配置文件,注意salveof的配置就可以了.

  配置完成之后,我们启动主从模式.

哨兵监控微服务_redis_02

配置后查询的主从信息如上.

 [2]创建一个sentinel.conf文件,这个文件我们可以从redis的安装文件之中寻找.

哨兵监控微服务_数据库_03

我们打开这个文件看一下.

哨兵监控微服务_配置文件_04

这里面配置的是哨兵下的主从节点,最后一个数字代表最少的选票可以变成主服务器[票数].

[2]运行哨兵脚本

哨兵监控微服务_redis_05

我们使用redis-sentinel 脚本执行sentinel.conf配置文件,这就开启了哨兵的监控程序.

[3]查看信息

使我们使用redis-cli 连接哨兵程序:

  

哨兵监控微服务_高可用_06

  具体的信息如下:

哨兵监控微服务_哨兵监控微服务_07

 从最后一行我们可以看到我们的我们实现了一个哨兵的模型.


三 .故障转移

  我们使用哨兵模式最大的目的就是实现故障转移.

  当故障出现的时候,sentinel需要保证了解主从的情况.当sentinel发现主节点出现问题的时候,会通知其他的哨兵程序,

  确认是否真的出现了故障.当确认故障出现时,会发生选举.就是从从节点中选举产生一个主节点.

  然后就以这个节点作为主节点完成新的主从结构.

    当发生故障的节点恢复的时候,哨兵会帮助自动加入到主从中作为从节点.


 四 .主观下线和客观下线

  主线下线:sentinel发现自己与节点之间无法进行信息交互就会认为节点是主观下线的.

  客观下线:sentinel当发现其他的sentinel也有相同的主观下线认知,就会发生客观下线.

    

哨兵监控微服务_高可用_08

  我们再做sentinel配置的时候,最后一个参数2就表示至少有2个sentinel发生客观下线

      才会进行客观下线.

  客观下线就代表会进行故障转移.(主从切换等工作).


 

五 . 领导者选举

  我们现在含有多个sentinel保证高可用,现在如何选举主sentinel呢?

  其实主节点的选举是发生在主sentinel之中.