Redis——Sentinel(哨兵)
发布日期:2021-05-11 01:24:30 浏览次数:19 分类:精选文章

本文共 1400 字,大约阅读时间需要 4 分钟。

Redis Sentinel 是 Redis 高可用性解决方案的一部分。通过一组Sentinel实例,Sentinel可以监控任意多个主服务器及其所有从服务器。一旦检测到主服务器出现故障,Sentinel会自动将从服务器中的一个转为新的主服务器,确保数据的持续可用性。


启动并初始化Sentinel步骤

Sentinel的启动过程与普通Redis服务器不同。以下是详细的初始化步骤:

  • 初始化服务器

    首先,你需要启动一个Redis服务器,但这次以Sentinel模式运行。与普通Redis不同,Sentinel不需要加载RDB或AOF文件来恢复数据库状态,因为它并不直接操作数据。

  • 应用Sentinel专用代码

    _RANDOM amaçlıcca:……
    Redis服务器会切换到Sentinel专用的代码,这个代码包含了Sentinel特有的功能模块。

  • 初始化Sentinel状态

    应用专用代码后,服务器会初始化sentinelState结构,该结构记录了所有与Sentinel功能相关的状态信息。

  • 根据配置文件初始化监控列表

    根据提供的配置文件,Sentinel会读取所有需要监控的主服务器信息,并将它们存储在masters字典中。每个主服务器对应一个sentinelRedisInstance结构,记录其相关信息。

  • 创建网络连接

    Sentinel会为每个目标主服务器创建两种类型的网络连接:

    • 命令连接:负责发送命令并接收响应。
    • 订阅连接:用于接收主服务器发布的__sentinel__:hello频道信息。

  • 主服务器信息的获取

    默认情况下,Sentinel每隔10秒会向被监查的主服务器发送一次INFO命令,以获取最新的服务器状态信息。


    获取从服务器信息

    当Sentinel检测到新的从服务器出现时,它会创建对应的实例结构,并为这些从服务器建立命令连接和订阅连接。与主服务器不同,Sentinel会每秒向所有被监控的主服务器和从服务器发送命令,确保高效的状态更新。


    实例间状态同步

    Sentinel会维护sentinels字典,记录与当前实例同样监控同一主服务器的其他Sentinel的信息。这些之间只会建立命令连接,而不会创建订阅连接。


    主服务器状态检查

    Sentinel默认每秒向所有已建立连接的实例发送PING命令,用于检测对方是否在线。down-after-milliseconds参数定义了Sentinel主观下线的时间阈值。


    主安anger下线检测

    当Sentinel判断一个主服务器进入主观下线状态后,为了确保客观下线状态,它会向同一主服务器的其他Sentinel实例询问对方的判断结果。在接收到足够数量的下线报告后,Sentinel会执行故障转移操作。


    故障转移操作流程

    当发生故障转移时,监控该主服务器的Sentinel实例会协商选举产生新的领头Sentinel,负责对故障主服务器进行恢复操作。

  • 选择从服务器作为新主服务器

    在老旧的主服务器所在的所有从服务器中,挑选一个作为新的主服务器。

  • ** 转移主权**

    将所有从服务器设置为新的主服务器的复制节点。

  • 设置老旧主服务器为从服务器状态

    并设置老旧主服务器作为新主服务器的从服务器,这样当它重新上线时,会成为新主服务器的从服务器。


  • 通过以上步骤,Redis Sentinel 能够有效地实现高可用性管理,确保服务的持续稳定运行。

    上一篇:LeetCode 199 二叉树的右视图
    下一篇:LeetCode 779 第K个语法符号

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年04月29日 07时21分36秒