Aller au contenu principal

Gestion de la zone du leader PostgreSQL

Zone préférée du leader PostgreSQL

Par défaut, dans un cluster PostgreSQL multi-zones, le leader (nœud principal qui accepte les écritures) peut être élu dans n'importe quelle zone disponible. Ziosting vous permet de contrôler la zone préférée pour le leader PostgreSQL, offrant ainsi un meilleur contrôle sur le placement géographique de votre base de données.

Cas d'usage

  • Latence réduite : Placer le leader près de vos utilisateurs principaux
  • Conformité géographique : Respecter les exigences de localisation des données
  • Équilibrage de charge : Distribuer les leaders de vos services PostgreSQL Across différentes zones

Configurer la zone préférée

Vous pouvez configurer la zone préférée directement depuis la Console Ziosting :

  1. Accédez à votre service PostgreSQL dans la Console
  2. Allez dans l'onglet Paramètres
  3. Dans la section Leader zone, cliquez sur Edit
  4. Sélectionnez la zone souhaitée dans la liste des datacenters disponibles
  5. Cliquez sur Save pour appliquer la modification

déclenchera automatiquement une synchronisation du service pour appliquer votre préférence.

Basculer manuellement le leader

Si votre leader PostgreSQL ne s'exécute pas dans la zone préférée (par exemple après une intervention manuelle ou une indisponibilité temporaire), vous pouvez forcer le basculement manuellement :

  1. Dans l'onglet Paramètres de votre service PostgreSQL
  2. Dans la section Leader zone, si un mismatch est détecté (indiqué par un badge "Mismatch"), un bouton Switch Leader apparaît
  3. Cliquez sur Switch Leader pour déclencher le basculement

Le système exécutera un switchover contrôlé vers un nœud réplica situé dans votre zone préférée.

Ce qui se passe pendant le basculement

  • Le service reste disponible en lecture pendant toute l'opération
  • Une brève interruption des écritures (quelques secondes) se produit pendant le basculement
  • Aucune perte de données n'est attendue (patroni gère la synchronisation avant le basculement)
  • Le nouveau leader sera automatiquement dans votre zone préférée

Comportement automatique

Le basculement vers la zone préférée s'effectue automatiquement dans les cas suivants :

Lors d'une synchronisation du service

Chaque fois que vous modifiez la configuration de votre service PostgreSQL et que vous synchronisez, le système vérifie :

  • Si une zone préférée est configurée
  • Si le leader actuel n'est pas dans cette zone
  • Si un nœud réplica est disponible dans la zone préférée

Si toutes ces conditions sont remplies, un basculement automatique est déclenché.

Lors d'une restauration depuis un backup

Lorsque vous restaurez votre service depuis un backup, le leader est automatiquement placé dans la zone préférée (si configurée et si possible).

Prérequis et limitations

Prérequis

  • Votre cluster Kubernetes doit contenir des nœuds dans la zone préférée
  • Votre service PostgreSQL doit avoir au moins 2 réplicas (1 leader + 1 réplica minimum)
  • Les pods PostgreSQL doivent pouvoir être planifiés dans la zone préférée (vérifiez les affinités et tolérations)

Limitations

  • Pas de candidate disponible : Si aucun nœud réplica n'est disponible dans la zone préférée (par exemple, tous les nœuds de cette zone sont hors ligne), le basculement échouera. Le leader restera dans sa zone actuelle.
  • Cluster à un seul réplica : Si votre service n'a qu'un seul pod PostgreSQL, il est à la fois leader et réplica. Le basculement n'est pas possible.
  • Zones non disponibles : Vous ne pouvez sélectionner que des zones qui font partie de votre cluster Kubernetes.

Messages d'erreur courants

MessageCauseSolution
"No ready replica pod found in preferred zone"Aucun pod réplica prêt dans la zoneVérifiez que des nœuds sont disponibles dans la zone et que les pods peuvent y être planifiés
"No preferred zone configured"Aucune zone préférée définieConfigurez une zone préférée dans les paramètres

Vérification de l'état actuel

Dans l'onglet Paramètres de votre service PostgreSQL, la section Leader zone affiche :

  • Preferred : La zone que vous avez configurée (ou "No preference")
  • Current leader : La zone où le leader s'exécute actuellement
  • Status : Badge OK (vert) si le leader est dans la zone préférée, Mismatch (ambre) sinon

Technologie sous-jacente

Ziosting utilise Zalando Postgres Operator qui repose sur Patroni pour la gestion du cluster PostgreSQL.

Le basculement utilise la commande patronictl switchover qui effectue un :

  • Switchover contrôlé : Patroni attend que le réplica cible soit complètement synchronisé avant de basculer
  • Basculement sans perte de données : Toutes les transactions validées sont répliquées avant le basculement
  • Élection automatique : Si vous avez configuré une zone préférée via l'annotation ziosting.io/preferred_leader_zone, Patroni en tient compte lors de l'élection du leader

Bonnes pratiques

  1. Testez en environnement de staging : Avant de configurer une zone préférée en production, testez le comportement dans un environnement de staging
  2. Surveillez les alertes : Activez les alertes de monitoring pour être notifié en cas de mismatch prolongé
  3. Évitez les changements fréquents : Changer fréquemment la zone préférée peut causer des basculements inutiles
  4. Maintenez la capacité : Assurez-vous que votre zone préférée a suffisamment de ressources pour accueillir le leader

Support

Si vous rencontrez des problèmes avec le basculement du leader PostgreSQL, contactez notre support avec :

  • L'ID de votre service PostgreSQL
  • La zone préférée configurée
  • La zone actuelle du leader
  • Les messages d'erreur éventuels
  • L'état de vos nœuds Kubernetes dans les différentes zones