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 droitsroot
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 (utilisateurpostgres
uniquement), mais il estsuperuser
à l’intérieur des instances Postgres.
Cette isolation des rôles est possible notamment en utilisant les services utilisateurs de systemd.