Généralité sur la haute disponibilité

Atelier interne

v 0.1 (24 septembre 2020)

true

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
  • optimiser la restauration complète (RTO)
  • 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
  • nécessite une supervision fiable

Réplication physique

  • réplique les écritures via les journaux de transactions
  • entretient une ou plusieurs instances clone
  • intégré à PostgreSQL
  • facilité de mise en œuvre
  • réduit le RPO par rapport au PITR
  • plus de matériel
  • architecture et maintenance plus complexes
  • 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 et chargement en masse
  • 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
  • investissement en coût et humain plus important

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
  • solutions éprouvées: fencing, quorum, watchdog et SBD
  • solutions le plus souvent complémentaires.

Mécanique de fencing

  • isole un serveur (électriquement, du réseau, etc)
  • ou isole une ressource (eg. disque)
  • utile dans le cas d’un serveur muet ou fantôme («rogue node»)
  • utile lorsque l’arrêt d’une ressource est perturbé
  • déclenché depuis un des nœuds du cluster
  • nécessite souvent une gestion fine des droits
  • Supporté par Pacemaker, embryonnaire dans Patroni

Mécanique d’un Quorum

  • chaque serveur possède un ou plusieurs votes
  • utile en cas de partition réseau
  • la partition réseau qui a le plus de vote détient le quorum
  • la partition qui détient le quorum peut héberger les ressources
  • la partition sans quorum doit arrêter toute ressource
  • attention au retour dans le cluster
  • supporté par Pacemaker et Patroni

Mécanique du Watchdog

  • équipement matériel intégré partout
  • compte à rebours avant reset complet du serveur
  • doit être ré-armé par un composant applicatif du serveur
  • permet de déclencher du self-fencing rapide et fiable
  • complémentaire au quorum, «fencing du pauvre»
  • certaines réactions du cluster plus rapides

Storage Base Death

  • l’une des méthodes historique de fencing
  • nécessite un ou plusieurs disques partagés et un watchdog par nœud
  • les nœuds s’échangent des messages sur ce·s disque·s
  • message poison pill pour demander à un nœud distant de s’auto-fencer
  • self-fencing en cas de perte d’accès aux disques…
  • …sauf si l’instance Pacemaker continue à présenter un cluster stable

Bilan des solutions anti split-brain

À minima, une architecture fiable peut se composer au choix:

  • d’un fencing actif ou d’un SBD
  • d’un watchdog par serveur et d’un quorum
  • l’idéal est de tous les configurer
  • désactiver les services au démarrage

Implication et Risques de la bascule auto

  • un collègue peu parlant de plus: un automate
  • complexification importante
  • administration importante
  • formation importante
  • erreurs humaines plus fréquente
  • documentation et communication importante

Solutions de HA

  • plusieurs architectures et solutions possibles
  • Shared Storage: Pacemaker
  • Shared Nothing
    • Pacemaker
    • Patroni

Shared storage

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

Patroni

  • fiable: SDB + Watchdog
  • ne gère que PostgreSQL
  • 1 cluster DCS (etcd) de 3 nœuds est recommandé
  • un DCS peut gérer N clusters 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é et cohérent sur toutes les distributions principales
  • super fiable: 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