Haute disponibilité

Module K6

Dalibo SCOP

26.10

octobre 2026

Sur ce document

Formation Module K6
Titre Haute disponibilité
Révision 26.10
PDF https://dali.bo/k6_pdf
EPUB https://dali.bo/k6_epub
HTML https://dali.bo/k6_html
Slides https://dali.bo/k6_slides
TP https://dali.bo/k6_tp
TP (solutions) https://dali.bo/k6_solutions

Licence Creative Commons CC-BY-NC-SA

Cette formation est sous licence CC-BY-NC-SA. Vous êtes libre de la redistribuer et/ou modifier aux conditions suivantes :

  • Paternité
  • Pas d’utilisation commerciale (y compris IA)
  • Partage des conditions initiales à l’identique

Marques déposées

PostgreSQL® Postgres® et le logo Slonik sont des marques déposées par PostgreSQL Community Association of Canada.

Versions de PostgreSQL couvertes

Ce document ne couvre que les versions supportées de PostgreSQL au moment de sa rédaction, soit les versions 15 à 19.

Haute disponibilité avec CloudNativePG

Introduction

  • Haute disponibilité
    • Répartition des instances
    • Bascule automatique
    • Temps de bascule

Répartition des instances

  • Supportée par l’opérateur
    • Mécanismes Kubernetes
  • Répartition des instances
    • Nœuds
    • Zone
  • Dédier des ressources aux charges PostgreSQL

Affinité - Anti-affinité

  • L’anti-affinité des Pods
  • Au sein d’un Cluster
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: postgresql-demo
spec:
[...]
  affinity:
    enablePodAntiAffinity: true 
    topologyKey: kubernetes.io/hostname 
    podAntiAffinityType: preferred

nodeSelector

  • Ciblage de nœuds
    • Pool de nœuds dédiés à PostgreSQL
  • Utilisation de label
  • Complémentaire de l’anti-affinité
spec:
  affinity:
    nodeSelector:
      label: "value"

Bascule

  • Bascule PostgreSQL
    • Uniquement manuelle
  • Automatisation
    • Besoin d’autres outils
    • Fonctionnalité de CloudNativePG

Bascule automatique

  • Failover déclenché par CloudNativePG
  • Problème sur le primaire
    • Readiness Probe
    • Boucle de réconciliation
      • Arrêt du Pod primaire
      • Élection du nouveau primaire
      • Lease v1.30
  • .spec.failoverDelay pour retarder le déclenchement

Conséquences d’une promotion

  • Instance
    • Rejeu des transactions
    • Changement de timeline
  • Réplication asynchrone
    • Possible perte de données
    • Lag des secondaires
  • Perte des statistiques d’activité
    • VACUUM ANALYZE conseillé

Actualisation des Services

  • Accès aux instances via Services
  • Mise à jour des labels
  • Coupure des connexions
    • Les applications devront se reconnecter

Failover Quorum (Quorum-based Failover)

  • Valide pour la réplication synchrone

Standalone Replica Cluster

  • Concept utilisant le Log Shipping
    • Mécanisme de PostgreSQL
  • Idéal pour un PRA
  • Des Clusters sur des infrastructures distinctes

Standalone Replica Cluster

  bootstrap:
    pg_basebackup:
      source: cluster-example

  replica:
    enabled: true
    source: cluster-example

Replica Cluster

  • Standalone Replica Cluster

Distributed Topology

  • Distributed Topology

Quiz

Travaux pratiques

La version en ligne des solutions de ces TP est disponible sur https://dali.bo/k6_solutions.

Travaux pratiques (solutions)