昔pgpoolとheartbeatを組み合わせて2ノード冗長化+負荷分散を実装するというpgpool-HAというプロジェクトをやっていたことがある。まあ、今やっていないかというと単に必要がないのでいじっていない。まだ日本にいた頃に細かい変更を施して、その後は最新版でも動くようになっている。まあpgpool-II対応は最善ではないので細かい修正は可能ではあるが、追従する必然は無いのでとりあえず放置状態である。

で、たまに見ると質問とか出ているので、昔やった何とかで一応答えるのだが、今日は

http://pgfoundry.org/pipermail/pgpool-general/2008-December/001374.html

に、pgpool-IIをフロントエンドにウォームスタンバイ型の冗長化構成にする、というOCFなスクリプトが出ていたので反応してみた。

個人的にはリカバリにpgpoolをわざわざ使わず、Heartbeat付属のpgsql用のOCFを改造して、warmstandby対応にするほうが楽なのかな、と言う気がしてきたので、考えていた。しかし、

  • start時にはstandbyからの回復コマンド実行
  • stop時にはスタンバイで起動開始
  • recovery時は起動し直す
  • status、monitor時の挙動は全面変更。なにしろ常にPostgreSQLが動いているから。
  • ん?stop状態なのに起動していない場合はどうするんだ?
  • そもそもスタンバイ状態とでも言うべき状態はheartbeatでサポートしていたっけ?
  • いつベースバックアップをどうやって取るの?

とまあいろいろ問題も思いついてきたのでやめた。warm-standbyは取り扱いが結構難しいなぁ。