本文摘自PHP中文网,作者青灯夜游,侵删。
本篇文章带大家了解一下Redis中的哨兵模式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。主从切换技术的方法是:
- 当主服务器宕机时,需要将从服务器手动切换(
slaveof no one
)到主从服务器,这需要人工干预。 - 这既费时又费力,但也会在一段时间内导致服务不可用。 这不是推荐的方法。
- 更多的时间,我们优先考虑哨兵模式,这是当前企业应用程序的主流模式。 Redis Sentinel是Redis的高度可用的实现。
- Sentinel是管理多个Redis实例的工具。 它可以监视,通知Redis并自动进行故障转移。
Redis Sentinel的基本概念
主从复制和Sentinel高可用性架构的示意图
Redis Sentinel架构
Redis Sentinel的主要功能Sentinel的主要功能包括:
主节点生存检测,主从操作检测,自动故障转移以及主从切换。
- Redis的最小标记配置是一台主机和一台从机;
- Redis的Sentinel系统可用于管理多个Redis服务器。
- 系统可以执行以下四个任务:
1、监视:Sentinel会不断检查主服务器和从属服务器是否正常运行;
2、通知:当受监控的Redis服务器出现问题时,Sentinel会通过API脚本向管理员或其他应用程序发送通知;
3、自动故障转移:当主节点无法正常工作时,Sentinel将启动自动故障转移操作。它将与发生故障的主节点处于主从关系的从节点之一升级到新的主节点,并将其他从节点指向新的主节点;
4、 配置提供程序:在Redis Sentinel模式下,初始化客户端应用程序时,它将连接Sentinel节点集合以获取主节点的信息;
Redis Sentinel如何工作
- 当哨兵节点连接到Redis实例时,它将创建两个连接:cmd和pub/sub。 Sentinel通过cmd连接将命令发送到Redis,并通过pub/sub连接到Redis实例上的其他哨兵实例。
- Sentinel与Redis主节点和从节点进行交互的命令
- 每个Sentinel每秒向其已知的主实例,从属实例和其他Sentinel实例发送一个PING命令。
- 如果一个实例花费的时间比上次对PING命令的有效回复(毫秒)后down所指定的时间更长,那么Sentinel会将该实例标记为主观离线。
- 如果将主服务器标记为主观注销,则将监视主服务器的所有Sentinel节点以确认主服务器确实已经每秒进入一次主观注销状态。
- 如果将主服务器标记为主观注销,并且在指定的时间范围内有足够的哨兵(至少配置文件中指定的数量)与该判断相符,则将主服务器标记为客观下线。
- 通常,每个Sentinel每10秒向其所有已知的主服务器和从服务器发送INFO命令。 当Sentinel将主服务器标记为脱机时,Sentinel发送INFO命令给脱机主服务器的所有从属服务器的频率将从每10秒一次更改为每秒一次。
- Sentinel和其他哨兵协商主节点的状态。如果主节点处于SDOWN状态,投票将自动选择新的主节点。将其余的从节点指向新的主节点以进行数据复制。
- 如果没有足够的哨兵以允许主服务器注销,则将删除主服务器的客观注销状态。 当主服务器对Sentinel的PING命令返回有效答复时,主服务器的主观脱机状态将被删除。
- note
健壮的Redis Sentinel群集应至少使用三个Sentinel实例,并确保将这些实例放置在不同的计算机上,甚至放置在不同的物理区域上.
Sentinel无法保证强一致性。 常见客户端应用程序库中支持Sentinel。
Sentinel需要不断测试和观察以确保高可用性
测试
- 创建配置文件
相关阅读 >>
更多相关阅读请进入《Redis》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。