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
ユーティリティを使用して、スクリプトをダウンロードして実行します。
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アカウントが必要です。
Sign up for a free EDB account まだお持ちでない場合。サインアップすると、EDBのソフトウェアリポジトリへの試用版サブスクリプションが提供されます。
- 登録したら、
EDB Repos 2.0 ページに移動し、リポジトリトークンを取得できます。
このページに初めてアクセスしたときに、[ RequestAccess ]を選択してリポジトリトークンを生成します。 CopyToken アイコンを使用してトークンをコピーし、安全に保存します。
環境変数の設定¶
- まず、
EDB_SUBSCRIPTION_TOKEN環境変数を、 EDBアカウント ステップで取得したEDBリポジトリトークンの値に設定します。
export EDB_SUBSCRIPTION_TOKEN=<your-repo-token>
これを.bashrc
スクリプトまたは同様のシェルプロファイルに追加して、常に設定されるようにすることができます。
リポジトリを構成する¶
この例に必要なすべてのソフトウェアは、 EDB Postgres分散パッケージリポジトリから入手できます。次のコマンドは、スクリプトをダウンロードして実行し、 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 Architect(TPA)のインストール¶
- 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を構成する必要があります。 setup
コマンドでtpaexec を呼び出します。
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 <Deploying EDB Postgres Distributed using Trusted Postgres Architect>` コマンドを実行して、構成フォルダーを生成します。
```shell-session
tpaexec configure democluster \
--architecture PGD-Always-ON \
--platform docker \
--edb-postgres-advanced 15 \
--redwood \
--location-names dc1 \
--pgd-proxy-routing global \
--no-git \
--hostnames-unsorted
:ref:`PGD 5's Always On architectures <Choosing your architecture>` の構成を設定するPGD-Always-ONアーキテクチャ(\ ``--architecture PGD-Always-ON``
- )を指定します。デフォルトアーキテクチャの一部として、3つのデータノードでクラスターを構成し、3つの Installing PGD Proxy サーバーと
バックアップ用のノード。
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 をglobal
に設定して、プロキシルーティングがクラスター内のすべてのノードにトラフィックをルーティングできるようにします。
デフォルトでは、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イメージ、コンテナー、ネットワークなどを作成します。
- Trusted Postgres Architectドキュメントの.. SeeAlso "Further reading"::
クラスターのデプロイ¶
構成が整い、インフラストラクチャがプロビジョニングされたら、分散クラスターを Choosing your deployment method できます。
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 democluster [0.0.0.0] 6432
kaftan democluster [0.0.0.0] 6432
kaolin democluster [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=#
クラスターを探索する¶
Connect to your database アプリケーションへ
実践的な演習を含む Explore failover
Understand conflicts 作成して監視することで
*クラスターでの Next Steps with PGD