[pgcluster: 271] Re: 突然1台のクラスターが落ちているケースではアップデートが非常に遅くなります。

Yoshiya Kato yoshiya @ plus10.to
2004年 5月 8日 (土) 03:43:08 JST


三谷様
加藤 義也です。

お返事ありがとうございました。

> 三谷@広島in新幹線です.
> 
> うー,500系は無茶苦茶ゆれるから,PC作業は厳しい...
> 酔いそう.

新幹線のなかからのメールありがとうございます。

> > 1台から返事がこないためかレプリケーションサーバから電源が落ちている
> > マシンへのTCPのSYN_SENTの状態のままのコネクションがありましたのでTCPの接
> > 続タイムアウトを待っている気がします。
> 多分LANケーブルが外れているのと同様の症状なのでしょうね.
> # そろそろ,ライフチェックの導入を検討しないといけないかな...

三谷さんのお作りになった以下の文書
http://www.postgresql.jp/misc/seminar/2003-05-17/B4_mitani.pdf
を見ると1つのクラスター(マスター)のクエリーの結果が得られた時点でクエ
リー受信をしたクラスターに対して結果を返すような話になっているのですが、
(現在のpgcluster実装も同方式をとっていることを前提として)1つのクエリー
が完了できないと次のクエリーが処理出来ないようになっているということなの
でしょうか?

だとするとダメなクラスターが出てきた時点でレプリケーションサーバが当該ク
ラスターの異常を検知するまでクエリー処理が出来なくなるのは納得できます。

 クエリーを投げて帰ってこないのが、「遅いから」なのか「死んでいる」から
なのか解らない時点ではその判断時間がある程度必要かとは思うのですが、その
判断時間内にはその次のクエリー結果もクエリーを受け取ったクラスターに返さ
ないというのはちょっと変な感じがします。もっとシビアに切り離しても良いと
思います。

#ちょうど高校である生徒が授業にでなかったりついて行けなかったりで留年し
てしまう現象に似ていますね。「全員で進級しよう!!」みたいな・・(笑)

人間系はどうあれ、パソコンなら多くのサポート会社がやっているようにコモディ
ティであることを最大限に利用してちょっとでも遅かったらシビアに切り離すべ
く、すぐに検出&排除して追加クラスターを突っ込んでから考える
(原因追及したければする)方が運用的には簡単な気もします。

たとえばクラスターDBはほぼ同じデータを持っていて同じクエリーに対して同
程度の時間がかかることを前提とできれば マルチスレッドで作ったプレスレッ
ドのプールから(orマルチキャスト)で同時進行的に全クラスターにクエリーを
掛けて一番最初に帰ってきた時点でレプリケーションサーバは、クエリー受信し
たクラスターに結果を返し そこから時間計測して(例えば10秒とか最速クラ
スターの応答時間の110%を超える時間以内)に帰ってこない場合には(十分
に遅いので)「異常」みたいな方式にすると、各サーバに対してPING/PONGなポー
リングを掛けなくてすむのではないでしょうか?
ついてこれるクラスタは同期、ついてこれないクラスタは非同期もしくは足手ま
といと判断するみたいな・・。
#掃除したら早くなって帰ってこれるかもしれないし・・・。

#何も知らないので勝手なことを言っていると思います。
#言っただけじゃなくて コントリビュート出来るようソースをだんだん読んで
おきます。

#書いてから気づきましたが クラスターが2、3台位の時の運用と もっと多
くの数での運用ではポリシーや期待することが全く替わりますね。
前者は1台1台がわりと重要でリアルタイムバックアップ的な意味をかねていま
すが 後者は物量で性能向上をメインで考えていてバックアップはあって当たり
前、1台死んでも気にしない。みたいな・・・・。私の意見は後者に近いです。

いや 今4、5年前のパソコンがオークションなんかでは2〜3千円で買えるモ
ノですから・・・。
どうしても積み重ねしてしまいたくなります。

> > この問題の回避策はあるのでしょうか?
> > 問題は問題として存在していて これから対策 という話なのでしょうか?
> > 私の勘違いや設定に問題があるのでしょうか?
> 可用性の機能が必要な場合,ロードバランサも併用してください.

さんざん言われていることなのかもしれませんが
私がロードバランサを使わなかった理由は「これがこけたら終わり」だと思った
からです。
ロードバランサがSingle point of failure になるのは致し方ないことなのでしょ
うか?
それとも私の勘違いですか?
またロードバランサを2つ構成する事などは出来るのでしょうか?
#そうすればVRRPでロードバランサが死んでもサービスのダウンタイムが1分な
どで復帰が出来ると思いました。
#もしくは運用側で接続できなかったらセカンダリに接続してみたりとか・・・。

#もしよろしかったらいろいろ教えて頂きましたので技術的なことはサポートで
きないかもしれませんが今件のやりとりで解ったことについて、WEBページの
FAQや制限事項の更新程度ならお手伝いさせて頂けませんか?
#ToDoもWebあるとうれしいですよね。開発チームの方々の首を絞めるかもしれ
ませんが・・。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
I wanna be a gateway which connects the network to people.

Yoshiya Kato <yoshiya @ plus10.to>
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=




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