Deploying an EDB Postgres Distributed example cluster on Docker#

このクイックスタートでは、TPAを使用して、ローカルのDockerコンテナを使用するAlways On Single LocationアーキテクチャでPGDをセットアップします。

TPAとPGDの紹介#

私たちは、さまざまなPostgres構成のインストールと管理を簡単に再現可能にするためにTPAを作成しました。 TPAは、Postgresの作成と展開を調整します。このクイックスタートでは、最初にTPAをインストールします。既にTPAをインストールしている場合、これらの手順をスキップできます。 TPAを使用して、さまざまな構成のPostgresクラスターを展開できます。

PGDは、高いパフォーマンスと可用性を実現するように設計されたPostgresのマルチマスター複製実装です。 PGDのインストールは、TPAによって調整されます。 TPAを使用して、PGDデモクラスターの構成ファイルを生成します。

このクラスターは、ローカルのDockerコンテナを使用して、クラスターのノードをホストします。3つの複製データベースノード、3つの共同ホスト接続プロキシ、および1つのバックアップノード。次に、TPAを使用して、必要な構成とソフトウェアを各ノードにプロビジョニングおよび展開できます。

PGDのこの構成は実稼働使用には適していませんが、 PGDクラスターの機能と動作をテストする場合に価値があります。 PGDコマンドとAPIに慣れて、クラウド、VM、またはLinuxホストへの展開の準備をする場合にも役立つ場合があります。

注釈

このセットの手順は、Intel / AMDプロセッサー上のUbuntu 22.04 LTS専用です。 !!!

前提条件#

この例を完了するには、十分なRAMと空きストレージを備えたシステムが必要です。 curl とDockerのインストールも必要です。

RAM要件#

システムには少なくとも4GBのRAMが必要です。 4つのコンテナを実行し、そのうち3つがPostgresデータベースをホストするため、この量のRAMが必要です。

空きディスク領域#

この例で説明しているクラスターを展開するには、Dockerからアクセスできる少なくとも5GBの無料ストレージが必要です。もう少し多くすることがおそらく賢明です。

カールユーティリティ#

このクイックスタートでは、 curl ユーティリティを使用してスクリプトをダウンロードして実行します。デフォルトではインストールされない場合があります。 curl がインストールされていることを確認するには、次のコマンドを実行します。

sudo apt update
sudo apt install curl

Dockerエンジン#

このPGD展開のターゲットプラットフォームとしてDockerコンテナを使用します。 Dockerエンジンをインストールします。

sudo apt update
sudo apt install docker.io
sudo usermod -aG docker <username>
newgrp docker

準備#

EDBアカウント#

TPAとPGDの両方をインストールするには、EDBアカウントが必要です。

まだお持ちでない場合。サインアップすると、EDBのソフトウェアリポジトリのトライアルサブスクリプションが提供されます。

登録したら、 EDB Repos 2.0 ページに移動し、リポトークンを取得します。

このページに最初にアクセスしたときに、 Request Access を選択してリポトークンを生成します。 Copy Token アイコンを使用してトークンをコピーし、安全に保存します。

環境変数の設定#

最初に、 EDB_SUBSCRIPTION_TOKEN 環境変数を EDBアカウント ステップで取得したEDBリポトークンの値に設定します。

export EDB_SUBSCRIPTION_TOKEN=<your-repo-token>

これを.bashrc スクリプトまたは同様のシェルプロファイルに追加して、常に設定されるようにできます。

リポジトリの構成#

この例に必要なソフトウェアはすべて、 EDB Postgres Distributedパッケージリポジトリから入手できます。次のコマンドは、 EDB Postgres分散リポジトリを構成するスクリプトをダウンロードして実行します。このリポジトリには、TPAパッケージも含まれています。

curl -1sLf "https://downloads.enterprisedb.com/$EDB_SUBSCRIPTION_TOKEN/postgres_distributed/setup.deb.sh" | sudo -E bash

edb_notranlate_5 出力またはエラーが生成されない場合は、トークンを正しく入力したことを再確認します。問題が解決しない場合は、

contact Support サポートしてください。

Trusted Postgres ArchitectTPAのインストール#

TPAを使用して、PGDをプロビジョニングおよび展開します。以前にTPAをインストールしている場合は、

Next Steps with PGD に進むことができます。

TPAをインストールするための完全な手順は、 Trusted Postgres Architect documentation にあります。これもここに含まれています。

Linux環境#

ホストプラットフォームとしての TPA supports several distributions of Linux 。これらの例は、Ubuntu 22.04用に書かれていますが、サポートされている他のプラットフォームでも手順は同様です。

重要

使用しているLinuxホストプラットフォームが cgroups v2を実行している場合、TPAを使用してDockerに展開している間、それを無効にし、cgroups v1を有効にする必要があります。 cgroup v2を確認するには、次を実行します。

mount | grep cgroup | head -1

しない 場合、次の行が表示されます。tmpfs on /sys/fs/cgroup type tmpfs

次に、 cgroup v2を無効にする必要があります。これを行うには、次を実行します。

echo GRUB_CMDLINE_LINUX=systemd.unified_cgroup_hierarchy=false | sudo tee /etc/default/grub.d/cgroup.cfg

次に、 grubブートローダーを更新し、次を実行してリブートします。

sudo update-grub
sudo reboot

TPAパッケージをインストールする#

sudo apt install tpaexec

TPAの設定#

次に、TPAのPython環境を構成するTPAを構成する必要があります。次のコマンドでtpaexec を呼び出します setup

sudo /opt/EDB/TPA/bin/tpaexec setup
export PATH=$PATH:/opt/EDB/TPA/bin

export コマンドをシェルのプロファイルに追加できます。

TPAインストールのテスト#

selftest を実行して、TPAが正しくインストールされたことを確認できます。

tpaexec selftest
``` TPAがインストールされました。

##  TPAを使用したPGDのインストール

###  構成ファイルの生成

:ref:`tpaexec configure </tpa/latest/tpaexec-configure/>` コマンドを実行して、構成フォルダーを生成します。

```shell-session
tpaexec configure democluster \
  --architecture PGD-Always-ON \
  --platform docker \
  --edb-postgres-advanced 15 \
  --redwood \
  --location-names dc1 \
  --pgd-proxy-routing local \
  --no-git \
  --hostnames-unsorted

PGD-Always-ONアーキテクチャ --architecture PGD-Always-ON を指定します。これは、

PGD 5's Always On architectures の構成をセットアップします。デフォルトアーキテクチャの一部として、3つのデータノードでクラスターを構成し、3つの 各ホストにPGDプロキシ構成をインストールする サーバーと Barman をコホストします

バックアップ用のノード。

Docker --platform docker を使用していることを指定します。デフォルトでは、TPAはRocky Linuxをすべてのノードのデフォルトイメージとして構成します。

TPAの実行に使用しているのと同じプラットフォームにPGDを展開する必要がないことに注意してください。

データノードがOracle互換性--redwood を備えた EDB Postgres Advanced Server v15 --edb-postgres-advanced 15 を実行することを指定します。

--location-names を使用して、ノードの概念的なロケーションをdc1 に設定します。次に、プロキシルーティングが各ロケーション内のすべてのノードにトラフィックをルーティングできるように、 --pgd-proxy-routing をlocal に設定します。

デフォルトでは、TPAは構成変更をGitリポジトリにコミットします。この例では、それをする必要がないため、 --no-git フラグを渡します。

最後に、--hostnames-unsorted を渡すことにより、ノードの反復可能なホスト名を生成するようにTPAに依頼します。それ以外の場合、適切なワードの事前定義されたリストからホスト名をランダムに選択します。

このコマンドは、現在の作業ディレクトリにdemocluster という名前のサブディレクトリを作成します。これには、TPAがクラスターの作成に使用するconfig.yml 構成ファイルが含まれています。次を使用して表示できます。

less democluster/config.yml

edb_notranlate_14 - Deploying with TPA のPGD-Always-ON構成オプションの詳細

  • Trusted Postgres Architectドキュメントの PGD-Always-ON - Trusted Postgres Architectドキュメントの tpaexec configure - Trusted Postgres Architectドキュメントの Docker platform

クラスターのプロビジョニング#

次に、

tpaexec provision コマンドを使用して作成した構成を実行するために必要なリソースを割り当てます。

tpaexec provision democluster

プラットフォームとしてDockerを指定したため、TPAはDockerイメージ、コンテナ、ネットワークなどを作成します。

クラスターの展開#

構成が配置され、インフラストラクチャがプロビジョニングされると、分散クラスターを Deploying an EDB Postgres Distributed example cluster on AWS できるようになります。

tpaexec deploy democluster

TPAは構成を適用し、必要なパッケージをインストールし、実際のEDB Postgres分散クラスターをセットアップします。

これで、SSHを使用してクラスターのノードのいずれかにログインし、データベースに接続する準備が整いました。構成プロセスの一部では、すべてのノードのSSHログインをセットアップし、キーを完了します。 SSH構成を使用するには、前にtpaexec configure コマンドで作成したdemocluster ディレクトリにいる必要があります。

cd democluster

そこから、 ssh -F ssh_config <hostname> を実行してSSH接続を確立できます。クラスター内の最初のデータベースノードであるkaboomに接続します。

ssh -F ssh_config kaboom
__OUTPUT__
[root@kaboom ~]#

kaboom にroot としてログインしていることに注意してください。

次に、enterprisedbユーザーのIDを採用する必要があります。このユーザーは事前構成され、クラスターのノードに接続することが許可されています。

sudo -iu enterprisedb
__OUTPUT__
enterprisedb@kaboom:~ $

psql コマンドを実行して、bdrdb データベースにアクセスできるようになりました。

psql bdrdb
__OUTPUT__
psql (15.2.0, server 15.2.0)
Type "help" for help.

bdrdb=#

kaboomノードで実行されているPostgresデータベースに直接接続され、 SQLコマンドの発行を開始できます。

SQLクライアントを終了するには、exit と入力します。

PGD CLIを使用する#

PGD CLIとしても知られるpgdユーティリティを使用すると、 EDB Postgres分散クラスターを制御および管理できます。ノードには既にインストールされています。

pgd check-health を実行することにより、クラスターの状態を確認できます。

pgd check-health
__OUTPUT__
Check      Status Message
- ----      ------ -------
ClockSkew  Ok     All BDR node pairs have clockskew within permissible limit
Connection Ok     All BDR nodes are accessible
Raft       Ok     Raft Consensus is working correctly
Replslots  Ok     All BDR replication slots are working correctly
Version    Ok     All nodes are running same BDR versions
enterprisedb@kaboom:~ $

または、 pgd show-nodes を使用して、クラスター内のデータ保持ノードを表示するようにPGDに依頼できます。

pgd show-nodes
__OUTPUT__
Node   Node ID    Group        Type Current State Target State Status Seq ID
- ---   -------    -----        ---- ------------- ------------ ------ ------
kaboom 2710197610 dc1_subgroup data ACTIVE        ACTIVE       Up     1
kaftan 3490219809 dc1_subgroup data ACTIVE        ACTIVE       Up     3
kaolin 2111777360 dc1_subgroup data ACTIVE        ACTIVE       Up     2
enterprisedb@kaboom:~ $

同様に、 pgd show-proxies を使用してプロキシ接続ノードを表示します。

pgd show-proxies
__OUTPUT__
Proxy  Group        Listen Addresses Listen Port
- ----  -----        ---------------- -----------
kaboom dc1_subgroup [0.0.0.0]        6432
kaftan dc1_subgroup [0.0.0.0]        6432
kaolin dc1_subgroup [0.0.0.0]        6432

プロキシは、アプリケーションのデータノードのクラスターへの高可用性接続を提供します。 psql -h kaboom,kaftan,kaolin -p 6432 bdrdb コマンドを使用して、プロキシに接続し、データベースに接続できます。

psql -h kaboom,kaftan,kaolin -p 6432 bdrdb
__OUTPUT__
psql (15.2.0, server 15.2.0)
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
Type "help" for help.

bdrdb=#

クラスターを探索する#