Trusted Postgres Architect¶
はじめに¶
TPAは、Ansibleを使用してEDBの推奨に従ってPostgresクラスターを構築するオーケストレーションツールです。
TPAは、EDBが続くベストプラクティスを具体化し、さまざまなシナリオでのPostgresと関連コンポーネントの展開に関する長年の経験に基づいています。これらの推奨事項は、実稼働環境と同様に迅速なテストベッドのセットアップに適用されます。
(始めたい場合は、 TPA installation instructionsに直接スキップできます。)
TPAでできること¶
TPAは4つの異なる段階で動作し、Postgresクラスターを起動します。
クラスター Cluster configuration を生成
クラスターをホストする tpaexec provision サーバー(VM、コンテナー)
プロビジョニングされたインスタンスへの tpaexec deploy ソフトウェア
tpaexec test 展開されたクラスター
# 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 に従います。
- Trusted Postgres Architect release notes
- TPA installation
- Cluster configuration
- tpaexec provision
- tpaexec deploy
- tpaexec test
- PGD-Always-ON
- BDR-Always-ON
- M1
- aws
- bare(-metal servers)
- Docker
- Cluster configuration
- Instance configuration
- Building from source
- TPA hooks
- TPA rolling updates
- tpaexec switchover
- BDR/HAProxy server pool management
- tpaexec rehydrate
- TPA and Ansible Tower/Ansible Automation Controller
- TPA, Ansible, and sudo
- TPA - PuTTY Configuration guide
- Troubleshooting
- Reference
- Running TPA in a Docker container
- Installing TPA from source
- Managing clusters in a disconnected or Air-Gapped environment
- Distribution support
- TPA capabilities and supported software
- BDR configuration
- Barman
- Configuring EFM
- Configuring haproxy
- Configuring HARP
- Configuring Postgres Enterprise Manager (PEM)
- Configuring pgbouncer
- Configuring pgd-proxy
- pglogical configuration
- Configuring repmgr
- How TPA uses 2ndQuadrant and EDB repositories
- Configuring EDB Repos 2.0 repositories
- Configuring 2ndQuadrant repositories
- Configuring APT repositories
- Configuring YUM repositories
- Shipping packages from a local repo
- Installing from source
- Git credentials
- Environment
- Python environment
- Configuring /etc/hosts
- Filesystem configuration
- Uploading artifacts
- ssh_key_file
- Managing SSH host keys
- Postgres source installation
- Installing packages
- Running initdb
- Installing Postgres-related packages
- SSL Certificates
- Setting sysctl values
- Creating Postgres databases
- Creating Postgres tablespaces
- postgresql.conf
- pg_hba.conf
- pg_ident.conf
- Configuring .pgpass
- The postgres Unix user
- Creating Postgres users
- tpaexec archive-logs
- tpaexec download-packages
- TPA custom commands
- TPA custom tests
- Shared instances