(57)【特許請求の範囲】
【請求項１】
マスタノードと、当該マスタノードにて管理される複数のクラスタノードと、を備えると共に、
前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストを記憶し、
前記クラスタノードは、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備え、
前記マスタノードは、前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を備え、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
情報処理システム。
【請求項２】
請求項１に記載の情報処理システムであって、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、このクラスタノード群のうちの１つのクラスタノードを中継クラスタノードとして当該中継クラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
情報処理システム。
【請求項３】
請求項２に記載の情報処理システムであって、
前記クラスタ分割手段は、前記マスタノードの管理下に位置するクラスタノード群に対応する前記要求情報の前記マスタノードからの転送順序が設定されたノードリストと、前記中継クラスタノードの管理下に位置する他のクラスタノード群に対応する前記要求情報の前記中継クラスタノードからの転送順序が設定されたノードリストと、をそれぞれ作成して記憶し、
前記中継クラスタノードとされた前記クラスタノードが有する前記要求転送手段は、前記マスタノードの管理下に位置するクラスタノード群に対応する前記ノードリストに従って前記要求情報を転送すると共に、自装置である中継クラスタノードの管理下に位置する他のクラスタノード群に対応する前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送する、
情報処理システム。
【請求項４】
請求項２又は３に記載の情報処理システムであって、
前記クラスタ分割手段は、前記マスタノードの管理下に位置するクラスタノードの数と、前記中継クラスタノードの管理下に位置するクラスタノードの数と、が同一となるよう前記複数のクラスタノードを分割する、
情報処理システム。
【請求項５】
請求項１乃至４のいずれかに記載の情報処理システムであって、
前記クラスタ分割手段は、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間が予め設定された閾値よりも大きい場合に前記複数のクラスタノードを分割する、
情報処理システム。
【請求項６】
複数のクラスタノードを管理するマスタノードであって、
前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストを記憶し、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備えている場合に、
前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を備え、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
マスタノード。
【請求項７】
請求項６に記載のマスタノードであって、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、このクラスタノード群のうちの１つのクラスタノードを中継クラスタノードとして当該中継クラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
マスタノード。
【請求項８】
複数のクラスタノードを管理すると共に、前記クラスタノードに対する要求情報の転送順序が設定されたノードリストを記憶したマスタノードに組み込まれるプログラムであって、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備えている場合に、
前記マスタノードに、前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を実現させると共に、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
ことを実現させるためのプログラム。
【請求項９】
請求項８に記載のプログラムであって、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、このクラスタノード群のうちの１つのクラスタノードを中継クラスタノードとして当該中継クラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
ことを実現させるためのプログラム。
【請求項１０】
マスタノードと、当該マスタノードにて管理される複数のクラスタノードと、を備えた情報処理システムによる情報処理方法であって、
前記マスタノードが、前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストに従って前記要求情報を一の前記クラスタノードに送信し、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送し、
前記マスタノードが、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割すると共に、
前記マスタノードが、前記複数のクラスタノードを分割する際に、当該複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
情報処理方法。
【請求項１１】
請求項１０に記載の情報処理方法であって、
前記マスタノードが、前記複数のクラスタノードを分割する際に、当該複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、このクラスタノード群のうちの１つのクラスタノードを中継クラスタノードとして当該中継クラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システムにかかり、特に、複数のコンピュータで構成された情報処理システムに関する。
【背景技術】
【０００２】
近年、クラウドコンピューティングの登場などにより、多数のコンピュータリソースを使用するシーンが増えている。例えば、クラウドコンピューティングを実現するシステムには、複数のコンピュータ（ノード）で構成されたクラスタが複数存在し、非常に巨大なクラスタ群が構成されることとなる。ところが、かかる状況においては、数千から数十万のノードが存在することとなるが、これらノードをどのように構成し、管理するか、ということが課題となっている。
【０００３】
ここで、通常、１つのクラスタには、１つのマスタノードと、複数のクラスタノードと、が存在することとなる。そして、一般的に、マスタノードとクラスタノードとの通信は１対１で行われるため、Ｎ個のクラスタノードに対してマスタノードがある要求を行う場合には、当該マスタノードはＮ回の要求処理を行う必要がある。すると、クラスタノードの数が増えると、その分だけマスタノードによる処理が増えるため、クラスタノードの数の増加に伴いマスタノードの負荷が増加し、また、全てのクラスタノードに要求が伝わるまでの時間も増加してしまう、という問題がある。
【０００４】
ここで、複数のノードを備えた情報処理システムに関連する技術が、特許文献１に開示されている。この特許文献１では、ネットワーク上に接続された複数のコンピュータのうち、一の監視マスタが他のコンピュータのヘルスチェックを行っている際に障害が発生すると、当該他のコンピュータは、監視マスタから引き継いだ管理テーブルを参照して監視マスタによるヘルスチェック先のコンピュータに向けてヘルスチェックを開始すると共に、監視マスタの変更通知を送信する。そして、ネットワーク上の各コンピュータは、ヘルスチェック先のコンピュータに向けて監視マスタ変更通知をリレー形式で行う、という技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１０９４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した技術では、コンピュータの数が多数の場合には、リレー形式で行う通知にかかる時間が増加する、という問題が依然としてある。つまり、システム全体の管理に時間がかかる、という問題があった。
【０００７】
このため、本発明の目的は、上述した課題である、複数台のコンピュータからなる情報処理システムにおいて管理時間が増加する、ことを解決することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成すべく、本発明の一形態である情報処理システムは、
マスタノードと、当該マスタノードにて管理される複数のクラスタノードと、を備えると共に、
前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストを記憶し、
前記クラスタノードは、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備え、
前記マスタノードは、前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を備え、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
という構成を取る。
【０００９】
また、本発明の他の形態であるマスタノードは、
複数のクラスタノードを管理するマスタノードであって、
前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストを記憶し、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備えている場合に、
前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を備え、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
という構成を取る。
【００１０】
また、本発明の他の形態であるプログラムは、
複数のクラスタノードを管理すると共に、前記クラスタノードに対する要求情報の転送順序が設定されたノードリストを記憶したマスタノードに組み込まれるプログラムであって、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備えている場合に、
前記マスタノードに、前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を実現させると共に、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
ことを実現させるためのプログラムである。
【００１１】
また、本発明の他の形態である情報処理方法は、
マスタノードと、当該マスタノードにて管理される複数のクラスタノードと、を備えた情報処理システムによる情報処理方法であって、
前記マスタノードが、前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストに従って前記要求情報を一の前記クラスタノードに送信し、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送し、
前記マスタノードが、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割すると共に、
前記マスタノードが、前記複数のクラスタノードを分割する際に、当該複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
という構成を取る。
【発明の効果】
【００１２】
本発明は、以上のように構成されることにより、複数台のコンピュータからなる情報処理システムにおける管理時間の短縮化を図ることができる。
【図面の簡単な説明】
【００１３】
【図１】情報処理システムの全体構成の概略を示すブロック図である。
【図２】情報処理システムによるクラスタノードの分割時の様子を示す図である。
【図３】情報処理システムを構成するノードの構成を示す機能ブロック図である。
【図４】ノードリストの一例を示す図である。
【図５】ノードリストの一例を示す図である。
【図６】情報処理システムの動作を示すフローチャートである。
【図７】情報処理システムの動作を示すフローチャートである。
【図８】情報処理システムの動作を示すフローチャートである。
【図９】情報処理システムの動作を示すフローチャートである。
【図１０】情報処理システムの動作を示すフローチャートである。
【図１１】情報処理システムの動作を示すフローチャートである。
【図１２】情報処理システムの動作を示すフローチャートである。
【図１３】情報処理システムの動作を示すフローチャートである。
【図１４】本発明における情報処理システムの構成の一例を示す図である。
【発明を実施するための形態】
【００１４】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図１４を参照して説明する。図１乃至図５は、情報処理システムの構成を説明するための図であり、図６乃至図１３は、その動作を説明するための図である。また、図１４は、情報処理システムの構成の一例を示す図である。
【００１５】
［構成］
本発明における情報処理システムは、複数の情報処理装置であるノードを備えたクラスタシステム（以下、「クラスタ」と呼ぶ。）である。そして、図１に示すように、クラスタ１は、マスタノード１と、当該マスタノード１にて管理される１つ以上のクラスタノード２〜Ｎと、を備えて構成されている。そして、クラスタ１内に存在する上記マスタノード１とクラスタノード２〜Ｎとは、相互に通信可能であり、また、クラスタノード２〜Ｎ同士も相互に通信可能である。
【００１６】
また、本実施形態では、各ノード１〜Ｎは、後述するように同一の構成を取っており、マスタノード、クラスタノード、中継クラスタノードとしても、それぞれが動作することができるよう構成されている。ここで、図３を参照して、ノード１０１の構成を詳述する。
【００１７】
まず、ノード１０１は、演算装置である制御部１０２と、記憶装置に形成されたデータ部１０３と、を備えた情報処理装置である。そして、ノード１０１は、上記制御部１０２にプログラムが組み込まれることによって構築された、動作モード判定処理部１１０と、マスタノード記憶制御部１２０と、クラスタノード機能制御部１３０と、中継クラスタノード機能制御部１４０と、を備えている。また、データ部１０３には、ノードリスト１５１，１５２と、動作モード１６０と、が記憶されている。
【００１８】
上記ノードリスト１５１，１５２の一例を図４に示す。ノードリストは、クラスタ配下に存在するノードの一覧表であり、ノードの名前やＩＰアドレスなどノードを特定するための「識別子」、ノードが正常に動作しているのか異常なのかといった状態を表す「ステータス」、マスタノードからの要求をどの順序で転送するかということを表した「転送順序」、が記録されている。具体的に、図４に示すノードリストは、図１のクラスタ１におけるノードリストであり、転送順序の数が小さい順に各ノードが並んで記憶されている。このため、転送順序が「１」であるマスタノードである「ノード１」が一番目に記憶されており、それ以降はクラスタノードが記憶されている。なお、図４に示すノードリストの例では、説明を簡略するために、ノードの識別番号が小さい順に、転送順序が設定されていることとする。
【００１９】
そして、上記ノードリストは、各ノード１〜Ｎが自ノードのデータ部１０３内にそれぞれ記憶しており、それぞれ自ノードが所属するクラスタのノードリストを記憶している。従って、図１の例では、全てのノード１〜Ｎが、それぞれ図４に示すクラスタ１のノードリストを保持している。
【００２０】
なお、ノードリストは、後述するように、クラスタの分割が行われることにより、当該クラスタ毎に生成されることとなる。従って、図１に示すクラスタ１が、図２に示すようにクラスタ１とクラスタ２に分割されると、クラスタノード２が中継クラスタノードとして動作して２つのクラスタに所属することとなるため、これに伴って生成される図５に示す２つのノードリスト１，２を所持することとなる。なお、詳細については後述する。
【００２１】
また、データ部１０３に記憶された動作モード１６０は、当該動作モード１６０を記憶している自ノードがどのモードで動作しているかを表す情報である。なお、動作モードは、「マスタノードモード」、「クラスタノードモード」、「中継クラスタノードモード」の３つがある。そして、動作モード１６０は、ノードリストに記憶されている自ノードの転送順序によって判定される。
【００２２】
上記動作モード判定処理部１１０は、記憶しているノードリスト内の自ノードの転送順序に応じて、自ノードの動作モードを決定する。例えば、自ノードの転送順序が「１」の場合は、「マスタノードモード」であると判定し、転送順序が「１」ではない場合には、「クラスタノードモード」であると判定する。そして、動作モード判定処理部１１０は、判定した結果をデータ部１０３の動作モード１６０にセットする。すると、各ノード１〜Ｎは、動作モード１６０にセットされたモードにて動作する。なお、動作モード１６０に「中継クラスタノードモード」が設定される場合については後述する。
【００２３】
上記マスタノード機能制御部１２０は、ノードがマスタノード１として動作するときに作動する機能であり、図３に示すように、要求通知処理部１２１と、クラスタ分割処理部１２２と、ノードリスト管理処理部１２３と、を備えている。
【００２４】
上記要求通知処理部１２１（要求通知手段）は、マスタノード１がクラスタノード２〜Ｎのステータスを把握するために、一定周期でクラスタノードに対してステータスを確認する要求（要求情報）を通知する。このとき、要求通知処理部１２１は、データ部１０３に記憶されているノードリストを参照して、自ノードの次以降に記載してある最初のクラスタノード（図１の例では、「クラスタノード２」）と最後のクラスタノード（図１の例では、「クラスタノードＮ」）を確認し、最初のクラスタノード２に対して上記要求を通知し、最後のクラスタノードＮから要求の通知を待つ。
【００２５】
また、要求通知処理部１２１は、その後に最後のクラスタノードＮから要求の通知が来ると、最初のクラスタノード２に要求を通知してから最後のクラスタノードから通知が来るまでの時間RTと、予め設定された閾値である任意定数Tとを比較する。RTがTより大きい場合、クラスタ分割処理部１２２にクラスタの分割処理を依頼する。なお、Tは、ノード間の通信時間の平均にノード数を掛けたものに任意のタイムアウト時間を足したものとする。但し、上記Tは、上述した値であることに限定されず、また、クラスタの分割を依頼する条件は、上述した条件であることに限定されない。
【００２６】
上記クラスタ分割処理部１２２（クラスタ分割手段）は、上述したように要求通知処理部１２１からクラスタの分割処理の依頼を受けると、各ノードを分割する処理を行う。具体的には、ノードリストに記憶された転送順序が２番目のクラスタノード（図４で「ノード２」）を「中継クラスタノード」として選択する。
【００２７】
また、クラスタ分割処理部１２２は、任意のノード（図４で「ノードＫ−１」）を選択して、ノードリストの最初のノードつまりマスタノード（１）から、選択した任意のノード（Ｋ−１）までの転送順序を表す「ノードリスト１」を作成する。さらに、上記「中継クラスタノード」（２）と選択した任意のノードの次の転送順序のノード（Ｋ）から最後までのノードＮとを組み合わせた「ノードリスト２」と、を作成する。このとき、「ノードリスト２」の「中継クラスタノード」の転送順序は、「１」に更新される。これにより、図４のノードリスト１，２に示す内容のノードリストがそれぞれ作成される。
【００２８】
そして、クラスタ分割処理部１２２は、作成したノードリスト１とノードリスト２とを要求通知処理部１２１へ渡すと、当該要求通知処理部１２１にて、上述したように各クラスタノードに対して転送通知され、各ノード内でノードリストが更新される。
【００２９】
さらに、クラスタ分割処理部１２２は、上述したように選択した中継クラスタノード２に対して、動作モードの変更要求を通知する。すると、中継クラスタノード２の動作モード判定処理部１１０は、動作モード１６０を中継クラスタノードモードに変更する。
【００３０】
以上のようにクラスタ分割処理部１２２が作動することで、図２に示すように、クラスタ１とクラスタ２とに、図１に示すクラスタ内のノードが分割される。具体的には、まず、マスタノード１の管理下に位置するクラスタノード群（２〜Ｋ−１）にて構成された新たなクラスタ１が構成される。また、クラスタ１中のクラスタノード（２〜Ｋ−１）のうちの１つのクラスタノード２が中継クラスタノード２とされ、この中継クラスタノード２の管理下に位置する残りのクラスタノード（Ｋ〜Ｎ）にて構成された新たなクラスタ２が構成される。
【００３１】
このとき、クラスタ分割処理部１２２は、各クラスタ１，２のマスタノード１あるいは中継クラスタノード２の配下に位置するクラスタノードの数が同一となるよう、各クラスタ１，２に分割するとよい。但し、分割後のクラスタ内におけるクラスタノードの数は、上述した数に限定されない。
【００３２】
また、上記ノードリスト管理処理部１２３は、後述するようにクラスタノードからノードリストの更新要求を受け取ると、データ部１０３に記憶されているノードリストを更新する。なお、各クラスタノード２〜Ｎのノードリストの変更は、マスタノード１からの要求として要求通知処理部１２１から通知を行うことで実施する。
【００３３】
次に、クラスタノード機能制御部１３０について説明する。クラスタノード機能制御部１３０は、ノードがクラスタノード２〜Ｎとして動作するときに作動する機能であり、図３に示すように、要求転送処理部１３１と、要求処理部１３２と、ノードステータス変更処理部１３３と、を備えている。
【００３４】
上記要求転送処理部１３１（要求転送手段）は、マスタノード２もしくは他のクラスタノード２〜Ｎから要求の通知が来ると、かかる要求を受け付け、データ部１０３のノードリストを参照する。そして、ノードリスト中でステータスが異常であるノードを除く、自ノードの次以降に記載してある他のクラスタノードに対して要求を転送する。このとき、要求転送処理部１３１は、次に転送すべきクラスタノードがノードリストに存在しない場合には、要求をマスタノード１へ転送する。
【００３５】
上記要求処理部１３２は、マスタノード１からのクラスタノードのステータスの確認処理や、ノードリストの更新処理など、マスタノードからの要求に対応する処理を行う。
【００３６】
上記ノードステータス変更処理部１３３は、上述した要求転送処理部１３１にて要求を転送した転送先のクラスタノードが反応しない場合に、データ部１０３のノードリスト中の該当するノードのステータスを異常に変更する。さらに、ノードステータス変更処理部１３３は、ノードリストの更新をマスタノード１に要求し、要求転送処理部１３１による要求の転送の処理をやり直す。
【００３７】
次に、中継クラスタノード機能制御部１４０について説明する。中継クラスタノード機能制御部１４０は、ノードが中継クラスタノード２として動作するときに作動する機能であり、図３に示すように、中継処理部１４１を備えている。
【００３８】
上記中継処理部１４１は、マスタノード１からの要求情報を要求通知処理部１２１に渡して、当該要求通知処理部１２１にて自ノードであるクラスタ２の配下に位置する他のクラスタノードへ要求情報を転送する機能（要求転送手段）を有する。つまり、中継クラスタノード２は、図２に示すようにクラスタが分割されると、２つのクラスタ（クラスタ１，２）に所属することとなるため、上述したように、クラスタ１におけるクラスタノード２として振る舞うと共に、クラスタ２におけるマスタノードとしても振る舞う。従って、中継クラスタノード２は、クラスタ１におけるクラスタノードとして当該クラスタ１のノードリストを参照して次のクラスタノードに要求情報を転送すると共に、クラスタ２におけるマスタノードとして当該クラスタ２のノードリストを参照して配下に位置する次のクラスタノードに要求情報を転送する。
【００３９】
［動作］
次に、上述した情報処理システムの動作を、図６乃至図１３のフローチャートを参照して説明する。なお、初期状態として、図１に示すクラスタの状態であるとする。
【００４０】
まず、各ノード１〜Ｎは、動作モード判定処理部１１０にて動作モードを決定する。動作モード判定処理部１１０による動作を、図６を参照して説明する。まず、動作モード判定処理部１１０は、自ノードのデータ部１０３に記憶されているノードリストを取得し（ステップＳ１）、ノードリストから自ノードの転送順序を取得する（ステップＳ２）。そして、転送順序が「１」である場合には（ステップＳ３でＹｅｓ）、「マスタノードモード」であると判定し、自ノードの動作モード１６０に「マスタノードモード」をセットする（ステップＳ４）。
【００４１】
転送順序が「１」でない場合には（ステップＳ３でＮｏ）、「クラスタノードモード」であると判定し、自ノードの動作モード１６０に「クラスタノードモード」をセットする（ステップＳ５）。但し、その後、後述するクラスタ分割の結果、マスタノード１から中継クラスタノードに変更するよう要求があった場合には（ステップＳ６、ステップＳ７でＹｅｓ、ステップＳ８でＹｅｓ）、要求を受けたクラスタノードは自ノードの動作モード１６０に「中継クラスタノードモード」をセットする（ステップＳ９）。そして、各ノード１〜Ｎは、自ノードの動作モード１６０にセットされたモードにて動作する。
【００４２】
その後、マスタノード１は、配下のクラスタノード２〜Ｎのステータスを把握するため、要求通知処理部１２１にて一定周期で、クラスタノードに対しステータスの確認要求を通知する。この要求通知処理部１２１による動作を、図７を参照して説明する。まず、要求通知処理部１２１は、自ノードのデータ部１０３に記憶されているノードリストを取得する（ステップＳ１１）。そして、ノードリストからステータスが異常なノードを除き（ステップＳ１２）、自ノードの次以降に記載してあるクラスタノードと最後のクラスタノードを確認する（ステップＳ１３，Ｓ１４）。続いて、要求通知処理部１２１は、通知の開始時刻を取得すると共に、自ノードの次に記載してあるクラスタノード２に対して要求情報を通知し（ステップＳ１６）、最後のクラスタノードからの要求情報の通知を待つ（ステップＳ１７）。
【００４３】
ここで、マスタノード１の配下に位置するクラスタノード２〜Ｎの要求転送処理部１３１による動作を、図８を参照して説明する。まず、図１の符号２に示すクラスタノード２は、マスタノード１から要求の通知が来ると、要求転送処理部１３１にて要求を受け付ける（ステップＳ３１）。そして、受け付けた要求を要求処理部１３２に渡し、当該要求処理部１３２にて要求に対応する処理を行う（ステップＳ３２）。なお、要求処理部１３２による要求処理動作は、図９のステップＳ４１，Ｓ４２に示すよう行われる。
【００４４】
これに伴い、クラスタノード２は、自ノードのデータ部１０３に記憶されているノードリストを取得して（ステップＳ３３）、当該ノードリストからステータスが異常なノードを除き（ステップＳ３４）、ノードリストに自ノードの次に記載してあるクラスタノード３に対して要求を転送する（ステップＳ３５，Ｓ４６）。このとき、転送処理が成功すると（ステップＳ３７でＹｅｓ）、この要求の転送を受けた次以降のクラスタノード３等は、上述同様に、自ノードの次に記載してあるクラスタノードに要求を転送する（ステップＳ３１〜Ｓ３７）。一方、要求の転送を受けたクラスタノードから転送すべき次以降のクラスタノードがノードリストに存在しない場合は、要求をマスタノード１へ転送する（ステップＳ３６）。図１の場合は、符号ＮのクラスタノードＮが、要求をマスタノード１へ転送する。
【００４５】
なお、クラスタノードが要求を他のクラスタノードへ転送する際に、転送先のクラスタノードが反応しない場合に、クラスタノードのノードステータス変更処理部１３３は、図１０に示すように作動する。具体的には、まず、ノードリスト内で反応がなかった該当するノードのステータスを異常に変更する（ステップＳ５１，Ｓ５２）。そして、ノードリストの変更をマスタノード１に要求し（ステップＳ４３）、要求の転送の処理をやり直す。
【００４６】
そして、上述したように上記ノードリストの変更要求を受けたマスタノード１のノードリスト管理処理部１２３は、図１１に示すよう作動する。具体的に、ノードリスト管理処理部１２３は、まず、受け付けた変更要求に従ってノードリストを更新する（ステップＳ６１，Ｓ６２）。そして、要求通知処理部１２１は、各クラスタノードのノードリストの変更の要求の通知を行う（ステップＳ６３，Ｓ６４）。なお、かかる要求の通知は、上述同様に各ノードで転送される。
【００４７】
以上のように、マスタノード１からの各種要求がクラスタノードで転送され、後にマスタノード１に最後のクラスタノードから要求情報の通知が来たときの動作を、図７に戻って説明する。マスタノード１の要求通知処理部１２１は、転送すべき他のクラスタノードがない最後のクラスタノードから要求情報の通知を受け取ると（ステップＳ１８）、通知を受けた時刻を取得して（ステップＳ１９）、最初のクラスタノードに要求を通知してから最後のクラスタノードから通知が来るまでの時間RTを算出する（ステップＳ２０）。そして、この時間RTと、予め設定された任意定数Tと、を比較する（ステップＳ２１）。RTがTより大きい場合、マスタノード１はクラスタ分割処理部１２２にクラスタの分割処理を依頼する（ステップＳ２２）。なお、上記Tは、ノード間の通信時間の平均にノード数を掛けたものに、任意のタイムアウト時間を足したものとする。
【００４８】
次に、クラスタ分割処理部１２２によるクラスタの分割処理を、図１２を参照して説明する。クラスタ分割処理部１２２は、マスタノード１のデータ部１０３に記憶されているノードリストから、転送順序が２番目のクラスタノードを中継クラスタノードとして選択する（ステップＳ７１、Ｓ７２）。また、任意のノードを選択し、図５に示すように、ノードリストの最初のノードから任意のノードまでのノードリスト１と、任意のノードの次のノードから最後のノードまでと中継クラスタノードとを組み合わせたノードリスト２と、を作成する（ステップ７３，Ｓ７４）。このとき、ノードリスト２の中継クラスタノードの転送順序は、「１」に更新される（ステップＳ７５）。
【００４９】
そして、クラスタ分割処理部１２２は、作成したノードリスト１とノードリスト２を要求通知処理部１２１へ渡すことで、各クラスタノードのノードリストは更新される（ステップＳ７６、Ｓ７９）。
【００５０】
続いて、クラスタ分割処理部１２２は、中継クラスタノードに直接、動作モードの変更要求を通知する（ステップＳ７７）。すると、中継クラスタノードは、動作モード判定処理部１１０にて自ノードのデータ部１０３に記憶されている動作モード１６０を「中継クラスタノードモード」に変更する。なお、マスタノード１は、作成したノードリスト１，２をデータ部１０３に格納しておく（ステップＳ７８）。
【００５１】
以上のようにして、図２に示すようにクラスタが分割されると、符号２に示すクラスタノードである中継クラスタノード２の中継処理部１４１は、２つのクラスタ（クラスタ１，２）に所属することとなり、図１３に示すように作動する。つまり、中継クラスタノード２は、まず、マスタノード１からの要求情報に応じて（ステップＳ８１）、クラスタ１におけるクラスタノード２として振る舞い、要求転送処理部１３１にてクラスタ１のノードリストを参照して、次のクラスタノードに要求情報を転送する（ステップＳ８３）。これと同時に、中継クラスタノード２は、クラスタ２におけるマスタノードとしても振る舞い、要求通知処理部１２１にてクラスタ２のノードリストを参照して配下に位置する次のクラスタノードに要求情報を転送する（ステップＳ８２）。
【００５２】
そして、それぞれ転送された要求情報は、上述したように各クラスタノード間で転送されるため、全てのクラスタノードにマスタノードからの要求を伝えることができる。
【００５３】
ここで、マスタノード１の配下に位置するクラスタノードをそれぞれ中継クラスタノードとし、新たなクラスタをそれぞれ構成することで、非常に多くのノードに対応することができる。例えば、図１４に示すように、１つのクラスタ１をＮ個のノード（マスタノード：１個、クラスタノード：（Ｎ−１）個）で構成し、全てのクラスタノードを中継クラスタノードとして、当該各中継クラスタノードの配下に（Ｎ−１）個のクラスタノードを配置し、クラスタ１，２，３，４を構成する。これにより、マスタノードを除く全体のノード数を、｛（Ｎ−１）＋（Ｎ−１）２｝個まで増やすことができると共に、RTを（T×２）以下に抑えることができる。
【００５４】
更に、図示しないが、図１４に示す中継クラスタノードの配下の各クラスタノードを中継クラスタノードとして、各中継クラスタノードの配下に（Ｎ−１）個のクラスタノードを配置して、ノード数を増やすことができる。この場合、マスタノードを除く全体のノード数を｛（Ｎ−１）＋（Ｎ−１）２＋（Ｎ−１）３｝個に増やすことができ、また、RTを（T×３）以下に抑えることができる。このとき、マスタノードからの要求が、末端のクラスタノードに届くまでに中継クラスタノードを２回経由することになる。
【００５５】
同様にして、クラスタノードを中継クラスタノードとすることでノード数を更に増やすことができる。そして、要求が中継クラスタノードを経由する回数を（Ｐ−１）とした場合には、マスタノードを除く全体のノード数は、｛（Ｎ−１）＋（Ｎ−１）２＋・・・＋（Ｎ−１）Ｐ｝個となり、RTは（T×P）以下に抑えることができる。
【００５６】
以上のように、本発明によると、マスタノードは要求を１つのクラスタノードに要求を通知するだけでよいため、各クラスタノードと１対１の通信を行う場合と比較して、クラスタノードの数によらずマスタノードの負荷を一定にすることができる。
【００５７】
また、クラスタノード数が増加した場合であっても、クラスタを動的に分割することで、マスタノードの要求の転送をマスタノード配下のクラスタと分割されたクラスタで転送を並行して行うことができるため、マスタノードからの要求が全てのクラスタノードに行き渡るまでの時間を一定時間以下に保つことができる。その結果、複数台のコンピュータからなる情報処理システムにおける管理時間の短縮化を図ることができる。
【００５８】
ここで、上述した説明では、クラスタを（物理的な）ノード単位で構成していたが、ノード内を複数の論理区画に分けることで、ノード全体で複数のクラスタ構成を組むことができる。例えば、ノード内で種類の違うアプリケーションＡとＢを実行している場合、ノード内を２つの論理区画に分け、別々に論理的なクラスタを構成する。こうすることで、ノードの物理構成に依存せずにクラスタを構成することができる。
【００５９】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理システム、マスタノード、プログラム、情報処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００６０】
（付記１）
マスタノードと、当該マスタノードにて管理される複数のクラスタノードと、を備えると共に、
前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストを記憶し、
前記クラスタノードは、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備え、
前記マスタノードは、前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を備え、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
情報処理システム。
【００６１】
（付記２）
付記１に記載の情報処理システムであって、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、このクラスタノード群のうちの１つのクラスタノードを中継クラスタノードとして当該中継クラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
情報処理システム。
【００６２】
（付記３）
付記２に記載の情報処理システムであって、
前記クラスタ分割手段は、前記マスタノードの管理下に位置するクラスタノード群に対応する前記要求情報の前記マスタノードからの転送順序が設定されたノードリストと、前記中継クラスタノードの管理下に位置する他のクラスタノード群に対応する前記要求情報の前記中継クラスタノードからの転送順序が設定されたノードリストと、をそれぞれ作成して記憶し、
前記中継クラスタノードとされた前記クラスタノードが有する前記要求転送手段は、前記マスタノードの管理下に位置するクラスタノード群に対応する前記ノードリストに従って前記要求情報を転送すると共に、自装置である中継クラスタノードの管理下に位置する他のクラスタノード群に対応する前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送する、
情報処理システム。
【００６３】
（付記４）
付記２又は３に記載の情報処理システムであって、
前記クラスタ分割手段は、前記マスタノードの管理下に位置するクラスタノードの数と、前記中継クラスタノードの管理下に位置するクラスタノードの数と、が同一となるよう前記複数のクラスタノードを分割する、
情報処理システム。
【００６４】
（付記５）
付記１乃至４のいずれかに記載の情報処理システムであって、
前記クラスタ分割手段は、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間が予め設定された閾値よりも大きい場合に前記複数のクラスタノードを分割する、
情報処理システム。
【００６５】
（付記６）
複数のクラスタノードを管理するマスタノードであって、
前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストを記憶し、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備えている場合に、
前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を備え、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
マスタノード。
【００６６】
（付記７）
付記６に記載のマスタノードであって、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、このクラスタノード群のうちの１つのクラスタノードを中継クラスタノードとして当該中継クラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
マスタノード。
【００６７】
（付記８）
複数のクラスタノードを管理すると共に、前記クラスタノードに対する要求情報の転送順序が設定されたノードリストを記憶したマスタノードに組み込まれるプログラムであって、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送する要求転送手段を備えている場合に、
前記マスタノードに、前記ノードリストに従って前記要求情報を一の前記クラスタノードに送信する要求通知手段と、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割するクラスタ分割手段と、を実現させると共に、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
ことを実現させるためのプログラム。
【００６８】
（付記９）
付記８に記載のプログラムであって、
前記クラスタ分割手段は、前記複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、このクラスタノード群のうちの１つのクラスタノードを中継クラスタノードとして当該中継クラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
ことを実現させるためのプログラム。
【００６９】
（付記１０）
マスタノードと、当該マスタノードにて管理される複数のクラスタノードと、を備えた情報処理システムによる情報処理方法であって、
前記マスタノードが、前記マスタノードから前記クラスタノードに出される要求情報の転送順序が設定されたノードリストに従って前記要求情報を一の前記クラスタノードに送信し、
前記クラスタノードが、前記マスタノードあるいは他の前記クラスタノードから送信された前記要求情報を受け付けて、前記ノードリストに従って次の転送先となる他の前記クラスタノードに前記要求情報を転送すると共に、次の転送先がない場合には前記要求情報を前記マスタノードに転送し、
前記マスタノードが、前記要求情報を送信してから他の前記クラスタノードから送信された前記要求情報を受け取るまでの時間に応じて前記複数のクラスタノードを分割すると共に、
前記マスタノードが、前記複数のクラスタノードを分割する際に、当該複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、所定のクラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
情報処理方法。
【００７０】
（付記１１）
付記１０に記載の情報処理方法であって、
前記マスタノードが、前記複数のクラスタノードを分割する際に、当該複数のクラスタノードを、前記マスタノードの管理下に位置するクラスタノード群と、このクラスタノード群のうちの１つのクラスタノードを中継クラスタノードとして当該中継クラスタノードの管理下に位置する他のクラスタノード群と、に分割する、
情報処理方法。
【符号の説明】
【００７１】
１  マスタノード
２〜Ｎ  クラスタノード（中継クラスタノード）
１０１  ノード
１０２  制御部
１０３  データ部
１１０  動作モード判定処理部
１２０  マスタノード機能制御部
１２１  要求通知処理部
１２２  クラスタ分割処理部
１２３  ノードリスト管理処理部
１３０  クラスタノード機能制御部
１３１  要求転送処理部
１３２  要求処理部
１３３  ノードステータス変更処理部
１４０  中継クラスタノード機能制御部
１４１  中継処理部
１５１，１５２  ノードリスト
１６０  動作モード
【図１】
0005625998.tif 000002
【図２】
0005625998.tif 000003
【図３】
0005625998.tif 000004
【図４】
0005625998.tif 000005
【図５】
0005625998.tif 000006
【図６】
0005625998.tif 000007
【図７】
0005625998.tif 000008
【図８】
0005625998.tif 000009
【図９】
0005625998.tif 000010
【図１０】
0005625998.tif 000011
【図１１】
0005625998.tif 000012
【図１２】
0005625998.tif 000013
【図１３】
0005625998.tif 000014
【図１４】
0005625998.tif 000015