[pgsql-jp: 31855] Re: PGCluster1.6でクラスタDB1 のみフェイルオーバーに失敗します

mitani mitani @ sraw.co.jp
2003年 12月 24日 (水) 09:51:35 JST


三谷@広島です.

> PGCluster1.6を使用して、レプリケーション環境を構築していたのですが、
> ロードバランサ使用時、マスタDB(クラスタDB1)を切り離したさいに、
> うまく切断を検知してくれていないような動作をしております
負荷がかかっていない状態(初期状態)では,ロードバランサは最初に登録され
ているクラスタサーバ(マスタDB)に繋ぎに行きます(入山さんの環境ではクラ
スタDB1がそれにあたります).マスタDBが切断され,それをロードバランサが
最初に検知した場合,フロントエンドにはエラーを返します.検知後はマスタDB
は切り離されていますので,他のクラスタDBにセッションを繋ぎます.

ロードバランサがクラスタDBの障害を最初に検知した場合の動作については,少
し検討したのですが,障害検知がどのタイミングで発生するか分からないため,
(例えばトランザクションの最中とか),単純に他のクラスタDBへセッションの
続きのクエリーを振り分けることができません.そのため,ロードバランサが検
知した障害については,障害が発生した旨をフロントエンドに返し,セッション
を一旦終了させることにしました.障害検知後に接続されるセッションは新規の
セッションのみになり,これであれば他のクラスタDBに振り分けても問題ありま
せんので,他のクラスタDBに振り分けます.

セッション途中で発生した障害対応のため,このような仕様にしていますが,セッ
ション開始時に障害を検知した場合でも,同様であるのは問題があるのかもしれ
ません.
「セッション開始時に接続先のDBに障害を検知した場合,他のクラスタDBにセッ
ションを振りなおす」という仕様に変更することは可能ですが,コネクションプー
リング時は難しいですね.

PGClusterに対するバグレポートやご要望等を投稿して頂いたり,ユーザ同士で
ノウハウを共有して頂くためのメーリングリストを準備しております(というか,
してもらっています).
準備が出来次第,このMLにもご案内させて頂きますが,それまでの間は
mitani @ postgresql.jpにお送りください.

よろしくお願いします.

=============================
三谷 篤<mitani @ sraw.co.jp>
=============================






pgsql-jp メーリングリストの案内