毎度、お世話になります。
障害検知について教えていただきたのですが、2009/2/20 の資料
http://www.slideshare.net/muga.nishizawa/the-overall-architecture-of-roma-1925904
では、ハートビートを3秒間隔で左右のノードに飛ばす、というような記述が
されていると思います。
が、現在の実装を見ると、クラスタに参加しているノードはお互いに全ての
ノードに1秒おきにハートビート(whoami コマンド)を投げているように
見えますが、これは正しい理解でしょうか?
また、各ノード毎に、あるノードへの通信が5回以上途絶えたら、ルーティン
グ情報から削り、10秒おきにそれが同期されるような仕組みと理解したので
すがあっていますでしょうか?
このような障害検知の場合、ノード数が増えるとハートビートのための通信で
ネットワークが混み合ってくると危惧しているのですが、ROMAではこの仕組み
でどれくらいのノードまでスケールするのでしょうか?
テスト上の実績値でもお持ちであれば、教えていただけると幸いです。
あと、もう一つ質問ですが、起動オプションの --start_with_failover が
何をするものか理解ができませんでした。
こちらもよろしければ教えていただけると幸いです。
以上、よろしくお願いいたします。
その資料が書かれた後にレプリカやフェイルオーバのモデルを変更しています。
資料を念頭にソースを読まれると混乱すると思いますので、申し訳ありません
がその内容はお忘れください。
フェイルオーバは下記の理解で正しいです。
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-...
こんにちは、きくもとです。
丁寧なご回答、誠にありがとうございます。
> その内容はお忘れください。
おぉ、そなのですね。確かに、なんか違うなぁと思っていました。。。
フェイルオーバの挙動説明、ありがとうございます。ソースと合わせて理解がす
すみました。
スケールは、
> 3~20ノード程度であれば快適に動作している実績
ということですので、現時点における私の使用予定規模(上記と同程度)では、
心配なさそうで一安心です。もっとも、最終的には自分の使用状況・環境にあわ
せた性能検証もしなければいけないと思っています。
--start_with_failover の説明もありがとうございます。挙動も確認できました。
毎回、質問にお答えいただきありがとうございます。
では、また。
2010年1月28日12:30 jun <jun...@gmail.com>:
>> ?http://www.slideshare.net/muga.nishizawa/the-overall-architecture-of-...