Aller au contenu principal

Déployer Redis Sentinel HA sur Kubernetes architecture replication et persistance

Introduction Redis (REmote DIctionary Server) est un système de base de données in-memory (en mémoire vive) open source, souvent utilisé comme : cache distribué, streaming engine message broker, db…

coolibra28 juil. 2026763 vues

Introduction

Redis (REmote DIctionary Server) est un système de base de données in-memory (en mémoire vive) open source, souvent utilisé comme :

  • cache distribué,

  •  streaming engine

  • message broker,

  • db NoSQL clé-valeur ultra rapide.

Il est extrêmement populaire grâce à ses performances, sa simplicité, et son écosystème riche. Mais Redis en mode standalone (instance unique) présente une faiblesse :

Aucune tolérance aux pannes. Si l’instance Redis tombe, tout s’arrête.

Redis Sentinel est un composant officiel de Redis conçu pour gérer la haute disponibilité.

Il remplit trois rôles principaux :

  • Surveillance (Monitoring)

Sentinel surveille les instances Redis masters et replicas. Il s’assure qu'elles sont accessibles et fonctionnent correctement.

  • Notification

Si une instance devient indisponible (par exemple si le master tombe), Sentinel émet une alerte. 

  • Failover automatique

Si le master Redis ne répond plus, Sentinel élit automatiquement un nouveau master parmi les replicas et met à jour sa configuration. Cela permet au cluster redis de continuer à lire et écrire sans interruption.

Sentinel fonctionne comme un mini-cluster de gestion, composé de plusieurs instances Sentinel, pour garantir la tolérance aux pannes et éviter les décisions prises unilatéralement (quorum).

Pourquoi ne pas utiliser un simple Redis en mode standalone ?

Redis seul, c’est rapide, mais si le pod ou le nœud tombe, tout s’arrête. Avec Sentinel :

  • Pas besoin d’intervention manuelle pour restaurer la production

  • Les bascules sont automatiques

  • Vous gagnez en résilience et disponibilité

Dans cet article, nous alloons déployer Redis Sentinel sur un cluster Kubernetes à l’aide du Helm Chart Bitnami.

Prérequis

Avant de commencer, il faut :

  • Un cluster Kubernetes fonctionnel

  • Helm installé sur votre poste (helm version)


 

  • Créer le namesapce pour redis
kubectl create namespace redis-cluster

 

  • Créer le secret pour redis root password
apiVersion: v1
kind: Secret
metadata:
  name: redis-root-secret
  namespace: redis-cluster
stringData:
  redis-root-password: fddaad00d6c9485KD!@jdlfd

 

  • fichier redis-values.yaml
global:
  defaultStorageClass: "local-path-rwx"

architecture: replication
auth:
  enabled: true
  sentinel: true
  existingSecret: "redis-root-secret"
  existingSecretPasswordKey: "redis-root-password"
  usePasswordFiles: true

# extraDeploy:
# - apiVersion: secrets.hashicorp.com/v1beta1
#   kind: VaultStaticSecret
#   metadata:
#     name: vault-ss-redis-dev  # ss pour static secret
#     namespace: redis-cluster
#     annotations:
#       "helm.sh/hook": pre-install,pre-upgrade,pre-rollback
#       "helm.sh/hook-weight": "-10"
#   spec:
#     # vaultAuthRef: default # dans les helm values on a activé le defaultAuthMethod
#     type: kv-v2
#     mount: kv-rke2-tools-dev
#     path: databases/no-sql/redis-dev
#     refreshAfter: 60s  # toutes les 60s vso synchronise avec vault
#     destination:
#       create: true
#       name: redis-root-secret
#       type: Opaque
#       transformation:
#         excludeRaw: true  # la clé _raw  n'apparaitra pas dans le secret k8s

master:
  count: 1
  resources:
    requests:
      cpu: 200m
      memory: 512Mi
    limits:
      cpu: 1
      memory: 1024Mi
  persistence:
    enabled: true
    accessModes:
      - ReadWriteOnce
    size: 1Gi
  persistentVolumeClaimRetentionPolicy:
    enabled: true
    whenScaled: Retain
    whenDeleted: Retain

  pdb:
    create: true
    maxUnavailable: "1"

replica:
  replicaCount: 3
  resources:
    requests:
      cpu: 200m
      memory: 512Mi
    limits:
      cpu: 1
      memory: 1024Mi
  persistence:
    enabled: true
    accessModes:
      - ReadWriteOnce
    size: 1Gi
  persistentVolumeClaimRetentionPolicy:
    enabled: true
    whenScaled: Retain
    whenDeleted: Retain
  service:
    type: ClusterIP
  autoscaling:
    enabled: true
    minReplicas: 3
    maxReplicas: 11
    targetCPU: "80"
    targetMemory: "80"
  pdb:
    create: true
    maxUnavailable: "1"

sentinel:
  enabled: true
  downAfterMilliseconds: 5000  # 5s
  failoverTimeout: 30000  # 30s
  service:
    type: LoadBalancer
    loadBalancerIP: 10.10.10.23
  resources:
    requests:
      cpu: 200m
      memory: 512Mi
    limits:
      cpu: 1
      memory: 1024Mi

metrics:
  enabled: false
  serviceMonitor:
    enabled: false

 

  • Deployer le closter
helm upgrade --install redis-sentinnel oci://registry-1.docker.io/bitnamicharts/redis -n redis-cluster -f redis-values.yaml

 

 

 

Commentaires

Connectez-vous pour rejoindre la discussion.

Aucun commentaire pour le moment.