Redis之Sentinel(哨兵)机制

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、Sentinel是什么

Sentinel哨岗、哨兵是Redis的高可用性high availability解决方案由一个或多个Sentinel实例instance组成的Sentinel系统system可以监视任意多个主服务器以及这些主服务器属下的所有从服务器并在被监视的主服务器进入下线状态时自动将下线主服务器属下的某个从服务器升级为新的主服务器然后由新的主服务器代替已下线的主服务器继续处理命令请求。

二、连接

对于每个被Sentinel监视的主服务器来说Sentinel会创建两个连向主服务器的异步网络连接
❑一个是命令连接这个连接专门用于向主服务器发送命令并接收命令回复。
❑另一个是订阅连接这个连接专门用于订阅主服务器的__sentinel__:hello频道。
命令连接主要用于sentinel给服务器发送命令订阅连接可以让各sentinel之间相互感知

三、sentinel检测下线与选举领头sentinel

  • Sentinel配置文件中的down-after-milliseconds选项指定了Sentinel判断实例进入主观下线所需的时间长度如果一个实例在down-after-milliseconds毫秒内连续向Sentinel返回无效回复那么Sentinel会修改这个实例所对应的实例结构在结构的flags属性中打开SRI_S_DOWN标识以此来表示这个实例已经进入主观下线状态
  • 当Sentinel将一个主服务器判断为主观下线之后为了确认这个主服务器是否真的下线了它会向同样监视这一主服务器的其他Sentinel进行询问看它们是否也认为主服务器已经进入了下线状态可以是主观下线或者客观下线。当Sentinel从其他Sentinel那里接收到足够数量的已下线判断之后Sentinel就会将从服务器判定为客观下线并对主服务器执行故障转移操作
    所有在线的Sentinel都有被选为领头Sentinel的资格最先向目标Sentinel发送设置要求的源Sentinel将成为目标Sentinel的局部领头Sentinel而之后接收到的所有设置要求都会被目标Sentinel拒绝

四、Redis重新选主

按照以下规则过滤筛选
1删除处于下线或断线状态的从服务器
2删除列表中最近5秒内没有回复过领头sentinel的从服务器
3从服务器启动时配置文件可配置优先级按配置的优先级进行排序找优先级最大
4优先级相同的找复制偏移量最大的从服务器选为主服务器
选好主服务器之后领头sentinel便可以向新主服务器发送slave of no one命令让其成为新主服务器
接着让其他从服务器执行slave of命令成为新主的从服务器

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redis

“Redis之Sentinel(哨兵)机制” 的相关文章