资讯详情

Redis 的原理和使用(5)

📅 2026/10/22 2:17:09 | 华诺云谱 👁 阅读
Redis 的原理和使用(5)
五、哨兵5.1 基本概念主从复制解决了数据冗余与读写分离但主节点宕机后仍需要人工切换哨兵是一组独立进程负责监控数据节点、通知状态变化并在主节点故障时自动完成故障转移。分布式是指 Redis 数据节点、哨兵节点与客户端分布在多个物理节点上与后文的 Redis Cluster 是两回事。哨兵节点集合建议保持奇数。哨兵定期监控所有节点主节点故障时的转移流程大致分四步主节点故障从节点同步连接中断主从复制停止哨兵通过定期监控发现主节点故障与其他哨兵协商达成多数认同的共识——这一步可以排除“故障的是发现故障的哨兵节点”这类误判哨兵之间用 Raft 算法选举出一个领导节点由其负责后续转移领导节点从从节点中选出新主节点让其他从节点同步新主节点并通知应用层切换5.2 主观下线与客观下线下线判定分两个阶段。哨兵在指定时间内没有收到主节点心跳先判定为主观下线随后哨兵节点之间互相协商投票当故障得票数达到配置的法定票数触发客观下线# sentinel.conf 中监控主节点最后的 2 是法定票数 sentinel monitor redis-master 172.22.0.4 6379 2法定票数决定了“主节点故障”这一结论需要多少哨兵认可才算做实。5.3 选举原理选出负责转移的 leader 用到 Raft 算法核心逻辑可以概括为“先下手为强”每个哨兵向其他所有哨兵发起拉票请求收到请求的节点回复投票响应一轮投票结束后得票过半的节点自动成为 leader出现平票时重新再投一次这也是哨兵节点建议配置奇数个的原因偶数个节点会增平票概率带来不必要的开销。决定谁能率先拉票的因素是网络延时本身就带有随机性。5.4 部署示例基于 docker 可以快速搭建一主两从加三个哨兵的实验环境。docker-compose 中为每个节点声明服务与端口映射哨兵通过 sentinel monitor 配置监控主节点地址容器内部使用虚拟 IP 相互通信services: redis-master: image: redis:5.0.9 command: redis-server --port 6379 redis-slave-1: image: redis:5.0.9 command: redis-server --slaveof redis-master 6379 --port 6379 redis-sentinel-1: image: redis:5.0.9 command: redis-sentinel /usr/local/etc/redis/sentinel.conf --port 26379哨兵启动日志会输出投票与切换过程主节点故障后可以看到 switch-master 记录标识主节点从旧地址切换到了新地址从节点随之重新挂载
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑