Redis 哨兵模式高可用架构部署与优化
简介
为了解决 主从模式无法自动故障转移与恢复的问题,Redis 引入了哨兵模式。主要是在主从复制的基础上加入哨兵节点,用于监控主节点和从节点状态。当主节点发生故障时,哨兵节点可以自动进行故障转移,选择一个从节点升级为主节点,并通知其他从节点和应用程序进行更新。
优点:可以动态切换主从库,适合中心型公司首选。
缺点:
- 单个 Master 主节点提供写服务,Redis 存储的数据有限(<10G),并发量不足(<3w)。
- 自动切换主从库会产生访问瞬断的情况,切换没有那么快。
工作原理:
- 哨兵节点定期向所有主节点和从节点发送 PING 命令,如果在指定的时间内未收到 PONG 响应,哨兵节点会将该节点标记为主观下线。
- 如果一个主节点被多数哨兵节点标记为主观下线,那么它将被标记为客观下线。
- 当主节点被标记为客观下线时,哨兵节点会触发故障转移过程,它会从所有健康的从节点中选举一个新的主节点。
- 并将所有从节点切换到新的主节点实现自动故障转移。同时哨兵节点会更新所有客户端的配置指向新的主节点。
生产级部署文档
硬件:1 主 2 从 3 哨兵,针对中大型公司(日活百万级至千万级,QPS 10 万+)的场景:
| 角色 | IP 地址 | 主机名 | 硬件配置 | 操作系统 |
|---|---|---|---|---|
| 主节点 | 192.168.1.10 | redis-m1 | 16 核 / 64GB / 1TB | CentOS 7.9 |
| 从节点 1 | 192.168.1.11 | redis-s1 | 16 核 / 64GB / 1TB | CentOS 7.9 |
| 从节点 2 | 192.168.1.12 | redis-s2 | 16 核 / 64GB / 1TB | CentOS 7.9 |
| 哨兵 1 | 192.168.1.13 | sentinel1 | 16 核 / 64GB / 1TB | CentOS 7.9 |
| 哨兵 2 | 192.168.1.14 | sentinel2 | 16 核 / 64GB / 1TB | CentOS 7.9 |
| 哨兵 3 | 192.168.1.15 | sentinel3 | 16 核 / 64GB / 1TB | CentOS 7.9 |
说明:
- 所有服务器之间网络互通,防火墙开放 6379(Redis)和 26379(哨兵)端口。
- 主从节点和哨兵节点分开部署,避免资源争用,提高稳定性。
常用命令:
# 查看集群信息
redis-cli -a <password> info replication
# 手动故障转移,必须在想要提升为主节点的从节点上执行
# 1.默认(安全)模式
# PS:数据零丢失,会等待从节点的数据与主节点完全同步后,再进行无损切换
redis-cli -a your_password CLUSTERFAILOVER
redis-cli -a your_password CLUSTERFAILOVER FORCE
redis-cli -a your_password CLUSTERFAILOVERTAKEOVER
redis-cli -p 26379 SENTINEL FAILOVER <master-name>
redis-cli -p 26379 info sentinel


