etcd#
etcd
は、分散調整に一般的に使用される分散された信頼性の高いキー-値ストアです。
TPAは、PostgreSQLクラスターのフェールオーバーマネージャーとしてPatroniを使用する場合、主に分散構成ストアDCSとしてetcd
を構成します。
M1アーキテクチャでPatroniを有効にすると、TPAはデフォルトで3ノードetcd
クラスターを自動的に展開および構成します。
インストール#
TPAは、構成されたシステムリポジトリから入手可能なetcd
パッケージをインストールします。
SLESおよびRHELベースのシステムでは、TPAはPGDG extras
リポジトリを自動的に有効にしてetcd パッケージを提供します。
etcdパッケージバージョン#
デフォルトでは、TPAはetcdの利用可能な最新バージョンをインストールします。
インストールされるetcdパッケージのバージョンは、 config.yml
ファイルのcluster_vars
セクションの下のetcd_package_version: xxx
を含めることにより指定できます。
cluster_vars:
…
etcd_package_version: 3.6.2*
…
aptまたはyumが受け入れるバージョン指定子を使用できます。
バージョンが一致しない場合は、*
ワイルドカードを先頭に追加してみてください。これは、パッケージバージョンに2:...
のようなエポック修飾子がある場合に必要になることがよくあります。
構成#
TPAは、config.yml
設定とクラスタートポロジに基づいて/etc/etcd/etcd.conf
ファイルを生成します。ピアおよびクライアントの通信URL、データディレクトリ、およびSSL証明書を構成します。
セキュリティ#
TPAは、 etcd クラスターとの通信およびetcd
クラスター内の通信を保護するための堅牢なオプションを提供します。これは、主にetcd_ssl_enabled
およびetcd_authentication_mode 変数によって制御されます。
TLS暗号化#
etcd_ssl_enabled: true を設定すると、すべてのetcd
トラフィックのTLS暗号化が有効になります。
TPAは自動的に次のことを行います。
各etcdノードのクラスターCAとサーバー証明書適切なIPおよびDNSサブジェクト代替名を含むを生成します。
ピアツーピア通信とクライアントサーバー通信の両方にHTTPSを使用するようにetcdを構成します。
HTTPSを介して接続し、CAを使用してサーバー証明書を検証するようにクライアント
etcdctl、Patroniを構成します。
クライアント認証#
TLS暗号化が有効になる etcd_ssl_enabled: true すると、
etcd_authentication_mode 変数を使用して認証モードを選択できます。
``none`` デフォルト クライアント認証は実行されません。
etcd_ssl_enabledがtrueの場合、通信はTLS暗号化にのみ依存します。``basic`` : クライアントにユーザー名とパスワードを使用して認証する必要があります。自動的にTPA
生成されたパスワードで管理用
rootユーザーを作成します。Patroniを使用する場合、特定のキープレフィックス
/tpa/cluster_nameなどにのみreadwriteアクセスを持つPatroniの専用の最小特権ユーザーpatroni_etcd_user経由で構成可能。これらの専用の資格情報を使用するようにPatroniを構成します。
``mtls`` : クライアントピアノードを含むに、信頼できるクラスターCAによって署名された有効なTLS証明書を提示する必要があります。 TPAは自動的に
ピア接続の両方のクライアント証明書を要求および検証するように
etcdを構成します。認証のためにクライアント証明書を提示するようにクライアント
etcdctl、Patroniを構成します。
注釈
TPAには、展開または再構成中に異なる認証モード間の移行を処理する堅牢なロジックが含まれており、クラスターの安定性を保証します。構成検証チェックは、無効な組み合わせを防ぐために早期に実行されますたとえば、 mtls には`etcd_ssl_enabled: true` が必要です。ただし、現在`etcd_ssl_enabled` の値の移行つまり`false` から`true` またはその逆を処理することはできません。この制限により、 etcd_ssl_enabled の別の値を必要とする`etcd_authentication_mode` 値を切り替えることもできなくなります。例、basic から`mtls` 、または`mtls` から`basic` 。 23.41.0より前のバージョンのTPAを使用して展開されたクラスターはデフォルトで`etcd_ssl_enabled: false` に設定されているため、 etcd_ssl_enabled を変更することはできません。
etcd には、次の変数を設定できます。
Variable |
Default value |
Description |
|---|---|---|
etcd_peer_port |
2380 |
`etcd`がピアツーピアサーバー間通信に使用するTCPポート。 |
etcd_client_port |
2379 |
`etcd`がクライアント通信に使用するTCPポート。 |
etcd_ssl_enabled |
false* |
すべての`etcd`通信のSSL/TLS暗号化を有効にします。セキュリティを参照してください。 * tpaexec configure`を介した新しいクラスターの場合は`true。 |
etcd_authentication_mode |
none* |
クライアント認証モード none、basic、mtls を定義します。 none`以外のモードの場合は`etcd_ssl_enabled: true`が必要です。セキュリティを参照してください。 * `tpaexec configure`を介した新しいクラスターの場合は`mtls。 |
etcd_compaction_mode |
revision |
自動圧縮モード revision`または`periodic 。 |
etcd_compaction_retention |
10 |
自動圧縮のリテンション値。 revision`モードの場合、これは保持するリビジョンの数です。 `periodic`モードの場合、これは時間間隔たとえば `1h 。 |
tpaexec upgrade を使用したetcdのマイナー更新#
etcd v3.6は--enable-v2 フラグを完全に削除し、v2
APIをまったく使用できません。
TPAアップグレードは、v3 APIを使用したetcd
バージョンのアップグレードのみをサポートしています。
TPAを使用してクラスター内のetcd
をアップグレードする前に、
migrated from the v2 API to the v3 API があることを確認してください
目的のバージョンを追加の引数としてtpaexec upgrade
コマンドに渡すこともできます。
tpaexec upgrade -e etcd_package_version="<desired version>" --components=etcd
詳細については、 package version selection and upgrade のセクションを参照してください。
アップグレードのためにetcdを選択するには、 tpaexec upgrade
コマンドに渡される--components フラグにetcd またはall
が含まれていることを確認します
component selection for upgrade のセクションを参照してください
詳細については、