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-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:port2host2:port2は、コンセンサスから削除するノードのアドレスです。Q:
syncobj_adminユーティリティはどこで入手できますか?A: これは、Patroni依存関係である
pysyncobjモジュールpython RAFT実装とともにインストールされます。Qコンセンサスに追加せずにPatroniノードを実行することは可能ですか?
A: はい、Patroni構成から
raft.self_addrをコメントアウトするか、削除するだけです。Q: PatroniとPostgreSQLを2つのノードでのみ実行することは可能ですか?
A: はい、3番目のノードで
patroni_raft_controllerPatroniおよび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_filePostgreSQLパラメーターがデフォルト以外の値に設定されている場合、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_filePostgreSQLパラメーターがデフォルト以外の値に設定されている場合、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 checksumsinitdbの--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。noneREST 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 オプショナル
ServerHTTPヘッダーの値を構成します。 -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 ウォッチドッグトリガーとリーダーキーの有効期限間の安全マージンの秒数。