Haute disponibilité ThingWorx > Exemple de déploiement d'une architecture HA PostgreSQL avec Pgpool-II > 9. Configuration d'un service de surveillance pour les noeuds maître et de secours Pgpool-II
9. Configuration d'un service de surveillance pour les noeuds maître et de secours Pgpool-II
Etape 1
Modifiez pgpool.conf sur chaque noeud Pgpool-II de façon à ce qu'il contienne les paramètres et valeurs de surveillance appropriés.
Paramètre
Valeur
Description
use_watchdog
le
Active la surveillance dans Pgpool-II.
wd_hostname
'10.91.9.101'
ou
'10.91.9.102'
Nom d'hôte ou adresse IP de ce service de surveillance.
wd_port
9000
Numéro de port de ce service de surveillance.
delegate_IP
'10.91.9.100'
Adresse IP virtuelle utilisée par les clients pour accéder à PostgreSQL (via Pgpool-II).
ifconfig_path
'/etc/pgpool2'
Chemin absolu du répertoire contenant les commandes ou les scripts if_up_cmd et if_down_cmd.
if_up_cmd
'ifup.sh $_IP_$ <eni id of Pgpool node>'
Commande émise lorsque Pgpool-II tente d'afficher l'interface IP virtuelle avec l'adresse delegate_IP. Vous pouvez récupérer l'ID eni du noeud Pgpool-II en vous connectant à la console d'administration EC2 et en accédant à votre instance Pgpool-II. Dans sa description dans la console, localisez l'entrée Network interfaces, cliquez sur eth0, puis localisez l'ID d'interface. Utilisez-le pour $<eni id of Pgpool node>.
if_down_cmd
ifdown.sh $_IP_$ <eni id of Pgpool node>
Commande émise lorsque Pgpool-II tente de réduire l'interface IP virtuelle avec l'adresse delegate_IP. Reportez-vous au paramètre if_up_cmd pour obtenir l'ID eni du noeud Pgpool-II.
arping_path
'/usr/bin'
Chemin d'installation du package iputils-arping.
arping_cmd
'arping -U $_IP_$ -w 1'
Commande arping utilisée pour vérifier les adresses IP.
heartbeat_destination0
'10.91.9.102'
ou
'10.91.9.101'
Adresse IP par rapport à laquelle le contrôle de pulsation est effectué ; valeur du paramètre other_pgpool_hostname0.
heartbeat_destination_port0
9694
Utilisez la valeur par défaut.
heartbeat_device
'eth0'
Carte réseau pour l'adresse IP pour les communications de pulsation.
other_pgpool_hostname0
'10.91.9.102'
ou
'10.91.9.101'
Adresse IP de l'autre instance de serveur Pgpool-II.
other_pgpool_port0
5432
Port d'écoute utilisé par l'autre noeud Pgpool-II.
other_wd_port0
9000
Port d'écoute utilisé par l'autre fonctionnalité de surveillance Pgpool-II.
Etape 2
Créez un script ifup.sh à utiliser dans le paramètre if_up_cmd du fichier pgpool.conf.
1. Placez le script dans le répertoire /etc/pgpool2.
2. Assurez-vous que PostgreSQL en est le propriétaire et qu'il appartient à l'utilisateur postgres.
3. Vérifiez que ses autorisations sont définies sur 755.
4. Le fichier doit contenir les lignes suivantes :
#!/bin/bash -x
/sbin/ifconfig eth0:0 inet $1 netmask 255.255.255.0
Etape 3
Créez un script ifdown.sh à utiliser dans le paramètre if_down_cmd du fichier pgpool.conf.
1. Placez ce fichier dans le répertoire /etc/pgpool2.
2. Assurez-vous que PostgreSQL en est le propriétaire et qu'il appartient à l'utilisateur postgres.
3. Vérifiez que ses autorisations sont définies sur 755.
4. Le fichier doit contenir les lignes suivantes :
#!bin/bash -x
/sbin/ifconfig eth0:0 down
Etape 4
Définissez les clés publiques SSH qui correspondent à une entrée .ssh/authorized_keys d'un utilisateur PostgreSQL sur chaque serveur de base de données PostgreSQL dans le répertoire /root/.ssh. L'utilisateur racine exécute les processus Pgpool-II (avec surveillance) haute disponibilité et, dans le cas d'un basculement des serveurs de base de données PostgreSQL, est responsable de l'exécution du script /etc/pgpool2/failover.sh.
* 
Des messages Permission Denied associés aux clés s'afficheront pendant le basculement.
Etape 5
Avant le démarrage initial des noeuds Pgpool-II avec surveillance, PTC recommande de nettoyer ou d'ignorer le fichier pgpool_status du répertoire /var/log/postgresql. Pgpool-II utilise alors la base de données PostgreSQL configurée pour node0 dans le fichier pgpool.conf au démarrage. Si un basculement s'est produit et que le noeud maître ne correspond pas à l'entrée node0 dans le fichier pgpool.conf, conservez le fichier pgpool_status, car il effectue le suivi du noeud maître actuel entre le démarrage et l'arrêt du processus Pgpool-II.
Etape 6
Démarrez le processus pgpool en tant qu'utilisateur racine sur la première instance Pgpool-II. Ne le démarrez pas en tant que service. Exécutez les commandes suivantes :
sudo su
/usr/sbin/pgpool -n -f /etc/pgpool2/pgpool.conf > ~postgres/pgpool.log
2>&1 &
Etape 7
Affichez les entrées Pgpool-II dans syslog pour vérifier que la fonction de surveillance a été correctement initialisée.
more /var/log/syslog | grep pgpool
La sortie doit indiquer que la fonction de surveillance et Pgpool-II ont été initialisés et démarrés avec succès.
Etape 8
Pour effacer ce journal avant d'exécuter un nouveau processus de Pgpool-II, PTC vous recommande de sauvegarder le syslog existant pour référence d'historique, puis d'appeler la commande suivante :
> /var/log/syslog
Vérifiez qu'il n'y a pas d'entrées d'erreur dans le fichier ~postgres/pgpool.log. Vérifiez que les processus Pgpool-II ont démarré.
Etape 9
La configuration par défaut spécifiée dans la section de configuration haute disponibilité PostgreSQL définit une valeur de 125 pour le paramètre num_init_children du fichier pgpool.conf. 125 processus doivent disposer du statut "wait for connection request", dont un doit avoir "PCP:" comme préfixe. Plusieurs autres processus sont créés par Pgpool-II et la fonctionnalité de surveillance.
Etape 10
Vérifiez la configuration de l'interface (ifconfig) pour vous assurer que l'adresse IP virtuelle a été créée. Vérifiez qu'une nouvelle interface réseau a été créée avec l'adresse IP que vous avez attribuée au paramètre delegate_IP dans le fichier pgpool.conf. Elle doit être appelée "eth0:0".
Etape 11
Démarrez un processus Pgpool-II en tant qu'utilisateur racine sur la deuxième instance de serveur Pgpool-II. Ne le démarrez pas en tant que service. Les journaux doivent maintenant indiquer qu'une instance a été promue en tant que maître et que la deuxième instance a démarré avec succès. L'instance maître doit signaler qu'elle a accepté une demande d'enregistrement de l'instance Pgpool-II non-maître (via son adresse IP).
Etape 12
Pour arrêter les processus Pgpool-II, utilisez les commandes suivantes en tant qu'utilisateur racine :
sudo su
/usr/sbin/pgpool --mode=immediate stop