
Introduction
PostgreSQL est une base de données relationnelle open source qui peut fonctionner sur les principaux systèmes d'exploitation. Il est très robuste et polyvalent, mais n'a pas de fonctionnalités pour la haute disponibilité. Il existe d'autres frameworks open source disponibles qui peuvent être utilisés pour gérer la haute disponibilité de la base de données PostgreSQL.
Dans ce didacticiel, vous allez configurer PostgreSQL avec une haute disponibilité à l'aide de Patroni, ETCD et HAProxy.
Patroni est un modèle qui vous permet de créer votre propre solution personnalisée à haute disponibilité développée à l'aide de Python. Il est également capable de gérer les configurations de réplication, de sauvegarde et de restauration de la base de données.
ETCD est un magasin clé-valeur distribué tolérant aux pannes qui est utilisé pour stocker l'état du cluster PostgreSQL. Il gère avec élégance les élections de leader pendant les partitions de réseau et peut tolérer les pannes de machine, même dans le nœud leader.
Chaque fois qu'il y a un changement dans l'état d'un nœud PostgreSQL dans le cluster, Patroni met à jour le changement d'état dans le magasin clé-valeur ETCD. Avec ces informations, ETCD élit le nœud maître et maintient le cluster UP et en cours d'exécution.
Avec cette solution de haute disponibilité qui a plus d'une instance de base de données dans un seul cluster, le nœud maître du cluster change en permanence en cas de panne. Il devient difficile de maintenir les points de terminaison de la base de données dans cette situation. Pour résoudre ce problème, HAProxy peut être utilisé. Il garde une trace des changements dans les nœuds maître/esclave et se connecte au nœud maître approprié lorsque les clients demandent une connexion.
Lorsque vous aurez terminé, vous disposerez d'un cluster PostgreSQL robuste et hautement disponible prêt pour une utilisation en production.
Présentation de l'environnement
Dans nos articles, nous serons amenés à procéder par étape, mais in fine vous aurez à préparer au minimum :
- Trois serveurs pour Patroni exécutant Ubuntu 20.04.
- Trois serveurs pour ETCD exécutant Ubuntu 20.04.
- Deux serveurs pour HAProxy exécutant Ubuntu 20.04.