DBAtlas · Atlas für Datenbankbetrieb

Zustand von Patroni-DCS (etcd/Consul) und REST API prüfen

PostgreSQLPatroni

Befehl

# 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 leader

Was 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.

In DBAtlas öffnen →

Verwandte Einträge