Présentation de patroni
- Gestionnaire de cluster PostgreSQL
- Assure la haute disponibilité
- Supervision et bascule automatique en cas d’incident
- Configure et maintient la réplication physique entre les
instances
- Repose sur un DCS extérieur pour partager l’état des nœuds et leur
configuration au sein du cluster
Présentation du DCS
- Composant critique de tout cluster Patroni
- Choix d’etcd pour sa simplicité, sa robustesse et sa
popularité
- Basé sur l’algorithme Raft (Replicated And Fault
Tolerant)
- Pour stocker :
- l’état de chaque nœud PostgreSQL
- La configuration des instances
- Source de vérité du cluster patroni
- Le DCS ne doit pas devenir un SPoF (single point of
failure)
Manipuler ses nœuds patroni
pglift instance env
pglift instance shell
Lister les nœuds d’un cluster
Effectuer un switchover
Tester le failover
(bascule automatique)
pkill -9 patroni
- Redémarrage du noeud si le Watchdog est activé
Éditer la configuration
PostgreSQL
patronictl show-config
pglift pgconf show max_connections
patronictl edit-config
Redémarrer les nœuds du
cluster
patronictl restart CLUSTER-NAME
Supprimer les nœuds d’un
cluster
Suppression du cluster
patronictl -c CONFIG-FILE remove CLUSTER-NAME
Utiliser la configuration dynamique de patroni
- Par défaut, configuration locale
- Configuration dynamique (stocké dans le DCS):
patroni:
configuration_mode:
auth: dynamic
parameters: dynamic
Déployer un cluster patroni
- Adapter le fichier d’hôtes (
~/ansible/hosts)
ansible-playbook -i hosts playbooks/instances.yaml
Déployer une adresse IP Virtuelle
- keepalived: Solution d’adresse IP Virtuelle
ansible-playbook -i hosts playbooks/keepalived.yaml