PGCon 2009.jp クラスタ会議のための予備知識
NTT オープンソースソフトウェアセンタ 鈴木 幸市
NTT オープンソースソフトウェアセンタ 板垣 貴裕
この記事は、gihyo.jp & Let's Postgres 連動企画「今こそ!PostgreSQL」の第8回記事です。先回の「第7回 PostgreSQL Conference 2009 Japanの見所に迫る」に引き続き、カンファレンスの併設イベントとして開催される『PostgreSQLクラスタ開発者会議』の概要や注目点と、そこで議論される内容を楽しむために PostgreSQL のクラスタリング製品を紹介します。
開発者会議は、11月19日に同じ会場で開催されます。今回の会議ではPostgreSQLクラスタ開発で現在活動中の内外の識者に集まってもらい、PostgreSQL クラスタの現状とニーズの共有、今後の方向性、および PostgreSQL 本体の開発コミュニティとのかかわりについて議論をしていく予定です。
開催の背景と目標
PostgreSQL の開発コミュニティは伝統的に、クラスタ構成やレプリケーションは直接はサポートせず、それらの製品はサードパーティ製のツールとして提供されてきました。その結果、多くのプロジェクトが活動中であり、製品も数多く提供されています。とはいえ、PostgreSQL の一般的な利用者から見ると、製品の選択に困ったり、品質やプロジェクトの継続性が心配になる場合もあったのではないでしょうか?
この会議の目標の一つは、国内外の PostgreSQL クラスタの開発に携わっている方々の間で、本来あるべきクラスタ製品の姿を共有し、開発協力や製品統合を行って、クラスタ製品の開発力を高めることです。多くの利用者が安心して利用できる品質のクラスタ製品が開発できる体制を整理します。
第二の目標は、それぞれの製品に必要な機能を共通のインタフェースやコンポーネントとして抽出し、PostgreSQL 本体への採用を働きかけることです。次期開発版である 8.5 でも、Hot Standby や Streaming Replication と呼ばれる機能が採用される見込みですが、これらと連携して動作するための仕組みも必要になります。
既に募集は締め切られていますが、参加者募集のページ ( 日本語版 / 英語版) でも議題についてまとめています。また、参加者にもPostgreSQLのWikiページで議題をまとめてもらっています。各プロジェクトの概要などもここからリンクが張られていますので、御活用下さい。
主な参加メンバ
主な参加メンバは次の通りです。主要な PostgreSQL クラスタ製品の開発者の多くが参加し、参加者は合計約30名になる予定です。これまでも、毎年カナダで開かれる PGCon に併設で開発者会議が開催されてきましたが、テーマを「クラスタ」に絞った会議は、今回が初めての試みです。
参加者 | 携わっている製品など |
---|---|
Josh Berkus | PostgreSQLコアメンバ、議長 |
Bruce Momjian | PostgreSQLコアメンバ |
Jan Wieck | Slony-I |
Marcus Wanner | Postgres-R |
Simon Riggs | Hot Standby |
Selena Deckelmann | Bucardo |
Atsushi Mitani | PGCluster |
Tatsuo Ishii | pgpool-II |
Satoshi Nagayasu | Postgres Forest |
Masao Fujii | Streaming Replication |
Mason Sharp | GridSQL, Postgres-2 |
Pavan Deolasee | Postgres-2 |
(予定) | PL/Proxy |
(予定) | pgbouncer |
各クラスタ製品の紹介
後日、会議の結果を報告記事として掲載予定ですが、それぞれのクラスタ製品にどのような特徴があるのかを知っておくと、報告記事もより楽しめるでしょう。それぞれの製品をざっくり解説します。
Slony-I
Slony-I は、非同期・シングルマスタ方式のレプリケーションです。 マスタノードに設定したデータベーストリガで更新処理をログに記録し、複数のスレーブノードに非同期に伝播させます。特徴は、スレーブノードで参照処理を行えること、マスタの更新性能の低下を抑えられること、マスタとスレーブ間の回線切断があっても後から追いつき処理を行えることが挙げられます。
管理は専用のコマンドラインツールの他、 pgAdmin-III からも GUI で操作することができます。
pgpool-II
pgpool-II は、同期・プロキシサーバ方式のレプリケーションです。アプリケーションからは pgpool-II は PostgreSQL と同じように見え、pgpool-II の中でクエリを複数の PostgreSQL へ分散します。参照処理の分散が可能で、更新処理のスループットの低下も大きくはありません。PostgreSQL の故障の際には自動でフェイルオーバも行いますが、pgpool-II 自体の可用性は、別途対策する必要があります。
PL/Proxy, pgbouncer
PL/Proxy ホームページ / pgbouncer ホームページ
PL/Proxy は手続き言語 (Procedure Language) を利用した同期・プロキシサーバ方式の負荷分散クラスタです。 クエリをハッシュ値によって複数のノード間で振り分けたり、複数ノードで一括して実行することができます。 サーバの構成変更をオンラインで柔軟に行えることも特徴です。
PL/Proxy は接続や切断を頻繁に行うため、コネクションプール pgbouncer を組み合わせて使うことが推奨されています。pgbouncer 単独で軽量なコネクションプールとして動作させることもできます。
PGCluster
PGCluster は、同期・マルチマスタ方式のレプリケーションで、PostgreSQL 本体にパッチを当てています。ロードバランサ、クラスタDB、レプリケーションサーバの3種類のサーバから構成され、参照処理の分散や故障したクラスタDBを自動で隔離する機能を備えます。更新処理の性能は比較的大きな低下があります。
Postgres-R
ホームページ / コンセプト(PDF) / 関連文書
Postgres-R は、同期・マルチマスタ方式のレプリケーションで、PostgreSQL 本体にパッチを当てています。Slony-I と同様、更新処理のログを転送する方式ですが、データベーストリガの代わりによりシステム内部に近い層で処理を行っているため、テーブルの追加などを行う場合でも、素の PostgreSQL と同様に扱うことができます。
PostgresForest
PostgresForest は、同期・プロキシドライバ方式の JDBC ドライバです。中間サーバが必要ないため、単一障害点 (Single Point of Failure) を持たないことが特徴です。JDBC で提供されるため、アプリケーションは Java 製でなければなりません。その他は pgpool-II に似た特性を持ちます。
Bucardo
Bucardo は、非同期・マルチマスタ方式のレプリケーションです。Slony-I に似た特性を持ち、データベーストリガを利用して変更されたデータを双方向に転送します。
Postgres-2
Postgres-2 (仮) は、現在開発中の、同期方式のデータ分散クラスタです。複数のコーディネータ・ノードとデータ・ノードが、1つのグローバル・トランザクション・マネージャと通信することで矛盾の無いトランザクション処理を行うことを目指しています。
おわりに
今回の会議を通じて、クラスタの開発に関する有意義な意見交換をし、今後の PostgreSQL クラスタの発展に繋げていければと思います。