DBAtlas · Атлас эксплуатации баз данных

Проверить работоспособность DCS Patroni (etcd/Consul) и REST API

PostgreSQLPatroni

Команда

# 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

Что делает

Проверяет кворум, leader и ёмкость DCS, где Patroni держит leader lock, а также собственное представление каждого участника о своей роли через REST API Patroni. Endpoint /primary лежит в основе проверок работоспособности балансировщика нагрузки (HAProxy).

Когда использовать

Когда Patroni пишет в журнал 'DCS is not accessible', после неожиданного demote/failover и как регулярная проверка работоспособности.

Внимание

Если DCS теряет кворум, Patroni не может продлить leader lock и понижает primary до режима только чтения (если не включён failsafe_mode, Patroni 3.0+); поэтому сбой etcd — это простой записи в базу данных. Когда размер БД etcd достигает квоты (по умолчанию 2 GB), алерт NOSPACE останавливает запись. Запускайте DCS минимум на 3 узлах на отдельных дисках.

Открыть в DBAtlas →

Связанные материалы