Aller au contenu

Industrialiser PostgreSQL

Contexte

À mesure que PostgreSQL devient la base de données par défaut dans la plupart des organisations, les usages et le nombre d’instances sont en progression constante.

Dès lors, le défi des équipes DBA consiste à faire vivre et grandir leur parc d’instances Postgres de manière homogène et dynamique.

Pour le dire autrement, comment garantir à la fois la stabilité et l’innovation ?

Le Socle Dalibo Postgres offre un cadre d’exploitation à la fois souple, interopérable, fiable et open-source.

Enjeux

Dès qu’un parc d’instances Postgres se développe, les questions suivantes émergent et doivent être traitées rapidement :

  • Automatisation : comment gérer un parc d’instances en expansion, éviter les tâches récurrentes, améliorer les délais de livraison ?

  • Hybridation : mixer les stratégies pour ne pas être dépendant d’un seul type de plateforme : serveur physique, virtualisation, cloud privé, cloud public, conteneurs, etc. Comment déployer des outils qui garantissent l’indépendance par rapport au mode d’hébergement ?

  • Agilité : s’adapter aux évolutions du marché et au dynamisme incomparable de la communauté PostgreSQL.

  • Indépendance : Innover sans être lié à un opérateur ou à un éditeur.

  • Démocratisation : rendre PostgreSQL plus accessible, en particulier pour les développeurs. Encourager les bonnes pratiques dès les premières étapes des projets.

Concevoir un Socle PostgreSQL

Pour répondre à ces enjeux, nous proposons de créer un socle sur mesure et 100% open source basé sur :

  • Un Document d’Architecture Technique (DAT)
  • Un catalogue de composants fiables et supportés
  • Des collections de rôles Ansible
  • pglift : un opérateur de gestion de parc
  • Des dépôts RPM / DEB unifiés et sécurisés

8 Domaines d’exploitation

On décompose généralement le Socle Dalibo Postgres en 8 domaines d’exploitation, chaque domaine intégrant des briques logicielles testées et validées.

Domaine Logiciels Supportés
1- Automatisation pglift, collection dalibo.essential, collection dalibo.advanced
2- Déploiement PostgreSQL, PostGIS
3- Maintenance Temboard, pg_activity
4- Sauvegardes pgBackRest, pg_back
5- Supervision Prometheus Postgres Exporter, check_pgactivity
6- Haute-Disponibilité Patroni, pgbouncer, HAproxy, Keepalived
7- Sécurité PostgreSQL Anonymizer, ldap2pg, pgAudit, sepgsql
8- Performance pgBadger, pgCluu, PoWA

La conception du socle peut se faire progressivement. On se focalise généralement sur les 5 premiers domaines qui sont essentiels et l’on peut, par la suite, étendre le socle à des usages plus avancés avec les 3 derniers domaines.

Sécurité

Dans la gestion d’un parc d’instances PostgreSQL, il est crucial de garantir une séparation forte des responsabilités et nous préconisons de respecter les 2 rôles suivants :

  • Le rôle sysadmin est chargé de déployer le socle sur les serveurs hôtes. Il dispose des droits root et est le seul habilité à installer et mettre à jour les logiciels sur les environnements.

  • Le rôle dba est chargé de la création et de l’administration des instances PostgreSQL. Il dispose de droits limités au niveau système (utilisateur postgres uniquement), mais il est superuser à l’intérieur des instances Postgres.

Cette isolation des rôles est possible notamment en utilisant les services utilisateurs de systemd.