HA Linux et PostgreSQL

Atelier interne

v 0.1 (24 septembre 2020)

true

Installation

Prérequis

  • Trois VM CentOS 7 ;
  • Noms d’hôte ajustés (utilisé par le cluster) ;
  • Fichiers /etc/hosts à jour ;
  • Connexion root par ssh sans mot de passe entre les nœuds (optionnel).

Installation des paquets

  • Paquets essentiels :
    • corosync : communication entre les nœuds ;
    • pacemaker : orchestration du cluster ;
  • pcs : administration simplifiée du cluster.
yum install -y pacemaker pcs

pcsd

  • Activer au démarrage et démarrer pcsd ;
  • Configurer le mot de passe de l’utilisateur hacluster ;
  • Authentifier tous les nœuds entre eux ; ~bash pcs cluster auth <nodes 1..n> -u ~
  • Initialiser le cluster ; ~bash pcs cluster setup –name <nodes 1..n>~

Démarrage du cluster

  • Désactiver corosync et pacemaker au démarrage

  • Démarrer le cluster

  • Commandes pcs :

    pcs cluster disable  --all
    pcs cluster start --all
    pcs status --full

Installation de PostgreSQL

  • Installer PostgreSQL ;
  • Mettre en place la réplication :
    • répliquer depuis une vIP ;
    • empêcher la réplication d’un nœud sur lui-même ;
    • application_name doit contenir le hostname du serveur ;
    • pas de slots de réplication ;
  • Stopper PostgreSQL partout un fois tout en œuvre de marche.

Fencing

  • Utilisation d’un watchtdog ;
  • Compte à rebours avant l’arrêt du serveur, réinitialisé par Pacemaker aussi longtemps que possible ;
  • Permet également d’isoler un autre nœud en cas de problème.

Resource PostgreSQL

  • Installer l’agent PAF ;
  • validation hors-ligne de la configuration Pacemaker avant application ;
  • Ressources pour PostgreSQL, gestion des rôles Master/Slave et vIP ;
  • Contrainte de localisation de la vIP avec l’instance primaire ;
  • Contraintes d’ordre :
    • Ajouter la vIP après avoir démarré l’instance primaire ;
    • Retirer la vIP après avoir arrêté l’instance primaire.

Maintenance

Notions importantes

  • CIB ;
  • Scores ;
  • DC (Designated Controller).

Etat du cluster

  • pcs status --full

Switchover

  • Deux solutions :
    • désigner un nœud cible ;
    • interdire la primaire de rester sur le nœud où elle est placée.
  • Penser à nettoyer les contraintes temporaires.

Obtenir et lire les traces

  • Deux solutions :
    • crm_report (nécessite un ssh root entre les nœuds).
    • manuellement :
      • trace : /var/log/messages et /var/log/cluster/corosync.log ;
      • toutes les cib et diff : /var/lib/pacemaker/cib et /var/lib/pacemaker/pengine.
  • Méthode :
    • Trouver le DC (Designated Controler) ;
    • Identifier la transition ;
    • Identifier l’ID des CIB utiles et les analyser.

Remonter le cluster après un Failover

  • Identifier la source du problème et le résoudre ;
  • Sauvegarder l’instance si nécessaire ;
  • Mettre la ressource PostgreSQL en mode unmanaged ;
  • Remonter la réplication ;
  • Stopper PostgreSQL ;
  • Démarrer le cluster.

Sortir PostgreSQL du cluster

  • Passer les ressources suivantes au statut unmanaged :
    • PostgreSQL ;
    • vIP ;
  • Arrêter Pacemaker si nécessaire ;
  • Contrôler le statut de la vIP et de la réplication nœuds.