障害検知の仕組みについて

11 views
Skip to first unread message

きくもと

unread,
Jan 27, 2010, 4:35:58 AM1/27/10
to roma-user-japan
きくもとです。

毎度、お世話になります。
障害検知について教えていただきたのですが、2009/2/20 の資料

http://www.slideshare.net/muga.nishizawa/the-overall-architecture-of-roma-1925904

では、ハートビートを3秒間隔で左右のノードに飛ばす、というような記述が
されていると思います。
が、現在の実装を見ると、クラスタに参加しているノードはお互いに全ての
ノードに1秒おきにハートビート(whoami コマンド)を投げているように
見えますが、これは正しい理解でしょうか?
また、各ノード毎に、あるノードへの通信が5回以上途絶えたら、ルーティン
グ情報から削り、10秒おきにそれが同期されるような仕組みと理解したので
すがあっていますでしょうか?

このような障害検知の場合、ノード数が増えるとハートビートのための通信で
ネットワークが混み合ってくると危惧しているのですが、ROMAではこの仕組み
でどれくらいのノードまでスケールするのでしょうか?
テスト上の実績値でもお持ちであれば、教えていただけると幸いです。

あと、もう一つ質問ですが、起動オプションの --start_with_failover が
何をするものか理解ができませんでした。
こちらもよろしければ教えていただけると幸いです。

以上、よろしくお願いいたします。

jun

unread,
Jan 27, 2010, 10:30:03 PM1/27/10
to roma-user-japan
こんにちは、鳥居です。

その資料が書かれた後にレプリカやフェイルオーバのモデルを変更しています。
資料を念頭にソースを読まれると混乱すると思いますので、申し訳ありません
がその内容はお忘れください。

フェイルオーバは下記の理解で正しいです。
1秒おきのハートビートで”連続”5回以上失敗するとそのノードを切り離します。
この時のポイントは”連続”5回の動きです。このカウントはハートビート以外の
通信でもカウントアップされます。また、どれかの通信が当該ノードとの通信に
成功するとカウントはリセットされます。

10秒間隔にノード情報を共有している処理は補助的な側面が強いです。
ハートビートやその他の通信でフェイルオーバするとその旨を全体に共有します
ので、通常ですと失敗の検知と共有は一瞬で行われますが、万一失敗したときは
10秒間隔の同期処理により補完されます。

ハードビートによるネットワークの混雑問題ですが、ROMAの通信は eventmachine
のおかげでそこそこ高速に行われています。また現モデルにおけるスケールは、
大きくても100ノード程度を想定しおり、3~20ノード程度であれば快適に動作し
ている実績があります。それ以上の動作確認は起動ができることの確認程度に
止まって居ります。ノード数が3桁を越えるてスケールするようにするには
ハートビートの件もありますが、データの分散方法を改良する必要があると認識
しています。ですので、後々ニーズが大きくなって来たら考えるべきと勝手に
思っている次第です。

--start_with_failover は障害検知の動作確認やデバッグに使用するオプションです。
複数のノードを手動で起動するときを考えてください。時間差でノードが上がり
ますので何もしないと起動中にフェイルオーバしてしまう可能性があります。
通常は起動中にフェイルオーバしないようにしていますが、これを逆手にとると
ノードの起動でフェイルオーバを起こすことができます。フェイルオーバの動作
確認は何かと面倒くさいので、手軽に再現するための一つの手段としてこの
オプションをつけました。通常は使わないオプションです。

例えば、2ノード構成でルーティングファイルを作り、--start_with_failover
オプションで1ノードのみ起動するとフェイルオーバした状況を作り出すことが
できます。

以上、よろしくお願いします。

とりい

On 1月27日, 午後6:35, きくもと <takakiku...@gmail.com> wrote:
> きくもとです。
>
> 毎度、お世話になります。
> 障害検知について教えていただきたのですが、2009/2/20 の資料
>

> http://www.slideshare.net/muga.nishizawa/the-overall-architecture-of-...

Takahiro Kikumoto

unread,
Jan 28, 2010, 2:19:27 AM1/28/10
to roma-us...@googlegroups.com
鳥居さま

こんにちは、きくもとです。
丁寧なご回答、誠にありがとうございます。

> その内容はお忘れください。

おぉ、そなのですね。確かに、なんか違うなぁと思っていました。。。

フェイルオーバの挙動説明、ありがとうございます。ソースと合わせて理解がす
すみました。

スケールは、

> 3~20ノード程度であれば快適に動作している実績

ということですので、現時点における私の使用予定規模(上記と同程度)では、
心配なさそうで一安心です。もっとも、最終的には自分の使用状況・環境にあわ
せた性能検証もしなければいけないと思っています。

--start_with_failover の説明もありがとうございます。挙動も確認できました。

毎回、質問にお答えいただきありがとうございます。
では、また。


2010年1月28日12:30 jun <jun...@gmail.com>:

>> ?http://www.slideshare.net/muga.nishizawa/the-overall-architecture-of-...

Reply all
Reply to author
Forward
0 new messages