Haute disponibilité et PostgreSQL

Introduction

  • définition de «Haute Disponibilité»
  • contraintes à définir
  • contraintes techniques
  • solutions existantes

Définition des termes

RTO / RPO

Définition des termes

  • haute disponibilité de service
  • haute disponibilité de donnée

Sauvegardes

  • composant déjà présent
  • travail d’optimisation à effectuer
  • RTO de quelques minutes possibles
  • RPO de quelques minutes facilement

PITR

  • sauvegarde incrémentale binaire
  • optimiser la sauvegarde complète
  • ajuster l’archivage au RPO désiré

PITR et redondance réplication

Bilan PITR

  • utiliser un outils libre issu de l’écosystème PostgreSQL
  • fiabilise l’architecture
  • facilite la mise en œuvre et l’administration
  • couvre déjà certains besoins de disponibilité
  • nécessite une bascule manuelle

Réplication physique

  • réplique les écritures via les journaux de transaction
  • entretient une ou plusieurs instances clone
  • intégré à PostgreSQL
  • facilité de mise en œuvre
  • haute disponibilité des données

Réplication et RPO

  • réplication asynchrone ou synchrone
  • nécessite un réseau très fiable et performant
  • asynchrone: RPO dépendant du volume d’écriture
    • RPO < 1s hors maintenances
  • synchrone: RPO = 0
    • 2 secondaires minimum
    • impact sur les performances

Réplication et RTO

  • bascule manuelle
  • promotion d’une instance en quelques secondes

Bilan Réplication

  • 0 ≤ RPO < PITR
  • RTO = prise en charge + 30s
  • simple à mettre en œuvre

Bascule automatisée

  • détection d’anomalie et bascule automatique
  • réduit le temps de prise en charge: HA de service
  • plusieurs solutions en fonction du besoin
  • beaucoup de contraintes

Prise de décision

  • la détection d’anomalie est naïve
  • l’architecture doit pouvoir éviter les split-brain:
    • fencing: isoler un nœud ou une ressource
    • quorum: la majorité détient la ressource, la minorité l’arrête
    • watchdog: timeout reset, self-fencing

Implication et Risques de la bascule auto

  • un opérateur de plus: un automate
  • complexification importante
  • administration importante
  • formation importante
  • erreurs humaines plus fréquente
  • documentation et communication importante

Shared storage

  • architecture simple
  • redondance au niveau stokage
  • cold standby matériel
  • ou créer/déplacer une machine virtuelle

Patroni

  • fiable: Quorum + Watchdog
  • ne gère que PostgreSQL
  • 1 cluster DCS (etcd) de 3 nœuds obligatoire
  • le DCS peut gérer N cluster Patroni
  • 2 nœuds PostgreSQL ou plus par cluster Patroni

Pacemaker

  • référence de la HA sous Linux
  • principaux contributeurs: RedHat et Suse
  • empaqueté sur toutes les distributions principales
  • quorum, watchdog et fencing supportés
  • gère PostgreSQL et tout autre ressource
  • cluster deux nœuds possible avec fencing

Accès aux ressources

  • IP virtuelle
  • proxy
  • intelligence dans l’application

Conclusion

              RTO       RPO       Qui     Complexité
PITR          humain    > 1 min   DBA     1
Réplication   humain    < 1 min   DBA     2
Shared disk   < 1 min   0-1 min   SYS     5
Patroni       > 5s      0-1 min   DBA     4
PAF           > 5s      0-1 min   DBA/SYS 5