• Redis拾遗(六)


    哨兵:

    1. Redis主从复制模式下,一旦主节点故障不能提供服务,哨兵架构可解决此类问题,自动完成故障发现和故障转移,并通知应用方,实现真正的高可用。
    2. 逻辑架构上Redis Sentinel只是新增了多个Sentinel节点,这些节点集合会定期对所有节点进行监控,特别是对主几点的故障实现自动转移。
    3. 安装和部署:
      1. 启动主节点;
      2. 启动两个从节点(配置文件中加slaveof);
      3. 配置Sentinel节点;
      4. 启动Sentinel节点;(redis-sentinel命令);
    4. 部署技巧:
      1. 不应将Sentinel节点部署到同一物理机上,防止硬件故障导致整体异常;
      2. 部署三个以上奇数个Sentinel节点;
    5. 实现原理
      1. 三个定时监控任务:
        1. 每隔10s,每隔Sentinel节点会想主节点和从节点发送info命令获取最新的拓扑结构。
        2. 每隔2s,每个Sentinel节点会向Redis数据节点的__sentinel__:hello频道上发送该Sentinel节点对于主节点的判断以及当前Sentinel节点的信息,同时每个Sentinel节点也会订阅该频道,了解其他Sentinel节点以及它们对主节点的判断。
        3. 每隔1s,每个Sentinel节点会向主节点、从节点、其余Sentinel节点发送一条ping命令做一次心跳检测,来确认这些节点当前是否可达。
      2. 主观下线客观下线:
        1. 主观下线:
          1. 当心跳检测超过down-after-milliseconds没有进行有效回复,Sentinel节点会判定该节点下线,所谓主观下线。
        2. 客观下线:
          1. 当主观下线的节点是主节点时,该节点会通过sentinel is-master-down-by-addr命令向其他Sentinel节点询问对主节点的判断,当超过<quorum>个数,会做出客观下线的决定。
      3. 领导者Sentinel节点选举:
  • 相关阅读:
    C++中类模板的概念和意义
    C++中模板类声明和实现能否分离?
    C/C++ 关于大小端模式,大小端字节序转换程序
    C++中的赋值操作符重载和拷贝构造函数
    C++中的友元
    C/C++内存对齐详解
    C++ 虚函数表、函数地址、内存布局解析
    虚析构函数的必要性(C++)
    C++中的抽象类和接口
    C++中的单例类模板
  • 原文地址:https://www.cnblogs.com/fly-to-the-sky/p/9775696.html
Copyright © 2020-2023  润新知