DBAtlas · 데이터베이스 운영 아틀라스

Patroni DCS(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

하는 일

Patroni가 leader lock을 보관하는 DCS의 quorum, leader, 용량과 Patroni REST API를 통해 각 멤버가 보는 자신의 역할을 점검한다. /primary 엔드포인트는 로드 밸런서(HAProxy) 상태 점검의 기반이다.

사용 시점

Patroni가 'DCS is not accessible'을 기록할 때, 예기치 않은 demote/페일오버 후, 정기 상태 점검으로.

주의

DCS가 quorum을 잃으면 Patroni는 leader lock을 갱신할 수 없어 primary를 읽기 전용으로 강등한다(failsafe_mode, Patroni 3.0+가 활성화되지 않은 경우). 따라서 etcd 장애는 데이터베이스 쓰기 장애가 된다. etcd DB 크기가 quota(기본 2 GB)에 도달하면 NOSPACE 알람이 쓰기를 멈춘다. DCS는 별도 디스크를 사용하는 최소 3개 노드에서 운영한다.

DBAtlas에서 열기 →

관련 항목