Solutions de Haute Disponibilité de service

Module W7a

Dalibo SCOP

24.04

17 avril 2024

Sur ce document

Formation Module W7a
Titre Solutions de Haute Disponibilité de service
Révision 24.04
PDF https://dali.bo/w7a_pdf
EPUB https://dali.bo/w7a_epub
HTML https://dali.bo/w7a_html
Slides https://dali.bo/w7a_slides

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
  • 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 12 à 16.

Haute disponibilité de service

Préambule

  • Quelle architecture pour l’instance primaire et ses secondaires ?
  • Plusieurs architectures et solutions possibles
  • Shared Storage : Pacemaker
  • Shared Nothing
    • Pacemaker
    • Patroni

Shared storage

  • Architecture simple
    • Cold standby matériel
  • Disque partagé entre primaire et secours
    • accessible par un seul serveur
  • Redondance du stockage nécessaire
    • SAN, DRBD…
  • Alternative : créer/déplacer une machine virtuelle
  • Pacemaker : possible

Share nothing

  • Plusieurs nœuds indépendants
    • ie plusieurs instances PostgreSQL
    • en réplication
  • Notamment : Patroni

Patroni

  • Fiable : SDB + watchdog
  • Ne gère que PostgreSQL
    • bascule
    • (re)construction
  • 2 nœuds PostgreSQL ou plus par cluster Patroni
  • Simple mais formation nécessaire
  • 1 cluster DCS de 3 nœuds est recommandé
    • etcd (ou autre)
    • un DCS peut gérer N clusters Patroni
    • +watchdog

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

Comment l’application accède-t-elle à la bonne instance ?

  • IP virtuelle
  • Proxy
    • HAProxy & autres
  • Intelligence dans l’application
    • ex: target_session_attrs=read-write

Comparatif des solutions et choix

Solution RTO RPO Qui Complexité Serveurs
PITR humain > 1 min DBA 1 1+
Réplication humain < 1 min DBA 2 2+
Shared disk < 1mn 0-1 min SYS 5 2+
Patroni > 5s 0-1 min DBA 4 5+
PAF > 5s 0-1 min DBA/SYS 5 3 (2+)
  • Humain = tâche effectué / déclenché manuellement
  • Nombre de Serveurs dédiés aux sauvegardes et HAProxy nom comptés

Le jeu en vaut-il la chandelle ?

  • Complexité et coût
  • Souvent plus sûr de rester sur des procédures :
    • simples
    • manuelles
    • éprouvées
    • maîtrisées
  • Patroni ou Pacemaker/PAF
    • reconnus
    • éprouvés
    • éviter le reste

Conclusion

Points de vigilance

  • La supervision
  • Les sauvegardes
  • La formation des équipes
  • La documentation