Redis—听说你速度跟甲斗一样快?——哨兵
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
前言
本文接续上文讨论,探索使用Redis主从复制架构后的业务稳定性与高效性提升。在该架构中,master节点对外提供服务,而slave节点同步master的数据。这种配置允许在master节点发生宕机时,手动将slave节点提升为master以继续服务,同时slave也可分担读请求,减轻master压力。
架构不足及改进
当前架构的不足之处在于master宕机后,需要手动干预将slave提升为master,这个过程耗时且可能影响业务。为了解决这一问题,提出了自动故障切换的机制,即哨兵(sentinel)机制。
Sentinel机制配置
Sentinel机制的配置包括监控、判断节点下线、故障转移等。配置示例如下:
- sentinel monitor mymaster 192.168.149.128 6379 2 - 监控主节点。
- sentinel down-after-milliseconds mymaster 10000 - 主节点不响应的超时判定。
- sentinel parallel-syncs mymaster 1 - 故障转移时同步操作的从节点数量限制。
- sentinel failover-timeout mymaster 30000 - 故障转移超时时间。
此外还有auth-pass、notification-script以及client-reconfig-script等配置。
哨兵工作原理
哨兵节点彼此、与master和slave节点定时发送消息,以确认存活状态。节点若在指定时间内未响应,会被标为主观宕机(SDOWN),若多数哨兵同意,则标记为客观宕机(ODOWN),随后通过选举新的master并自动修改配置。
哨兵工作任务
哨兵节点的工作任务包括发送ping、收发hello消息、标记主观下线、确认客观下线、发送INFO命令、移除主观下线状态、执行故障切换以及更新客户端的redis-master连接信息。
Leader选举与节点发现
故障切换前,需要选举leader。选举基于先来先得原则,成功的sentinel将完成failover过程。节点间的发现机制基于哨兵自动发现,哨兵通过info命令和发布订阅消息通信模式互相发现。
实验部署
部署实验涉及配置master和slave节点,以及哨兵节点。相关命令用于监控、故障切换等操作。一旦master宕机,sentinel将自动进行failover以选出新的master。
想要了解更多内容?