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がリーダーロックを保持するDCSのクォーラム、リーダー、容量と、Patroni REST APIを通じた各メンバー自身のロール認識を確認する。/primaryエンドポイントはロードバランサ(HAProxy)のヘルスチェックの基礎となる。

使用する場面

Patroniが'DCS is not accessible'をログに出したとき、予期しない降格/フェイルオーバーの後、定期的なヘルスチェックとして。

注意

DCSがクォーラムを失うと、Patroniはリーダーロックを更新できず、プライマリを読み取り専用に降格する(failsafe_mode、Patroni 3.0以降が有効な場合を除く)。したがってetcdの停止はデータベースの書き込み停止となる。etcdのDBサイズがクォータ(デフォルト2 GB)に達すると、NOSPACEアラームが書き込みを停止する。DCSは別々のディスク上の少なくとも3ノードで実行する。

DBAtlas で開く →

関連項目