Passer au contenu principal
Ce document décrit la stratégie de récupération après sinistre (DR), l’objectif de temps de récupération (RTO) et l’objectif de point de récupération (RPO) pour l’infrastructure AWS/EKS d’EKB. Il couvre les capacités de haute disponibilité intégrées, les systèmes de sauvegarde actifs, les procédures de récupération et les lacunes connues.
Pour les instructions de déploiement, consultez le Guide de déploiement Terragrunt.

Résumé de l’architecture et de la haute disponibilité

Composants de l’infrastructure

Capacités HA actuelles


Objectifs RTO / RPO


Systèmes de sauvegarde

1. État Terraform / Terragrunt — S3

Ce qui est sauvegardé : Tout l’état de l’infrastructure (EKS, réseautage, IAM, versions Helm). Implémentation :
  • Bucket S3 par environnement : ekb-terraform-state-<env-name> (amorcé via terragrunt/environments/<env-name>/state/)
  • Versioning activé — toute version d’état précédente peut être restaurée
  • Chiffrement côté serveur (AES-256)
  • Table DynamoDB pour le verrouillage d’état
Récupération : Restaurez à partir de n’importe quelle version d’état précédente dans S3, puis réexécutez terragrunt apply. RPO : Chaque commit terragrunt apply — continu.

2. Volumes persistants EBS — AWS Data Lifecycle Manager

Ce qui est sauvegardé : Volumes EBS attachés aux pods (PostgreSQL Automator, MinIO Supabase, tout workload stateful). Implémentation : Politique AWS Data Lifecycle Manager (DLM) ciblant les tags d’environnement.
Récupération :
RPO : Jusqu’à 24 heures (snapshots quotidiens). Réduisez en augmentant la fréquence du programme DLM.

3. CloudNativePG (HA Supabase DB) — Sauvegardes Barman Cloud

S’applique à : Les environnements avec ENABLE_CNPG=true et ENABLE_HA_SUPABASE_DB=true. Ce qui est sauvegardé : Le cluster CloudNativePG Postgres (ha-supabase-db), incluant le streaming WAL continu (Write-Ahead Log) vers S3 ou MinIO, et les sauvegardes de base complètes programmées via la CRD ScheduledBackup de CNPG. Implémentation (configurée dans values/ha-supabase-db.yaml) :
Vérifiez le statut de sauvegarde :
Récupération point-in-time (PITR) :
RPO : Quasi-zéro pour les clusters activés WAL (secondes de retard, limité par l’intervalle de téléchargement WAL).

4. ElastiCache Redis — Réplication Multi-AZ

S’applique à : Les environnements avec ENABLE_AWS_SERVICES=true. Redis n’est pas un magasin de données principal — il contient des données de cache transitoires et de session. L’accent de la DR est sur le basculement rapide plutôt que sur la sauvegarde/restauration. Implémentation :
  • Multi-AZ activé avec basculement automatique
  • Chiffrement au repos et en transit
  • Une défaillance de nœud principal promeut automatiquement une réplique (< 1 min)
RPO : Les données Redis sont éphémères par conception. Les défauts de cache après basculement sont attendus ; l’application réapprovisionne à partir de la base de données.

5. Amazon MQ (RabbitMQ) — File d’attente de messages

S’applique à : Les environnements avec ENABLE_AWS_SERVICES=true. Implémentation :
  • Instance unique (par défaut) ou déploiement actif/secondaire
  • Les messages en vol peuvent être perdus lors du redémarrage du broker ; concevez les consommateurs pour être idempotents
  • Interface de gestion disponible sur le port 15671 (SSL)
RPO : Instance unique — les messages en vol au moment de la défaillance peuvent être perdus. Utilisez le mode de déploiement actif/secondaire pour réduire ce risque.

Mécanismes de récupération automatique

Karpenter — Approvisionnement et récupération de nœuds

  • Consolidation : WhenEmptyOrUnderutilized — les nœuds inactifs sont automatiquement terminés
  • Gestion des interruptions Spot : Écoute les événements d’interruption SQS ; draine et remplace les nœuds Spot avant la résiliation
  • Dérive de nœud : Les nœuds utilisant des AMI ou des configurations obsolètes sont automatiquement remplacés lorsque enable_drift = true
  • Temps de récupération : Nouveau nœud approvisionné en 0–10 minutes

KEDA — Auto-escalade des pods

  • Répliques minimales : 2 pour tous les services (Web, API, Celery, Automator) — prévient le point unique de défaillance
  • Seuil CPU : 60–70% déclenche la montée en charge
  • Seuil mémoire : 80% déclenche la montée en charge
  • Stabilisation de réduction d’échelle : 30 secondes — évite le battement
  • Temps de récupération : Les pods défaillants sont reprogrammés dans 0–2 minutes

Anti-affinité des pods Kubernetes

Tous les services sans état utilisent preferredDuringSchedulingIgnoredDuringExecution anti-affinité sur kubernetes.io/hostname pour répartir les pods entre les nœuds et les AZ.

Procédures de récupération

Scénario 1 : Défaillance AZ

Comportement attendu : Karpenter approvisionne les nœuds de remplacement dans les AZ restantes ; KEDA reprogramme les pods ; ALB cesse de router vers les cibles non saines. Vérification :
Aucune intervention manuelle n’est requise dans des circonstances normales.

Scénario 2 : Défaillance du nœud principal Postgres (CloudNativePG)

CloudNativePG promeut automatiquement une réplique en principal.
Les applications se reconnectent via PgBouncer — aucune modification de la chaîne de connexion n’est nécessaire.

Scénario 3 : Restaurer un volume EBS à partir d’un snapshot


Scénario 4 : Récréation complète de l’infrastructure

Utilisé après une défaillance catastrophique ou lors de la reconstruction d’une région.
RTO estimé : 30–60 minutes pour le cluster complet ; 60–120 minutes si les données EBS/CNPG doivent être restaurées.

Scénario 5 : Restauration de l’état Terragrunt


Observabilité et alertes (SigNoz)

Lorsque ENABLE_SIGNOZ=true, SigNoz est déployé dans l’espace de noms monitoring et fournit :
  • Traçage distribué pour tous les services EKB
  • Métriques de cluster via l’agent DaemonSet k8s-infra (CPU, mémoire, statut des pods)
  • Agrégation des journaux de tous les pods
  • Alertes — configurez les règles d’alerte dans SigNoz pour être notifié sur les boucles de crash de pods, les taux d’erreur élevés ou la pression des nœuds
Pour les besoins de DR, les tableaux de bord SigNoz sont l’outil principal pour diagnostiquer et confirmer la récupération après un incident. Les données SigNoz elles-mêmes sont stockées sur des PV EBS et sont couvertes par la politique de snapshot EBS.

Lacunes et recommandations