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개 노드에서 운영한다.