Haute disponibilité de service - Patroni

Workshop Patroni

Dalibo & Contributors

Haute disponibilité de service avec Patroni

PostgreSQL

Introduction

  • Principes
  • Mise en place
  • Installation et configuration des services
  • Construction d’un agrégat à bascule automatique
  • Création d’incidents

Principes

  • Arbitrage par un quorum : DCS Etcd
  • Service PostgreSQL : désactivé
  • Contrôle complet par Patroni

DCS : Etcd

  • Arbitre en cas de bascules
  • Stockage distribué de la configuration
  • Jeton leader (Etcd)
  • Instance primaire PostgreSQL

Service PostgreSQL et Patroni

  • Service PostgreSQL désactivé

Mise en place de l’infrastructure

  • Connexion à la VM
  • Récupération du playbook Ansible

Connexion à votre machine virtuelle

un seul point d’entrée : eformation.dalibo.com un port attribué : 22XX

  $ ssh -p 22XX dalibo@eformation.dalibo.com

Playbook Ansible

Récupération du playbook Ansible à cette adresse :

https://github.com/dalibo/workshops/tree/workshop_patroni/fr/patroni/playbook/etcd-patroni

Fichier Description
inventory.yml inventaire des machines
setup.yml playbook principal
warmup.sh script d’amorçage
exchange_ssh_keys.yml playbook d’échange de clés ssh
teardown.yml playbook de destruction massive

L’infrastructure complète peut être créée à l’aide des commandes :

 $ sudo apt install -y ansible
 $ sudo ansible-playbook -f 7 -i inventory.yml setup.yml
...

Cette opération peut durer jusqu’à une vingtaine de minutes.

Installation d’Etcd

  • Installation des paquets
  • Configuration
  • Démarrage du service
  • Vérification

Installation des paquets

  • Paquets essentiels :
    • etcd
    • curl
    • jq
    • iputils-ping

Configuration du service Etcd

  • Fichier : /etc/default/etcd

Démarrage du service

  • Réinitialisation des bases Etcd
  • Démarrage du service etcd
    • systemctl start etcd

Installation de PostgreSQL / Patroni

  • Installation
    • PostgreSQL
    • Patroni
    • pgBackrest

Configuration de Patroni

Sur tous les nœuds

  • Configuration du DCS
    • /etc/patroni/dcs.yml
  • Génération de la configuration
    • pg_createconfig_patroni 14 main

Création de l’agrégat

  • Démarrage du primaire
  • Création de l’utilisateur de réplication
  • Suppression des instances secondaires
  • Démarrage des instances secondaires
Vérifications
  • Liste des nœuds Patroni
  • Test de bascule manuelle vers chaque nœud

Création d’incidents

  • Perte totale du DCS
  • Freeze du nœud primaire Patroni
  • Bascule manuelle

Perte totale du DCS

  • Perte de tous les nœuds Etcd

Perte du nœud primaire Patroni

  • Perte du primaire courant

Modification de la configuration

  • patronictl edit-config

Sauvegardes

  • Installation pgBackrest
  • Configuration
  • Détermination du primaire
  • Archivage
  • Sauvegarde

Références