zoukankan      html  css  js  c++  java
  • 07.初步学习redis哨兵机制

    一、哨兵(sentinal)的介绍


    哨兵是redis集群架构中非常重要的一个组件,主要功能如下:

    • 集群监控,负责监控redis master和slave进程是否正常工作
    • 消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
    • 故障转移,如果master node挂掉了,会自动转移到slave node上
    • 配置中心,如果故障转移发生了,通知client客户端新的master地址

    哨兵本身也是分布式的,作为一个哨兵集群去运行,互相协同工作

    • 故障转移时,判断一个master node宕机了,需要大部分的哨兵都同意才行,涉及到了分布式选举的问题

    • 即使部分哨兵节点挂掉了,哨兵集群还是能正常工作的


    二、主观和客观宕机


    sdown:主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机
    odown:客观宕机,如果quorum数量的哨兵都觉得一个master宕机了,那么就是客观宕机

    达成条件

    sdown:,如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds指定的毫秒数之后,就主观认为master宕机

    odown:如果一个哨兵在指定时间内,收到了quorum指定数量的其他哨兵也认为那个master是sdown了,那么就认为是odown了,客观认为master宕机


    三、哨兵集群的自动发现机制


    哨兵互相之间的发现,是通过redis的pub/sub系统实现的。

    1. 每隔两秒钟,每个哨兵都会往自己监控的某个master+slaves对应的__sentinel__:hello channel里发送一个消息,内容是自己的host、ip和runid还有对这个master的监控配置
    2. 每个哨兵也会去监听自己监控的每个master+slaves对应的__sentinel__:hello channel,然后去感知到同样在监听这个master+slaves的其他哨兵的存在
    3. 每个哨兵还会跟其他哨兵交换对master的监控配置,互相进行监控配置的同步


    四、slave配置的自动纠正


    哨兵会负责自动纠正slave的一些配置,比如slave如果要成为潜在的master候选人,哨兵会确保slave在复制现有master的数据; 如果slave连接到了一个错误的master上,比如故障转移之后,那么哨兵会确保它们连接到正确的master上

  • 相关阅读:
    Golang Web入门(3):如何优雅的设计中间件
    Golang Web入门(2):如何实现一个高性能的路由
    基于MySQL 的 SQL 优化总结
    Redis系列(七)Redis面试题
    Redis系列(六)Redis 的缓存穿透、缓存击穿和缓存雪崩
    Redis系列(五)发布订阅模式、主从复制和哨兵模式
    Redis系列(四)Redis配置文件和持久化
    Redis系列(三)Redis的事务和Spring Boot整合
    Redis系列(二)Redis的8种数据类型
    Redis系列(一)Redis入门
  • 原文地址:https://www.cnblogs.com/mrmirror/p/13592512.html
Copyright © 2011-2022 走看看