A First Cluster Deployment#

この短いチュートリアルでは、単純な M1 デプロイメントをローカルDockerインストールに展開する手順を説明します。最後までに、4つのコンテナ、1つのプライマリデータベース、2つのレプリカ、およびバックアップノードが構成され、探索できる準備が整います。

この例では、UbuntuシステムでTPAを実行しますが、ほとんどのLinuxシステムで考慮事項は同様です。

TPAのインストール#

あなたがEDB顧客の場合、EDBのリポジトリからTPAパッケージを直接インストールする TPA installation に従ってください。

TPAのオープンソースユーザーであれば、Github.comからダウンロードできる Installing TPA from source があります。

これらのガイドに従って、ここに戻ります。

Dockerのインストール#

前述のように、展開例をDockerに展開します。まだDockerをインストールしていない限り、それをセットアップする必要があります。

DebianまたはUbuntuでは、次のコマンドを実行してDockerをインストールします。

sudo apt update
sudo apt install docker.io

他のLinuxディストリビューションについては、 Docker Engine Install page を参照してください。

次を使用してユーザーをdockerグループに追加します。

sudo usermod -aG docker <yourusername>
newgrp docker

警告

ユーザーにDockerデーモンと対話できる機能を付与すると、Dockerホストでのrootを簡単に取得できます。信頼できるユーザーのみがDockerデーモンにアクセスできる必要があります。

TPAを使用した構成の作成#

このプロセスの次のステップは、構成を作成することです。 TPAは、 configure コマンドを介して作業のほとんどを実行します。あなたがしなければならないのは、コマンドラインフラグとオプションを指定して、展開するものを大まかに選択することです。 tpaexec configure コマンドは次のとおりです。

tpaexec configure demo --architecture M1 --platform docker --postgresql 15 --enable-repmgr --no-git

これにより、 M1 を含むdemo という構成が作成されます。したがって、プライマリ、レプリカ、バックアップノードがあります。

--platform docker は、この構成をローカルのDockerインスタンスで作成する必要があることをTPAに指示します。すべてのコンテナとOS要件をプロビジョニングします。他のプラットフォームには、アマゾンウェブサービスと同じことを行う awscliを使用してボリューム属性を変更する と bare(-metal servers) が含まれます。オペレーティングシステムのプロビジョニングをスキップし、既に構成されたLinuxホストへのソフトウェアのインストールに直接進みます。

--postgresql 15 では、Community Postgresバージョン15を使用するようにTPAに指示します。ソフトウェアの選択に関していくつかのオプションがありますが、これはオープンソースユーザーにとって最も簡単なデフォルトです。

--enable-repmgr を追加すると、TPAに Replication Manager を使用してレプリケーションとフェイルオーバーをハンドリングするように展開を構成するように指示します。

最後に、--no-git は、gitを介して構成をリビジョン制御できるTPAの機能をオフにします。

このコマンドを実行すると、どうやらコマンドラインでは何も起こりません。ただし、 demo というディレクトリが作成され、新しい展開のブループリントであるconfig.yml ファイルを含むいくつかのファイルが含まれています。

デプロイメントのプロビジョニング#

これで、新しい展開を実行するコンテナまたは仮想マシンを作成する準備が整いました。これは、 provision コマンドで実現できます。実行します

tpaexec provision demo

構成の展開の準備に必要なさまざまな操作を介したTPAの動作が表示されます。

Deploying#

プロビジョニングが完了したら、展開に進むことができます。これにより、必要に応じて、オペレーティングシステムとシステムパッケージがインストールされます。次に、要求されたPostgresアーキテクチャをインストールし、必要な構成をすべて実行します。

tpaexec deploy demo

構成を展開するために必要なさまざまな操作を介したTPAの動作が表示されます。

テスト#

新しいデータベースでpgbenchを実行する tpaexec test コマンドを使用して、新しく展開された構成をすばやくテストできます。

tpaexec test demo

接続しています#

psqlプロンプトを表示するには、最も簡単なルートは、dockerまたはSSHを使用して、コンテナまたは構成に応じてVMまたはホストのいずれかにログインすることです。走る

tpaexec ping demo

展開内のすべての接続可能なホストにpingを実行すると、次のような出力が得られます。

unfair | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
uptake | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
quondam | SUCCESS => {
    "changed": false,
    "ping": "pong"
}
uptight | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

SUCCESS で応答したノードの1つを選択します。この例では、 uptake を使用します。

dockerのみを使用する予定がある場合は、 docker exec -it uptake /bin/bash コマンドを使用して、適切なホスト名に置き換えます。

すべての種類のTPA展開で機能する別のオプションは、SSHを使用することです。これを行うには、最初に現在のディレクトリを作成した構成ディレクトリに変更します。

たとえば、構成の名前付けはdemoなので、そのディレクトリに移動します。そこで、ssh -F ssh_config ourhostname を実行して接続します。

cd demo
ssh -F ssh_config uptake
Last login: Wed Sep  6 10:08:01 2023 from 172.17.0.1
[root@uptake ~]#

どちらの場合も、コンテナにrootユーザーとしてログインします。

sudo -iu postgres を使用して、ユーザーをpostgres ユーザーに変更できるようになりました。 postgres として、 psql を実行できます。 TPAはそのユーザーを.pgpass ファイルで既に構成しているため、パスワードを提示する必要はありません。

sudo -iu postgres
psql
[root@uptake ~]# sudo -iu postgres
postgres@uptake:~ $ psql
psql (15.4)
Type "help" for help.

postgres=#

そして、データベースに接続しています。

SSHを使用せずにホストシステムからコンテナに接続できます。 ssh_config ファイルから接続するホストのIPアドレスを取得します。

grep "^ *Host" demo/ssh_config
Host *
Host uptight
    HostName 172.17.0.9
Host unfair
    HostName 172.17.0.4
Host quondam
    HostName 172.17.0.10
Host uptake
    HostName 172.17.0.11

Uptakeに接続するので、IPアドレスは172.17.0.11です。

また、 postgresユーザーのパスワードも取得する必要があります。 tpaexec show-password demo postgres を実行して、システムから保存されたパスワードを取得します。

tpaexec show-password demo postgres
a9LmI1X^uMOpPoEnLuRdL%L$oRQak3om

Postgresqlクライアントがインストールされていると仮定すると、次のことを実行できます。

psql --host 172.17.0.11 -U postgres
Password for user postgres:

前に取得したパスワードを入力します。

psql (14.9 (Ubuntu 14.9-0ubuntu0.22.04.1), server 15.4)
WARNING: psql major version 14, server major version 15.
         Some psql features might not work.
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

postgres=#

これで、Dockerホストから、TPA展開されたDockerコンテナのいずれかで実行されているPostgresに接続されました。