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、2Etcdを使用します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-afterHTTPヘッダーがある場合。
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トラフィックを暗号化します。
cryptographypythonモジュールが必要です。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_filePostgreSQLパラメーターがデフォルト以外の値に設定されている場合、Patroniはこのパラメーターを無視します。 pg/_hba とともに、このパラメーターはpg_hba.confの管理を簡素化します。-hostallall0.0.0.0/0md5
-ホストレプリケーションレプリケーター127.0.0.1/32md5 :レプリケーションにはこのような行が必要です。
pg/_ident :Patroniが
pg_ident.confを生成するために使用する行のリスト。ident_filePostgreSQLパラメーターがデフォルト以外の値に設定されている場合、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。noneRESTAPIの場合、クライアント証明書はチェックされません。すべての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 :ウォッチドッグのトリガーとリーダーキーの有効期限間のセーフティマージンの秒数。