RedisSentinel哨兵机制

为什么使用哨兵机制

Redis主从复制的缺点:没有办法对master进行动态选举需要使用Sentinel机制完成动态选举

简介

Sentinel(哨兵)进程是用于监控redis集群中Master主服务器工作的状态
在Master主服务器发生故障的时候,可以实现Master和Slave服务器的切换,保证系统的高可用(HA)

哨兵进程的作用

  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的监控目标会随之调换

哨兵进程的工作方式

  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主服务器的主观下线状态就会被移除。

哨兵机制实验

实验前提:

配置好redis主从复制

文件配置

master配置

  • 修改redis.conf文件中的masterauth 你的从机的登陆验证密码.
  • 这样做的目的是当我们master机挂掉的时候,哨兵会选择一个从机作为一个主机,当我们的主机重启之后会变成从机,去连接原来的那个从机(这时候已经变成了主机),如果这台机器redis有登录验证的话这里我们需要配置他的密码.(建议搭建集群的时候redis的密码保持一致)

slave配置

复制Slave机中,Redis安装包sentinel.conf文件到redis安装目录.
修改

#sentinel monitor <master-name> <master ip> <master port> <quorum>
sentinel monitor mymaster master 6379 1
# sentinel auth-pass <master-name> <password>
sentinel auth-pass mymaster 你的主节点密码

配置解析

  • master-name :自己命名的主节点名字 只能由字母A-z、数字0-9 、这三个字符".-_"组成,相当于给自己的主节点起个名
  • quorum:当quorum个数sentinel哨兵认为master主节点失联 那么这时客观上认为主节点失联了
  • master:redis主节点的ip地址,这里我写的主节点的内网主机名

slave开启哨兵监控

在这里插入图片描述

master关机

在这里插入图片描述

slave身份改变,由slave变为master

在这里插入图片描述

slave进行状态检查,当master关机后,slave的身份会由slave变为master

在这里插入图片描述

原来的master开机之后会发现角色变成了slave,原来的slave已经在master关机之后变成了master

在这里插入图片描述
在这里插入图片描述
这就是所谓的哨兵机制
Master和Slave服务器切换后,Master的redis.conf、Slave的redis.conf和sentinel.conf的配置文件的内容都会发生相应的改变,即,Master主服务器的redis.conf配置文件中会多一行replicaof(Redis5之前是slaveof)的配置,sentinel.conf的监控目标会随之调换。
在这里插入图片描述

测试主从复制

角色查看

在这里插入图片描述

测试主从

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值