Trusted Postgres Architect

はじめに

TPAは、Ansibleを使用してEDBの推奨に従ってPostgresクラスターを構築するオーケストレーションツールです。

TPAは、EDBが続くベストプラクティスを具体化し、さまざまなシナリオでのPostgresと関連コンポーネントの展開に関する長年の経験に基づいています。これらの推奨事項は、実稼働環境と同様に迅速なテストベッドのセットアップに適用されます。

(始めたい場合は、 TPA installation instructionsに直接スキップできます。)

TPAでできること

TPAは4つの異なる段階で動作し、Postgresクラスターを起動します。

#  1. Configuration: decide what kind of cluster you want

[tpa]$ tpaexec configure clustername --architecture M1 --platform aws

#  2. Provisioning: create the servers needed to host the cluster

[tpa]$ tpaexec provision clustername

#  3. Deployment: install and configure the necessary software

[tpa]$ tpaexec deploy clustername

#  4. Testing: make sure everything is working as expected

[tpa]$ tpaexec test clustername

ラップトップ、EC2インスタンス、またはネットワークを介してクラスターのサーバーに到達できるマシンからTPAを実行できます。

これが list of capabilities and supported software です。

構成

tpaexec configure

コマンドは、選択したオプションに基づいて、クラスターを記述する単純な YAML 構成ファイルを生成します。構成はすぐに使用する準備ができており、ニーズに合わせて変更できます。構成ファイルを編集するのは、作成の前と後の両方でmake any configuration changes to your clusterに対する通常の方法です。

この段階で、クラスターのアーキテクチャとプラットフォームを選択する必要があります。 アーキテクチャ は、特定の目的のためにPostgresをセットアップするためのサーバーとソフトウェアの推奨レイアウトです。例には、「M1」(プライマリとストリーミングレプリカを含むPostgres)や「BDR-Always-ON」(HA構成のBDRを含むPostgres)が含まれます。 プラットフォーム は、サーバーをホストして、AWS、Docker、ベアメタルサーバーなどのアーキテクチャを展開する手段です。

プロビジョニング

コマンドは、クラスターに必要なインスタンスとその他のリソースを作成します。プロセスの詳細は、クラスターの構成時に選択したアーキテクチャ(M1など)とプラットフォーム(AWSなど)によって異なります。

たとえば、必要な権限を持つAWSアクセスが与えられると、TPAはEC2インスタンス、VPC、サブネット、ルーティングテーブル、インターネットゲートウェイ、セキュリティグループ、EBSボリューム、Elastic IPなどをプロビジョニングします。

「ベア」プラットフォームを選択し、接続の詳細を指定することにより、既存のサーバーを「プロビジョニング」することもできます。ベアメタルサーバーでも、クラウドプラットフォームで個別にプロビジョニングされたものでも、まるでTPAで作成されたかのように使用できます。

単一のプラットフォームに制限されません。必要に応じて、クラスターを一部のAWSインスタンス(マルチプルリージョン)と一部のオンプレミスサーバー、または他のデータセンターのサーバーに分散できます。

プロビジョニング段階の最後には、基本的なオペレーティングシステムがインストールされた必要な数のインスタンスがあり、TPAはSSH経由でアクセスできます(ルートにsudoを使用)。

展開

コマンドは、プロビジョニングされたサーバーにPostgresおよびその他のソフトウェアをインストールして構成します(TPAによって作成された場合とそうでない場合があります。ただし、SSHおよびsudoアクセスが利用できる限り、誰が作成したかは関係ありません)。これには、レプリケーション、バックアップなどが含まれます。

展開段階が完了すると、Postgresが起動します。

テスト

tpaexec test コマンドは、デプロイされたクラスターに対してさまざまなアーキテクチャおよびプラットフォーム固有のテストを実行し、期待どおりに動作することを確認します。

テスト段階が完了すると、完全に機能するクラスターができます。

インクリメンタルな変更

TPAは、プロビジョニング、デプロイ、およびテストがべき等になるように注意深く設計されています。それらを実行し、 config.ymlに変更を加え、プロセスを再度実行して変更をデプロイできます。構成またはインスタンスで何も変更されていない場合、プロセス全体を再実行しても何も変更されません。

クラスター管理

クラスターが稼働すると、TPAは構成の変更、スイッチオーバー、ゼロダウンタイムのマイナーバージョンのアップグレードなど、便利なクラスター管理機能を提供します。これらの機能により、手動で変更を行うよりもクラスターを簡単かつ安全に管理できます。

Ansibleで拡張可能

TPAはvariety of configuration optionsをサポートしているため、 config.ymlを編集してprovision/deploy/testを再実行するだけで多くのことができます。 TPAが既にサポートしているものを超える必要がある場合は、次のように記述できます。

。クラスターで実行するPlaybookを簡単に作成できます。クラスターディレクトリにcommands/xyz.yml を作成し、 tpaexec xyz /path/to/cluster を使用して呼び出すだけです。自動化が必要な管理タスクまたはプロセスに最適です。

。環境とアプリケーションに固有の詳細な検証で組み込みテストを強化します。 tpaexec test を使用して、統一された反復可能な方法ですべてのテストを実行すると、危機に対処するとき、または日常のクラスター管理中に重要なことを見逃すことはありません。

  • Hook scripts 、展開のさまざまな段階で呼び出されます。たとえば、

hooks/pre-deploy.yml のタスクはメイン展開の前に実行されます。 post-deploy を含む他の多くのフックがあります。これにより、あらゆる種類の Ansible 機能を自由に使用できます。

ただのPostgresです

TPAは、多くの機能が構成された複雑なクラスターを作成できますが、結果はPostgresのみです。インストールは、生活をよりシンプルにするように設計されたいくつかの規則に従いますが、あなたとデータベースの間に隠された魔法や何かはありません。他のPostgresインストールで実行できるすべてのことを、TPAクラスターで実行できます。

はじめに

システムの TPA installation instructions 、次に configure your first cluster に従います。