当前位置: 首页 > news >正文

Redis哨兵:从看门狗到导盲犬的进化史

各位在分布式世界摸爬滚打的铲屎官们!今天我们要给Redis主从架构装上智能项圈——哨兵系统!这货从1.0时代的看门狗(只会叫不干活),进化到现在的导盲犬(主动带路+危机处理),堪称《Redisの变形记》!系好安全带,准备围观高可用架构的诞生现场! 🐕🦺


第一幕:哨兵の职场简历

岗位职责

  1. 24小时盯梢:监控主从节点心跳(比女朋友查岗还勤快)
  2. 故障诊断:发现主节点扑街时,秒变兽医判断是否真死(网络抖动?还是真宕机?)
  3. 自动换届:扶持新主节点上位(比宫斗剧还刺激)
  4. 服务发现:告诉客户端该抱谁大腿(主节点IP变化时的指路明灯)

技能要求

  • 至少3个哨兵组成陪审团(防止误判)
  • 奇数天团配置(3/5/7个,避免投票平局)
  • 能承受网络分区的毒打(脑裂?不存在的!)

第二幕:哨兵集群の出生证明

redis-sentinel.conf の灵魂配置

sentinel monitor mymaster 192.168.1.100 6379 2  # 监控名为mymaster的主节点,2票同意才算真宕机  
sentinel down-after-milliseconds mymaster 5000  # 5秒无响应就亮红灯  
sentinel failover-timeout mymaster 180000       # 换届选举限时3分钟  
sentinel parallel-syncs mymaster 1              # 新主上位时,每次同步1个从节点(防流量洪灾)  

避坑指南

  1. 所有哨兵必须监控同一个主节点(别各自认爹)
  2. 投票数quorum要 ≤ 哨兵总数/2 +1(比如3哨兵配2票)
  3. 生产环境至少3台物理机部署哨兵(防止被团灭)

第三幕:SpringBootの哨兵婚介所

application.yml の爱情契约

spring:  
  redis:  
    sentinel:  
      master: mymaster         # 主节点名称(别写成mymother)  
      nodes:  
        - 192.168.1.101:26379  # 哨兵1  
        - 192.168.1.102:26379  # 哨兵2  
        - 192.168.1.103:26379  # 哨兵3  
    password: 你的密码不是root吧?  
    lettuce:  
      pool:  
        max-active: 16         # 连接池要像海底捞等位区一样充足  

代码の山盟海誓

@Bean  
public RedisConnectionFactory lettuceConnectionFactory() {  
    RedisSentinelConfiguration config = new RedisSentinelConfiguration()  
        .master("mymaster")  
        .sentinel("192.168.1.101", 26379)  
        .sentinel("192.168.1.102", 26379)  
        .sentinel("192.168.1.103", 26379);  
    config.setPassword(RedisPassword.of("你的密码"));  
    return new LettuceConnectionFactory(config);  
}  

第四幕:哨兵の翻车名场面

惨案1:网络抖动引发的冤假错案

[ERR] +vote-for-leader 哨兵A疯狂弹劾主节点  
[WARN] 主节点实际存活,但因网络波动被误判死亡  

保命方案

  • 调大down-after-milliseconds(建议≥5000ms)
  • 给哨兵和Redis节点配置VIP心跳线

惨案2:脑裂の量子纠缠

主节点A和主节点B同时宣称:"我才是正宫!"  
客户端数据写入分裂,引发《双主の时空混乱》  

应急预案

  1. 手动下线其中一个主节点
  2. 配置min-slaves-to-write 1(至少1个从节点同步成功才接受写)

惨案3:哨兵集群集体失忆

所有哨兵突然忘记监控配置,开始摆烂  

复活咒语

  1. 重启哨兵并检查配置文件权限
  2. sentinel set命令动态修复配置

第五幕:哨兵の健康体检表

1. 哨兵自检命令

redis-cli -h 哨兵IP -p 26379 info sentinel  
# 输出示例:  
# master0:name=mymaster,status=ok,address=192.168.1.100:6379,slaves=2,sentinels=3  

2. 监控告警指标

  • 哨兵存活数(<3时触发警报)
  • 主从切换次数(突然飙升可能有问题)
  • 主节点响应时间(>100ms要亮黄灯)

3. 灾难演习方案

# 手动制造主节点宕机(勇士行为)  
redis-cli -h 主节点IP debug segfault  
# 观察哨兵是否在30秒内完成新主选举  

终极大招:哨兵到集群の飞升指南

当出现以下症状时,请考虑升级Redis Cluster:

  1. 数据量超过50GB(哨兵:我记不住这么多啊!)
  2. 写并发超过10万/秒(哨兵:主节点要炸了!)
  3. 需要自动分片(哨兵:这题超纲了!)

最后送上高可用の宇宙真理:
哨兵不是银弹!网络分区时请拥抱CP系统!
(想同时要CA?醒醒,分布式系统没有魔法!)

现在你已获得"Redis哨兵驯兽师"资格证书!要不要挑战用哨兵+Keepalived实现异地多活?(然后发现延迟让人怀疑人生)

相关文章:

  • C#中运算符重载‌你会用吗?
  • Day16:最小的k个数
  • [CISSP] [3] 人员安全与社会工程
  • 栈刷题+总结
  • 全概公式和贝叶斯公式
  • 机器学习中的 K-均值聚类算法及其优缺点。
  • 如何在AVL树中高效插入并保持平衡:一步步掌握旋转与平衡因子 —— 旋转篇
  • 【.Net 9下使用Tensorflow.net---通过LSTM实现中文情感分析】
  • PentestGPT 下载
  • RHCE(RHCSA复习:npm、dnf、源码安装实验)
  • python编写一个脚本删除txt文件中所有### ** 和 ---
  • 深入解析操作系统进程控制:从地址空间到实战应用
  • 【Linux】UDP协议与TCP协议
  • 【教程】如何学习 C++
  • YOLO优化之扫描融合模块(SimVSS Block)
  • windows第十三章 GDI绘图技术
  • CUDA编程之内存
  • axios的二次封装
  • nginx配置转发到另一个网站或另一台服务器的服务
  • HOT100——栈篇Leetcode739. 每日温度
  • 特朗普访中东绕行以色列,专家:凸显美以利益分歧扩大
  • 明查|印度空军“又有一架战机被巴基斯坦击落,飞行员被俘”?
  • 影子调查丨三名“淘金客”殒命雪峰山:千余废弃金矿洞的监管难题
  • 教育部:启动实施县中头雁教师岗位计划,支撑县中全面振兴
  • 人民财评:网售“婴儿高跟鞋”?不能让畸形审美侵蚀孩子身心
  • 教育部答澎湃:2025世界数字教育大会将发布系列重磅成果