You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes环境下Bitnami Redis Cluster高可用失效问题求助

故障排查与解决步骤

一、排查Redis Cluster本身故障转移能力

  • 首先验证集群基础状态:进入任意Redis Pod执行以下命令,确认集群槽位分配、主从关系正常
    kubectl exec -n redis <任意redis-pod名> -- redis-cli -a redis@pass cluster info
    kubectl exec -n redis <任意redis-pod名> -- redis-cli -a redis@pass cluster nodes
    
    预期结果为:共6个节点、3主3从,每个主节点绑定1个从节点,16384个槽位全部分配完成,cluster_state状态为ok。
  • 验证自动故障转移逻辑:先记录当前主节点ID,手动删除其中一个主节点Pod,10秒后再次执行cluster nodes命令,确认对应从节点是否自动升级为主节点,槽位是否自动迁移到新主节点。如果未触发自动升主,排查以下问题:
    • 检查Redis Pod日志,是否存在选举失败、节点间通信超时报错
    • 确认K8s集群中没有网络策略、防火墙规则屏蔽Redis节点间的6379(服务端口)和16379(集群总线端口)通信
    • 检查PVC挂载是否正常,删除后重建的Pod是否能正常挂载原有PV,数据同步无异常
    • 修复values.yaml配置错误:你当前sysctlImage的command中存在无效的insta行,会导致sysctl配置未生效,删除该行后重新升级Helm Release即可。

二、修复Quarkus客户端配置错误

你当前的Quarkus配置存在明显的模式混用问题,是导致故障后无法访问的核心原因之一:

  • 删掉quarkus.redis.master-name=redis-cluster配置项,该参数是哨兵模式专用配置,集群模式下配置会导致客户端逻辑异常,无法正确感知集群拓扑变化。
  • 新增集群拓扑自动刷新配置,确保客户端能自动感知节点切换:
    # 单位根据需要调整,这里设为2秒刷新一次拓扑
    quarkus.redis.cluster.refresh-period=2s
    
  • 若使用的是普通ClusterIP Service,建议更换为Bitnami Redis Cluster默认提供的Headless Service地址,避免Service负载均衡路由到已故障的节点。

三、最终验证

完成上述修改后,重新部署Quarkus应用,手动删除任意Redis Pod,确认集群可在15秒内完成故障转移,客户端可正常读写无报错。

内容的提问来源于stack exchange,提问作者William

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:24:08