Installation
Voraussetzungen unter Mac OS
Zum Installieren der Voraussetzungen auf einem Mac folgenden Befehl ausführen:
Psycopg
Seit psycopg2-2.8
wird die Binärversion von psycopg2 nicht mehr standardmäßig installiert. Für die Installation aus dem Quellcode werden ein C-Compiler sowie die Entwicklungspakete für Postgres und Python benötigt. Da sich in Python keine Abhängigkeit in der Form psycopg2 OR psycopg2-binary angeben lässt, muss die Installationsart selbst gewählt werden.
Es stehen mehrere Möglichkeiten zur Verfügung:
- Den Paketmanager der Distribution verwenden.
- Bei der Installation von Patroni mit pip eines der Pakete
psycopg3,psycopg2oderpsycopg2-binaryin der Liste der Abhängigkeiten angeben.
Allgemeine Installation mit pip
Patroni lässt sich mit pip installieren:
Dabei kann dependencies leer sein oder aus einem oder mehreren der folgenden Einträge bestehen:
etcd oder etcd3
Modul python-etcd, um etcd als verteilten Konfigurationsspeicher (DCS) zu verwenden
consul
Modul py-consul, um Consul als DCS zu verwenden
zookeeper
Modul kazoo, um ZooKeeper als DCS zu verwenden
exhibitor
Modul kazoo, um Exhibitor als DCS zu verwenden (dieselben Abhängigkeiten wie für ZooKeeper)
kubernetes
Modul kubernetes
, um Kubernetes als DCS in Patroni zu verwenden
raft
Modul pysyncobj, um die Python-Implementierung von Raft als DCS zu verwenden
aws
boto3, um AWS-Callbacks zu verwenden
jsonlogger
Modul python-json-logger, um die Protokollierung
im JSON-Format zu aktivieren
systemd
systemd-python, um die sd_notify-Integration zu verwenden
all
Alle oben genannten Abhängigkeiten (außer der psycopg-Familie)
psycopg3
Modul psycopg[binary]>=3.0.0
psycopg2
Modul psycopg2>=2.5.4
psycopg2-binary
Modul psycopg2-binary
Um Patroni zusammen mit psycopg3, den Abhängigkeiten für etcd als DCS und den AWS-Callbacks zu installieren, lautet der Befehl beispielsweise:
Externe Werkzeuge, die in Skripten zur Replikaterstellung oder benutzerdefinierten Cluster-Initialisierung aufgerufen werden (z. B. WAL-E), sollten unabhängig von Patroni installiert werden.
Paketinstallation unter Linux
Für das verwendete Betriebssystem sind möglicherweise Patroni-Pakete verfügbar. Die Postgres-Community erstellt solche Pakete für:
- RHEL, RockyLinux, AlmaLinux;
- Debian und Ubuntu;
- SUSE Enterprise Linux.
Es gibt auch Pakete für direkte Abhängigkeiten von Patroni, etwa Python-Module, die möglicherweise nicht in den offiziellen Paketquellen des Betriebssystems enthalten sind.
Weitere Informationen stehen in der Dokumentation des PGDG-Repositorys .
Bei einem auf RedHat Enterprise Linux basierenden Betriebssystem werden möglicherweise zusätzlich Pakete aus EPEL benötigt; siehe die Dokumentation des EPEL-Repositorys .
Nach dem Einrichten des PGDG-Repositorys für das Betriebssystem kann Patroni installiert werden.
Die Patroni-Pakete werden von der Postgres-Community gepflegt, nicht von den Patroni-Entwicklern. Bei Unterstützungsbedarf zunächst im Postgres-Slack nachfragen.
Installation auf Debian-basierten Distributionen
Nach dem Einrichten des PGDG-Repositorys, siehe oben , Patroni mit apt installieren:
Installation auf RedHat-basierten Distributionen
Nach dem Einrichten des PGDG-Repositorys, siehe oben , Patroni mit etcd als DCS unter RHEL 9 (und davon abgeleiteten Distributionen) über dnf installieren:
Bietet die RedHat-basierte Distribution keine etcd-Pakete an, kann etcd aus PGDG installiert werden. Auf den für den DCS vorgesehenen Knoten folgende Befehle ausführen:
Falls erforderlich, die RHEL-Version im Repository durch 8 ersetzen, sodass sich pgdg-rhel8-extras ergibt. Auch auf RockyLinux, AlmaLinux, Oracle Linux usw. lautet der Repository-Name pgdg-rhelN-extras.
Installation unter SUSE Enterprise Linux
Für einige Abhängigkeiten müssen möglicherweise die SUSE-PackageHub-Repositorys aktiviert werden. Siehe die Dokumentation von SUSE PackageHub .
Unter SLES 15 kann Patroni nach dem Einrichten des PGDG-Repositorys, siehe oben , wie folgt installiert werden:
Mit aktiviertem SUSE-PackageHub-Repository lässt sich auch etcd installieren:
Upgrade
Ein Upgrade von Patroni ist sehr einfach: Die Softwareinstallation aktualisieren und den Patroni-Daemon auf jedem Knoten im Cluster neu starten.
Der Neustart des Patroni-Daemons führt jedoch zu einem Neustart der Postgres-Datenbank. Dies kann unter bestimmten Umständen ein Failover des Primärservers auslösen. Deshalb wird empfohlen, den Cluster bis zum Abschluss des Patroni-Daemon-Neustarts in den Wartungsmodus zu versetzen.
Dazu auf einem der Patroni-Knoten folgenden Befehl ausführen:
Anschließend auf jedem Clusterknoten das für das Betriebssystem erforderliche Paketupgrade durchführen:
Den Patroni-Daemon-Prozess auf jedem Knoten neu starten:
Abschließend die Postgres-Überwachung durch Patroni wieder aufnehmen und damit den Wartungsmodus beenden:
Der Cluster ist nun mit der neuen Patroni-Version wieder voll betriebsbereit.