DBAtlas · Atlas de operações de banco de dados

Verificar a saúde do DCS (etcd/Consul) e da REST API do Patroni

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

O que faz

Verifica o quorum, o leader e a capacidade do DCS onde o Patroni guarda o leader lock e a visão que cada membro tem do próprio papel pela REST API do Patroni. O endpoint /primary é a base dos health checks do load balancer (HAProxy).

Quando usar

Quando o Patroni registra 'DCS is not accessible', após um demote/failover inesperado e como verificação de saúde de rotina.

Atenção

Se o DCS perder o quorum, o Patroni não consegue renovar o leader lock e rebaixa o primário para somente leitura (a menos que o failsafe_mode, Patroni 3.0+, esteja habilitado); uma queda do etcd é, portanto, uma indisponibilidade de escrita do banco. Quando o tamanho do banco do etcd atinge a cota (padrão 2 GB), um alarme NOSPACE interrompe as gravações. Rode o DCS em pelo menos 3 nós com discos separados.

Abrir no DBAtlas →

Relacionados