ThingWorx a disponibilità elevata > Esempio di distribuzione di PostgreSQL in ambienti a diponibilità elevata con Pgpool-II > 9. Configurare il servizio Watchdog per i nodi master e di standby di Pgpool-II
9. Configurare il servizio Watchdog per i nodi master e di standby di Pgpool-II
Passo 1
Modificare pgpool.conf su ogni nodo Pgpool-II in modo da contenere le impostazioni e i valori di watchdog rilevanti.
Impostazione
Valore
Descrizione
use_watchdog
il
Attiva il watchdog in Pgpool-II
wd_hostname
'10.91.9.101'
oppure
’10.91.9.102’
Nome host o indirizzo IP di questo watchdog
wd_port
9000
Numero di porta di questo watchdog
delegate_IP
'10.91.9.100'
Indirizzo IP virtuale utilizzato dai client per accedere a PostgreSQL (attraverso Pgpool-II)
ifconfig_path
'/etc/pgpool2'
Percorso assoluto della directory contenente gli script o i comandi if_up_cmd e if_down_cmd.
if_up_cmd
'ifup.sh $_IP_$ <eni id of Pgpool node>'
Il comando che viene eseguito quando Pgpool-II prova a visualizzare l'interfaccia IP virtuale con l'indirizzo delegate_IP. È possibile recuperare l'ID eni del nodo Pgpool-II accedendo alla console di amministrazione EC2 e alla propria istanza Pgpool-II. Nella relativa descrizione nella console individuare la voce Network interfaces, fare clic su eth0 e individuare l'ID dell'interfaccia. Utilizzarlo per $<eni id of Pgpool node>.
if_down_cmd
ifdown.sh $_IP_$ <eni id of Pgpool node>
Il comando che viene eseguito quando Pgpool-II prova a chiudere l'interfaccia IP virtuale con l'indirizzo delegate_IP. Vedere if_up_cmd per ottenere l'ID eni del nodo Pgpool-II.
arping_path
'/usr/bin'
Percorso del package di installazione iputils-arping
arping_cmd
'arping -U $_IP_$ -w 1'
Il comando arping utilizzato per verificare gli IP.
heartbeat_destination0
'10.91.9.102'
oppure
'10.91.9.101'
L'indirizzo IP su cui viene eseguito il controllo heartbeat; il valore dell'impostazione other_pgpool_hostname0
heartbeat_destination_port0
9694
Utilizzare il valore di default.
heartbeat_device
'eth0'
Il dispositivo NIC per l'indirizzo IP per la comunicazione heartbeat
other_pgpool_hostname0
'10.91.9.102'
oppure
'10.91.9.101'
L'indirizzo IP dell'altra istanza del server Pgpool-II
other_pgpool_port0
5432
La porta su cui è in ascolto l'altro nodo Pgpool-II
other_wd_port0
9000
La porta su cui è in ascolto l'altra funzionalità watchdog Pgpool-II
Passo 2
Creare uno script ifup.sh da utilizzare nell'impostazione if_up_cmd del file pgpool.conf.
1. Posizionare lo script nella directory /etc/pgpool2.
2. Verificare che sia di proprietà di PostgreSQL e che appartenga all'utente postgres.
3. Verificare che le autorizzazioni siano impostate su 755.
4. Il file dovrebbe contenere quanto segue
#!/bin/bash -x
/sbin/ifconfig eth0:0 inet $1 netmask 255.255.255.0
Passo 3
Creare uno script ifdown.sh da utilizzare nell'impostazione if_down_cmd del file pgpool.conf.
1. Posizionare il file nella directory /etc/pgpool2.
2. Verificare che sia di proprietà di PostgreSQL e che appartenga all'utente postgres.
3. Verificare che le autorizzazioni siano impostate su 755.
4. Il file dovrebbe contenere quanto segue
#!bin/bash -x
/sbin/ifconfig eth0:0 down
Passo 4
Impostare le chiavi pubbliche SSH che corrispondono alla voce .ssh/authorized_keys di un utente PostgreSQL su ciascuno dei server di database PostgreSQL nella directory /root/.ssh. L'utente root esegue i processi di Pgpool-II a disponibilità elevata (con watchdog) e, in caso di failover dei server di database PostgreSQL, è responsabile dell'esecuzione dello script /etc/pgpool2/failover.sh.
* 
Durante il failover verranno visualizzati i messaggi Permission Denied correlati alle chiavi.
Passo 5
Prima dell'avvio iniziale dei nodi Pgpool-II con watchdog, PTC consiglia di eseguire il cleanup del file pgpool_status o di eliminarlo nella directory /var/log/postgreSQL. In questo modo Pgpool-II utilizzerà il database PostgreSQL configurato node0 nel file pgpool.conf all'avvio. Se si è verificato un failover e il nodo master non corrisponde alla voce node0 nel file pgpool.conf, mantenere il file pgpool_status, in quanto questo tiene traccia del master corrente tra l'avvio e l'arresto del processo Pgpool-II.
Passo 6
Avviare il processo pgpool come utente root nella prima istanza di Pgpool-II. Non avviarlo come servizio. Eseguire i seguenti comandi:
sudo su
/usr/sbin/pgpool -n -f /etc/pgpool2/pgpool.conf > ~postgres/pgpool.log
2>&1 &
Passo 7
Visualizzare le voci di Pgpool-II nel syslog per verificare che la funzionalità watchdog sia stata inizializzata correttamente.
more /var/log/syslog | grep pgpool
L'output deve indicare che il watchdog e Pgpool-II sono stati inizializzati e avviati.
Passo 8
Per cancellare il log prima di eseguire un nuovo processo di Pgpool-II, PTC consiglia di eseguire il backup del syslog esistente come riferimento cronologico e quindi di richiamare il comando seguente:
> /var/log/syslog
Verificare che non siano presenti voci di errore nel file ~postgres/pgpool.log. Verificare che i processi Pgpool-II siano stati avviati.
Passo 9
La configurazione di default specificata nella sezione PostgreSQL HA indica il valore 125 per l'impostazione num_init_children nel file pgpool.conf. Devono essere presenti 125 processi con lo stato "wait for connection request", incluso uno con prefisso "PCP:". Pgpool-II e watchdog creano diversi altri processi.
Passo 10
Controllare la configurazione dell'interfaccia (ifconfig) per assicurarsi che sia stato creato l'IP virtuale. Verificare che sia stata creata una nuova interfaccia di rete con l'indirizzo IP assegnato all'impostazione delegate_IP nel file pgpool.conf. Deve essere denominata "eth0:0".
Passo 11
Avviare un processo Pgpool-II come utente root nella seconda istanza del server Pgpool-II. Non avviarlo come servizio. I log dovrebbero ora mostrare che un'istanza è stata promossa come master e l'altra è stata avviata. L'istanza master dovrebbe segnalare che ha accettato una richiesta di registrazione dall'istanza Pgpool-II non master (tramite il relativo indirizzo IP).
Passo 12
Per arrestare i processi Pgpool-II, utilizzare i seguenti comandi come utente root:
sudo su
/usr/sbin/pgpool --mode=immediate stop