以下はpgpoolアーキテクチャの例です:
これは、単一のサーバーにpgpoolを置くだけでよいことを意味します。これは本当ですか?構成を見ると、pgpool.conf
;内でバックエンドを構成していることがわかります。これはさらにこれを意味します。ただし、バックエンドサーバーでもpgpoolが表示される理由は説明されていません。
ドキュメント を見ると、次も表示されます。
PostgreSQL 8.0以降を使用している場合は、pgpool-IIが内部的に使用するpgpool-regclass関数を、pgpool-IIがアクセスするすべてのPostgreSQLにインストールすることを強くお勧めします。
だから私は何を考えればいいのかわかりません。すべてのバックエンドまたは専用サーバーにpgpoolを配置するのがベストプラクティスかどうか。
通常、Pgpoolをバックエンドサーバーにインストールしません。写真に表示されているのは、最も一般的な構成です。 Pgpoolは、基本的にデータベースの前に位置するスタンドアロンサーバーです。多くの場合、2つのPostgresサーバーはストリーミングレプリケーションで構成されています。 1つはマスターで、もう1つはスレーブです。
これにより、Pgpoolは2つ(またはそれ以上)のデータベース間ですべての読み取りクエリの負荷を分散できます。書き込みを含むクエリは、マスターサーバーにルーティングされ、マスターサーバーがスレーブに複製されます。
@ Neil McGuiganが言った のように、複数のPgpoolサーバーを使用して、高可用性を向上させることもできます。技術的には、この構成のデータベースサーバーにPgpoolをインストールできますが、これは悪い習慣です。複数のPgpoolサーバーの実行は、はるかに複雑な構成です。 Pgpoolを使用するのが初めての場合は、2つ動作させる前に1つのPgpoolサーバーから始めます。
どちらの構成でも、アプリケーションサーバーは、単一のPostgresデータベースに接続していると見なします。
pgpool_regclass
について、これは実際には別の質問であるはずです これはPgpool FAQからです :
PostgreSQL 8.0以降を使用している場合は、pgpool-IIが内部的に使用するpgpool-regclass関数を、pgpool-IIがアクセスするすべてのPostgreSQLにインストールすることを強くお勧めします。これがないと、異なるスキーマで重複するテーブル名を処理すると問題が発生する可能性があります(一時テーブルは問題ではありません)。
PostgreSQL 9.4.0以降およびpgpool-II 3.3.4以降、3.4.0以降を使用している場合、PostgreSQL 9.4には関数 "to_regclass"のようなpgpool_regclassが組み込まれているため、pgpool_regclassをインストールする必要はありません。
これが必要な場合、Pgpoolが使用する関数を追加するためにPostgresマスターサーバーで実行されるSQLコードの一部です。
Regclassを使用すると、追加の手順を実行する必要があります(私はinsert_lockを考えていました)。ソースからコンパイルしている場合(一般に、ほとんどのディストリビューションではPgpoolのバージョンが本当に古い)、Postgresライブラリもコンパイルする必要があります。
ソースからコンパイルした場合は、.../pgpool-II-3.X.X/src/sql/pgpool-regclass
フォルダーに移動して./configure; make
を実行する必要があります。
Pgpool-regclass.soファイルをPostgres拡張ディレクトリにコピーします。私のUbuntu 14.04サーバー(Postgres 9.3パッケージインストールを使用しているだけ)では、次の場所にあります:/usr/lib/postgresql/9.3/lib
。 allPostgresサーバーに対してこれを行うことを忘れないでください。
それが完了すると、マスターでpgpool-regclass.sql
を実行できます。これは、コピーしたライブラリにpgpool_regclass
関数をマップするだけです。
他のすべてと同様に、高可用性展開を実現する方法はたくさんあります。ここで私は私の経験から何かを提案します(私自身のHA実装):
最後に、 このステップバイステップのチュートリアル をお勧めします(PostgreSQLサーバーのインストールなど)。上記のチュートリアルは、私が使用する実装について説明しています。
お役に立てば幸いです。
更新:ありがとう@Moshe Katz-リンクは変更されました。元の投稿でもここに更新されました。