Aller au contenu principal

ADR-0126 : Haute disponibilité configurée n'est pas haute disponibilité validée

Contexte​

Kit, addendum 20.4 et 20.10. Trois réplicas ne prouvent pas la HA : il faut tester les pannes, mesurer les temps de reprise et vérifier qu'aucune opération critique n'a été perdue ni exécutée deux fois.

Décision​

  • Trois profils : standalone (aucune garantie de tolérance de panne), ha (services critiques répliqués sur plusieurs nœuds, failover) et critical-ha (plusieurs domaines de panne, PRA et sauvegardes indépendantes). Le profil bancaire de production part de ha.
  • Chaque groupe HA expose ses réplicas voulus et sains, ses domaines de panne, son quorum, sa politique de bascule, ses RTO et RPO cibles et observés. Il reste HA_CONFIGURED tant qu'un test de panne enregistré ne l'a pas fait passer à HA_VALIDATED.
  • Les opérations exclusives (installation, upgrade, failover, restauration) passent par un bail avec jeton de fencing et une machine à états persistante : deux instances du Manager ne lancent jamais la même opération.
  • PostgreSQL : CloudNativePG dans Kubernetes ou Patroni hors Kubernetes, jamais les deux sur un même cluster, ou HA gérée par le client. L'ancien primaire est isolé avant toute promotion.
  • Redis : Sentinel (au moins trois sentinelles dans des domaines de panne indépendants) ou Redis Cluster. La réplication est asynchrone et peut perdre des écritures, donc Redis n'est jamais la source de vérité.
  • NATS JetStream : flux répliqués en R3 ou R5 avec quorum. LiveKit : une room vit sur un nœud, sa perte interrompt la session et impose une reconnexion ; le drainage limite l'effet des arrêts planifiés.
  • Les décisions et ordres de sécurité restent disponibles si la console tombe. Les opérations critiques sont refusées quand la base du Manager ou l'écriture d'audit est indisponible.

Conséquences​

Aucun service n'est annoncé HA sans preuve d'exécution. Les cibles RTO et RPO viennent du client ; seules les valeurs mesurées en test sont affichées comme observées.

Preuves​

  • KIT_AGENT_PLATEFORME_IA_ENTERPRISE/ADDENDUM_INFRA_HA_BACKUP_PRA.md
  • navin-manager/server/src/navin_manager/availability
  • navin-manager/server/tests/test_availability_local_ha.py
  • navin-manager/server/tests/test_availability_helm.py
  • deploy/helm/enterprise-ai/values-ha.yaml