「pgpool-II」基本情報
■概要
pgpool-II(ピージープールツー)とは、オープンソースRDBMS「PostgreSQL」に対して、冗長化や負荷分散を可能にするためのミドルウェアです。PostgreSQLサーバとPostgreSQLクライアントの間でデータベースプロキシとして稼働します。
■基本説明
pgpool-IIは、オープンソースRDBMS「PostgreSQL」に対して、冗長化機能や負荷分散機能を追加できるミドルウェアです。
PostgreSQLサーバとPostgreSQLクライアントの間で稼働するため、既存のPostgreSQLアプリケーションをほとんど変更せずに利用できます。
■動作環境
pgpool-IIは、Linuxをはじめ、SolarisやFreeBSDなどのUNIX環境で動作します。
■経緯
pgpool-IIは、2006年からSRA OSS,inc. 日本支社のメンバーによって開発が開始されました。
その後、Enterprise DB社のメンバーなども加わり、グローバルな開発コミュニティを形成しています。
アーキテクチャ
pgpool-IIは、PostgreSQLのバックエンドフロントエンドプロトコルを理解し、バックエンドとフロントエンドの間でメッセージを転送します。
つまり、データベースアプリケーション(フロントエンド)からは、pgpool-IIが実際のPostgreSQLサーバであるように見え、サーバ(バックエンド)からは、pgpool-IIがフロントエンドであるように見えます。
pgpool-IIは、サーバとクライアントに対して透過的に動作するため、既存のデータベースアプリケーションについてソースコードに変更を加えることなくpgpool-IIを利用できます。
主な機能
■コネクションプーリング
pgpool-IIはPostgresSQLとの接続を保持し、「ユーザ名」「データベース名」「プロトコルバージョン」などの属性が同じ接続があるたびに、それらの接続を再利用します。
この機能により、コネクション確立のオーバヘッドを減少させることが可能となり、システム全体のスループットを向上させます。
■データレプリケーション
pgpool-Ⅱは複数のPostgreSQLサーバを管理できます。管理下にある複数のPostgreSQLサーバをクラスタ化してレプリケーション機能を有効にすることにより、2つ以上のPostgreSQLサーバによるリアルタイムバックアップを行えます。
そのため、PostgreSQLクラスタの1つがダウンした場合でも、システム全体を止めることなくサービスを継続できます。
また、pgpool-IIには、組み込みレプリケーション(ネィティブレプリケーション)機能があるため、PostgreSQLのストリーミングレプリケーションのように、外部レプリケーションも可能です。
■負荷分散(SELECTクエリロードバランシング)
PostgreSQLデータベースがレプリケーションされると、どのサーバでSELECT文が発行されても同じ結果を返すようになります。
pgpool-IIは、pgpool-IIに送られてきたSELECTクエリを複数のPostgreSQLサーバに分散させることが可能です。この機能を有効化することで、各PostgreSQLサーバの負荷を軽減し、システム全体のスループットを向上させます。
パフォーマンスは、PostgreSQLサーバの数に比例して向上します。特に、多数のユーザが検索のみのクエリを同時に発行するようなケースにおいて、負荷分散は最大の効果を発揮します。
■最大接続数制御
PostgreSQLには最大同時接続数の制限があり、設定した制限を超えると新しい接続は拒否されます。最大接続数を増加させるとリソース消費が増加するため、パフォーマンスに悪影響を与えるためです。
pgpool-Ⅱにも、同様に、最大接続数の制限がありますが、最大接続数に達している状態で新たな接続が来た場合、クライアントに対して即座にエラーを返さずに、待ち行列に入れて接続が空くまで待機させることが可能です。
■自動フェイルオーバー
pgpool-II配下にあるPostgreSQLデータベースサーバのどれかがダウンしたり、ネットワークレベルで到達できなくなった場合、pgpool-IIは該当サーバを切り離し、残ったサーバで運用を継続します。
自動フェイルオーバをサポートできる「タイムアウト機能」や「リトライ機能」なども備えています。
pgpool-IIの導入事例
■SPOF(Single Point of Failure)を解消するためpgpool-II を導入
株式会社Gengo様では、「Gengo®」システムを Amazon Web Service 上で稼働させており、サービスを支える基幹システムのデータベースとして、早い時期から PostgreSQL を活用しています。利用者の増加に対応するための負荷分散と、信頼性向上のための冗長化構成を実現するために、pgpool-II を採用しました。
http://www.sraoss.co.jp/case_study/gengo.php
■PostgreSQL + pgpool-II の導入により、判例などの大量データの横断検索性能を大幅向上
第一法規株式会社様は、法律関連の書籍販売や、オンラインデータ提供を行っています。判例データを扱うシステムについて、データベースとしては PostgreSQL を採用し、冗長化や性能向上のために pgpool-II を採用しました。
http://www.sraoss.co.jp/case_study/daiichihoki.php
■その他の事例
その他の事例については、こちらのページをご覧ください。
http://www.sraoss.co.jp/case_study/
情報提供協力
このページは、SRA OSS,inc. 日本支社の協力により作成しました。
補足情報
■同様製品
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「MariaDB MaxScale」など。
■オフィシャルサイト
オフィシャルサイト
ライセンス情報
pgpool-IIのライセンスは「BSDライセンス」です。
詳細について、こちらを参照ください。
→pgpool-II →1 Pgpool Wikiへようこそ! →1.2 Pgpool-Ⅱのライセンス
ダウンロード
参考元サイト
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。