redis(五):redis哨兵机制(Sentinel)

版权声明:本文为博主原创文章,转载请注明文章链接 https://blog.csdn.net/zhanyu1/article/details/90729609

一、为什么要有哨兵机制

上小节介绍了redis的主从复制及主从复制的缺点,但是为什么还要有redis的哨兵机制呢?
主要是因为主从复制没有办法对master进行动态选举,因此需要使用Sentinel(哨兵)机制来完成动态选举,也就是说哨兵机制的出现是为了解决主从复制的缺点的。

Sentinel(哨兵)进程是用于监控redis集群中Master主服务器工作的状态。在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用(HA)。哨兵机制被集成在了redis2.6+的版本中,到了2.8版本之后稳定了下来。

哨兵机制(sentinel)的高可用:

原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。
在这里插入图片描述
其实整个过程只需要一个哨兵节点来完成,首先使用Raft算法(选举算法)实现选举机制,选出一个哨兵节点来完成转移和通知

二、哨兵进程的作用

1.监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。

2.提醒(Notification): 当被监控的某个Redis节点出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。

3.自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作。

  • 它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master;
  • 当客户端试图连接失效的Master时,集群也会向客户端返回新Master的地址,使得集群可以使用现在的Master替换失效Master。
  • Master和Slave服务器切换后,Master的redis.conf、Slave的redis.conf和sentinel.conf的配置文件的内容都会发生相应的改变,即,Master主服务器的redis.conf配置文件中会多一行slaveof的配置,sentinel.conf的监控目标会随之调换。

由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。如下图:
在这里插入图片描述
 
在Server1 掉线后:
在这里插入图片描述

升级Server2 为新的主服务器:
在这里插入图片描述

三、哨兵进程的工作方式

1.每个Sentinel(哨兵)进程以每秒钟一次的频率向整个集群中的Master主服务器,Slave从服务器以及其他Sentinel(哨兵)进程发送一个 PING 命令。

2.如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel(哨兵)进程标记为主观下线(SDOWN)。

3.如果一个Master主服务器被标记为主观下线(SDOWN),则正在监视这个Master主服务器的所有 Sentinel(哨兵)进程要以每秒一次的频率确认Master主服务器的确进入了主观下线状态。

4.当有足够数量的 Sentinel(哨兵)进程(大于等于配置文件指定的值)在指定的时间范围内确认Master主服务器进入了主观下线状态(SDOWN), 则Master主服务器会被标记为客观下线(ODOWN)。

5.在一般情况下, 每个 Sentinel(哨兵)进程会以每 10 秒一次的频率向集群中的所有Master主服务器、Slave从服务器发送 INFO 命令。

6.当Master主服务器被 Sentinel(哨兵)进程标记为客观下线(ODOWN)时,Sentinel(哨兵)进程向下线的 Master主服务器的所有 Slave从服务器发送 INFO 命令的频率会从 10 秒一次改为每秒一次。

7.若没有足够数量的 Sentinel(哨兵)进程同意 Master主服务器下线, Master主服务器的客观下线状态就会被移除。若 Master主服务器重新向 Sentinel(哨兵)进程发送 PING 命令返回有效回复,Master主服务器的主观下线状态就会被移除。
在这里插入图片描述

四、安装主从和哨兵

参考地址:https://www.cnblogs.com/jaycekon/p/6237562.html

猜你喜欢

转载自blog.csdn.net/zhanyu1/article/details/90729609