YAML構成設定

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

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

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

  • scope :クラスター名

ログ

  • level :一般的なログレベルを設定します。デフォルト値は level です( level を参照)

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

  • format :ログフォーマット文字列を設定します。デフォルト値は %(asctime)s%(levelname)s:%(message)s です( format を参照)

  • dateformat :日時フォーマット文字列を設定します。( dateformat を参照)

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

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

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

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

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

    • patroni.postmaster: WARNING

    • urllib3: DEBUG

ブートストラップ構成

注釈

Patroniが初めてクラスターを初期化し、設定がDCSに保存されると、YAML構成の bootstrap.dcs セクションに対する今後のすべての変更は有効になりません。それらを変更したい場合は、 patronictl edit-config または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が必要な場合は有効にする必要があります。

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

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

    • users :新しいクラスターを初期化した後に作成する必要がある追加のユーザー。以下の users を参照してください。

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

Bootstrapユーザー構成

クラスターの初期化後に作成する必要があるユーザー:

  • admin :ユーザーの名前

  • password :(オプション)ユーザーのパスワード

  • options :CREATEUSERステートメントのオプションのリスト

  • -createrole

  • -createdb

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 Etcdを使用します

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

Consul

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

  • host :Consulローカルエージェントのhost:port。

  • 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 :(オプション)scopeパラメーターで定義された名前と、ノードのロールに応じてタグmaster、primary、replica、またはstandby-leaderでサービスを登録するかどうか。デフォルトは 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エンドポイントのhost:port。

  • 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クエリが作成されます。

  • 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]} 。

注釈

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

出展者

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

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

  • port :出展者ポート。

Kubernetes

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

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

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

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

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

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

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

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

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

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

  • pod/_ip :(オプション)Patroniが実行されているポッドの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 :(オプション)KubernetesAPISSL証明書の検証中に使用する信頼できるCAの証明書を含むCA_BUNDLEファイルを含むファイルを指定します。提供されない場合、パトニは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は、クラスターノードのいずれかのアドレスです

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

        • 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 :IPアドレス+他のノードやアプリケーションからPostgresにアクセスするためのポート。

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

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

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

    • pgpass : pgpass _パスワードファイルへのパス。Patroniは、pg/_basebackup、post_initスクリプトを実行する前Etcd、このファイルを作成します。場所は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 の管理を簡素化します。

      • -hostallall0.0.0.0/0md5

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

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

      • -mapname1systemname1pguser1

      • -mapname1systemname2pguser2

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

    • use/_pg/_rewind :レプリカとしてクラスターに参加するときに、元のリーダーでpg/_rewindを使用してみてください。

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

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

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

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

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

RESTAPI

  • restapi :

    • connect/_address :Patroniの connect/_address にアクセスするためのIPアドレス(またはホスト名)とポート。クラスターのすべてのメンバーがこのアドレスに接続できる必要があります。"または/"127.0.0.1/")。HTTPヘルスチェック(/"listen/"RESTAPIパラメーターについては以下を参照)のエンドポイントとして、またユーザークエリ(直接またはRESTAPIを介して)、およびリーダー選挙中のクラスターメンバー(たとえば、リーダーがまだ実行されているかどうかを判断するため、またはクエリを実行しているよりも先にWAL位置を持つノードがあるかどうかEtcd)connect_addressはメンバーキーに入れられますDCSでは、メンバー名をアドレスに変換してRESTAPIに接続できます。

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

    • authentication :(オプション)

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

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

    • 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-128-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エンドポイントの呼び出しを許可するホストのセットを指定します。単一の要素は、ホスト名、IPアドレス、またはCIDR表記を使用したネットワークアドレスになります。デフォルトでは 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 :(オプション):HTTPSヘッダーにより、RESTAPIサーバーは、TLSが有効になっている場合に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エンドポイントにアクセスするための基本認証ユーザー名。提供されない場合、patanictlはRESTAPI/"username/"パラメーターに提供された値を使用します。

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

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

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

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

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

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

ウォッチドッグ

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

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

  • safety_margin :ウォッチドッグのトリガーとリーダーキーの有効期限間のセーフティマージンの秒数。

タグ

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

  • 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 に設定されている場合、ノードは同期レプリカとして選択されません。

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

  • key1 : true

  • key2 : false

  • key3 : 1.4

  • key4 : /"RandomString/"

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