Zustand von Patroni-DCS (etcd/Consul) und REST API prüfen
PostgreSQLPatroniBefehl
# etcd v3 (default API in etcd 3.4+): member health, leader, raft term and DB size
etcdctl --endpoints=https://<etcd1>:2379,https://<etcd2>:2379,https://<etcd3>:2379 --cacert=/etc/etcd/ca.crt endpoint health --cluster -w table
etcdctl --endpoints=https://<etcd1>:2379 --cacert=/etc/etcd/ca.crt endpoint status --cluster -w table
etcdctl --endpoints=https://<etcd1>:2379 --cacert=/etc/etcd/ca.crt alarm list
# Consul:
consul members
consul operator raft list-peers
# Patroni REST API (on each member):
curl -s http://<member>:8008/cluster | python3 -m json.tool
curl -s -o /dev/null -w '%{http_code}\n' http://<member>:8008/primary # 200 = leader, 503 = not leaderWas es tut
Prüft Quorum, Leader und Kapazität des DCS, in dem Patroni den Leader-Lock hält, sowie über die Patroni REST API die Sicht jedes Mitglieds auf seine eigene Rolle. Der Endpunkt /primary ist die Grundlage für Health-Checks des Load Balancers (HAProxy).
Wann einsetzen
Wenn Patroni 'DCS is not accessible' protokolliert, nach einem unerwarteten Demote/Failover und als routinemäßiger Health-Check.
Vorsicht
Verliert das DCS das Quorum, kann Patroni den Leader-Lock nicht erneuern und stuft die Primary auf read-only herab (außer failsafe_mode, ab Patroni 3.0, ist aktiviert); ein etcd-Ausfall ist daher ein Schreibausfall der Datenbank. Erreicht die Größe der etcd-DB ihre Quota (Standard 2 GB), stoppt ein NOSPACE-Alarm die Schreibvorgänge. Betreibe das DCS auf mindestens 3 Knoten mit getrennten Platten.
Verwandte Einträge
- Status, Topologie und Historie des Patroni-Clusters anzeigen
- Geplanten Switchover mit Patroni durchführen
- Manuellen Failover mit Patroni durchführen
- Defekte Replica mit Patroni neu aufbauen (reinit)
- Clusterweite Parameter in Patroni ändern (edit-config) und ausstehende Neustarts anwenden
- Patroni in den Wartungsmodus versetzen und zurück (pause/resume)