2.1. プランニング

Pgpool-IIPostgreSQLを管理するツールなので、まずはPostgreSQLの利用形態を決めなければなりません。 加えて、Pgpool-IIではそれ自体の可用性を高めるために、複数のPgpool-IIを導入することができます。 何本のPgpool-IIを導入するのが適切なのかを事前に計画しなければなりません。 この節では最初にPostgreSQLの動作モードを議論し、次にPgpool-IIの導入形態を議論します。

2.1.1. PostgreSQLの動作モード

PostgreSQLの導入台数は1以上が可能ですが、1台ではそのPostgreSQLがダウンした時にデータベースシステム全体が使えなくなるため、通常2台以上のPostgreSQLを導入します。 2台以上のPostgreSQLを用いる場合、何らかの方法でそれらのデータベース内容を同じになるようにしなければなりません。 データベースの同期方法の違いをここでは「動作モード」と呼びます。 もっとも広く使われている動作モードは、「ストリーミングレプリケーションモード」です。 特に何か特別な考慮が必要でなければ、ストリーミングレプリケーションモードを選択することをお勧めします。 動作モードの詳細については項3.3.2をご覧ください。

次に考えなければならないのは、何台のPostgreSQLを使うかです。 2台あれば最低限片方のPostgreSQLがダウンしてもデータベースの運用は継続できますが、検索処理を複数のサーバで分担させる検索負荷分散処理を行うのであれば、3台以上のPostgreSQLを使うことも珍しくありません。 Pgpool-IIは豊富な負荷分散の調整パラメータを用意しています。 詳細は項5.7をご覧ください。

Pgpool-IIでは柔軟にPostgreSQLサーバを後から追加できるので、とりあえずPgpool-IIを使ってみたい、という方は2台のPostgreSQLから始めるのが良いでしょう。

2.1.2. Pgpool-IIの導入形態

Pgpool-IIは1台でも利用が可能ですが、そのPgpool-IIが停止するとデータベース全体が利用できなくなるので、複数のPgpool-IIを導入することをお勧めします。 複数のPgpool-IIはwatchdogと言う仕組みで連携を取りつつお互いを監視し、その中の1台が「マスタ」と呼ばれて仮想IPを持つので、クライアントはその仮想IPにアクセスすればばよく、複数のPgpool-IIが導入されていることを意識する必要はありません。 (watchdogについては項4.1をご覧ください。) もしあるPgpool-IIがダウンすると、別のPgpool-IIが取って代わってマスタになります。

マスタは複数存在してはいけないので、新しいマスタを決める際にはwatchdogは投票を行ないます。 この時Pgpool-IIが偶数台だと多数決でマスタを決めることができなくなってしまいます。 ですからPgpool-IIは3台以上の奇数台で構成することをお勧めします。

なお、Pgpool-IIPostgreSQLは同じサーバに同居していても構いません。 たとえば、リソースを節約するために3台のサーバのみを用意し、それぞれにPgpool-IIPostgreSQLを動かすこともできます。

Pgpool-II3台、PostgreSQL2台をストリーミングレプリケーションモードで動作させる本格的な例が 項8.3で詳しく紹介されているので、すぐにプロダクションレベルでPgpool-IIを動かしたい方はそれを参考にすると良いでしょう。