Hochverfügbarkeit mit ThingWorx > Beispiel für die Bereitstellung von PostgreSQL HA mit pgpool-II > 9. Watchdog-Dienst für pgpool-II-Master- und -Standby-Knoten konfigurieren
9. Watchdog-Dienst für pgpool-II-Master- und -Standby-Knoten konfigurieren
Schritt 1
Bearbeiten Sie pgpool.conf auf jedem pgpool-II-Knoten, sodass sie relevante Watchdog-Einstellungen und -Werte enthalten.
Einstellung
Wert
Beschreibung
use_watchdog
on
Aktiviert Watchdog in pgpool-II
wd_hostname
'10.91.9.101'
oder
’10.91.9.102’
Hostname oder IP-Adresse dieses Watchdogs
wd_port
9000
Portnummer dieses Watchdogs
delegate_IP
'10.91.9.100'
Virtuelle IP-Adresse, die Clients für den Zugriff auf PostgreSQL (über pgpool-II) verwenden
ifconfig_path
'/etc/pgpool2'
Der absolute Pfad des Verzeichnisses, das die Befehle oder Skripts "if_up_cmd" und "if_down_cmd" enthält
if_up_cmd
'ifup.sh $_IP_$ <eni id of Pgpool node>'
Befehl, der ausgegeben wird, wenn pgpool-II versucht, die virtuelle IP-Schnittstelle mit der "delegate_IP"-Adresse aufzurufen. Sie können die ENI-ID des pgpool-II-Knotens abrufen, indem Sie sich bei der EC2-Verwaltungskonsole anmelden und zu Ihrer pgpool-II-Instanz wechseln. Suchen Sie in der Beschreibung in der Konsole nach dem Eintrag Network interfaces entry, klicken Sie auf eth0, und suchen Sie die Schnittstellen-ID. Verwenden Sie sie für $<eni id of Pgpool node>.
if_down_cmd
ifdown.sh $_IP_$ <eni id of Pgpool node>
Befehl, der ausgegeben wird, wenn pgpool-II versucht, die virtuelle IP-Schnittstelle mit der "delegate_IP"-Adresse herunterzufahren. Unter "if_up_cmd" finden Sie die ENI-ID des pgpool-II-Knotens.
arping_path
'/usr/bin'
Pfad des iputils-arping-Installationspakets
arping_cmd
'arping -U $_IP_$ -w 1'
arping-Befehl, mit dem die IPs verifiziert werden.
heartbeat_destination0
'10.91.9.102'
oder
’10.91.9.101’
IP-Adresse, für die die Heartbeat-Prüfung vorgenommen wird. Der Wert der other_pgpool_hostname0-Einstellung.
heartbeat_destination_port0
9694
Verwenden Sie den Standardwert.
heartbeat_device
'eth0'
NIC-Gerät für die IP-Adresse für die Heartbeat-Kommunikation
other_pgpool_hostname0
'10.91.9.102'
oder
’10.91.9.101’
IP-Adresse der anderen pgpool-II-Serverinstanz
other_pgpool_port0
5432
Port, den der andere pgpool-II-Knoten überwacht
other_wd_port0
9000
Port, den die andere pgpool-II-Watchdog-Funktion überwacht
Schritt 2
Erstellen Sie ein ifup.sh-Skript, das in der if_up_cmd-Einstellung der Datei pgpool.conf verwendet werden soll.
1. Platzieren Sie das Skript im Verzeichnis /etc/pgpool2.
2. Stellen Sie sicher, dass es im Besitz von PostgreSQL ist und zum Postgres-Benutzer gehört.
3. Stellen Sie sicher, dass seine Berechtigungen auf 755 festgelegt sind.
4. Die Datei sollte Folgendes enthalten
#!/bin/bash -x
/sbin/ifconfig eth0:0 inet $1 netmask 255.255.255.0
Schritt 3
Erstellen Sie ein ifdown.sh-Skript, das in der if_down_cmd-Einstellung der Datei pgpool.conf verwendet werden soll.
1. Platzieren Sie diese Datei im Verzeichnis /etc/pgpool2.
2. Stellen Sie sicher, dass es im Besitz von PostgreSQL ist und zum Postgres-Benutzer gehört.
3. Stellen Sie sicher, dass seine Berechtigungen auf 755 festgelegt sind.
4. Die Datei sollte Folgendes enthalten
#!bin/bash -x
/sbin/ifconfig eth0:0 down
Schritt 4
Legen Sie die öffentlichen Schlüssel fest, die dem .ssh/authorized_keys-Eintrag eines PostgreSQL-Benutzers auf jedem der PostgreSQL-Datenbankserver im Verzeichnis /root/.ssh entsprechen. Der Stammbenutzer führt die pgpool-II-HA-Prozesse (mit Watchdog) aus und ist im Falle eines Failovers der PostgreSQL-Datenbankserver für die Ausführung des /etc/pgpool2/failover.sh-Skripts verantwortlich.
* 
Permission Denied-Meldungen, die mit Schlüsseln verknüpft sind, treten während des Failovers auf.
Schritt 5
Vor dem ersten Start von pgpool-II-Knoten mit Watchdog empfiehlt PTC, die Datei pgpool_status im Verzeichnis /var/log/postgresql zu bereinigen oder zu verwerfen. Dies führt dazu, dass pgpool-II die mit node0 konfigurierte PostgreSQL-Datenbank in der Datei pgpool.conf beim Start verwendet. Wenn ein Failover aufgetreten ist und der Masterknoten nicht mit dem node0-Eintrag in der Datei pgpool.conf übereinstimmt, behalten Sie die Datei pgpool_status bei, da sie den aktuellen Master zwischen Start und Ende des pgpool-II-Prozesses verfolgt.
Schritt 6
Starten Sie den pgpool-Prozess als Stammbenutzer für die erste pgpool-II-Instanz. Starten Sie ihn nicht als Dienst. Führen Sie die folgenden Befehle aus:
sudo su
/usr/sbin/pgpool -n -f /etc/pgpool2/pgpool.conf > ~postgres/pgpool.log
2>&1 &
Schritt 7
Zeigen Sie die pgpool-II-Einträge im syslog an, um sicherzustellen, dass die Watchdog-Funktion ordnungsgemäß initialisiert wurde.
more /var/log/syslog | grep pgpool
Die Ausgabe sollte angeben, dass Watchdog und pgpool-II initialisiert und erfolgreich gestartet wurden.
Schritt 8
Um dieses Protokoll zu bereinigen, bevor Sie einen neuen pgpool-II-Prozess ausführen, empfiehlt PTC, das vorhandene syslog als Verlaufsreferenz zu sichern und dann den folgenden Befehl aufzurufen:
> /var/log/syslog
. Vergewissern Sie sich, dass die Datei ~postgres/pgpool.log keine Fehlereinträge enthält. Überprüfen Sie, ob die pgpool-II-Prozesse gestartet wurden.
Schritt 9
Die im Abschnitt zur Hochverfügbarkeit (High Availability, HA) mit PostgreSQL angegebene Standardkonfiguration legt den Wert 125 für die num_init_children-Einstellung in der Datei pgpool.conf fest. Es sollten 125 Prozesse mit dem Status "wait for connection request" vorhanden sein, einschließlich eines Prozesses mit dem Präfix "PCP:". Es gibt mehrere andere Prozesse, die pgpool-II und Watchdog erzeugen.
Schritt 10
Überprüfen Sie die Schnittstellenkonfiguration (ifconfig), um sicherzustellen, dass die virtuelle IP erstellt wurde. Überprüfen Sie, ob eine neue Netzwerkschnittstelle mit der IP-Adresse erstellt wurde, die Sie der Einstellung delegate_IP in der Datei pgpool.conf zugewiesen haben. Sie sollte "eth0:0" heißen.
Schritt 11
Starten Sie einen pgpool-II-Prozess als Stammbenutzer auf der zweiten pgpool-II-Serverinstanz. Starten Sie ihn nicht als Dienst. Die Protokolle sollten jetzt zeigen, dass eine Instanz zum Master heraufgestuft und die andere erfolgreich gestartet wurde. Der Master sollte melden, dass er eine Registrierungsanfrage von der Nicht-Master-pgpool-II-Instanz angenommen hat (über seine IP-Adresse).
Schritt 12
Um die pgpool-II-Prozesse anzuhalten, verwenden Sie die folgenden Befehle als Stamm:
sudo su
/usr/sbin/pgpool --mode=immediate stop
War dies hilfreich?