YAML構成設定

グローバル/ユニバーサル

  • name ホストの名前。クラスターに対して一意である必要があります。

  • namespace : Patroniがクラスターに関する情報を保持する構成ストア内のパス。デフォルト値/"/service/"

  • scope クラスター名

ログ

  • type ログの形式を設定します。 type または type のいずれかです。 type 形式を使用するには、 type をインストールする必要があります。デフォルト値は type です。

  • level 一般的なログレベルを設定します。デフォルト値は level です level を参照してください

  • traceback/_level トレースバックが表示されるレベルを設定します。デフォルト値は traceback/_level です。 traceback/_level を有効にした場合にのみトレースバックを表示する場合は、 traceback/_level に設定します。

  • format ログフォーマット文字列を設定します。ログタイプが format の場合、ログ形式は文字列である必要があります。使用可能な属性については、 format を参照してください。ログタイプが format の場合、ログ形式は文字列に加えてリストになります。各リスト項目はLogRecord属性に対応する必要があります。フィールド名のみが必要で、 %( および ) は省略する必要があることに注意してください。別のキー名でログフィールドを印刷する場合は、辞書キーがログフィールドであり、値がログに印刷するフィールドの名前である辞書を使用します。デフォルト値は %(asctime)s %(levelname)s: %(message)s です

  • dateformat 日時フォーマット文字列を設定します。 dateformat を参照してください。

  • static_fields ログにフィールドを追加します。このオプションは、ログタイプが static_fields に設定されている場合にのみ使用できます。

  • max/_queue/_size Patroniは2段階ロギングを使用しています。ログレコードはインメモリキューに書き込まれ、キューから取得し、stderrまたはファイルに書き込む別のスレッドがあります。内部キューの最大サイズは、デフォルトで max/_queue/_size レコードによって制限されます。これは、過去1時間20分ログを保持するのに十分です。

  • dir アプリケーションログを書き込むディレクトリ。ディレクトリは存在し、Patroniを実行するユーザーが書き込み可能である必要があります。この値を設定すると、アプリケーションはデフォルトで4つの25MBログを保持します。 `file_num`および`file_size`を使用してこれらのリテンション値を調整できます。以下を参照してください。

  • mode ログファイルのアクセス許可たとえば 0644 。指定しない場合、権限は現在のumask値に基づいて設定されます。

  • file/_num 保持するアプリケーションログの数。

  • file/_size ログローリングをトリガーするpatroni.logファイルのサイズバイト単位。

  • loggers このセクションでは、Pythonモジュールごとにロギングレベルを再定義できます

    • patroni.postmaster: WARNING

    • urllib3: DEBUG

  • deduplicate_heartbeat_logs true に設定されている場合、同一の連続したハートビートログは出力されません。デフォルト値は false です。

警告

HAループの実行時間は、リソースの枯渇および同様の問題によるフェイルオーバーを診断する際に非常に貴重な情報になります。 deduplicate_heartbeat_logs が true に設定されている場合、 HAループの実行に対してログは生成されないため、リーダーが変更されないため、この潜在的に役立つ情報はログから利用できません。

次に、json形式でログを記録するようにパトロニを構成する方法の例を示します。

log:
   type: json
   format:
      - message
      - module
      - asctime: '@timestamp'
      - levelname: level
   static_fields:
      app: patroni

ブートストラップ構成

注釈

Patroniが初めてクラスターを初期化し、設定がDCSに保存されると、YAML構成の bootstrap.dcs セクションへの今後の変更はすべて有効になりません。それらを変更する場合は、 bootstrap.dcs またはPatroni bootstrap.dcs のいずれかを使用してください。

  • bootstrap

    • dcs このセクションは、新しいクラスターを初期化した後、指定された構成ストアの`/<namespace>/<scope>/config`に書き込まれます。クラスターのグローバル動的構成。 dcs で説明されているパラメーターを bootstrap.dcs の下に配置できます。Patroniが新しいクラスターを初期化ブートストラップした後、このセクションを構成ストアの`/<namespace>/<scope>/config`に書き込みます。

    • method このクラスターのブートストラップに使用するカスタムスクリプト。

      詳細については、 custom bootstrap methods documentation を参照してください。 initdb が指定された場合、デフォルトの initdb コマンドに戻ります。 initdb は、構成ファイルに method パラメーターが存在しない場合にもトリガーされます。

    • initdb :(オプショナル)initdbに渡されるオプションのリスト。

      • - data-checksums 9.3でpg_rewindが必要な場合、有効にする必要があります。

      • -エンコーディングUTF8 新しいデータベースのデフォルトのエンコーディング。

      • -ロケールUTF8 新しいデータベースのデフォルトのロケール。

    • post/_bootstrap または post/_bootstrap クラスターを初期化した後に実行される追加スクリプト。スクリプトは、接続文字列URLをユーザー名としてクラスタースーパーユーザーを使用して受け取ります。 PGPASSFILE変数は、pgpassファイルの場所に設定されます。

シタス

Enables integration Patroni with Citus. If configured, Patroni will take care of registering Citus worker nodes on the coordinator. You can find more information about Citus support here.

  • group CitusグループID、整数。コーディネーターには 0 を使用し、ワーカーには 1 、 2 などを使用します

  • database citus 拡張機能を作成するデータベース。コーディネーターとすべてのワーカーで同じである必要があります。現在、1つのデータベースのみがサポートされています。

領事

パラメーターのほとんどはオプショナルですが、 host または host のいずれかを指定する必要があります

  • host Consulローカルエージェントのホスト:ポート。

  • url コンスルローカルエージェントのURL、形式はhttp(s)://host:portです。

  • port オプショナルのConsulポート。

  • scheme オプショナル scheme または scheme 、デフォルトは scheme 。

  • token オプショナルのACLトークン。

  • verify オプショナル HTTPS要求のSSL証明書を検証するかどうか。

  • cacert :(オプショナル)ca証明書。存在する場合、検証が有効になります。

  • cert クライアント証明書を含むオプショナルファイル。

  • key クライアントキーを含むオプショナルのファイル。キーが key の一部である場合、空にすることができます。

  • dc オプショナル 通信するデータセンター。デフォルトでは、ホストのデータセンターが使用されます。

  • consistency :(オプショナル)consul一貫性モードを選択します。使用可能な値は default 、 consistent 、または stale です consistency _の詳細

  • checks セッションに使用されるConsulヘルスチェックのオプショナルリスト。デフォルトでは、空のリストが使用されます。

  • register/_service オプショナル スコープパラメーターで定義された名前と、ノードのロールに応じてタグマスター、プライマリ、レプリカ、またはスタンバイリーダーでサービスを登録するかどうか。デフォルトの register/_service 。

  • service/_tags :(オプショナル)ロールとは別にConsulサービスに追加する追加の静的タグ primary / replica / standby-leader 。デフォルトでは、空のリストが使用されます。

  • service/_check/_interval オプショナル 登録されたURLに対してヘルスチェックを実行する頻度。デフォルトは「5s」です。

  • service/_check/_tls/_server/_name オプションTLSを介して接続するときにSNIホストをオーバーライドします。 service/_check/_tls/_server/_name _も参照してください。

token には、次のACL権限が必要です。

service_prefix "${scope}" {
    policy = "write"
}
key_prefix "${namespace}/${scope}" {
    policy = "write"
}
session_prefix "" {
    policy = "write"
}

etcd

パラメーターの大部分はオプショナルですが、 host 、 host 、 host 、 host または host のいずれかを指定する必要があります

  • host etcdエンドポイントのホスト:ポート。

  • hosts 形式のetcdエンドポイントのリスト host1:port1,host2:port2,etc... コンマ区切りの文字列または実際のyamlリストです。

  • use/_proxies このパラメーターがtrueに設定されている場合、Patroniは use/_proxies をプロキシのリストと見なし、etcdクラスターのトポロジ検出を実行しません。

  • url etcdのurl。

  • proxy etcdのプロキシURL。プロキシを使用してetcdに接続する場合は、 proxy の代わりにこのパラメーターを使用します。

  • srv クラスター自動検出のSRVレコードを検索するドメイン。 Patroniは、指定されたドメインのこれらのSRVサービス名を照会しようとします最初に成功するまでこの順序で _etcd-client-ssl 、 _etcd-client 、 _etcd-ssl 、 _etcd 、 _etcd-server-ssl 、 _etcd-server 。 _etcd-server-ssl または _etcd-server のSRVレコードが取得された場合、 ETCDピアプロトコルが使用され、使用可能なメンバーのETCDを照会します。それ以外の場合、SRVレコードのホストが使用されます。

  • srv/_suffix 検出中に照会されるSRV名前のサフィックスを構成します。このフラグを使用して、同じドメインの下の複数のetcdクラスターを区別します。 srv/_suffix と組み合わせてのみ動作します。たとえば、 srv_suffix: foo および srv: example.org が設定されている場合、次のDNS SRVクエリーが作成されます。 _etcd-client-ssl-foo._tcp.example.com および考えられるすべてのETCD SRVサービス名など。

  • protocol オプショナルhttpまたはhttps、指定しない場合、httpが使用されます。 protocol または protocol が指定されている場合、 - はそれらからプロトコルを取得します。

  • username オプショナルのetcd認証のユーザー名。

  • password etcd認証のオプショナルパスワード。

  • cacert :(オプショナル)ca証明書。存在する場合、検証が有効になります。

  • cert クライアント証明書を含むオプショナルファイル。

  • key クライアントキーを含むオプショナルのファイル。キーが key の一部である場合、空にすることができます。

etcdv3

Patroniがプロトコルバージョン3を介してEtcdクラスターで動作するようにしたい場合は、Patroni構成ファイルの etcd3 セクションを使用する必要があります。すべての構成パラメーターは etcd の場合と同じです。

警告

プロトコルバージョン2で作成されたキーはプロトコルバージョン3では可視されず、その逆であるため、Patroni構成ファイルを更新するだけで etcd から etcd3 に切り替えることはできません。さらに、PatroniはEtcdのgRPC-gatewayプロキシを使用してV3 APIと通信します。これは、TLS共通名認証が不可能であることを意味します。

ZooKeeper

  • hosts 形式['host1:port1', 'host2:port2', 'etc...']のZooKeeperクラスターメンバーのリスト。

  • use_ssl オプショナル SSLを使用するかどうか。デフォルト false 。 false に設定されている場合、SSL固有のパラメーターはすべて無視されます。

  • cacert :(オプショナル)CA証明書。存在する場合、検証が有効になります。

  • cert オプショナル クライアント証明書を含むファイル。

  • key オプショナル クライアントキーを含むファイル。

  • key_password オプショナル クライアントキーのパスワード。

  • verify オプショナル 証明書を検証するかどうか。デフォルト true 。

  • set_acls オプショナル 設定されている場合、作成する各ZノードにデフォルトのACLを適用するようにKazooを構成します。 ACLは'x509'スキーマを想定し、キーとしてプリンシパルを使用し、値のリストとして1つ以上の権限を使用して辞書として指定する必要があります。 権限は、 CREATE 、 READ 、 WRITE 、 DELETE または ADMIN のいずれかです。 例 set_acls: {CN=principal1: [CREATE, READ], CN=principal2: [ALL]} 。

  • auth_data オプショナル 接続に使用する認証資格情報。 `scheme`がキーであり、`credential`が値である形式の辞書である必要があります。デフォルトは空の辞書です。

注釈

SSLをサポートするには、 kazoo>=2.6.0 をインストールする必要があります。

出展者

  • hosts 'host1,host2,etc...'形式の出展者ZooKeeperノードの初期リスト。このリストは、出展者ZooKeeperクラスタートポロジが変更されるたびに、自動的に更新されます。

  • poll/_interval ZooKeeperおよび attemptsノードのリストを Exhibitionrから更新する頻度。

  • port エキシビターポート。

Kubernetes

  • bypass/_api/_service オプショナル Kubernetes APIと通信する場合、Patroniは通常`kubernetes`サービスに依存しています。そのアドレスは`KUBERNETES_SERVICE_HOST`環境変数を介してポッドで公開されます。 bypass_api_service`が ``true` に設定されている場合、Patroniはサービスの背後にあるAPIノードのリストを解決し、それらに直接接続します。

  • namespace オプショナル Patroniポッドが実行されているKubernetes名前空間。デフォルト値は`default`です。

  • labels {label1: value1, label2: value2} フォーマットのラベル。これらのラベルは、現在のクラスターに関連付けられている既存のオブジェクトポッドとエンドポイントまたは構成マップを見つけるために使用されます。また、Patroniは、作成するすべてのオブジェクトエンドポイントまたはConfigMapにそれらを設定します。

  • scope/_label オプショナル クラスター名を含むラベルの名前。デフォルト値は`cluster-name`です。

  • bootstrap/_labels オプショナル {label1: value1, label2: value2} 形式のラベル。これらのラベルは、Patroniポッドの状態が initializing new cluster 、 running custom bootstrap script 、 starting after custom bootstrap または creating replica のいずれかである場合に割り当てられます。

  • role/_label ロール`primary`、replica、またはその他のカスタム値を含むラベルの名前。 Patroniは、実行されるポッドにこのラベルを設定します。デフォルト値は role です。

  • leader/_label/_value Postgresロールが primary の場合のポッドラベルのオプショナル値。デフォルト値は primary です。

  • follower/_label/_value Postgresロールが replica の場合のポッドラベルのオプショナル値。デフォルト値は replica です。

  • standby/_leader/_label/_value Postgresロールが standby_leader の場合のポッドラベルのオプショナル値。デフォルト値は primary です。

  • tmp/_role/_label ロール`primary`または`replica`を含む一時ラベルのオプションの名前。このラベルの値は、常に対応するロールのデフォルトを使用します。必要な場合にのみ設定します。

  • use/_endpoints オプショナル。trueに設定されている場合、PatroniはConfigMapの代わりにエンドポイントを使用してリーダー選挙を実行し、クラスター状態を維持します。

  • pod/_ip オプショナル パトローニが実行されているポッドのIPアドレス。この値は、`use_endpoints`が有効な場合に必要で、ポッドのPostgreSQLが昇格するときにリーダーエンドポイントのサブセットを設定するために使用されます。

  • ports オプショナル サービスオブジェクトにポートの名前がある場合、同じ名前がEndpointオブジェクトに表示される必要があります。それ以外の場合、サービスは機能しません。たとえば、サービスが {Kind: Service, spec: {ports: [{name: postgresql, port: 5432, targetPort: 5432}]}} として定義されている場合、 kubernetes.ports: [{/"name/": /"postgresql/", /"port/": 5432}] を設定する必要があります。Patroniはそれを使用してリーダーエンドポイントのサブセットを更新します。このパラメータは、`kubernetes.use_endpoints`が設定されている場合にのみ使用されます。

  • cacert オプショナル Kubernetes API SSL証明書の検証中に使用する信頼できるCAの証明書を含むCA_BUNDLEファイルを指定します。提供されない場合、patroniはServiceAccountシークレットによって提供される値を使用します。

  • retriable/_http/_codes 再試行するK8s APIからのHTTPステータスコードのオプショナルリスト。デフォルトでは、Patroniは 500 、 503 、および 504 、またはK8s API応答に retry-after HTTPヘッダーがある場合に再試行します。

Raft非推奨

  • self/_addr Raft接続をリッスンする ip:port 。 self_addr は、クラスターの他のノードからアクセスできる必要があります。設定されていない場合、ノードはコンセンサスに参加しません。

  • bind/_addr オプショナルのRaft接続をリッスンする ip:port 。指定しない場合、 self_addr が使用されます。

  • partner/_addrs クラスター内の他のPatroniノードのリスト['ip1:port', 'ip2:port', 'etc...']

  • data/_dir Raftログとスナップショットを保存するディレクトリ。指定しない場合、現在の作業ディレクトリが使用されます。

  • password オプショナル 指定されたパスワードでRaftトラフィックを暗号化します。 cryptography Pythonモジュールが必要です。

    Raft実装に関する短いFAQ

    • Qコンセンサスを提供するすべてのノードをリストする方法はありますか?

      A syncobj_admin -conn host:port -status ここで、 host:portは、クラスターノードのいずれかのアドレスです

    • Q コンセンサスの一部分であったノードはなくなったので、他のノードに同じIPを再利用できません。このノードをコンセンサスから削除するにはどうすればよいですか?

      A syncobj_admin -conn host:port -remove host2:port2 host2:port2 は、コンセンサスから削除するノードのアドレスです。

    • Q: syncobj_admin ユーティリティはどこで入手できますか?

      A: これは、Patroni依存関係である pysyncobj モジュールpython RAFT実装とともにインストールされます。

    • Qコンセンサスに追加せずにPatroniノードを実行することは可能ですか?

      A: はい、Patroni構成から raft.self_addr をコメントアウトするか、削除するだけです。

    • Q: PatroniとPostgreSQLを2つのノードでのみ実行することは可能ですか?

      A: はい、3番目のノードで patroni_raft_controller PatroniおよびPostgreSQLなしで実行できます。このようなセットアップでは、プライマリに影響を与えることなく1つのノードを一時的に失う可能性があります。

PostgreSQL

  • postgresql

    • authentication

      • superuser

        • username スーパーユーザーの名前、初期化initdb中に設定され、後でPatroniがpostgresに接続するために使用されます。

        • password スーパーユーザーのパスワード、初期化initdb中に設定します。

        • sslmode オプショナル sslmode _接続パラメーターにマップします。これにより、クライアントはサーバーとのTLSネゴシエーションモードのタイプを指定できます。各モードの動作の詳細については、 sslmode _にアクセスしてください。デフォルトモードは prefer です。

        • sslkey オプショナル sslkey _接続パラメーターにマップします。これは、クライアントの証明書で使用される秘密キーの場所を指定します。

        • sslpassword オプショナル sslpassword _接続パラメーターにマップします。これは、 sslkey で指定された秘密キーのパスワードを指定します。

        • sslcert オプショナル sslcert _接続パラメーターにマップします。これは、クライアント証明書の場所を指定します。

        • sslrootcert オプショナル sslrootcert _接続パラメーターにマップします。これは、クライアントがサーバーの証明書を検証するために使用する1つ以上の認証局CA証明書を含むファイルの場所を指定します。

        • sslcrl オプショナル sslcrl _接続パラメーターにマップします。これは、証明書失効リストを含むファイルの場所を指定します。クライアントは、このリストに存在する証明書を持つサーバーへの接続を拒否します。

        • sslcrldir オプショナル sslcrldir _接続パラメーターにマップします。これは、証明書失効リストを含むファイルが含まれるディレクトリの場所を指定します。クライアントは、このリストに存在する証明書を持つサーバーへの接続を拒否します。

        • sslnegotiation オプショナル sslnegotiation _接続パラメーターにマップします。これは、SSLが使用される場合、SSL暗号化がサーバーとネゴシエートされる方法を制御します。

        • gssencmode オプショナル gssencmode _接続パラメーターにマップします。これは、安全なGSS TCP/IP接続をサーバーとネゴシエートするかどうか、またはその優先順位を決定します

        • channel_binding オプショナル channel_binding _接続パラメーターにマップします。これは、クライアントのチャネルバインディングの使用を制御します。

      • replication

        • username レプリケーションユーザー名。ユーザーは初期化中に作成されます。レプリカはこのユーザーを使用して、ストリーミングレプリケーションを介してレプリケーションソースにアクセスします

        • password レプリケーションパスワード。ユーザーは初期化中に作成されます。

        • sslmode オプショナル sslmode _接続パラメーターにマップします。これにより、クライアントはサーバーとのTLSネゴシエーションモードのタイプを指定できます。各モードの動作の詳細については、 sslmode _にアクセスしてください。デフォルトモードは prefer です。

        • sslkey オプショナル sslkey _接続パラメーターにマップします。これは、クライアントの証明書で使用される秘密キーの場所を指定します。

        • sslpassword オプショナル sslpassword _接続パラメーターにマップします。これは、 sslkey で指定された秘密キーのパスワードを指定します。

        • sslcert オプショナル sslcert _接続パラメーターにマップします。これは、クライアント証明書の場所を指定します。

        • sslrootcert オプショナル sslrootcert _接続パラメーターにマップします。これは、クライアントがサーバーの証明書を検証するために使用する1つ以上の認証局CA証明書を含むファイルの場所を指定します。

        • sslcrl オプショナル sslcrl _接続パラメーターにマップします。これは、証明書失効リストを含むファイルの場所を指定します。クライアントは、このリストに存在する証明書を持つサーバーへの接続を拒否します。

        • sslcrldir オプショナル sslcrldir _接続パラメーターにマップします。これは、証明書失効リストを含むファイルが含まれるディレクトリの場所を指定します。クライアントは、このリストに存在する証明書を持つサーバーへの接続を拒否します。

        • sslnegotiation オプショナル sslnegotiation _接続パラメーターにマップします。これは、SSLが使用される場合、SSL暗号化がサーバーとネゴシエートされる方法を制御します。

        • gssencmode オプショナル gssencmode _接続パラメーターにマップします。これは、安全なGSS TCP/IP接続をサーバーとネゴシエートするかどうか、またはその優先順位を決定します

        • channel_binding オプショナル channel_binding _接続パラメーターにマップします。これは、クライアントのチャネルバインディングの使用を制御します。

      • rewind

        • username pg_rewind のユーザーのオプショナルの名前。ユーザーはpostgres 11+の初期化中に作成され、必要なすべての username _が付与されます。

        • password pg_rewind のユーザーのオプショナルパスワード。ユーザーは初期化中に作成されます。

        • sslmode オプショナル sslmode _接続パラメーターにマップします。これにより、クライアントはサーバーとのTLSネゴシエーションモードのタイプを指定できます。各モードの動作の詳細については、 sslmode _にアクセスしてください。デフォルトモードは prefer です。

        • sslkey オプショナル sslkey _接続パラメーターにマップします。これは、クライアントの証明書で使用される秘密キーの場所を指定します。

        • sslpassword オプショナル sslpassword _接続パラメーターにマップします。これは、 sslkey で指定された秘密キーのパスワードを指定します。

        • sslcert オプショナル sslcert _接続パラメーターにマップします。これは、クライアント証明書の場所を指定します。

        • sslrootcert オプショナル sslrootcert _接続パラメーターにマップします。これは、クライアントがサーバーの証明書を検証するために使用する1つ以上の認証局CA証明書を含むファイルの場所を指定します。

        • sslcrl オプショナル sslcrl _接続パラメーターにマップします。これは、証明書失効リストを含むファイルの場所を指定します。クライアントは、このリストに存在する証明書を持つサーバーへの接続を拒否します。

        • sslcrldir オプショナル sslcrldir _接続パラメーターにマップします。これは、証明書失効リストを含むファイルが含まれるディレクトリの場所を指定します。クライアントは、このリストに存在する証明書を持つサーバーへの接続を拒否します。

        • sslnegotiation オプショナル sslnegotiation _接続パラメーターにマップします。これは、SSLが使用される場合、SSL暗号化がサーバーとネゴシエートされる方法を制御します。

        • gssencmode オプショナル gssencmode _接続パラメーターにマップします。これは、安全なGSS TCP/IP接続をサーバーとネゴシエートするかどうか、またはその優先順位を決定します

        • channel_binding オプショナル channel_binding _接続パラメーターにマップします。これは、クライアントのチャネルバインディングの使用を制御します。

    • callbacks 特定のアクションで実行するコールバックスクリプト。 Patroniは、アクション、ロール、クラスター名を渡します。それらの書き方の例として、 scripts/aws.pyを参照してください。

      • on/_reload 構成のリロードがトリガーされたときにこのスクリプトを実行します。

      • on/_restart : postgresの再起動時にロールを変更せずにこのスクリプトを実行します。

      • on/_role/_change postgresが昇格または降格されているときにこのスクリプトを実行します。

      • on/_start postgresの起動時にこのスクリプトを実行します。

      • on/_stop postgresが停止したときにこのスクリプトを実行します。

    • connect/_address 他のノードおよびアプリケーションからPostgresにアクセスできるIPアドレス+ポート。

    • proxy/_address Postgresの横で実行されている接続プールpgbouncerなどにアクセスできるIPアドレス+ポート。値は proxy_url としてDCSのメンバーキーに書き込まれ、サービス検出に使用または役立つ可能性があります。

    • create/_replica/_methods Patroniノードを新しいレプリカに変更するためのcreateメソッドの順序付けリスト。 /"basebackup/"はデフォルトの方法です。他のメソッドは、それぞれが独自の構成項目として構成されるスクリプトを参照するものとします。詳細については、 create/_replica/_methods を参照してください。

    • data/_dir Postgresデータディレクトリの場所。 data/_dir またはPatroniによって初期化されます。

    • config/_dir Postgres構成ディレクトリの場所。デフォルトはデータディレクトリです。 Patroniによって書き込み可能である必要があります。

    • bin/_dir オプショナルPostgreSQLバイナリpg_ctl、initdb、pg_controldata、pg_basebackup、postgres、pg_isready、pg_rewindへのパス。提供されない場合、または空の文字列の場合、PATH環境変数を使用して実行可能ファイルを見つけます。

    • bin/_name オプショナル カスタムPostgresディストリビューションを使用している場合、Postgresバイナリ名をオーバーライドできるようにします。

      • pg/_ctl オプショナル pg_ctl バイナリのカスタム名。

      • initdb オプショナル initdb バイナリのカスタム名。

      • pg/controldata オプショナル pg_controldata バイナリのカスタム名。

      • pg/_basebackup オプショナル pg_basebackup バイナリのカスタム名。

      • postgres オプショナル postgres バイナリのカスタム名。

      • pg/_isready オプショナル pg_isready バイナリのカスタム名。

      • pg/_rewind オプショナル pg_rewind バイナリのカスタム名。

    • listen PostgresがリッスンするIPアドレス+ポート。ストリーミングレプリケーションを使用している場合、クラスター内の他のノードからアクセスできる必要があります。ポートコンポーネントがコロンで最後のものつまり listen: 127.0.0.1,127.0.0.2:5432 の後に追加される限り、複数のコンマ区切りアドレスが許可されます。 Patroniは、このリストの最初のアドレスを使用して、PostgreSQLノードへのローカル接続を確立します。

    • use/_unix/_socket は、Patroniがクラスターに接続するためのUNIXソケットの使用を優先することを指定します。デフォルト値は false です。 unix_socket_directories が定義されている場合、Patroniはそこから最初に適切な値を使用してクラスターに接続し、適切なものがない場合はTCPにフォールバックします。 postgresql.parameters で unix_socket_directories が指定されていない場合、Patroniはデフォルト値を使用する必要があると想定し、接続パラメーターから host を省略します。

    • use/_unix/_socket/_repl は、Patroniがレプリケーションユーザークラスター接続にUNIXソケットの使用を優先することを指定します。デフォルト値は false です。 unix_socket_directories が定義されている場合、Patroniはそこから最初に適切な値を使用してクラスターに接続し、適切なものがない場合はTCPにフォールバックします。 postgresql.parameters で unix_socket_directories が指定されていない場合、Patroniはデフォルト値を使用する必要があると想定し、接続パラメーターから host を省略します。

    • pgpass pgpass _パスワードファイルへのパス。 Patroniは、 pg/_basebackup、post_initスクリプト、およびその他の状況を実行する前にこのファイルを作成します。場所はPatroniによって書き込み可能である必要があります。

    • recovery/_conf フォロワーの構成時にrecovery.confに書き込まれる追加の構成設定。

    • custom/_conf postgresql.base.conf の代わりに使用されるオプションのカスタム postgresql.conf ファイルへのパス。ファイルはすべてのクラスターノードに存在し、PostgreSQLで読み取り可能であり、実際の postgresql.conf 上のその場所から含まれる必要があります。 Patroniはこのファイルの変更を監視せず、バックアップもしないことに注意してください。ただし、その設定は、Patroni独自の構成機能によってオーバーライドされる場合があります。詳細については、 custom/_conf を参照してください。

    • parameters {ssl: /"on/", ssl_cert_file: /"cert_file/"} 形式のPostgresの構成パラメーターGUC。

    • pg/_hba pg_hba.conf を生成するためにPatroniが使用する行のリスト。 hba_file PostgreSQLパラメーターがデフォルト以外の値に設定されている場合、Patroniはこのパラメーターを無視します。 pg/_hba と合わせて、このパラメーターは pg_hba.conf の管理を簡素化します。

      • - host all all 0.0.0.0/0 md5

      • - host replication promoter 127.0.0.1/32 md5 レプリケーションには、このような行が必要です。

    • pg/_ident pg_ident.conf を生成するためにPatroniが使用する行のリスト。 ident_file PostgreSQLパラメーターがデフォルト以外の値に設定されている場合、Patroniはこのパラメーターを無視します。 pg/_ident と合わせて、このパラメーターは pg_ident.conf の管理を簡素化します。

      • -mapname1 systemname1 pguser1

      • -mapname1 systemname2 pguser2

    • pg/_ctl/_timeout start 、 stop または restart を実行するときにpg_ctlが待機する時間。デフォルト値は60秒です。

    • use/_pg/_rewind レプリカとしてクラスターに参加するときに、元のリーダーでpg/_rewindを使用してみてください。クラスターを data page checksums initdb の --data-checksums オプションで初期化するか、 wal_log_hints を on に設定する必要があります。そうしないと、 pg_rewind は機能しません。

    • remove/_data/_directory/_on/_rewind/_failure このオプションが有効になっている場合、PatroniはPostgreSQLデータディレクトリを削除し、レプリカを再作成します。それ以外の場合は、新しいリーダーに従おうとします。デフォルト値は remove/_data/_directory/_on/_rewind/_failure です。

    • remove/_data/_directory/_on/_diverged/_timelines タイムラインが分岐し、元のプライマリが新しいプライマリからストリーミングを開始できないことに気付いた場合、PatroniはPostgreSQLデータディレクトリを削除し、レプリカを再作成します。このオプションは、 pg_rewind を使用できない場合に役立ちます。 PostgreSQL v10以前のタイムライン発散チェックを実行しているときに、Patroniはレプリケーション資格情報を使用して/"postgres/"データベースに接続しようとします。したがって、このようなアクセスはpg_hba.confで許可する必要があります。デフォルト値は remove/_data/_directory/_on/_diverged/_timelines です。

    • replica/_method basebackup以外のcreate_replica_methodsごとに、同じ名前の構成セクションを追加します。少なくとも、これには、実行する実際のスクリプトへのフルパスを含む/"command/"が含まれる必要があります。他の構成パラメーターは、/"parameter=value/"の形式でスクリプトに渡されます。

    • pre/_promote フェイルオーバー中にリーダーロックを取得した後、レプリカを昇格する前に実行されるフェンシングスクリプト。スクリプトがゼロ以外のコードで終了した場合、パトロニはレプリカをプロモートせず、DCSからリーダーキーを削除します。

    • before/_stop postgresを停止する直前に実行されるスクリプト。コールバックとは対照的に、このスクリプトは同期的に実行され、完了するまでシャットダウンをブロックします。このスクリプトのリターンコードは、その後にシャットダウンを続行するかどうかに影響を与えません。

REST API

  • restapi

    • connect/_address Patroniの connect/_address にアクセスするためのIPアドレスまたはホスト名とポート。クラスターのすべてのメンバーがこのアドレスに接続できる必要があるため、Patroniセットアップがローカルホスト内のデモを目的としている場合を除き、このアドレスは非/"localhost/"またはループバックアドレスつまり/"localhost/ "または/"127.0.0.1/")。 HTTPヘルスチェック/"listen/"REST APIパラメーターについて以下を読んでください、ユーザクエリ直接またはREST APIを介して、およびによって実行されるヘルスチェックのエンドポイントとして機能できます。リーダー選挙中のクラスターメンバーたとえば、リーダーがまだ実行されているかどうか、またはクエリを実行するノードの前にあるWAL位置を持つノードがあるかどうかを判断するため。connect_addressはメンバーキーに配置されますDCSでは、メンバー名をアドレスに変換してREST APIに接続できるようにします。

    • listen PatroniがREST APIをリッスンするIPアドレスまたはホスト名とポート-上記のように、参加ノード間で同じヘルスチェックとクラスターメッセージも提供します。 HAProxyまたはHTTP /"OPTION/"または/"GET/"チェックを実行できるその他のロードバランサーのヘルスチェック情報を提供します。

    • authentication オプショナル

      • username 安全でないREST APIエンドポイントを保護するためのBasic-authユーザー名。

      • password 安全でないREST APIエンドポイントを保護するためのBasic-authパスワード。

    • certfile :(オプショナル) PEM形式の証明書を含むファイルを指定します。 certfileが指定されないか、空のままの場合、APIサーバーはSSLなしで動作します。

    • keyfile :(オプショナル) PEM形式の秘密キーを含むファイルを指定します。

    • keyfile/_password オプショナル キーファイルを復号するためのパスワードを指定します。

    • cafile オプショナル クライアント証明書の検証中に使用する信頼できるCAの証明書を含むCA_BUNDLEを含むファイルを指定します。

    • ciphers オプショナル 許可される暗号スイートを指定します 例 /"ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128 -GCM-SHA256:!SSLv1:!SSLv2:!SSLv3:!TLSv1:!TLSv1.1/")

    • verify/_client オプショナル none デフォルト optional または required 。 none REST APIがクライアント証明書をチェックしない場合。すべてのREST API呼び出しに required クライアント証明書が必要な場合。すべての安全でないREST APIエンドポイントに optional クライアント証明書が必要な場合。 required を使用する場合、証明書の署名検証が成功した場合、クライアント認証は成功します。 optional の場合、クライアント証明書は PUT 、 POST 、 PATCH 、および DELETE 要求についてのみチェックされます。

    • allowlist オプショナル 安全でないREST APIエンドポイントを呼び出すことができるホストのセットを指定します。単一の要素は、 CIDR表記を使用したホスト名、IPアドレス、またはネットワークアドレスです。デフォルトでは allow all が使用されます。 allowlist または allowlist_include_members が設定されている場合、含まれないものは拒否されます。

    • allowlist/_include/_members オプショナル true に設定すると、DCSに登録されている他のクラスターメンバーから安全でないREST APIエンドポイントにアクセスできますIPアドレスまたはホスト名はメンバー api_url から取得されます。 OSが発信接続に別のIPを使用する場合があることに注意してください。

    • http/_extra/_headers オプショナル HTTPヘッダーを使用すると、REST APIサーバーはHTTP応答で追加情報を渡します。

    • https/_extra/_headers オプショナル HTTPSヘッダーにより、TLSが有効になっているときにREST APIサーバーはHTTP応答で追加情報を渡します。これは、 http_extra_headers で設定された追加情報も渡します。

    • request_queue_size :(オプショナル) Patroni REST APIが使用するTCPソケットの要求キューサイズを設定します。 キューがいっぱいになると、それ以降の要求は/"Connection denied/"エラーを取得します。デフォルト値は5です。

    • server_tokens オプショナル Server HTTPヘッダーの値を構成します。 - Minimal ヘッダーにはPatroniバージョンのみが含まれます。例、 Patroni/4.0.0 。 - ProductOnly ヘッダーには製品名のみが含まれます。例、 Patroni 。 - Original デフォルト ヘッダーは元の動作を公開し、BaseHTTPおよびPythonバージョンを表示します。 BaseHTTP/0.6 Python/3.12.3 。

次に、 http_extra_headers と http_extra_headers の両方の例を示します。

restapi:
  listen: <listen>
  connect_address: <connect_address>
  authentication:
    username: <username>
    password: <password>
  http_extra_headers:
    'X-Frame-Options': 'SAMEORIGIN'
    'X-XSS-Protection': '1; mode=block'
    'X-Content-Type-Options': 'nosniff'
  cafile: <ca file>
  certfile: <cert>
  keyfile: <key>
  https_extra_headers:
    'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'

警告

  • restapi.connect_address は、特定のPatroniクラスターのすべてのノードからアクセスできる必要があります。内部的にPatroniは、リーダーレース中にそれを使用して、レプリケーションラグを最小限に抑えたノードを見つけます。

  • クライアント証明書の検証を有効にしている場合 restapi.verify_client が required に設定されている場合、 restapi.verify_client は ctl.certfile 、 ctl.keyfile 、 ctl.keyfile_password に restapi.verify_client を提供します。提供されない場合、Patroniは正しく動作しません。

CTL

  • ctl オプショナル

    • authentication

      • username 保護されたREST APIエンドポイントにアクセスするための基本認証ユーザー名。提供されない場合、 username はREST APIの/"username/"パラメーターで提供された値を使用します。

      • password 保護されたREST APIエンドポイントにアクセスするための基本認証パスワード。提供されない場合、 password はREST APIの/"password/"パラメーターで指定された値を使用します。

    • insecure SSL証明書を検証せずにREST APIへの接続を許可します。

    • cacert REST API SSL証明書の検証中に使用する信頼できるCAの証明書が含まれるCA_BUNDLEファイルまたはディレクトリを指定します。提供されない場合、 cacert はREST APIの/"cafile/"パラメーターで指定された値を使用します。

    • certfile PEM形式のクライアント証明書を含むファイルを指定します。

    • keyfile PEM形式のクライアント秘密キーを含むファイルを指定します。

    • keyfile/_password クライアントキーファイルを復号するためのパスワードを指定します。

ウォッチドッグ

  • mode off 、 automatic または required 。 off ウォッチドッグが無効な場合。 automatic ウォッチドッグは利用可能な場合は使用されますが、ない場合は無視されます。 required の場合、ウォッチドッグを正常に有効にできない限り、ノードはリーダーになりません。

  • device ウォッチドッグデバイスへのパス。デフォルト /dev/watchdog 。

  • safety_margin ウォッチドッグトリガーとリーダーキーの有効期限間の安全マージンの秒数。

タグ

  • clonefrom true または false 。 true に設定されている場合、他のノードはブートストラップにこのノードを使用することを優先する場合がありますから pg_basebackup を取得します。 clonefrom タグが true に設定されているノードが複数ある場合、ブートストラップするノードがランダムに選択されます。デフォルト値は false です。

  • noloadbalance true または false 。 true に設定されている場合、ノードは GET /replica REST APIヘルスチェックのHTTPステータスコード503を返すため、ロードバランシングから除外されます。デフォルトの false 。

  • replicatefrom レプリケートする別のレプリカの名前。カスケード複製をサポートするために使用されます。

  • nosync true または false 。 true に設定されている場合、ノードは同期レプリカとして選択されません。

  • sync_priority 整数、 synchronous_mode が on に設定されている場合、同期レプリカ選択中にこのノードが持つ優先順位を制御します。優先度の高いノードは、優先度の低いノードより優先されます。 sync_priority が0または負の場合-このようなノードは、 synchronous_standby_names PostgreSQLパラメーター nosync: true と同様に、 synchronous_standby_names に書き込むことはできません。このパラメーターは、 pg_stat_replication ビューで報告される sync_priority 値とは逆の意味を持っていることに注意してください。

  • nofailover true または false は、このノードがリーダーレースに参加してリーダーになることを許可されるかどうかを制御します。デフォルトは false 、このノードがリーダーレースに_can_参加できることを意味します。

  • failover_priority 整数、フェイルオーバー中にこのノードが持つべき優先度を制御します。優先度の高いノードが同じ量のWALを受信/再生した場合、優先度の低いノードよりも優先されます。ただし、優先度に関係なく、受信/再生LSNの値が高いノードが優先されます。 failover_priority が0または負の場合-そのようなノードはリーダーレースに参加し、リーダーになることはできません nofailover: true と同様に。

  • nostream true または false 。 true に設定されている場合、ノードはレプリケーションプロトコルを使用してWALをストリーミングしません。代わりに、アーカイブリカバリ restore_command が構成されている場合および pg_wal / pg_xlog ポーリングに依存します。また、ノード自分自身とそのすべてのカスケードレプリカの永久論理レプリケーションスロットのコピーと同期も無効にします。プライマリノードでこのタグを設定しても効果はありません。

警告

nofailover または failover_priority のいずれかのみを提供します。 nofailover: true の提供は failover_priority: 0 と同じであり、 nofailover: false を提供するとノード優先度1が与えられます。

これらの事前定義されたタグに加えて、独自のタグを追加することもできます。

  • key1 true

  • key2 false

  • key3 1.4

  • key4 /"RandomString/"

タグは REST API および REST API に表示されます。これらのタグを使用して、インスタンスの状態を確認することもできます。タグがインスタンスに定義されていない場合、または各値が照会値と一致しない場合、HTTPステータスコード503が返されます。