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 のセクションを参照してください

詳細については、