Pgpool-II のデータベース セットアップ

このページでは、Confluence を設定して Pgpool-II データベースを使用する手順をご説明します。

はじめる前に

Pgpool-II について

Pgpool-II は、Postgres をベースにした高可用性(HA)データベース ソリューションです。Pgpool-II のような高可用性データベースへの移行をお勧めする理由をご説明します。

  1. 単一障害点(SpoF)はありませんPgpool-II は、サービスのダウンタイムによるビジネスへの影響につながるような単一障害点を露呈する、PostgreSQL データベース特有の課題に対処します。

  2. 接続プーリング。Pgpool-II は接続プーリングを提供しているため、複数のクライアント アプリがデータベース接続プールを共有できます。これにより、クライアント リクエストごとに新しい接続を確立するオーバーヘッドが大幅に軽減され、結果的にパフォーマンスが向上し、リソース消費量を削減できます。

  3. 負荷分散。Pgpool-II には、クライアント リクエストを複数の PostgreSQL サーバー全体に分散するロード バランサーが組み込まれています。これにより、ワークロードが均等に分散され、利用可能なデータベース サーバー全体で最適なリソース使用が保証されます。

  4. 高可用性。Pgpool-II は、自動フェイルオーバーやオンライン復旧などの機能を実装することで、可用性の高い構成をサポートします。プライマリ PostgreSQL サーバーに障害が発生したことを検出し、スタンバイ サーバーを自動的にプライマリ サーバーに昇格させることができるため、ダウンタイムが最小限に抑えられ、データベースの可用性を確実に維持できます。

Pgpool-II の詳細については、公式ドキュメントをご覧ください。

Pgpool-II 環境を実行/設定する

このドキュメントでは、VMware が提供する Bitnami の Docker イメージを使用して説明します。Pgpool の公式ドキュメントによると、この方法には いくつかのメリットがあります

  • Bitnami は上流のソースの変更を綿密に追跡し、当社の自動システムを使用してこのイメージの新バージョンを速やかに公開します。
  • Bitnami イメージがあれば、最新のバグ修正と機能を早急に利用できます。

まず、Postgres ノードをセットアップします。これらのノードは相互にアクセスできる必要があります。同じ非公開サブネットの一部にすることも、インターネットに公開することもできますが、インターネットへの公開は推奨されません。

  1. 別のマシンにプライマリ PostgreSQL ノードを作成します。次のコマンドを実行します。

    docker network create my-network --driver bridge

    ノードを起動すると次のようになります。

    docker run --detach --rm --name pg-0 \
      -p 5432:5432 \
      --network my-network \
      --env REPMGR_PARTNER_NODES={PG-0-IP},{PG-1-IP} \
      --env REPMGR_NODE_NAME=pg-0 \
      --env REPMGR_NODE_NETWORK_NAME={PG-0-IP} \
      --env REPMGR_PRIMARY_HOST={PG-0-IP} \
      --env REPMGR_PASSWORD=repmgrpass \
      --env POSTGRESQL_POSTGRES_PASSWORD=adminpassword \
      --env POSTGRESQL_USERNAME=customuser \
      --env POSTGRESQL_PASSWORD=custompassword \
      --env POSTGRESQL_DATABASE=customdatabase \
      --env BITNAMI_DEBUG=true \
      bitnami/postgresql-repmgr:latest

    別のマシンにプライマリ PostgreSQL ノードを作成
    (info)
    [NOTICE] starting monitoring of node "pg-0" (ID: 1000)」というメッセージは、プライマリ ノードが正常に作成されたことを示します。

  2. 別のマシンにスタンバイ ノードを作成します。次のコマンドを実行します。

    docker network create my-network --driver bridge

    ノードを起動すると次のようになります。

    docker run --detach --rm --name pg-1 \
      -p 5432:5432 \
      --network my-network \
      --env REPMGR_PARTNER_NODES={PG-0-IP},{PG-1-IP} \
      --env REPMGR_NODE_NAME=pg-1 \
      --env REPMGR_NODE_NETWORK_NAME={PG-1-IP} \
      --env REPMGR_PRIMARY_HOST={PG-0-IP} \
      --env REPMGR_PASSWORD=repmgrpass \
      --env POSTGRESQL_POSTGRES_PASSWORD=adminpassword \
      --env POSTGRESQL_USERNAME=customuser \
      --env POSTGRESQL_PASSWORD=custompassword \
      --env POSTGRESQL_DATABASE=customdatabase \
      --env BITNAMI_DEBUG=true \
      bitnami/postgresql-repmgr:latest
    1. コード サンプル内の {PG-0-IP},{PG-1-IP} を、pg-0 ノードと pg-1 ノードへのアクセスに使用できるコンマ区切りの IP アドレスに置き換えます。例: 15.237.94.251,35.181.56.169
    2. 相互接続を確立するために、スタンバイ ノードは起動後すぐにプライマリ ノードへのアクセスを試みます。
  3. その他のノードを参照する Pgpool バランサー ミドルウェア ノードを作成します。次のコマンドを実行します。

    docker network create my-network --driver bridge

    ノードを起動すると次のようになります。

    docker run --detach --name pgpool --network my-network \
      -p 5432:5432 \
      --env PGPOOL_BACKEND_NODES=0:{PG-0-HOST},1:{PG-1-HOST} \
      --env PGPOOL_SR_CHECK_USER=postgres \
      --env PGPOOL_SR_CHECK_PASSWORD=adminpassword \
      --env PGPOOL_ENABLE_LDAP=no \
      --env PGPOOL_USERNAME=customuser \
      --env PGPOOL_PASSWORD=custompassword \
      --env PGPOOL_POSTGRES_USERNAME=postgres \
      --env PGPOOL_POSTGRES_PASSWORD=adminpassword \
      --env PGPOOL_ADMIN_USERNAME=admin \
      --env PGPOOL_ADMIN_PASSWORD=adminpassword \
      --env PGPOOL_AUTO_FAILBACK=yes \
      --env PGPOOL_BACKEND_APPLICATION_NAMES=pg-0,pg-1 \
      bitnami/pgpool:latest
    1. コード サンプル内の {PG-0-HOST},{PG-1-HOST} を、pg-0 ノードと pg-1 ノードのホスト アドレス(ポートを含む)に置き換えます。例:15.237.94.251:5432 
      Pgpool 接続

      Bitnami コンテナーの設定に関する詳細
  4. これで、pgpool コンテナーをデータベース クラスターへのエントリ ポイントとして使用できます。pgpool コンテナーに接続するには、次のコマンドを使用します。

    psql -h {PGPOOL-HOST} -p 5432 -U postgres -d repmgr

    コード サンプルの {PGPOOL-HOST}pgpool ノード アドレスに置き換えます。例:34.227.66.69

    デプロイが成功したことを確認するには、次の SQL クエリを使用してテーブル repmgr.nodes にアクセスします。

    SELECT * FROM repmgr.nodes;

    出力には、各ノードの状態に関する情報がすべて表示されているはずです。

設定を続けるには、「PostgreSQL のデータベース セットアップ」のガイドラインをご確認ください。ユーザーとデータベースの作成、Confluence のインストール、Confluence セットアップ ウィザードの使用に関するステップは同じです。

最終更新日: 2023 年 12 月 7 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.