建议先关注、点赞、收藏后再阅读。
Sentinel 是 Redis 集群中的哨兵角色,它的作用是对 Redis 集群中的主节点和从节点进行监控和管理。
Sentinel 的主要作用有:
- 监控 : Sentinel 定期检查 Redis 集群节点的状态,包括主节点和从节点是否正常运行,以及节点的复制状态是否正常。
- 故障转移 : 当 Sentinel 检测到主节点不可用时,它会自动进行故障转移操作,将一个从节点升级为新的主节点,并通知其他节点更新配置,以确保集群的高可用性。
- 配置提供 : Sentinel 监控 Redis 集群的拓扑变化,并将这些信息提供给客户端,以便客户端能够实时获取 Redis 集群的当前状态。
- 自动配置修复 : 当 Redis 集群的主节点恢复正常运行后,Sentinel 会自动将新的主节点添加到集群中,并进行配置修复,以保证集群的一致性。
- 通知机制 : 当发生故障转移或其他重要事件时,Sentinel 会向运维人员发送通知,以便及时采取相应的措施。
Redis Sentinel 启动过程
- 运行
redis-sentinel
命令,启动 Redis Sentinel 进程。 - 读取 Sentinel 配置文件
sentinel.conf
,获取配置信息,包括 Sentinel 监控的 Redis 主节点信息和相关的配置参数。 - Sentinel 进程根据配置信息尝试连接 Redis 主节点,以获取主节点的状态信息。
- 如果主节点处于正常状态,Sentinel 进程开始监控该主节点,并将其纳入监控池中。
- Sentinel 进程根据配置信息,尝试连接集群中的其他 Sentinel 进程,以获取其他 Sentinel 进程监控的主节点信息。
- Sentinel 进程在与其他 Sentinel 进程进行通信后,将收集到的主节点信息进行合并,形成全局的主节点列表。
- Sentinel 进程会定期向集群中的其他 Sentinel 进程发送消息,以确保与其他 Sentinel 进程的连通性。
- Sentinel 进程在监控主节点的过程中,会不断地检查主节点的健康状态,一旦主节点出现故障,Sentinel 进程会根据预先配置的策略,选择一个从节点升级为新的主节点并通知其他从节点。
Redis Sentinel 初始化步骤
- 读取 Sentinel 配置文件
sentinel.conf
,获取配置信息。 - 解析配置文件中的各个参数,并将其保存到内存中。
- Sentinel 进程根据配置文件中指定的监控主节点的 IP 和端口,尝试连接主节点以获取主节点的状态信息。
- 如果连接成功,Sentinel 进程开始监控该主节点,并将其纳入监控池中。
- Sentinel 进程根据配置文件中定义的如果没有足够的主节点可用时,应该如何处理的规则,在初始化阶段决定对于每个被监控的主节点是否需要进行故障转移。
- Sentinel 进程尝试连接集群中的其他 Sentinel 进程,获取其他 Sentinel 进程监控的主节点信息。
- 将收集到的主节点信息与配置文件中的主节点信息进行合并,形成全局的主节点列表。
- 设置定期向其他 Sentinel 进程发送消息的时间间隔,并开始向其他 Sentinel 进程发送消息以确保连通性。
- 根据配置文件中的规则定时检查主节点的健康状态,一旦主节点出现故障,Sentinel 进程会根据预先配置的策略,选择一个从节点升级为新的主节点并通知其他从节点。