Votre panier est vide!
Ansible Role : PostgreSQL HA
Rôle Ansible pour déployer un cluster PostgreSQL Haute Disponibilité avec Repmgr, Keepalived (VIP), pgAudit et alertes Webhook. Bascule automatique, sécurité renforcée et compatible Debian 12/13 & Ubuntu 22.04/24.04
Description
🐘 Déployez un cluster PostgreSQL HA robuste et automatisé !
Le rôle Ansible postgres_ha déploie un cluster PostgreSQL Haute Disponibilité basé sur Patroni, etcd, et HAProxy. Bénéficiez d’un failover automatique, d’une élection de leader fiable, et d’un routage intelligent des connexions en quelques minutes.
✨ Fonctionnalités Clés
- 🔄 Failover Automatique : Patroni détecte les pannes et promeut automatiquement un replica en primary en quelques secondes.
- 🗳️ Consensus Distribué (etcd) : Élection du leader fiable sans split-brain grâce au quorum etcd.
- ⚖️ Load Balancing Intelligent : HAProxy route les écritures vers le primary (port 5000) et les lectures vers les replicas (port 5001).
- 🐘 PostgreSQL 17 : Dernière version stable avec toutes les optimisations modernes.
- 🔧 Modes Flexibles : etcd et HAProxy peuvent être colocalisés (même nœud) ou sur des nœuds dédiés.
- 📊 Monitoring Intégré : API REST Patroni pour les health checks et interface stats HAProxy.
- 🐛 Mode Debug : Variable
debug_modepour afficher les logs détaillés lors du dépannage. - 💻 Large Compatibilité d’OS : Déployez sur Debian 12/13 et Ubuntu 22.04/24.04 LTS.
- 🔒 Réplication Synchrone : Option pour garantir zéro perte de données (RPO=0).
- 🛠️ Outils CLI Puissants :
patronictlpour gérer switchover, failover, pause/resume.
🏗️ Architecture Haute Disponibilité
⚙️ Configuration & Usage
Prérequis
- Système d’exploitation : Debian 12/13 ou Ubuntu 22.04/24.04.
- Ansible : Installé sur votre machine de contrôle.
- Minimum 3 nœuds : Pour assurer le quorum etcd et la haute disponibilité.
- Privilèges : Un utilisateur avec des droits
sudosur les serveurs cibles (become: truedans votre playbook).
Exemple de Playbook (votre_playbook.yml)
---
- hosts: postgres_cluster
become: true
vars:
# =============================================================================
# VERSIONS
# =============================================================================
pg_version: "17"
patroni_version: "4.0.4"
etcd_version: "3.5.17"
# =============================================================================
# CONFIGURATION CLUSTER
# =============================================================================
# Nom du cluster Patroni (doit être unique)
patroni_cluster_name: "postgres-cluster"
# =============================================================================
# ARCHITECTURE MODE
# =============================================================================
# Mode de déploiement etcd:
# - "colocated" : etcd installé sur les mêmes nœuds que PostgreSQL
# - "dedicated" : etcd sur des nœuds séparés (nécessite le groupe 'etcd_nodes')
etcd_deployment_mode: "colocated"
# Mode de déploiement HAProxy:
# - "colocated" : HAProxy installé sur les mêmes nœuds que PostgreSQL
# - "dedicated" : HAProxy sur des nœuds séparés (nécessite le groupe 'haproxy_nodes')
haproxy_deployment_mode: "colocated"
# =============================================================================
# DEBUG MODE
# =============================================================================
# Activer pour voir les logs détaillés des services (dépannage)
debug_mode: false
# =============================================================================
# CREDENTIALS (À DÉFINIR DANS UN VAULT!)
# =============================================================================
pg_superuser_password: "{{ vault_pg_superuser_password }}"
pg_replication_password: "{{ vault_pg_replication_password }}"
pg_rewind_password: "{{ vault_pg_rewind_password }}"
# =============================================================================
# PATRONI CONFIGURATION
# =============================================================================
# Mode synchrone (true = plus sûr, RPO=0, moins performant)
patroni_synchronous_mode: false
# =============================================================================
# HAPROXY PORTS
# =============================================================================
haproxy_primary_port: 5000 # Read-Write (Primary only)
haproxy_replica_port: 5001 # Read-Only (Replicas)
haproxy_stats_port: 7000 # Stats web interface
roles:
- role: devops_store.postgres_ha
Exemple d’Inventaire (votre_inventaire)
[postgres_cluster] pg-node-1 ansible_host=192.168.1.10 pg-node-2 ansible_host=192.168.1.11 pg-node-3 ansible_host=192.168.1.12 [postgres_cluster:vars] ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa
Lancement
ansible-playbook -i votre_inventaire votre_playbook.yml
🔬 Détails Techniques
- Patroni : Orchestre PostgreSQL, gère la réplication streaming, le failover automatique et la récupération via pg_rewind.
- etcd : Distributed Consensus Store pour l’élection du leader. Binaires téléchargés depuis les releases GitHub. Minimum 3 nœuds pour tolérer la perte d’un nœud.
- HAProxy : Load balancer TCP utilisant l’API REST Patroni (
/primary,/replica) pour router les connexions. - Idempotence Garantie : Vous pouvez exécuter ce rôle plusieurs fois en toute sécurité. Patroni gère l’initialisation de PostgreSQL.
- Déploiement Parallèle : Le rôle gère automatiquement la formation du cluster etcd et utilise
throttle: 1pour l’initialisation séquentielle de Patroni. - Tests Complets Inclus : Suite de tests Molecule fournie pour les 4 OS supportés.
Ports Utilisés
| Port | Service | Description |
|---|---|---|
| 5432 | PostgreSQL | Base de données |
| 8008 | Patroni REST API | Health checks |
| 2379 | etcd client | Communication client |
| 2380 | etcd peer | Communication inter-nœuds |
| 5000 | HAProxy | Read-Write (Primary) |
| 5001 | HAProxy | Read-Only (Replicas) |
| 7000 | HAProxy Stats | Interface web |
📚 Documentation Opérationnelle
Ce rôle inclut une documentation complète dans le dossier docs/ :
- Guide Jour 1 (
docs/day1-guide.md) : État cluster Patroni, connexion HAProxy, vérification réplication, commandes de base. - Runbook Jour 2+ (
docs/day2-runbook.md) : Switchover/failover, gestion des nœuds, backup PITR, troubleshooting etcd, scénarios catastrophe et récupération complète du cluster.
👀 Voir la table des matières complète
- 🔧 Troubleshooting Courant : Patroni ne démarre pas, split-brain, réplication cassée, HAProxy
- 🔄 Switchover et Failover : Switchover planifié, failover forcé, pause/resume
- 🖥️ Gestion des Nœuds : Ajout/retrait de nœuds, réinitialisation, maintenance
- 💾 Sauvegarde et Restauration : pg_dump, pg_basebackup, PITR, automatisation cron
- 🔧 Maintenance PostgreSQL : VACUUM, ANALYZE, REINDEX, configuration runtime
- 🔑 Troubleshooting etcd : Espace saturé, réinitialisation membre, restauration snapshot
- 🔴 Scénarios Catastrophe : Perte leader, perte quorum etcd, corruption données, perte cluster
- 📊 Monitoring et Alertes : Métriques clés, alertes Prometheus, scripts health check
- 🔄 Upgrade et Migration : Mise à jour Patroni, upgrade PostgreSQL
📦 Détails du Produit
- Nom du rôle :
devops_store.postgres_ha - Cible OS : Debian (12/13), Ubuntu (22.04/24.04)
- Composants déployés : PostgreSQL 17, Patroni 4.0.4, etcd 3.5.17, HAProxy
- Dépendances : Aucune
🛡️ Garantie de Qualité et Support
Trois durées de garantie sont disponibles : 3 mois, 1 an et 5 ans. Ces garanties incluent le support technique et les mises à jour du code pour les plateformes supportées.
N.B. : Le support du rôle se base sur le cycle de vie des OS pour lesquels il a été développé. Cela signifie que si un OS atteint sa date d’EOL durant la période de garantie, le support et les mises à jour du rôle s’arrêtent pour cet OS. A contrario, si une nouvelle version majeure d’un OS est publiée durant la période de garantie, le support et les mises à jour du rôle seront assurés pour cette nouvelle version.
🔑 Licence d’Utilisation
Trois niveaux de licence sont disponibles :
- Standard : Usage pour les projets internes de l’acheteur. Pas de redistribution, pas d’utilisation pour des clients tiers. Idéale pour les indépendants, PME gérant leur propre infra, passionnés.
- Entreprise : Inclut tous les droits Standard et permet d’utiliser le rôle pour configurer les serveurs de clients finaux. Droit d’intégration dans des produits et services vendus. Idéale pour les ESN, Agences Web, Infogérants (MSP), Consultants DevOps.
- Marque Blanche : Inclut tous les droits Entreprise avec l’autorisation exclusive de supprimer les mentions de l’auteur (attribution) pour présenter le code comme votre propre technologie. Idéale pour les grands Infogérants et éditeurs exigeant une image de marque unifiée sans trace de tiers.
Informations complémentaires
| Licence | Standard (Usage interne seulement), Entreprise (Usage interne et commercial), Marque Blanche (Revente sans attribution) |
|---|---|
| Support et mises à jour | 3 mois, 1 an, 5 ans |
Produits liés
-
Ansible Role : Docker Engine
Gratuit -
Ansible Role : Grafana Prometheus Loki
Plage de prix : 49,00 € à 1 299,00 € -
Ansible Role : Harbor Trivy
Plage de prix : 49,00 € à 1 199,00 €





