首页 新闻 会员 周边

Kubernetes 上部署的 redis 集群如何配置持久化

0
悬赏园豆:30 [待解决问题]

redis 集群作为缓存服务器,部署了 3 个 master 节点,3 个 slave 节点,请问如何配置持久化?

dudu的主页 dudu | 高人七级 | 园豆:22853
提问于:2026-05-04 09:53
< >
分享
所有回答(1)
0

K8s上Redis集群持久化要同时解决两个层面的问题:Redis自身的持久化配置 + K8s的存储卷绑定。

一、Redis持久化机制选择

生产环境建议RDB+AOF同时开启:

  • RDB做定时快照(默认每5分钟如果有1个key变化就触发),恢复速度快但可能丢最近几分钟数据
  • AOF追加写命令,每秒fsync,最多丢1秒数据。AOF是主力,RDB做兜底

redis.conf关键配置:
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec
dir /data

二、K8s持久化存储配置

核心是用StatefulSet而不是Deployment,配合volumeClaimTemplates让每个Pod拿到独立的PVC:

StatefulSet配置要点:

  • 每个Redis节点(master和slave)各一个PVC,pod名稳定如redis-cluster-0到redis-cluster-5
  • volumeClaimTemplates用storageClass动态供给,accessMode: ReadWriteOnce
  • 挂载到/data目录(和redis.conf里dir一致)

如果用Bitnami Redis Cluster Helm Chart,values.yaml里这样配:
persistence.enabled: true
persistence.storageClass: "你的SC名"
persistence.size: 10Gi
persistence.accessModes: ["ReadWriteOnce"]
volumeClaimTemplates会自动给6个Pod各分一个PVC

三、集群模式特别注意

Redis Cluster每个节点独立持久化自己的slot范围数据,不需要共享存储。slave节点可以开AOF也可以不开——开了容灾恢复更快,不开节省IO。建议至少master开AOF,slave看性能需求。

如果恢复时集群需要从持久化文件重建,先启动各节点让它们各自从AOF/RDB恢复本地数据,再组成集群拓扑。注意K8s的Pod重启顺序——StatefulSet会按序号从0开始逐个启动,可以利用这个特性确保master先于slave就绪。

四、验证

部署后exec进Pod验证:redis-cli执行BGSAVE或BGREWRITEAOF,检查/data目录下是否生成dump.rdb和appendonly.aof文件。K8s层面用kubectl get pvc确认6个PVC都是BOUND状态。

badhope33834 | 园豆:280 (菜鸟二级) | 2026-09-20 08:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册