Architecture#

KubernetesでEDB Postgres分散を展開するときは、これらの主なアーキテクチャの側面を考慮してください。

Kubernetes用に分散されたEDB Postgresは Kubernetes operator

プライベート、パブリック、ハイブリッド、またはマルチクラウド環境で実行されるEDB Postgres分散クラスターを展開および管理するように設計されています。

EDB Postgres分散との関係#

は、高いパフォーマンスと可用性を実現するように設計されたPostgresのマルチマスター実装です。 PGDは通常、 Trusted Postgres Architect (TPA) を使用した展開が必要です。このツールは、 Ansible を使用してPGDクラスターをプロビジョニングおよび展開するツールです。

EDB Postgres Distributed for Kubernetesは、コンテナとKubernetesを活用して、PGDクラスターを展開する別の方法を提供します。利点は、結果のアーキテクチャが次のことです。

  • 自己修復性と堅牢性があります。

  • 宣言的構成を介して管理されます。

  • 広大で成長を続けるKubernetesエコシステムを利用します。

KubernetesのEDB Postgresとの関係#

PGDクラスターは、1つ以上の PGDグループ で構成され、それぞれが1つ以上の PGDノード があります。 PGDノードはPostgresデータベースです。 EDB Postgres Distributed for Kubernetesは、 EDB Postgres for Kubernetesで定義されたCluster リソース、特に単一のインスタンスつまりレプリカなしのクラスターを使用して各PGDノードを内部管理します。

.spec.cnp の各Cluster によって作成された単一のPostgreSQLインスタンスを構成できます。

PGDグループ仕様の

EDB Postgres Distributed for Kubernetesでは、 EDB Postgres for Kubernetesと同様に、基になるデータベース実装がデータレプリケーションを担当します。ただし、フェイルオーバーとスイッチオーバーの動作が異なり、Raft選挙と新しい書き込みリーダーの指名が必要になることに注意することが重要です。 KubernetesのEDB Postgresは、データノードの展開と修復のみを処理します。

Kubernetes用に分散されたEDB Postgresを使用したPGDの管理#

EDB Postgres Distributed for Kubernetesオペレーターは、PGDクラスターの完全なライフサイクルを管理できます。そのため、 PGDノード単一インスタンスClusters として表されるに加えて、PGDに関連付けられている他のオブジェクトを管理する必要があります。

PGDは、分散コンセンサスのためのRaftアルゴリズムに依存して、ノードのメタデータ、特に 書き込みリーダー に関する契約を管理します。データノード間のコンセンサスは、新しいグローバルシーケンスの生成や分散DDLの実行などの操作にも必要です。

これらの考慮事項により、データベースノードの上のPGDに追加のアクターが強制されます。

EDB Postgres Distributed for Kubernetesは、以下を管理します。

  • データノード。ノードはデータベースであり、 EDB Postgres for Kubernetesによって管理され、単一のインスタンスでCluster を作成します。

  • Witness nodes

は、データレプリケーションに参加しない基本的なデータベースインスタンスです。彼らの機能は、偶数のデータノードを持つグループ、またはネットワーク分割後のコンセンサスが可能であることを保証することです。 Witnessノードは、単一インスタンスのCluster リソースを使用して管理されます。

書き込みリーダーの情報を使用してPostgresプロキシとして機能します。 PGDプロキシは、書き込みを現在の書き込みリーダーにルーティングするためにRaftからの情報を必要とします。

プロキシとルーティング#

PGDグループは、 PGDノードのフルメッシュ接続を想定しています。各ノードは、適切な接続文字列libpq スタイルのDSNを使用して他のすべてのノードに接続できる必要があります。書き込み操作はすべてのノードに送信される必要はありません。 PGDは、1つのノードにコミットされた後、データの複製を担当します。

パフォーマンスを向上させるために、書き込み操作のほとんどを単一のノード 書き込みリーダー に送信することをお勧めします。 Raftは、どのノードが書き込みリーダーであるかを識別し、PGDノードに関するメタデータを保持するために使用されます。 PGDプロキシは、書き込みを書き込みリーダーに透過的にルーティングし、スイッチオーバーまたはフェイルオーバーが発生した場合に新しい書き込みリーダーにすばやくピボットするために使用されます。

それぞれが別個の書き込みリーダーを維持できる Raftサブグループ を構成することが可能です。 EDB Postgres Distributed for Kubernetesでは、 PGDプロキシを含むPGDグループはRaftサブグループを構成します。

PGDプロキシでは2種類のルーティングが使用できます。

  • グローバルルーティングは、トップレベルのRaftグループを使用し、1つのグローバル書き込みリーダーを維持します。

  • ローカルルーティングは、サブグループを使用して個別の書き込みリーダーを維持します。ローカルルーティングは、書き込みの地理的な分離を実現するために使用されることがよくあります。

EDB Postgres Distributed for Kubernetesでは、デフォルトでローカルルーティングが使用され、グローバルルーティングを選択する構成オプションを使用できます。

詳細については、 PGD documentation of routing with Raft を参照してください。

PGDアーキテクチャと高可用性#

EDBは、 PGDの分散マルチマスター機能を有効に活用し、高可用性を提供するために、いくつかの推奨アーキテクチャを提案しています。

Always Onアーキテクチャは、1つの場所にある1つのグループ、または2つの別の場所にある2つのグループから構築されます。詳細については、PGDドキュメントの Choosing your architecture を参照してください。

KubernetesでのPGDの展開#

EDB Postgres Distributed for Kubernetesは、Kubernetesを活用してPGDクラスターを展開および管理します。そのため、 PGDをKubernetesエコシステムに変換するには、いくつかの適応が必要です。

イメージとオペランド#

3つのPostgresディストリビューションのいずれかを実行するようにPGDを構成できます。

PGD documentation を参照してください。

各ディストリビューションの特徴を理解するため。

Kubernetesで機能するには、Postgresディストリビューションごとにコンテナが提供されます。これらは オペランド です。さらに、オペレーターイメージはこれらと同じリポジトリに保持されます。

EDB's private image registries を参照

画像へのアクセスの詳細については、

Kubernetesアーキテクチャ#

PG4K document on Kubernetes architecture のポイントの一部

はここに再現されています。詳細については、 PG4Kドキュメントを参照してください。

Kubernetesは、別の物理的な場所にまたがる可能性をネイティブに提供します。これらの物理的な場所は、データセンター、障害ゾーン、またはより多くの場合 アベイラビリティーゾーン としても知られます。これらは、冗長、低遅延、プライベートネットワーク接続を介して相互に接続されます。

分散システムであるため、 Kubernetesクラスター の推奨最小数は3です。この最小値により、コントロールプレーンは単一ゾーンの障害に対する回復力があります。これは、各データセンターがいつでもアクティブで、ワークロードを同時に実行できることを意味します。

Kubernetes用EDB Postgres分散を 単一のKubernetesクラスター にインストールできます

または 複数のKubernetesクラスター 全体にわたって 。

単一のKubernetesクラスター#

マルチアベイラビリティーゾーンのKubernetesアーキテクチャは、クラウドプロバイダーが管理するKubernetesサービスの一般的なものです。このようなアーキテクチャにより、 EDB Postgres Distributed for KubernetesとEDB Postgres for Kubernetesオペレーターは、すべてのゾーンがアクティブであることを考慮して、アベイラビリティーゾーンにわたってワークロードとノードをスケジュールできます。

Kubernetes cluster spanning over 3 independent data centers

Kubernetes cluster spanning over 3 independent data centers#

PGDクラスターは、単一のKubernetesクラスターに展開でき、Kubernetes可用性ゾーンを利用して、 Always On推奨アーキテクチャを含む高可用性アーキテクチャを有効にすることができます。

PGDドキュメントの Choosing your architecture に示されている Always On Single Location アーキテクチャは、3つのアベイラビリティーゾーンを持つ単一のKubernetesクラスターで実現できます。

Always On Single Region

Always On Single Region#

EDB Postgres Distributed for Kubernetesオペレーターは、 EDB Postgres for Kubernetesの場合と同様に、アフィニティ、トレランス、ノードセレクターを使用して、ポッドのスケジューリングつまりどのポッドがどのデータセンターに行くかを制御できます。個々のスケジューリング制御は、ノードだけでなくプロキシでも利用できます。

詳細については、 EDB Postgres for Kubernetesドキュメントの Kubernetes documentation on scheduling および Scheduling を参照してください。

複数のKubernetesクラスター#

PGDクラスターは、相互に確実に通信できる複数のKubernetesクラスターに展開することもできます。

Multiple Kubernetes clusters

Multiple Kubernetes clusters#

Always On multi-location PGD architectures

接続要件を満たす複数のKubernetesクラスターで実現できます。

詳細については、 'Connectivity' を参照してください。