[pgcluster: 45] 次の追加機能案

mitani mitani @ sraw.co.jp
2004年 1月 22日 (木) 10:20:57 JST


三谷@広島です.

当初の予定では,次の機能追加は「レプリケーションサーバの動的追加」を考え
ていました.
が,昨日頂いたアイデアが面白そうなので,もう少し拡張して「レプリケーショ
ンサーバのカスケード接続」ができるように(動的追加も含めて)したいと思って
います.

こんなイメージです.
------------------------------------------------------
Replication A の設定
	レプリケーション対象:Cluster (A1,A2,A3...)
	cascade元:なし
	cascade先:Relication B
Replication B の設定
	レプリケーション対象:Cluster (B1,B2,B3...)
	cascade元:Relication A
	cascade先:Relication C
Replication C の設定
	レプリケーション対象:Cluster (C1,C2,C3...)
	cascade元:Relication B
	cascade先:なし
Cluster A群の設定
	レプリケーションサーバ: (A,B,C)
Cluster B群の設定
	レプリケーションサーバ: (B,C,A)
Cluster C群の設定
	レプリケーションサーバ: (C,B,A)
------------------------------------------------------
上記のような設定にすることで,Cluster A1で受けたクエリーは

Cluster A1 -> Replication A -> Cluster A1
                   |        -> Cluster A2
                   |        -> Cluster A3
                   V
              Replication B -> Cluster B1
                   |        -> Cluster B2
                   |        -> Cluster B3
                   V
              Replication C -> Cluster C1
                            -> Cluster C2
                            -> Cluster C3

と流れます.
また,Cluster C3で受けたクエリーは

Cluster C3 -> Replication C
                   |
                   V
              Replication B
                   |
                   V
              Replication A -> Cluster A1
                   |        -> Cluster A2
                   |        -> Cluster A3
                   V
              Replication B -> Cluster B1
                   |        -> Cluster B2
                   |        -> Cluster B3
                   V
              Replication C -> Cluster C1
                            -> Cluster C2
                            -> Cluster C3
と流れます.

で,あるレプリケーションサーバに障害が発生した場合,
基本的にカスケード先(子)側が処理を肩代わりし,子側も倒れた場合はカスケー
ド元(親)側が処理を肩代わりします.
また,レプリケーションサーバが復旧すると動的にシステムに戻り,他のレプリ
ケーションサーバで行っている肩代わり処理は元に戻るようになります.

レプリケーションサーバのカスケード機能によって,クラスタサーバの数がかな
り増えることが予想されますので,レスポンスのモードとして以下の3つが選択
できるように考えています.

(1)fast mode:
 1番最初のクラスタの処理が終わったらフロントエンドに結果を返すモード
(2)normal mode:
 クエリーを受け付けたクラスタの処理が終わったらフロントエンドに結果を返すモード
(3)reliable mode:
 全てのクラスタの処理が終わったらフロントエンドに結果を返すモード

こんな感じのことを考えています.
この機能についてご意見等ありましたらお願いします.

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






pgcluster メーリングリストの案内