2022-09-24 13:06:56
高可用Redis服务架构的核心目标是确保在各类异常情况下仍能持续提供服务或快速恢复服务。
异常场景与高可用设计思想
高可用需应对三类异常:单节点进程崩溃(如误杀进程)、单节点服务器宕机(如硬件故障或人为误操作)、节点间网络中断(如光缆断裂)。其设计核心基于“多个小概率事件同时发生的概率可忽略不计”,即通过冗余部署容忍单点故障,避免单点失效导致全局不可用。
主流高可用方案对比
高可用架构搭建步骤
方案1:单机版Redis
仅部署单个Redis实例,无冗余设计。缺陷:单点故障会导致服务中断,数据无备份易丢失,仅适用于开发测试环境。
方案2:主从+单Sentinel
部署一主一从Redis实例,并配置单个Sentinel监控。缺陷:Sentinel本身成为单点,若其宕机,客户端无法获取主从信息,仍无法实现高可用。
方案3:主从+双Sentinel
部署两台服务器,每台运行Redis实例(一主一从)及一个Sentinel。缺陷:当单台服务器宕机时,剩余Sentinel数量不足50%(需超过半数投票才能触发切换),导致主从切换失败,服务不可用。
方案4:主从+三Sentinel(推荐)
部署三台服务器,每台运行一个Sentinel,主从Redis实例可跨节点部署(如1主+2从)。优势:
优化实践
总结
高可用Redis服务需通过冗余部署(多节点、多Sentinel)、自动化故障转移(Sentinel投票机制)及数据一致性保障(网络分区处理)实现。推荐采用三节点Sentinel+主从Redis架构,结合VIP和进程监控工具,平衡可用性、一致性与运维成本。