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`を使用して調整できます(以下を参照)。

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

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

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

    • patroni.postmaster: WARNING

    • urllib3: DEBUG

ここでは、JSON形式でログを記録するようにpatroniを設定する方法の例を示します。

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ファイルの場所に設定されます。

Citus

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つだけです。

Consul

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

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

  • url :Consulローカルエージェントの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サービスに追加する追加の静的タグ( master / 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 :host1:port1,host2:port2,etc...の形式のetcdエンドポイントのリスト。カンマ区切りの文字列または実際の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 が設定されている場合、次のDNSSRVクエリが作成されます: _etcd-client-ssl-foo._tcp.example.com (考えられるすべてのETCDSRVサービス名に対して同様)。

  • 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 に切り替えることはできません。

ZooKeeper

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

  • use_ssl :(オプション)SSLが使用されるかどうか。デフォルトは false です。 false に設定すると、SSL固有のパラメータはすべて無視されます。

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

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

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

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

  • verify :(オプション)証明書を検証するかどうか。デフォルトは true です。

  • set_acls :(オプション)設定した場合、作成する各ZNodeにデフォルトの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 :エキシビター(ZooKeeper)ノードの初期リスト(形式:「host1、host2、etc...」)。このリストは、Exhibitionor(ZooKeeper)クラスタートポロジが変更されるたびに自動的に更新されます。

  • poll/_interval :ZooKeeperノードとExhibitionrノードのリストをExhibitionrから更新する頻度。

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

Kubernetes

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

  • namespace :(オプション)Patroniポッドが実行されているKubernetes名前空間。デフォルト値は「デフォルト」です。

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

  • scope/_label :(オプション)クラスター名を含むラベルの名前。デフォルト値は「クラスタ名」です。

  • role/_label :(オプション)ロール(マスター、レプリカ、またはその他のカスタム値)を含むラベルの名前。Patroniは、このラベルを実行するポッドに設定します。デフォルト値は role です。

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

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

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

  • tmp_/role/_label :(オプション)ロール(マスターまたはレプリカ)を含む一時ラベルの名前。このラベルの値には、対応するロールのデフォルトが常に使用されます。必要な場合のみ設定してください。

  • use/_endpoints :(オプション)trueに設定すると、PatroniはConfigMapの代わりにエンドポイントを使用してリーダーの選出を実行し、クラスターの状態を維持します。

  • pod/_ip :(オプション)Patroniが実行されているポッドのIPアドレス。この値は「use_endpoints」が有効な場合に必須であり、ポッドのPostgreSQLが昇格されるときにリーダーエンドポイントサブセットを設定するために使用されます。

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

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

  • retriable/_http/_codes :(オプション)再試行するK8sAPIからのHTTPステータスコードのリスト。デフォルトでは、Patroniは 500 、 503 、および 504 、またはK8sAPI応答に 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はクラスターノードの1つのアドレスです。

    • Q:コンセンサスに含まれていたノードが消滅したため、同じIPを他のノードに再利用できません。このノードをコンセンサスから削除するにはどうすればよいですか?

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

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

      A:Patroniの依存関係である pysyncobj モジュール(PythonRAFT実装)と一緒にインストールされます。

    • 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)中に設定され、後でPostgresに接続するためにPatroniによって使用されます。

        • password :スーパーユーザーのパスワード。初期化(initdb)中に設定されます。

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

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

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

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

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

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

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

        • gssencmode :(オプション) gssencmode _接続パラメータにマップします。これにより、セキュアなGSSTCP/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 _接続パラメータにマップします。これは、証明書失効リストを含むファイルが含まれるディレクトリの場所を指定します。クライアントは、このリストに存在する証明書を持つサーバーへの接続を拒否します。

        • gssencmode :(オプション) gssencmode _接続パラメータにマップします。これにより、セキュアなGSSTCP/IP接続がサーバとネゴシエートされるかどうか、またはどのような優先順位でネゴシエートされるかを決定します。

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

      • rewind :

        • username :(オプション) pg_rewind のユーザーの名前。ユーザーはpostgres11以降の初期化中に作成され、必要なすべての username _が付与されます。

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

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

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

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

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

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

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

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

        • gssencmode :(オプション) gssencmode _接続パラメータにマップします。これにより、セキュアなGSSTCP/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アドレス+ポート。値はDCSのメンバーキーに proxy_url として書き込まれ、サービス検出に使用または役立つ可能性があります。

    • create/_replica/_methods :Patroniノードを新しいレプリカに変えるための作成メソッドの順序付きリスト。/"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にフォールバックします。 unix_socket_directories が postgresql.parameters で指定されていない場合、Patroniはデフォルト値を使用する必要があると想定し、接続パラメータから host を省略します。

    • use/_unix/_socket/_repl :Patroniがレプリケーションユーザークラスター接続にUNIXソケットの使用を優先することを指定します。デフォルト値は false です。 unix_socket_directories が定義されている場合、Patroniはその中の最初の適切な値を使用してクラスターに接続し、適切なものがない場合はtcpにフォールバックします。 unix_socket_directories が postgresql.parameters で指定されていない場合、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 :Postgresの構成設定のリスト。これらの多くは、レプリケーションが機能するために必要です。

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

      • -すべてをホスト0.0.0.0/0md5

      • -ホストレプリケーションレプリケータ127.0.0.1/32md5 :レプリケーションには次のような行が必要です。

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

      • -マップ名1システム名1pguser1

      • -マップ名1システム名2pguser2

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

    • use/_pg/_rewind :前のリーダーがレプリカとしてクラスターに参加するときに、元のリーダーで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 が使用できない場合に役立ちます。PostgreSQLv10以前でタイムラインの相違チェックを実行している間、Patroniはレプリケーション資格情報を使用して「postgres」データベースに接続しようとします。したがって、そのようなアクセスはpg_hba.confで許可される必要があります。デフォルト値は remove/_data/_directory/_on/_diverged/_timelines です。

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

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

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

RESTAPI

  • restapi :

    • connect/_address :Patroniの connect/_address にアクセスするためのIPアドレス(またはホスト名)とポート。クラスターのすべてのメンバーがこのアドレスに接続できる必要があるため、Patroniセットアップがローカルホスト内のデモを目的としている場合を除き、このアドレスは非「ローカルホスト」またはループバックアドレス(つまり、「ローカルホスト」)である必要があります。"または/"127.0.0.1/")。これは、HTTPヘルスチェック(/"listen/"RESTAPIパラメータについては以下を参照)のエンドポイントとして機能し、ユーザークエリ(直接またはRESTAPI経由で)や、リーダー選出中のクラスターメンバー(たとえば、リーダーがまだ実行中かどうか、またはクエリを実行しているノードよりも前のWAL位置を持つノードがあるかどうかを判断するためなど)。connect_addressはメンバーキーに入れられます。DCSでは、メンバー名をアドレスに変換してRESTAPIに接続できるようになります。

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

    • authentication :(オプション)

      • username :安全でないRESTAPIエンドポイントを保護するためのBasic認証ユーザー名。

      • password :安全でないRESTAPIエンドポイントを保護するためのBasic認証パスワード。

    • 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 の場合、RESTAPIはクライアント証明書をチェックしません。すべてのRESTAPI呼び出しに required クライアント証明書が必要な場合。すべての安全でないRESTAPIエンドポイントに optional クライアント証明書が必要な場合。 required が使用される場合、証明書の署名の検証が成功すると、クライアント認証は成功します。 optional の場合、クライアント証明書は PUT 、 POST 、 PATCH 、および DELETE リクエストについてのみチェックされます。

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

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

    • http/_extra/_headers :(オプション):HTTPヘッダーを使用すると、RESTAPIサーバーはHTTP応答で追加情報を渡すことができます。

    • https/_extra/_headers :(オプション):TLSが有効な場合、HTTPSヘッダーを使用すると、RESTAPIサーバーはHTTP応答で追加情報を渡すことができます。これにより、 http_extra_headers に設定された追加情報も渡されます。

    • request_queue_size :(オプション):PatroniRESTAPIで使用されるTCPソケットのリクエストキューサイズを設定します。キューがいっぱいになると、それ以降のリクエストでは「接続が拒否されました」エラーが発生します。デフォルト値は5です。

次に、 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 :保護されたRESTAPIエンドポイントにアクセスするための基本認証ユーザー名。指定されない場合、 username はRESTAPIの「username」パラメータに指定された値を使用します。

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

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

    • cacert :RESTAPISSL証明書の検証中に使用する、CA_BUNDLEファイルが含まれるファイル、または信頼されたCAの証明書が含まれるディレクトリを指定します。指定されない場合、 cacert はRESTAPIの「cafile」パラメータに指定された値を使用します。

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

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

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

Watchdog

  • mode : off 、 automatic または required 。 off Watchdogが無効になっている場合。 automatic の場合、Watchdogが使用可能な場合は使用されますが、使用できない場合は無視されます。 required の場合、Watchdogが正常に有効にならない限り、ノードはリーダーになりません。

  • device :Watchdogデバイスへのパス。デフォルトは /dev/watchdog です。

  • safety_margin :Watchdogのトリガーとリーダーキーの有効期限の間の安全マージンの秒数。

タグ

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

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

  • replicatefrom :別のレプリカのIPアドレス/ホスト名。カスケードレプリケーションをサポートするために使用されます。

  • nosync : true または false 。 true に設定すると、ノードは同期レプリカとして選択されなくなります。

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

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

警告

nofailover または failover_priority のいずれか1つだけを指定します。 nofailover: true を指定すると failover_priority: 0 と同じになり、 nofailover: false を指定するとノードの優先順位1が与えられます。

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

  • key1 : true

  • key2 : false

  • key3 : 1.4

  • key4 : /"RandomString/"

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