3. Haute Disponibilité
Gestion de la haute disponibilité :
PostgreSQL : priorité aux données : pas de bascule automatique
si besoin de priorité du service : bascule automatique
outils :
PAF (Pacemaker et Corosync)
Repmgr (ad-hoc)
Patroni (DCS Raft) de Zalando
slardiere PATR – mars 2019 3 / 28
5. Quoi?
Gestion de la haute disponibilité du service PostgreSQL :
bascule automatique : failover
contrôle de la bascule : switchover
s’appuie sur un DCS :
etcd, consul, zookeeper et même kubernetes
consensus RAFT : http://thesecretlivesofdata.com/raft/
intégration avec les sauvegardes physiques (pgbackrest)
Source : https://github.com/zalando/patroni
Doc : https://patroni.readthedocs.io/en/latest/
Ansible : https://github.com/IrisNetwork/ansible-patroni
slardiere PATR – mars 2019 5 / 28
7. Comment?
Composants :
Cluster de DCS : un nœud par instance PostgreSQL
démon (python) contrôlant l’instance PostgreSQL
et son merveilleux fichier de configuration en YAML
incluant une API REST
une commande patronictl
un mécanisme de sauvegarde physique, idéalement PgBackRest
slardiere PATR – mars 2019 7 / 28
9. Comment?
Configuration de Patroni :
syntaxe YAML
bootstrap :
création des données de PostgreSQL : initdb
restauration depuis PgBackRest
configuration de l’instance PostgreSQL
bootstrap des replicas
copie du primary avec pg_basebackup
restauration depuis PgBackRest
slardiere PATR – mars 2019 9 / 28
24. Connexions :
Template HAproxy et PgBouncer
confd crée les configs
en utilisant le DCS
HAProxy utilise l’API REST pour trouver le primary
l’application se connecte à HAProxy
slardiere PATR – mars 2019 24 / 28
25. /etc/haproxy/haproxy.cfg
Exemple
listen master
bind *:5000
option httpchk OPTIONS /master
http-check expect status 200
default-server inter 3s fall 3 rise 2 on-marked-down shutdown-sessions
server pg1 192.168.122.30:5432 maxconn 100 check port 8008
server pg2 192.168.122.102:5432 maxconn 100 check port 8008
server pg3 192.168.122.32:5432 maxconn 100 check port 8008
server pg4 192.168.122.61:5432 maxconn 100 check port 8008
server pg5 192.168.122.8:5432 maxconn 100 check port 8008
slardiere PATR – mars 2019 25 / 28
26. Sauvegardes :
Intégration avec pgBackRest
suit automatiquement les bascules
sert à l’initialisation
slardiere PATR – mars 2019 26 / 28