DBAtlas · Atlas d'exploitation des bases de données

Pool de connexions PgBouncer

PostgreSQLNiveau: IntermédiaireDurée: 30–45 min

Installation de PgBouncer depuis le dépôt PGDG : mode de pool transaction ou session, authentification scram-sha-256 via auth_query (fonction SECURITY DEFINER) ou userlist.txt, tailles de pool calculées à partir du max_connections et du nombre de CPU de la base, systemd et, en option, plusieurs processus avec so_reuseport. Se termine par la console d'administration (SHOW POOLS/STATS), la chaîne de connexion de l'application et une check-list de compatibilité du mode transaction.

Quand l'activer : les applications ouvrent des centaines/milliers de connexions, sorry, too many clients already apparaît, ou l'ouverture des connexions coûte cher. PgBouncer n'est ni une solution HA ni une solution de sauvegarde : le failover nécessite la streaming replication ou Patroni, les sauvegardes pgBackRest.

Topologie: PgBouncer sur le serveur de base de données ou sur un serveur séparé ; avec Patroni, devant HAProxy/VIP

Avant de commencer

  • PostgreSQL est installé avec le guide pg-install et tourne ; la base … et l'utilisateur … (mot de passe scram-sha-256) existent.
  • PostgreSQL : …le cluster Patroni (pg-patroni) tourne ; … est actuellement Leader…le primary (pg-streaming) tourne…installé avec le guide pg-install et en fonctionnement… ; la base … et l'utilisateur … (mot de passe scram-sha-256) existent.
  • Le cluster Patroni … est sain : un Leader, des replicas streaming ; le port d'écriture HAProxy (…:…) ne dirige que vers le leader.
  • Le mot de passe de l'utilisateur applicatif est stocké au format SCRAM-SHA-256 (pour les utilisateurs ayant une ancienne empreinte md5, le mot de passe doit être redéfini avec password_encryption = scram-sha-256).
  • Les valeurs max_connections (…) et CPU (…) du formulaire correspondent aux valeurs réelles du serveur de base de données (les tailles de pool en sont déduites).
  • Le serveur PgBouncer peut joindre la base (…HAProxy/VIP ……:…) ; les serveurs applicatifs peuvent joindre PgBouncer (…:…).
  • Le port … est libre.
  • Le mode de pool a été convenu avec l'équipe applicative : en mode transaction, les fonctionnalités reposant sur l'état de session (check-list ci-dessous) ne sont pas utilisées.
  • Un accès scp (root ou utilisateur sudo) est disponible pour copier les empreintes de mots de passe du serveur de base de données vers le serveur PgBouncer, ou vous transférerez le fichier par un autre moyen sûr.

Phases du guide

  • Installation de PgBouncer — Ajouter le dépôt PGDG · Ajouter le dépôt PGDG · Installer PgBouncer
  • Côté base de données — Vérifier le rôle : ce serveur est-il le …Leader…primary… ? · Créer les utilisateurs d'administration et d'authentification · Créer les utilisateurs d'administration et d'authentification · Définir les mots de passe · Définir les mots de passe · Ajouter le serveur PgBouncer à pg_hba.conf …
  • Configuration de PgBouncer — Ajouter le mot de passe de l'auth_user · Écrire pgbouncer.ini · Régler la limite de descripteurs de fichiers · Démarrer PgBouncer
  • Plusieurs processus (so_reuseport) — Fichiers de configuration par processus · Service modèle systemd · Arrêter le service mono-processus et démarrer les processus
  • Vérification — Se connecter avec l'utilisateur applicatif · Vérifier que les connexions atteignent le leader · Contrôler la console d'administration · Ouvrir le port PgBouncer dans le pare-feu
  • Côté application et post-installation — Chaîne de connexion de l'application · Check-list de compatibilité du mode transaction · Surveiller le pool · Modification des paramètres et rechargement
Ouvrir le plan pas à pas adapté à votre environnement →