zoukankan      html  css  js  c++  java
  • Redis多机常用架构-sentinel

    哨兵经典架构

    image

    sentinel结构

    imageimage

     

    哨兵工作原理

    Sentinel 通过配置文件发现Master,如下:

    imageimage

    Sentinel 通过向Master发送 INFO 命令来自动获得所有Slave的地址

    跟Master一样,Sentinel 会与每个被发现的Slave创建命令连接和订阅连接

    image

    Sentinel 会通过命令连接向被监视的主从服务器发送 HELLO 信息,该消息包含 Sentinel 的 IP、端口号、ID 等内容,以此来向其他 Sentinel 宣告自己的存在。与此同时,Sentinel 会通过订阅连接接收其他 Sentinel 的HELLO 信息,以此来发现监视同一个Master的其他 Sentinel

    image

     

    image

    image

    image

    Sentinel 之间会互相创建命令连接,用于进行通信。

    因为已经有主从服务器作为发送和接收 HELLO 信息的中介,所以 Sentinel之间不会创建订阅连接。

    image

    Sentinel 使用 PING 命令来检测实例的状态:如果实例在指定的时间内没有返回回复,或者返回错误的回复,那么该实例会被 Sentinel 判断为SDOWN(subjectively down,主观下线)。

    注意:只有一台Sentinel将服务器标记为SDOWN不会触发Failover。只有一定数量的Sentinel都将该服务器标记为SDOWN后,服务器才会被标记为ODOWN(objectively down,客观下线),这时才会触发Failover过程。

    参数down-after-milliseconds指定了 Sentinel 认为服务器已经断线所需的毫秒数。

    参数quorum用来控制Sentinel投票数

    注意:源码中SDOWN对应PFAIL消息,ODOWN对应FAIL消息

    image

    Automatic Failover

    在下线Master的所有Slave中,选出一个数据状态最接近Master的Slave,选择的条件包括:Slave未下线、主从之间的连接断开时间最短,等等。

    Sentinel 向被选中的Slave发送 SLAVEOF NO ONE ,将它升级为Master。

    向其他Slave发送 SLAVEOF 命令,让它们复制新的Master。

    image

  • 相关阅读:
    6/10
    Alpha 冲刺5/10
    现场编程
    4/10
    3/10
    总结
    bbbbbeta
    总结
    beta 7
    beta 6
  • 原文地址:https://www.cnblogs.com/janehoo/p/6118961.html
Copyright © 2011-2022 走看看