Skip to content

Redis 高可用部署(redis 命名空间)

架构

  应用 ──写──► redis-master.redis:6379   (selector isMaster=true,始终指向当前主)
       ──读──► redis-read.redis:6379     (selector isMaster=false,负载到全部从库)
       └─Sentinel 客户端─► redis.redis:26379

        ┌────────────┐   ┌────────────┐   ┌────────────┐
        │ redis-node-0│   │ redis-node-1│   │ redis-node-2│   Redis 8.0.2
        │ redis      │   │ redis      │   │ redis      │   每 Pod 3 容器:
        │ sentinel   │   │ sentinel   │   │ sentinel   │   redis+sentinel+labeler
        │ labeler    │   │ labeler    │   │ labeler    │
        └────────────┘   └────────────┘   └────────────┘
              │  主从异步复制 + Sentinel 自动故障转移(quorum=2)

        NFS 192.168.122.1:/mnt/xfs/rancher/redis(StorageClass: nfs-redis)

  备份: CronJob 每天 02:00(北京) redis-cli --rdb 拉取主库快照 → NFS,保留 7 天
  补偿: redis-label-sync CronJob 每 5 分钟为丢失 isMaster 标签的 Pod 补打 false
组件副本高可用措施
redis-node(redis+sentinel+labeler)3(1主2从)Sentinel 自动故障转移(实测主库 Pod 删除后 ~30s 完成选主)
redis-master / redis-read Service标签驱动,故障转移后自动指向新主/新从
redis-nfs-provisioner1仅供给 PVC 时工作
redis-backupCronJob0 18 * * * UTC = 北京 02:00,保留 7 天
redis-label-syncCronJob*/5 * * * *,补打丢失的 isMaster=false 标签

镜像与 Chart(全部来自内部 Harbor 192.168.122.156:30000)

内容内部地址来源(国内源同步)
Redis 镜像redis/redis:8.0.2-debian-12-r4docker.m.daocloud.io/bitnamilegacy/redis
Sentinel 镜像redis/redis-sentinel:8.0.2-debian-12-r2docker.m.daocloud.io/bitnamilegacy/redis-sentinel
labeler 镜像redis/kubectl:1.33.2-debian-12-r0docker.m.daocloud.io/bitnamilegacy/kubectl
Redis chartoci://…/charts/redis:21.2.6oci://docker.m.daocloud.io/bitnamicharts/redis
NFS provisioner chart/镜像charts/nfs-subdir-external-provisioner:4.0.18 / sig-storage/…:v4.0.2Harbor 已有

连接信息

用途地址说明
redis-master.redis.svc.cluster.local:6379始终指向当前主库
redis-read.redis.svc.cluster.local:6379负载均衡到全部从库
Sentinelredis.redis.svc.cluster.local:26379Sentinel 感知客户端(masterSet: mymaster)

密码:xxx .secrets.env(REDIS_PASSWORD)。

部署命令

bash
export KUBECONFIG=~/.kube/config-122.31
cd redis/
./deploy.sh          # 一键部署 + 验证(sync / check 子命令见脚本头注释)

已知限制

  • 从库读存在毫秒级复制延迟,强一致读请走 redis-master
  • 从库 Pod 重建后丢失 isMaster=false 标签(chart 固有限制), 已由 redis-label-sync CronJob 每 5 分钟自动补偿
  • RDB 备份是定时快照,故障可能丢失最近一天增量;如需更低 RPO 可开启 AOF 或缩短备份周期

密码

密码生成后保存在 .secrets.env(勿提交到公共仓库)。