pgPool-II : Tolérance de panne et montée en charge

Vous faciliter la mise en Cluster de vos serveurs PostgreSQL

pgPool-II : Qu'est-ce donc ?

pgPool-II est un logiciel intermédiaire (ou Middleware) qui fonctionne entre les serveurs PostgreSQL et un client de base de données PostgreSQL. Il est sous licence BSD.

Il communique avec les protocoles backend et frontend de PostgreSQL et relaie les connexions entre eux. Par conséquent, une application de base de données (frontend) pense que pgPool-II est le serveur PostgreSQL réel et le serveur (backend) voit pgPool-II comme l'un de ses clients.

Étant donné que pgPool-II est transparent pour le serveur et pour le client, une application de base de données existante peut être utilisée avec pgPool-II avec un minimum de modification de ses sources.

 

Quelles fonctionnalités ?

Connexions centralisées

pgPool-II enregistre les connexions dirigées vers les serveurs PostgreSQL et les réutilise lorsqu'une nouvelle connexion avec les mêmes propriétés (nom d'utilisateur, base de données, version de protocole) s'y présente. Elle réduit les coûts de connexion et améliore le débit global du système.

 

Réplication

Comme pgPool-II peut gérer plusieurs serveurs PostgreSQL, l'utilisation de la fonction de réplication permet de créer une sauvegarde en temps réel sur 2 disques physiques ou plus, afin que le service puisse continuer sans arrêter les serveurs en cas de panne de disque.

 

Répartition de charge

Si une base de données est répliquée, l'exécution d'une requête de type SELECT sur n'importe quel serveur, renverra le même résultat. pgPool-II tire parti de la fonction de réplication pour réduire la charge sur chaque serveur PostgreSQL en distribuant des requêtes SELECT entre plusieurs serveurs, améliorant ainsi le débit global du système. Au mieux, les performances s'améliorent proportionnellement au nombre de serveurs PostgreSQL.

La balance de charge fonctionne d'autant mieux dans une situation où de nombreux utilisateurs exécutent de nombreuses requêtes simultanément.

 

Limitation des connexions excessives

Il y a une limite sur le nombre maximum de connexions simultanées sur un serveur PostgreSQL, et toute connexion est rejetée lorsque ce nombre est atteint. La définition du nombre maximal de connexions augmente toutefois la consommation de ressources et affecte les performances du système. pgPool-II a également une limite sur le nombre maximum de connexions, mais les connexions supplémentaires seront mises en file d'attente au lieu de retourner une erreur immédiate.

 

Ou en sommes-nous aujourd'hui ?

Lorsque cet article a été rédigé, la version de pgPool-II etait 3.7 et PostgreSQL était 10.5.