DBAtlas · Atlas de operaciones de bases de datos

Comprobar la salud del DCS de Patroni (etcd/Consul) y de la REST API

PostgreSQLPatroni

Comando

# 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

Qué hace

Comprueba el quorum, el leader y la capacidad del DCS donde Patroni mantiene el leader lock, y la visión que cada miembro tiene de su propio rol a través de la REST API de Patroni. El endpoint /primary es la base de los health checks del balanceador de carga (HAProxy).

Cuándo usarlo

Cuando Patroni registra 'DCS is not accessible', tras un demote/failover inesperado y como comprobación de salud rutinaria.

Precaución

Si el DCS pierde el quorum, Patroni no puede renovar el leader lock y degrada el primario a solo lectura (salvo que esté habilitado failsafe_mode, Patroni 3.0+); por tanto, una caída de etcd es una caída de escritura de la base de datos. Cuando el tamaño de la BD de etcd alcanza su cuota (2 GB por defecto), una alarma NOSPACE detiene las escrituras. Ejecute el DCS en al menos 3 nodos con discos separados.

Abrir en DBAtlas →

Relacionado