一 .起因
我们使用主从时有一个非常大的问题,就是故障转移完全是通过人工的手段进行的,
为了实现高可用性的要求,redis为我们提供了一个哨兵的模式进行高可用的完善.
二 . 哨兵模式概述
哨兵模式的原理非常简单,就是使用一个脚本程序充当监听者,当故障出现时,自动实现故障的转移.当主节点出现问题时,会从从节点之中选出一个充当主节点,这就是哨兵模式的基本原理.
实际上使用哨兵模式非常简单,也只需要进行简单的配置就可以完成了.
整个基本的架构如下:
配置 :
现在按照一个一主二从,三个sentinel完成监控的形式配置一下整个结构.
[1]配置三个redis,完成一主二从的模型.
只需要创建两个从配置文件,注意salveof的配置就可以了.
配置完成之后,我们启动主从模式.
配置后查询的主从信息如上.
[2]创建一个sentinel.conf文件,这个文件我们可以从redis的安装文件之中寻找.
我们打开这个文件看一下.
这里面配置的是哨兵下的主从节点,最后一个数字代表最少的选票可以变成主服务器[票数].
[2]运行哨兵脚本
我们使用redis-sentinel 脚本执行sentinel.conf配置文件,这就开启了哨兵的监控程序.
[3]查看信息
使我们使用redis-cli 连接哨兵程序:
具体的信息如下:
从最后一行我们可以看到我们的我们实现了一个哨兵的模型.
三 .故障转移
我们使用哨兵模式最大的目的就是实现故障转移.
当故障出现的时候,sentinel需要保证了解主从的情况.当sentinel发现主节点出现问题的时候,会通知其他的哨兵程序,
确认是否真的出现了故障.当确认故障出现时,会发生选举.就是从从节点中选举产生一个主节点.
然后就以这个节点作为主节点完成新的主从结构.
当发生故障的节点恢复的时候,哨兵会帮助自动加入到主从中作为从节点.
四 .主观下线和客观下线
主线下线:sentinel发现自己与节点之间无法进行信息交互就会认为节点是主观下线的.
客观下线:sentinel当发现其他的sentinel也有相同的主观下线认知,就会发生客观下线.
我们再做sentinel配置的时候,最后一个参数2就表示至少有2个sentinel发生客观下线
才会进行客观下线.
客观下线就代表会进行故障转移.(主从切换等工作).
五 . 领导者选举
我们现在含有多个sentinel保证高可用,现在如何选举主sentinel呢?
其实主节点的选举是发生在主sentinel之中.