DBAtlas · Atlas d'exploitation des bases de données

Vérifier la santé du DCS Patroni (etcd/Consul) et de l'API REST

PostgreSQLPatroni

Commande

# 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

Ce que fait la commande

Vérifie le quorum, le leader et la capacité du DCS où Patroni détient le verrou de leader, ainsi que la vue que chaque membre a de son propre rôle via l'API REST de Patroni. Le point de terminaison /primary sert de base aux health checks du load balancer (HAProxy).

Quand l'utiliser

Lorsque Patroni journalise 'DCS is not accessible', après un demote/failover inattendu, et comme contrôle de santé de routine.

Attention

Si le DCS perd le quorum, Patroni ne peut pas renouveler le verrou de leader et rétrograde la primaire en lecture seule (sauf si failsafe_mode, Patroni 3.0+, est activé) ; une panne d'etcd est donc une interruption des écritures en base. Lorsque la taille de la base etcd atteint son quota (2 GB par défaut), une alarme NOSPACE stoppe les écritures. Faites tourner le DCS sur au moins 3 nœuds avec des disques séparés.

Ouvrir dans DBAtlas →

Voir aussi