(57)【特許請求の範囲】
【請求項１】
接続関係にある複数の情報処理装置を備え、
各情報処理装置が自情報処理装置に隣接する情報処理装置の情報を有し、
前記複数の情報処理装置の内の少なくとも３つでハミルトン閉路となるネットワークを構成し、
前記ハミルトン閉路を構成する前記情報処理装置のうち第１情報処理装置が、前記ハミルトン閉路への情報処理装置の追加要求を受信すると、
前記第１情報処理装置は、前記情報に基づいて、前記第１情報処理装置と隣接し、かつ、前記第１情報処理装置とハミルトン閉路上で隣接する情報処理装置とも隣接する第２情報処理装置を前記ネットワークへ追加することを特徴とする情報処理システム。
【請求項２】
請求項１に記載の情報処理システムにおいて、
前記情報には、さらに、前記隣接する情報処理装置に隣接する情報処理装置の情報が含まれることを特徴とする情報処理システム。
【請求項３】
請求項２に記載の情報処理システムにおいて、
前記ハミルトン閉路を構成する前記情報処理装置のうち第３情報処理装置が電源遮断要求を受信すると、
前記情報に基づいて、前記第３情報処理装置と前記ハミルトン閉路上で隣接する第４情報処理装置と、前記第１情報処理装置と前記ハミルトン閉路上で隣接する第５情報処理装置とが、隣接する場合、前記第３情報処理装置の電源を遮断し、
前記第４情報処理装置と前記第５情報処理装置とが隣接しない場合、前記第３情報処理装置を待機させることを特徴とする情報処理システム。
【請求項４】
請求項１に記載の情報処理システムにおいて、
前記ネットワークはハートビートネットワークであることを特徴とする情報処理システム。
【請求項５】
請求項１に記載の情報処理システムにおいて、
前記情報処理装置はサーバ装置であることを特徴とする情報処理システム。
【請求項６】
接続関係にある複数の情報処理装置を準備し、
各情報処理装置に自情報処理装置に隣接する情報処理装置の情報を与え、
前記複数の情報処理装置の内の少なくとも３つでハミルトン閉路となるネットワークを構成し、
前記ハミルトン閉路を構成する前記情報処理装置のうち第１情報処理装置が、前記ハミルトン閉路への情報処理装置の追加要求を受信すると、
前記情報に基づいて、前記第１情報処理装置と隣接し、かつ、前記第１情報処理装置とハミルトン閉路上で隣接する情報処理装置とも隣接する第２情報処理装置を前記ネットワークへ追加することを特徴とする情報処理システムの運用管理方法。
【請求項７】
請求項６に記載の情報処理システムの運用管理方法において、
前記情報には、さらに、前記隣接する情報処理装置に隣接する情報処理装置の情報が含まれることを特徴とする情報処理システムの運用管理方法。
【請求項８】
請求項７に記載の情報処理システムの運用管理方法において、
前記ハミルトン閉路を構成する前記情報処理装置のうち第３情報処理装置が電源遮断要求を受信すると、
前記情報に基づいて、前記第３情報処理装置と前記ハミルトン閉路上で隣接する第４情報処理装置と、前記第１情報処理装置と前記ハミルトン閉路上で隣接する第５情報処理装置とが、隣接する場合、前記第３情報処理装置の電源を遮断し、
前記第４情報処理装置と前記第５情報処理装置とが隣接しない場合、前記第３情報処理装置を待機させることを特徴とする情報処理システムの運用管理方法。
【請求項９】
請求項６に記載の情報処理システムの運用管理方法において、
前記ネットワークはハートビートネットワークであることを特徴とする情報処理システムの運用管理方法。
【請求項１０】
請求項６に記載の情報処理システムの運用管理方法において、
前記情報処理装置はサーバ装置であることを特徴とする情報処理システムの運用管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の情報処理装置を有する情報処理システムに関し、特に情報処理装置間の効率的な情報交換に好適なネットワークを構築する技術に関する。
【背景技術】
【０００２】
大量の計算資源を集約するデータセンタの利用が普及している。データセンタの利用者は自前で計算資源を用意する必要がなく、必要な時に必要な量の計算資源を仮想的に保有することができるため、計算資源保有のための初期コストを抑えることができる。またデータセンタ提供者は大量の計算資源を集約することで構築コストと運用管理コストを抑えることができる。【０００３】
近年、データセンタの運用管理コストを抑えるため、また、モジュラー型データセンタと呼ばれる小規模な複数のデータセンタを分散配置する形式のデータセンタの保守コストを抑えるため、耐故障性に優れる計算機ネットワークアーキテクチャが非特許文献１、非特許文献２で提案されている。これらの文献では、従来の木構造ではなく、計算機自身を計算用途としてだけでなくスイッチ用途としても利用するネットワークアーキテクチャが提案されている。【０００４】
一方、計算機の故障を検知するためには、各計算機から定期的に正常稼働通知情報を特定ノードに送信するハートビートと呼ばれる障害検知機構が利用されている。従来の木構造では、木構造を利用して、特定の管理ノードへ直接ハートビートを送信することができる。しかし、非特許文献１または非特許文献２が提案するような計算機自体をスイッチとして利用する場合には、計算機を経由してハートビートを管理ノードに送信する必要があり、ハートビートの送信に無駄が生じる。また、低消費電力化を目的に非可動計算機の電源を遮断する場合や、計算機に故障が生じた際に、計算機自身がネットワーク資源としての役割を担っているためにネットワークトポロジが動的に変化してしまう。【０００５】
そのため、これら計算機をスイッチとしても利用するようなネットワークアーキテクチャにおいては、計算機同士で自律的にハートビートネットワーク構築し、適切な障害検知を実施する必要がある。【０００６】
複数の計算機からなる計算機システムにおける自律的なハートビートネットワーク構築方法として、ゴシップ情報の伝播をモデルとしたゴシップスタイルと呼ばれる情報交換方式が非特許文献３にて提案されている。また、自律的かつ、障害発生時に即座に障害を検知する即時性をもったハートビートネットワーク構築方法として、隣接計算機の隣接計算機を考慮してハートビートを送信する相手を選択する方法が非特許文献４で提案されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Ｃ．  Ｇｕｏ，  ｅｔ．ａｌ．，  “Ｄｃｅｌｌ：  ａ  ｓｃａｌａｂｌｅ  ａｎｄ  ｆａｕｌｔ−ｔｏｌｅｒａｎｔ  ｎｅｔｗｏｒｋ  ｓｔｒｕｃｔｕｒｅ  ｆｏｒ  ｄａｔａ  ｃｅｎｔｅｒｓ”，  ｉｎ  Ｐｒｏｃ．  ｏｆ  ｔｈｅ  ＡＣＭ  ＳＩＧＣＯＭＭ  ２００８  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｄａｔａ  ｃｏｍｍｕｎｉｃａｔｉｏｎ，  Ａｕｇ．  １７−２２，  ２００８，ｐ．７５−８６
【非特許文献２】Ｃ．  Ｇｕｏ，  ｅｔ．ａｌ“ＢＣｕｂｅ：  ａ  ｈｉｇｈ  ｐｅｒｆｏｒｍａｎｃｅ  ｓｅｒｖｅｒ  ｃｅｎｔｒｉｃ  ｎｅｔｗｏｒｋ  ａｒｃｈｉｔｅｃｔｕｒｅ  ｆｏｒ  ｍｏｄｕｌａｒ  ｄａｔａ  ｃｅｎｔｅｒｓ”，  ｉｎ  Ｐｒｏｃ．  ｏｆ  ｔｈｅ  ＡＣＭ  ＳＩＧＣＯＭＭ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｄａｔａ  ｃｏｍｍｕｎｉｃａｔｉｏｎ，  １６−２１，  Ａｕｇ．  ２００９，ｐ．６３−７４
【非特許文献３】Ｒ．  Ｒｅｎｅｓｓｅ，  Ｙ．  Ｍｉｎｓｋｙ  ａｎｄ  Ｍ．  Ｈａｙｄｅｎ，  “Ａ  Ｇｏｓｓｉｐ−Ｓｔｙｌｅ  Ｆａｉｌｕｒｅ  Ｄｅｔｅｃｔｉｏｎ  Ｓｅｒｖｉｃｅ”，  ｉｎ  Ｐｒｏｃ．  ｏｆ  ｔｈｅ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｓｙｓｔｅｍｓ  Ｐｌａｔｆｏｒｍｓ  ａｎｄ  Ｏｐｅｎ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｐｒｏｃｅｓｓｉｎｇ，  １９９８，  ｐ．  ５５−７０
【非特許文献４】Ｙ．  Ｈｏｒｉｔａ，  Ｋ．  Ｔａｕｒａ  ａｎｄ  Ｔ．  Ｃｈｉｋａｙａｍａ，  ”Ａ  Ｓｃａｌａｂｌｅ  ａｎｄ  Ｅｆｆｉｃｉｅｎｔ  Ｓｅｌｆ−Ｏｒｇａｎｉｚｉｎｇ  Ｆａｉｌｕｒｅ  Ｄｅｔｅｃｔｏｒ  ｆｏｒ  Ｇｒｉｄ  Ａｐｐｌｉｃａｔｉｏｎｓ”，  ｉｎ  Ｐｒｏｃ．  ｏｆ  ｔｈｅ  ６ｔｈ  ＩＥＥＥ／ＡＣＭ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｇｒｉｄ  Ｃｏｍｐｕｔｉｎｇ，  Ｎｏｖ．  ２００５，  ｐ．  ２０２−２１０
【発明の概要】
【発明が解決しようとする課題】
【０００８】
非特許文献３に開示されている方法は、完全にランダムに情報交換の相手を選択してハートビートを送信するため、非常に自律性の高いハートビートネットワークを構築することができる。しかし、この方法は、完全にランダムであるため、情報の確定までに一定の時間を要する。そのため、即時性の観点で課題がある。【０００９】
非特許文献４に開示されている方法は、自律的かつ即時的である。しかし、情報伝播の完全性のために過剰なハートビートを送受信することになり、ネットワーク負荷が大きくなる課題がある。また、特定のノードにハートビートの送受信が集中する可能性がある。【００１０】
そこで本発明は、情報処理システム内での、ハートビート送受信によるネットワークへの負荷を抑え且つ平均化することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、情報処理システム内で互いに接続関係にある各情報処理装置が、自情報処理装置に隣接する情報処理装置の情報を有し、情報処理システム内の情報処理装置の内の少なくとも３つでハミルトン閉路となるネットワークを構成し、該情報に基づいて、該ネットワークへの該隣接する情報処理装置の追加を行うことで、上述の課題を解決する。
【発明の効果】
【００１２】
本発明により、情報処理システム内での、ハートビート送受信によるネットワークへの負荷を抑え且つ平均化することができる。
【図面の簡単な説明】
【００１３】
【図１】計算機（情報処理装置）の構成例を示す機能ブロック図である。
【図２】ハミルトン閉路の例図である。
【図３】計算機稼働制御方式を説明するための例図である。
【図４】データセンタの例を示す図である。
【図５】図４に示したデータセンタのネットワークトポロジに対応するグラフ表現の図である。
【図６】計算機追加稼働の動作の例を示す図である。
【図７】計算機追加稼働の動作の例を示すフローチャートである。
【図８】計算機の稼働停止制御の動作の例を示すフローチャートである。
【図９】２台以上の計算機を一度に追加して稼働させハミルトン閉路を拡張する場合の例を示す図である。
【図１０】２台以上の計算機を一度に追加して稼働させハミルトン閉路を拡張することを実現するための計算機構成の例を示す図である。
【図１１】２台以上の計算機を一度に追加して稼働させハミルトン閉路を拡張する動作の例を示す図である。
【図１２Ａ】２台以上の計算機を一度に追加して稼働させハミルトン閉路を拡張する動作のフローチャートである。
【図１２Ｂ】２台以上の計算機を一度に追加して稼働させハミルトン閉路を拡張する動作のフローチャートである。
【図１３】計算機探索チェーンリストＬ５の例を示す図である。
【図１４】データセンタ制御部ＤＣ＿ＣＴＲＬの構成例を示す図である。
【図１５】中央管理型の場合の動作例を示すフローチャートである。
【図１６】リストＬ６の例を示す図である。
【図１７】リストＬ７の例を示す図である。
【図１８】リストＬ８の例を示す図である。
【図１９】リストＬ１０の例を示す図である。
【図２０】データセンタ構成の例を示す図である。
【図２１】使用不可計算機の存在を示す例を示す図である。
【図２２】使用不可計算機のハートビートネットワークの例を示す図である。
【図２３】データセンタ内のクラスタ化の例を示す図である。
【図２４】計算機（情報処理装置）のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１４】
本発明の具体的実施形態を図面に基づいて詳細に説明する。
【実施例１】
【００１５】
互いに接続関係にある複数の計算機（情報処理装置）を備える情報処理システムにおいて、最小のネットワーク負荷かつ、各計算機への負荷が最小かつ平等な全計算機間での情報交換方法を考えると、それは各計算機が１台の相手に情報を送信し、かつ、各計算機が一台の相手から情報を受信する場合である。計算機をノード、情報の送受信関係をエッジとして考えると、それは図２のように全ノードを１度ずつ通る閉路に従い情報交換を行うことである。このような全ノードを１度ずつ通る閉路をグラフ理論ではハミルトン閉路（ＨＣ：Ｈａｍｉｌｔｏｎ  Ｃｙｃｌｅ）と呼ぶ。よって、任意の台数、任意の接続関係を持つ複数の計算機を備える情報処理システムにおいて、最小のネットワーク負荷かつ、各計算機への負荷が最小かつ平等な全計算機間での情報交換を行うには、情報処理システム上の各計算機をノード、計算機間の接続関係をエッジとするグラフ上におけるハミルトン閉路を見つけ、そのハミルトン閉路を利用して情報交換を行えば良い。また、そのハミルトン閉路上の情報交換方法を利用してハートビートネットワークを構成すれば、ネットワーク負荷が最小かつ、各計算機への負荷が最小かつ平等な障害検知機構を構成することが可能である。【００１６】
しかし、任意のグラフにおけるハミルトン閉路を見つける問題はハミルトン閉路問題と呼ばれ、計算論的に困難な問題であることが知られている。そのため、各計算機の電源投入、電源遮断や計算機の故障などにより動的にネットワークトポロジが変化する条件下において、ネットワークトポロジの変化の際に適時そのネットワークトポロジ上に対応するグラフ上のハミルトン閉路を見つけることは計算量の観点から困難である。特にノード数が多くなると考えられる大規模データセンタにおいてはなおさら困難である。【００１７】
ここで、任意のグラフからハミルトン閉路を見つけ出すことは難しいものの、現在存在するハミルトン閉路を逐次拡大縮小するための十分条件は容易に考えられ、その十分条件に従って、ハミルトン閉路を逐次拡大縮小することは可能である。つまり、現在のハミルトン閉路上の隣接する２つのノードにエッジを持つノードであれば、そのノードを追加した後に、追加された新たなノードを加えたハミルトン閉路を再構築することは容易である。同様に、現在のハミルトン閉路上のあるノードの２つの隣接ノード間にエッジがあれば、そのノードを除いても新たにハミルトン閉路を再構築することは容易である。【００１８】
例えば、図３のように、５つのノード１，２，３，４，５が現在のハミルトン閉路ＨＣ（１→２→３→４→５→１）を構成している場合、そのハミルトン閉路上の隣接する２つのノード１，５の両方にエッジを持つノード６を追加しても、ノード５からノード１へのエッジＥ（５→１）をノード６を経由する２つのエッジＥ（５→６），Ｅ（６→１）の２つに繋ぎかえることで容易にノード１，２，３，４，５，６から構成されるグラフ上の新たなハミルトン閉路ＨＣ’（１→２→３→４→５→６→１）を構成することが可能である。同様に、現在のハミルトン閉路ＨＣ（１→２→３→４→５）において、ノード３はＨＣ上の隣接する２つのノード２，４間にエッジが存在するためノード３を除去しても、ノード３へのハミルトン閉路上の２つのエッジＥ（２→３）とＥ（３→４）の２つのエッジをノード３を経由せずに直接Ｅ（２→４）で接続することで、新たなハミルトン閉路ＨＣ’’（１→２→４→５→１）を構築することが可能である。【００１９】
本実施例の情報処理システムは、上述のように、任意のネットワークトポロジ上のハミルトン閉路を見つけるのではなく、ハミルトン閉路の拡大縮小によって適時ハミルトン閉路を維持するように計算資源の管理を行う。つまり、本実施例では、新たな計算機を稼働させる際、または計算機を非稼働にする際に、逐次的にハミルトン閉路を容易に拡大または縮小できる計算機を選択することで、稼働中の複数の計算機間にハミルトン閉路を用意し、そのハミルトン閉路を用いて効率的に稼働中の全計算機間で情報交換を行うことを可能にする。さらには、そのハミルトン閉路を用いてハートビートネットワークを構築することで、各計算機は１台の計算機にハートビートを送信し、１台の計算機からのハートビートを受信し、全体としてループを形成することで、ネットワーク負荷が最小かつ、各計算機への負荷が最小かつ平等な障害検知機構を構築する。【００２０】
図４に、本発明を適用した情報処理システムの例として、データセンタＤＣを示す。図４のデータセンタＤＣでは、２５台の計算機（情報処理装置）ＳＲＶを備えることを想定し、各計算機間に特定の接続関係を想定している。各計算機ＳＲＶには、図４に示した識別番号（１〜２５）が与えられている。ここで、計算機ＳＲＶは、例えばサーバ装置である。また、計算機ＳＲＶの台数および接続関係は説明上の例であり、本発明は台数および計算機間の接続関係により限定されない。また、説明を容易にするために、データセンタＤＣ内の管理を行うデータセンタコントローラＤＣ＿ＣＴＲＬおよびクラスタコントローラＣＬ＿ＣＴＲＬがデータセンタＤＣに含まれるが、同様に、本発明はデータセンタコントローラＤＣ＿ＣＴＲＬおよびクラスタコントローラＣＬ＿ＣＴＲＬを有する構成に限定されない。【００２１】
今、データセンタＤＣでは、実線で示された計算機ＳＲＶ９，１０，１３，１４，１５，１８，１９，２０が稼動しており、稼働中の計算機間でハミルトン閉路ＨＣ＝（１０→９→１４→１３→１８→１９→２０→１５→１０）が構成され、そのハミルトン閉路上でハートビートネットワークが構築されているものとする。一方で、計算機ＳＲＶ９，１０，１３，１４，１５，１８，１９，２０以外の計算機は非稼動中とする。【００２２】
ここで、新たな計算機の稼働要求がデータセンタＤＣに来た場合を考える。新たな計算機の稼働要求としては、データセンタＤＣの外部からユーザやデータセンタＤＣの管理者が要求を出す場合、またデータセンタ内部で計算能力の逼迫を検知して新たな計算機を稼働する場合などが考えられる。このような新たな計算機の稼動要求が来た際に、データセンタＤＣは、ランダムに新たな計算機を選択するのではなく、後述のように、ハミルトン閉路を容易に拡大することが可能な計算機を選択的に追加する。【００２３】
図５は、図４のデータセンタＤＣのネットワークトポロジに対応するグラフ表現を示す図である。丸で示したノード内の各数字が、計算機ＳＲＶの識別番号に対応する。新たな計算機ＳＲＶを追加する際に、その追加する計算機ＳＲＶが現在のハミルトン閉路上の隣接する２つのノードの両方にエッジを持つ場合は、容易にハミルトン閉路を拡大再構成することが可能である。図５の場合、ノード５，８，１７，２４に対応する計算機ＳＲＶ５，８，１７，２４が候補として該当する。複数の計算機ＳＲＶが追加候補として存在する場合に、起動要求計算機数が１台であれば、データセンタＤＣは、後述のように、候補の中から適切な評価指標に基づき１台を選出する。【００２４】
図１に、以上説明したハミルトン閉路の拡大縮小を各計算機が自律分散的に実現することを可能にするための計算機ＳＲＶの構成例を機能ブロック図で示す。図６は、図１に示した計算機ＳＲＶを有するデータセンタＤＣ内での、各計算機ＳＲＶの処理の関係を示す図である。図７は、各計算機ＳＲＶの動作を示すフローチャートである。【００２５】
各計算機ＳＲＶは、通常の計算機の要素ＳＲＶ＿ＢＡＳＥに加え、周囲の計算機やコントローラと通信するためのインターフェイスＣＯＭ＿ＩＦ、自身の隣接計算機に関する情報ＡＤＪ＿ＳＲＶ＿ＩＮＦ、および一連の計算機追加のための手続きを担うノードコントローラＮＯＤＥ＿ＣＴＲＬを有する。【００２６】
隣接計算機に関する情報ＡＤＪ＿ＳＲＶ＿ＩＮＦには、自計算機ＳＲＶがどの計算機ＳＲＶと隣接であるか、および自計算機ＳＲＶに隣接する計算機ＳＲＶがどの計算機ＳＲＶと隣接であるかを表すリスト情報ＡＤＪ＿ＣＯＮと、自計算機ＳＲＶに隣接する計算機ＳＲＶの稼働、非稼働、および利用状況に関する情報ＡＤＪ＿ＡＣＴと、自計算機ＳＲＶに隣接する計算機ＳＲＶの故障に関する情報ＡＤＪ＿ＦＬＴと、が含まれる。情報ＡＤＪ＿ＡＣＴが保持する隣接計算機の利用状況とは、その計算機を使用中のユーザ情報であるユーザ識別情報（ＩＤ）やグループＩＤ、またはアプリケーション情報であるアプリケーションＩＤである。【００２７】
リスト情報ＡＤＪ＿ＣＯＮは、データセンタの出荷時または構成時に各計算機ＳＲＶ毎に予め設定しておき、構成変更の際に適時外部から更新する。また、リスト情報ＡＤＪ＿ＣＯＮには、予め自計算機ＳＲＶがどの計算機ＳＲＶと隣接であるかの情報を入れておき、各計算機ＳＲＶが、各計算機ＳＲＶに隣接する計算機のリスト情報ＡＤＪ＿ＣＯＮから、自計算機ＳＲＶに隣接する計算機ＳＲＶがどの計算機ＳＲＶと隣接であるかの情報を入手してリスト情報ＡＤＪ＿ＣＯＮに足すようにすることもできる。例えば、計算機ＳＲＶが、計算機のハミルトン閉路への追加やハミルトン閉路からの削除のプロセスを実行する際に、自計算機ＳＲＶに隣接する計算機ＳＲＶがどの計算機ＳＲＶと隣接であるかの情報を、隣接する計算機から取り寄せるようにすることができる。また例えば、データセンタＤＣ全体に、該情報を隣接する計算機から取り寄せるトリガとなる信号を放送することで実現することもできる。これにより、データセンタＤＣの管理者が、リスト情報ＡＤＪ＿ＣＯＮの入力に要する労力を大幅に削減できる。情報ＡＤＪ＿ＡＣＴは、隣接計算機が稼働開始、稼働停止、アプリケーション割当、ユーザ割当などのイベント発生時に通知情報を放送することで更新する。情報ＡＤＪ＿ＦＬＴは、故障を検知した計算機ＳＲＶが故障情報をデータセンタの計算機に放送することで更新する。【００２８】
ノードコントローラＮＯＤＥ＿ＣＴＲＬには、現在の最有力候補計算機を示す情報Ｃ＿ＣＡＮＤと、情報Ｃ＿ＣＡＮＤを更新する制御部ＣＡＮＤ＿ＵＰＤＡＴＥと、追加候補計算機同士を比較評価するための指標ＥＶＡＬ＿ＣＲＴと、指標ＥＶＡＬ＿ＣＲＴを用いて評価を行う制御部ＰＲＴ＿ＥＶＡＬと、自身を識別する識別子ＳＲＶ＿ＩＤと、現在のハミルトン閉路情報Ｃ＿ＨＣと、情報Ｃ＿ＨＣの更新を行う制御部ＨＣ＿ＵＰＤＡＴＥと、自身の隣接計算機の中から追加候補計算機のリストを生成する制御部ＧＥＮ＿ＣＡＮＤ＿ＬＩＳＴとが含まれる。現在のハミルトン閉路情報Ｃ＿ＨＣには、ハミルトン閉路の識別情報ＨＣＩＤと、自計算機が所属するハミルトン閉路に含まれる計算機および計算機の接続の情報と、が含まれる。ハミルトン閉路の識別情報ＨＣＩＤは、データセンタＤＣの管理者が与えてもよいし、データセンタＤＣが自動的に付与してもよい。【００２９】
図２４に、計算機ＳＲＶのハードウェア構成例を示す。計算機ＳＲＶは、中央処理装置ＣＰＵ、主記憶装置ＭＥＭ、ストレージ装置ＳＴＲ、およびネットワークインタフェースＮＴＩＦを備える。各装置はバスで接続される。主記憶装置ＭＥＭは、ランダムアクセスメモリである。ストレージ装置ＳＴＲはハードディスクドライブやフラッシュメモリである。図１に示した各制御部による制御についての演算処理や、その他の演算処理は、中央処理装置ＣＰＵで実行される。また、図１に示した各制御部のプログラムや各情報は、ストレージ装置ＳＴＲに保存されて、主記憶装置ＭＥＭに取り出されて使用される。ネットワークインタフェースＮＴＩＦは、複数の計算機と接続可能であり、計算機ＳＲＶはスイッチとして機能することができる。【００３０】
以下、ハミルトン閉路に計算機を追加する際のデータセンタＤＣや計算機ＳＲＶの動作について説明する。図６、並びに図７の各ステップに沿って説明する。【００３１】
計算機追加の一連の手続きは、まず計算機追加の要求を送信することが起点となる。計算機追加要求が送信される場合としては、データセンタＤＣの外部からユーザやデータセンタの管理者が要求を出す場合、またデータセンタＤＣ内部で計算能力の逼迫を検知して新たな計算機を稼働する場合などが考えられる。図６では、要求送信者を起点者Ｔｒｉｇとしている。起点者Ｔｒｉｇは、計算機追加要求であるノード割当要求と、追加候補計算機同士を比較評価するための指標ＥＶＡＬ＿ＣＲＴとを含んだメッセージＭｅ１を送信する。【００３２】
計算機ＳＲＶがメッセージＭｅ１を受信すると（ステップＳ７０１）、メッセージＭｅ１を受信した計算機ＳＲＶ（図６ではＳＲＶ０）のノードコントローラＮＯＤＥ＿ＣＴＲＬは、まず自計算機のリスト情報ＡＤＪ＿ＣＯＮから自計算機ＳＲＶに隣接する計算機のリストＬ１を生成し、リストＬ１の計算機の中から、情報ＡＤＪ＿ＡＣＴおよび情報ＡＤＪ＿ＦＬＴに基づき計算機を抽出し、正常かつ非稼働中または待機中の計算機のリストＬ２を生成する（ステップＳ７０２）。【００３３】
次に、メッセージＭｅ１を受信した計算機ＳＲＶのノードコントローラＮＯＤＥ＿ＣＴＲＬは、リストＬ２にある計算機のそれぞれの隣接計算機に対して、現在のハミルトン閉路情報Ｃ＿ＨＣに基づいて、各隣接計算機が現在のハミルトン閉路上の自身の右、または左隣接計算機と隣接であるかをリスト情報ＡＤＪ＿ＣＯＮに基づいて判断し、隣接である計算機のみを抽出したリストＬ３を生成する（ステップＳ７０３）。ここで、左右とは、閉路の左回り、右回りの対に対応するものである。右隣の計算機をリストＬ３に追加するのか、それとも左隣の計算機をリストＬ３に追加するのかは、データセンタＤＣ全体で、またはハミルトン閉路毎に予め決めておく。【００３４】
次に、メッセージＭｅ１を受信した計算機ＳＲＶのノードコントローラＮＯＤＥ＿ＣＴＲＬは、リストＬ３にリストアップされた各計算機をメッセージＭｅ１に含まれて送られてくる評価指標ＥＶＡＬ＿ＣＲＴに基づき順序付けし、各計算機を順序に並べた新たなリストＬ４を作成する（Ｓ７０４）。そして、メッセージＭｅ１を受信した計算機ＳＲＶのノードコントローラＮＯＤＥ＿ＣＴＲＬは（Ｓ７０５）、順序付けられたリストＬ４中の計算機から評価値の最良な計算機を現在の最有力候補計算機として情報Ｃ＿ＣＡＮＤに書き込む（Ｓ７０６）。なお、評価指標ＥＶＡＬ＿ＣＲＴはデータセンタＤＣの各計算機の接続情報や、各計算機の稼働状況から計算可能な指標である。例えば、ある計算機に接続する計算機の数（グラフ表現上ではノードの次数）、計算機を利用しているユーザの識別番号、ユーザのグループ識別番号、アプリケーションの識別番号の順とすることが考えられる。【００３５】
最後に、メッセージＭｅ１を受信した計算機ＳＲＶのノードコントローラＮＯＤＥ＿ＣＴＲＬは、現在のハミルトン閉路情報Ｃ＿ＨＣに基づいて、現在のハミルトン閉路上の右または左隣接計算機に、計算機追加要求であるノード割当要求と、現在の最有力候補計算機の情報Ｃ＿ＣＡＮＤおよびそれを選出した計算機である自計算機の識別子ＳＲＶ＿ＩＤと、評価指標ＥＶＡＬ＿ＣＲＴと、を含むメッセージＭｅ２を送信する（Ｓ７０７）。右隣に送信するのか、それとも左隣に送信するのかは、データセンタＤＣ全体で、またはハミルトン閉路毎に予め決めておく。【００３６】
メッセージＭｅ２を受信した計算機（図６ではＳＲＶ１以降）のノードコントローラＮＯＤＥ＿ＣＴＲＬは、メッセージＭｅ１を受信した計算機（図６ではＳＲＶ０）と同様にリストＬ４を作成して自計算機の隣接計算機の中から最有力候補計算機ＣＡＮＤを選出し（ステップＳ７０１〜Ｓ７０５）、受信したメッセージＭｅ２にある評価指標ＥＶＡＬ＿ＣＲＴに基づいて、受信したメッセージＭｅ２にある情報Ｃ＿ＣＡＮＤが示す現在の最有力候補計算機と比較する（ステップＳ７０８）。メッセージＭｅ２を受信した計算機のノードコントローラＮＯＤＥ＿ＣＴＲＬは、自身が選出した最有力候補計算機ＣＡＮＤが現在の最有力候補計算機よりも良い場合は（ステップＳ７０９）、情報Ｃ＿ＣＡＮＤを自身が選出した最有力候補計算機ＣＡＮＤの情報に更新し、現在の最有力候補計算機を選出した計算機を自計算機の識別子ＳＲＶ＿ＩＤに更新する（ステップＳ７１０）。【００３７】
最後に、メッセージＭｅ２を受信した計算機のノードコントローラＮＯＤＥ＿ＣＴＲＬは、現在のハミルトン閉路情報Ｃ＿ＨＣに基づいて、現在のハミルトン閉路上の隣接計算機に、計算機追加要求であるノード割当要求と、現在の最有力候補計算機の情報Ｃ＿ＣＡＮＤおよびそれを選出した計算機である自計算機の識別子ＳＲＶ＿ＩＤと、評価指標ＥＶＡＬ＿ＣＲＴと、をメッセージＭｅ２として送信する（ステップＳ７０７）。図６では、計算機ＳＲＶ１は計算機ＳＲＶ２に送信する。【００３８】
上記手順を現在のハミルトン閉路上のすべての計算機において実行すると、最終的にメッセージＭｅ１を受信した計算機（図６では計算機ＳＲＶ０）まで一巡する。一巡すると、現在最も有力な計算機と、それを選出した計算機が確定する。すなわち、ハミルトン閉路に追加する特定の計算機と、その計算機を選出した計算機が確定する。【００３９】
最有力候補計算機確定後、データセンタＤＣは、確定した計算機の起動および、現在のハミルトン閉路情報Ｃ＿ＨＣの更新を行い、更新された情報に基づいてハミルトン閉路のネットワーク上でハートビート送受信を行う。現在のハミルトン閉路情報Ｃ＿ＨＣの更新はメッセージＭｅ１を受信した計算機がデータセンタＤＣ全体にハミルトン閉路への計算機の追加の情報をハミルトン閉路の識別情報ＨＣＩＤと併せて放送することで実現することができる。放送を受信した各計算機の計算機の制御部ＨＣ＿ＵＰＤＡＴＥは、受信した識別情報ＨＣＩＤと現在のハミルトン閉路情報Ｃ＿ＨＣにある識別情報ＨＣＩＤを比較して一致すれば、現在のハミルトン閉路情報Ｃ＿ＨＣを更新する。また、メッセージＭｅ１を受信した計算機がデータセンタＤＣ全体に放送する方法以外にも、例えば、現在のハミルトン閉路を利用して、再度放送内容を巡回させる方法も可能である。【００４０】
現在のハミルトン閉路情報Ｃ＿ＨＣの更新を行う際に、その最有力候補計算機を選出した計算機情報を利用する。たとえば、現在のハミルトン閉路が（０→１→２→３→４）の場合に、計算機５を計算機１が選出したとする。その場合、ハミルトン閉路上の右隣接方向にメッセージを流し、右隣接計算機との隣接性を候補選出の基準とした場合、計算機５は計算機１の現在のハミルトン閉路上の右隣接計算機である２との間に挿入され、現在のハミルトン閉路が（０→１→５→２→３→４）に更新される。以上のハミルトン閉路更新依頼を放送することで、各計算機は現在のハミルトン閉路を更新する。また、あらたに稼働する計算機も同様に起動時にハミルトン閉路情報を新たに更新する。【００４１】
上述のようにメッセージをハミルトン閉路上の右、左隣接のどちらに流すのか、候補リストＬ３の生成のための右、左隣接のどちらを判断基準にするのかは、予め設定しておく事も可能であり、また、メッセージとして併せて送信することも可能である。【００４２】
また、メッセージが一巡したことの判定方法はメッセージＭｅ１を受信した計算機に自身が起点であることを示すフラグを持たせる、または、メッセージＭｅ２に起点計算機情報を付加する、などの方法がある。【００４３】
現在のハミルトン閉路情報Ｃ＿ＨＣの初期設定は、稼動させる計算機同士の接続がハミルトン閉路を形成するようにデータセンタＤＣの管理者が設定することができる。３台の計算機を含むハミルトン閉路を管理者が設定すれば、上述のようにハミルトン閉路に計算機を追加させて所望の台数の計算機を稼動させることができる。また、管理者が初期設定する代わりに、隣接計算機に関する情報ＡＤＪ＿ＳＲＶ＿ＩＮＦに基づいて、特定の計算機ＳＲＶに、互いに隣接する自計算機を含む３台の計算機ＳＲＶからなるハミルトン閉路のハミルトン閉路情報Ｃ＿ＨＣを生成させることもできる。【００４４】
本実施例のデータセンタＤＣでは、各計算機ＳＲＶの隣接計算機に関する情報ＡＤＪ＿ＳＲＶ＿ＩＮＦに、自計算機ＳＲＶがどの計算機ＳＲＶと隣接であるか、および自計算機ＳＲＶに隣接する計算機ＳＲＶがどの計算機ＳＲＶと隣接であるかを表すリスト情報ＡＤＪ＿ＣＯＮが含まれているので、各計算機ＳＲＶが、それぞれが有する情報に基づいて最有力候補計算機ＣＡＮＤを選出することができ、図６に示すように単純化されたフローで追加計算機を決定することができる。【００４５】
次に、上述の計算機の追加稼働とは逆に計算機の電源遮断の場合について説明する。図８は、データセンタＤＣでの計算機の電源遮断の動作例を示すフローチャートである。【００４６】
計算機の電源遮断要求がなされる場合としては、アプリケーション終了時に計算機が自身で発行する場合や、外部から電力制限などの制約や、強制終了要求により要求される場合などが想定される。図３にて説明したように、ある計算機の現在のハミルトン閉路上の両端の隣接計算機同士が隣接である場合には、その計算機を電源遮断しても、両端の計算機同士を接続することで電源遮断された計算機を除いた分だけ小さくなったハミルトン閉路を容易に再構築可能である。【００４７】
図４とそれに対応するグラフ表現図５の場合には、例えば計算機ＳＲＶ９は現在のハミルトン閉路（１５→１０→９→１４→１３→１８→１９→２０→１５）上の両端の計算機ＳＲＶ１０，１４が隣接であるため電源遮断が可能であり、計算機ＳＲＶ１０と計算機ＳＲＶ１４を接続することにより新たなハミルトン閉路（１５→１０→１４→１３→１８→１９→２０→１５）を再構築可能である。同様に計算機ＳＲＶ１８は計算機ＳＲＶ１３，１９が、計算機ＳＲＶ２０は計算機ＳＲＶ１９，１５がそれぞれ隣接であるため電源遮断が可能であり、ハミルトン閉路を容易に再構築可能である。逆に、計算機ＳＲＶ１０，１４，１３，１９，１５はアプリケーションが終了してもハミルトン閉路を維持するために電源遮断をしない。【００４８】
図８は、以上説明した計算機の稼働停止制御の動作の例を示すフローチャートである。計算機ＳＲＶが電源遮断要求を受けた際（ステップＳ８０１）、ノードコントローラＮＯＤＥ＿ＣＴＲＬが、リスト情報ＡＤＪ＿ＣＯＮおよび現在のハミルトン閉路情報Ｃ＿ＨＣに基づいて自計算機に隣接する計算機のハミルトン閉路上の隣接計算機の隣接性に応じて電源遮断を実行するか、ネットワーク機能を目的に自計算機の稼働を続けるために自計算機を待機状態に遷移するかを判定する（ステップＳ８０２〜８０４）。いずれの状態に遷移する場合であっても、該計算機は、状態遷移する間に周囲の計算機に状態遷移すること、およびハミルトン閉路情報の更新依頼をデータセンタＤＣ内に放送する（Ｓ８０８〜Ｓ８１０）。このように計算機ＳＲＶは計算用途だけでなくネットワーク用途にも用いられるために、計算機ＳＲＶの状態には、稼働中、非稼働中、故障に加え待機状態が存在する。待機状態はユーザアプリケーションを実行していないが、ネットワーク機能目的として稼働を続けている状態である。情報ＡＤＪ＿ＡＣＴはこのネットワーク機能目的で稼働を続けている待機状態であるかの情報も含む。【００４９】
待機状態計算機が存在する場合に、計算機の追加稼働要求を受けた際に、新たに新しい計算機を追加するのではなく、待機状態計算機を追加計算機として使用することも本実施例のデータセンタＤＣでは可能である。例えば、リストＬ２生成時に非稼働中という制約条件に加え、待機状態である計算機もリストアップするように制約条件を加え、評価指標ＥＶＡＬ＿ＣＲＴにおいて待機状態である候補計算機が最優先されるように評価指標ＥＶＡＬ＿ＣＲＴを設定することで実現可能である。ハミルトン閉路の更新の際に全体にハミルトン閉路更新のメッセージを放送して、稼働中のすべての計算機においてハミルトン閉路情報の更新を行うことは前記の追加稼働における状況と同様である。【００５０】
本実施例に従い計算機の稼働、非稼働を制御することで、複数の計算機から構成される計算機システムにおいて、稼働中のすべての計算機を接続するハミルトン閉路を利用して、稼働中のすべての計算機間で効率的に情報交換を実施することが可能となる。この情報交換方法に基づきハートビートネットワークを構築することで、効率的な障害検知機構を構築することができる。【００５１】
ここで、計算機の稼働、非稼動状態の遷移はオペレータやコントローラが主体的に制御する場合の他に、計算機自身の故障により強制的に非稼動状態に遷移する場合が想定される。そのような計算機の故障によりハミルトン閉路が切れてしまった場合のハミルトン閉路の再構成方法に関して以下に説明する。故障時の対応は図１のノードコントローラＮＯＤＥ＿ＣＴＲＬ内の障害制御部ＦＬＴ＿ＣＴＲＬが担当する。障害制御部ＦＬＴ＿ＣＴＲＬは３方式のハミルトン閉路の再構成方法を適時適用する。３方式とは縮小、拡大、リフレッシュの３方式である。図４の計算機システムとその稼働状況を想定し、そのグラフ表現である図５を用いて各再構成方式を以下に説明する。【００５２】
まず、第１の方式である縮小方式について説明する。縮小方式は故障した計算機のハミルトン閉路上の両側の隣接する２台の計算機同士が隣接である場合に適用可能である。この場合、故障した計算機の両側の隣接計算機同士を接続することで故障計算機を除き、新たなハミルトン閉路を容易に再構成することができる。【００５３】
例えば図５では、計算機ＳＲＶ１８が故障した場合が縮小方式の適用可能な場合である。計算機ＳＲＶ１８のハミルトン閉路上の両側の隣接する２台の計算機ＳＲＶ１３，１９は互いに隣接である。よって、計算機ＳＲＶ１３，１９を直接結び、元のハミルトン閉路（１０→９→１４→１３→１８→１９→２０→１５）を（１０→９→１４→１３→１９→２０→１５）に再構成することができる。故障した計算機上のアプリケーションを引き続き実行したい場合は、適時新たな計算機の稼働を要求することで、再度ハミルトン閉路を適時拡大することが可能である。【００５４】
障害制御部ＦＬＴ＿ＣＴＲＬはこの手続を実現するために、情報ＡＤＪ＿ＳＲＶ＿ＩＮＦ、現在のハミルトン閉路情報Ｃ＿ＨＣに基づき、ハミルトン閉路上の故障計算機の先の計算機と自身が隣接であるかを判定する。もしも、縮小方式が適用できない場合は次に拡大方式の適用を試みる。例えば、計算機ＳＲＶ１３は現在のハミルトン閉路情報Ｃ＿ＨＣにより故障計算機ＳＲＶ１８の先の計算機が計算機ＳＲＶ１９であることを判断する。そして、計算機ＳＲＶ１９と自身が隣接であるかは情報ＡＤＪ＿ＳＲＶ＿ＩＮＦにより判断することが可能である。計算機ＳＲＶ１９が隣接計算機であれば、情報ＡＤＪ＿ＳＲＶ＿ＩＮＦの計算機リストに存在するはずであり、隣接でなければ、情報ＡＤＪ＿ＳＲＶ＿ＩＮＦの計算機リストに存在しないからである。【００５５】
第２の方式である拡大方式は、故障した計算機のハミルトン閉路上の両側の計算機同士が新たに１台の計算機を稼働させ、その計算機を介して連結することが可能な場合に適用可能な方式である。例えば図５では、計算機ＳＲＶ１４が故障した場合が拡大方式の適用可能な場合である。計算機ＳＲＶ１４のハミルトン閉路上の両側の隣接する２台の計算機ＳＲＶ９，１３は計算機ＳＲＶ８を介して互いに連結である。よって計算機ＳＲＶ９，１３を計算機ＳＲＶ８を介して接続することで、元のハミルトン閉路（１０→９→１４→１３→１８→１９→２０→１５）を（１０→９→８→１３→１９→２０→１５）に再構成することができる。【００５６】
拡大方式は自身の隣接計算機の隣接情報のみにより実現可能である。例えば、計算機ＳＲＶ１４が故障した際に、計算機ＳＲＶ９が拡大方式の実行を担当した場合、自身の隣接計算機ＳＲＶ８が計算機ＳＲＶ１３と隣接であるかどうかを判定することで実現できる。これは図１の情報ＡＤＪ＿ＳＲＶ＿ＩＮＦを利用することで得ることができる情報であり、拡大方式は図１の構成計算機にて実現可能な方式である。【００５７】
縮小、拡大方式のいずれの方式においても、故障した計算機の代替として新たに稼働開始する計算機にアプリケーションを引き継ぐ場合にはそのアプリケーションが内部状態に依存するようなステートフルなアプリケーションである場合、その状態を適時移動後の計算機にコピーした後、アプリケーションユーザに稼働計算機変更の通知など稼働アプリケーション遷移処理を実行する。内部状態に依存しないステートレスなアプリケーションの場合には、新たな計算機稼働後にアプリケーションの遷移処理を実行する。【００５８】
なお、縮小、拡大のいずれの方式を優先して行うかはデータセンタ運用者の自由である。【００５９】
縮小、拡大のいずれの方式でもハミルトン閉路を再構成できない場合にはリフレッシュ方式を適用する。リフレッシュ方式では容易にハミルトン閉路を再構築することを断念して、一度ハミルトン閉路を大きく縮小した後に、再度拡大を試みる。その際になるべく再拡大対象となる計算機台数が少なくなるように、現在のハミルトン閉路を可能な限り最大長で分断する。【００６０】
図５の例を用いて具体的な手続きを説明する。リフレッシュ方式が適用される状況は計算機ＳＲＶ１０が故障するような場合である。この場合計算機ＳＲＶ９，１５は縮小、拡大方式のいずれでもハミルトン閉路を再構築することができない。そこで計算機ＳＲＶ１５もしくは計算機ＳＲＶ９、もしくはその両方はリフレッシュ方式の実行を開始する。２台の計算機が同時にリフレッシュ方式の実行をする場合に、両者で合意形成アルゴリズムの実行が必要であることは縮小、拡大方式の場合と同様である。ここでは計算機ＳＲＶ９がリフレッシュ方式の実行を担うとする。【００６１】
計算機ＳＲＶ９の障害制御部ＦＬＴ＿ＣＴＲＬは、情報ＡＤＪ＿ＳＲＶ＿ＩＮＦと現在のハミルトン閉路情報Ｃ＿ＨＣから得られる現在のハミルトン閉路上の各計算機との隣接性から、それぞれの計算機と自身を結ぶ分断路により現在のハミルトン閉路を分断した場合に、分断後のハミルトン閉路の長さが最長となる分断路と、その時のハミルトン閉路の長さを求める。この例では、計算機ＳＲＶ９はハミルトン閉路上の計算機ＳＲＶ１４とのみ隣接であるため、閉路を構成できない。よって、計算機ＳＲＶ９はハミルトン閉路を分断できないため、現在の最良分断路Ｃ＿ＤＳＰとしては空集合φと、現在の最良分断長Ｃ＿ＭＡＸＬとして０を、現在のハミルトン閉路上の隣接計算機へ障害対策要求メッセージと併せて送信する。【００６２】
次に障害対策要求メッセージを受信する計算機ＳＲＶ１４は同様に自身と現在のハミルトン閉路上の計算機との隣接性から、分断後の経路長が最長となるハミルトン閉路の分断路を探索する。計算機ＳＲＶ１４は、故障した計算機ＳＲＶ１０を除くと計算機ＳＲＶ１５，１９と隣接であり、計算機ＳＲＶ１５との分断路でハミルトン閉路を分断すると、分断後のハミルトン閉路は（１４→１３→１８→１９→２０→１５→１４）となり長さは６であり、計算機１９との分断路でハミルトン閉路を分断すると、分断後のハミルトン閉路は（１４→１３→１８→１９→１４）となり長さ４である。よって計算機ＳＲＶ１４に関しては計算機ＳＲＶ１５との分断路が最長分断長６を生む分断路として選出される。この値は、メッセージとして受信した現在の最長分断長Ｃ＿ＭＡＸＬよりも長いため、計算機ＳＲＶ１４の障害制御部ＦＬＴ＿ＣＴＲＬは最長分断長Ｃ＿ＭＡＸＬ，現在の最良分断路Ｃ＿ＤＳＰとしてそれぞれ、Ｃ＿ＭＡＸＬ＝６，Ｃ＿ＤＳＰ＝（１４，１５）を更新し、これらの値を現在のハミルトン閉路上の隣接計算機に障害対策要求メッセージと併せて送信する。【００６３】
以下、ハミルトン閉路上の各計算機が順次以上の手続きを実行すると、最終的に故障計算機の隣接計算機に達する。この例の場合は計算機ＳＲＶ１５である。この時点で得られた最長分断長Ｃ＿ＭＡＸＬがその状況下で構築可能な最大分断長であり、現在の最良分断路Ｃ＿ＤＳＰがその分断路となる。よって、故障計算機の隣接計算機である計算機ＳＲＶ１５は、決定結果を障害対策メッセージの流れた方向とは逆の方向に適時流し、決定結果を全体に通知する。よってこの例の場合、分断後のハミルトン閉路が長さ６で最長な計算機ＳＲＶ１４と計算機ＳＲＶ１５の分断路が分断路として決定される。また、元のハミルトン閉路の長さ８との差分から、故障した計算機を含めて２台の計算機ＳＲＶ９，１０がハミルトン閉路の分断によりハミルトン閉路上の経路から外れることがわかる。そこで、新たに２台の計算機を新たに稼働させる。新規追加手続きに関しては通常時と同様の手続きである。【００６４】
また、計算機ＳＲＶ９，１０上で稼動していたアプリケーションのように、ハミルトン閉路の再構築のために稼働計算機が別の計算機に移動する場合、そのアプリケーションが内部状態に依存するようなステートフルなアプリケーションである場合、その状態を適時移動後の計算機にコピーした後、アプリケーションユーザに稼働計算機変更の通知など稼働アプリケーション遷移処理を実行する。内部状態に依存しないステートレスなアプリケーションの場合には、新たな計算機稼働後にアプリケーションの遷移処理を実行する。アプリケーションの遷移完了後、ハミルトン閉路の更新および計算機ＳＲＶ９，１０は稼働停止処理を実行する。【００６５】
いずれの方式においても、ハミルトン閉路情報の更新が発生するため、ハミルトン閉路の更新依頼メッセージを稼働中の計算機全体に放送して、稼働中のすべての計算機のハミルトン閉路情報を更新する。但し、本案は放送方式の差異により請求範囲の制限は受けない。【００６６】
以上説明したように、本実施例では、複数の計算機から構成される計算機システムにおいて、すべての計算機間で効率的に情報交換を実施することが可能となる。この情報交換方法に基づきハートビートネットワークを構築することで、効率的な障害検知機構を構築することができる。
【実施例２】
【００６７】
本実施例では、実施例１よりもさらに柔軟に計算機の追加ができる方式を説明する。【００６８】
図９は、６台の計算機で構成される計算機システムであり、６台のうち計算機１，２，３，４の４台が稼動しており、計算機５，６が非可動であり、現在のハミルトン閉路がＣ＿ＨＣ（１→２→３→４）で構成されている計算機システムの状況をグラフ表現した例を示す図である。【００６９】
この状況において、新たな計算機の稼働が要求された場合、非稼働中の計算機５，６のいずれも現在のハミルトン閉路の隣接する２つの計算機と隣接ではないため、実施例１の方式では追加することができない。【００７０】
しかし、計算機５，６を同時に稼働させれば、計算機５，６の計算機グループは現在のハミルトン閉路上の隣接する２台の計算機２，３と隣接であり、かつ計算機５，６も隣接であるため実施例１の考え方同様に容易にハミルトン閉路を拡張することが可能である。例えば、図９の場合は計算機５，６を同時に稼働させることで、現在のハミルトン閉路（１→２→３→４）に計算機５，６を追加して閉路（１→２→５→６→３→４）を新たなハミルトン閉路として拡張可能である。【００７１】
本実施例２は以上のように、２つ以上の計算機を同時に起動する場合に、容易にハミルトン閉路を拡張することを可能にする計算機の追加方法に関するものであり、図１０に実施例２の計算機の構成の例を示す。【００７２】
各計算機ＳＲＶは、通常の計算機の要素ＳＲＶ＿ＢＡＳＥに加え、周囲の計算機やコントローラと通信するためのインターフェイスＣＯＭ＿ＩＦ、データセンタ内の計算機に関する情報ＤＣ＿ＳＲＶ＿ＩＮＦ、一連の計算機追加のための手続きを担うノードコントローラＮＯＤＥ＿ＣＴＲＬを有する。【００７３】
データセンタ内の計算機に関する情報ＤＣ＿ＳＲＶ＿ＩＮＦは、データセンタ内の各計算機がどの計算機と隣接であるかを表すリスト情報ＤＣ＿ＣＯＮ、データセンタ内の各計算機の稼働、非稼働、および利用状況に関する情報ＤＣ＿ＡＣＴ、データセンタ内の各計算機の故障に関する情報ＤＣ＿ＦＬＴとを含む。情報ＤＣ＿ＡＣＴが保持する隣接計算機の利用状況とは、その計算機を使用中のユーザ情報であるユーザＩＤやグループＩＤ、またはアプリケーション情報であるアプリケーションＩＤである。【００７４】
リスト情報ＤＣ＿ＣＯＮは、データセンタの出荷時または構成時に各計算機毎に予め設定しておき、構成変更の際に適時外部から更新する。情報ＤＣ＿ＡＣＴは、各計算機が稼働開始、稼働停止、アプリケーション割当、ユーザ割当などのイベント発生時に通知情報を放送することで更新する。情報ＤＣ＿ＦＬＴは故障を検知した計算機が故障情報をデータセンタの計算機に放送することで更新する。【００７５】
ノードコントローラＮＯＤＥ＿ＣＴＲＬは、現在の最有力候補計算機グループを示す情報Ｃ＿ＣＡＮＤｓおよびそれを更新する制御部ＣＡＮＤｓ＿ＵＰＤＡＴＥと、追加候補計算機グループ同士を比較評価するための指標ＥＶＡＬ＿ＣＲＴおよびそれを用いて評価を行う制御部ＰＲＴ＿ＥＶＡＬと、自計算機を識別する識別子ＳＲＶ＿ＩＤと、現在のハミルトン閉路情報Ｃ＿ＨＣおよびその更新を行う制御部ＨＣ＿ＵＰＤＡＴＥと、自身の隣接計算機の中から追加候補計算機グループのリストを生成する制御部ＧＥＮ＿ＣＡＮＤ＿ＬＩＳＴと、探索長を表す整数値ｋと、探索している計算機チェーンのリストを表すリストＬ５（Ｌｉｓｔ５）と、を有する。【００７６】
図１１、および図１２Ａ，Ｂの各ステップを用いて、実施例２のデータセンタの動作を説明する。計算機追加の一連の手続きはまず計算機追加の要求を送信することが起点となる。計算機追加要求の送信者はデータセンタの外部からユーザやデータセンタの管理者が要求を出す場合、またデータセンタ内部で計算能力の逼迫を検知して新たな計算機を稼働する場合などが考えられる。図１１では、要求送信者を起点者Ｔｒｉｇとしている。起点者Ｔｒｉｇは、計算機追加要求と併せて、追加候補計算機グループを比較評価数する際の評価指標ＥＶＡＬ＿ＣＲＴと探索長ｋをメッセージＭｅ１として送信する。【００７７】
メッセージＭｅ１を受信した計算機のノードコントローラＮＯＤＥ＿ＣＴＲＬは（ステップＳ１２０１）、まずリスト情報ＤＣ＿ＣＯＮから隣接計算機リストＬ１を生成し、リストＬ１の中から情報ＤＣ＿ＡＣＴ，情報ＤＣ＿ＦＬＴに基づき、正常かつ非稼働中、または、待機中の計算機のリストＬ２を生成し、リストＬ２を探索計算機チェーンリストＬ５に書き込む（ステップＳ１２０２）。【００７８】
次に、ノードコントローラＮＯＤＥ＿ＣＴＲＬは、リストＬ２のそれぞれの隣接計算機に対して、各隣接計算機が現在のハミルトン閉路Ｃ＿ＨＣ上の自身の右、または左隣接計算機と隣接であるかを判断し、隣接である計算機のみを抽出したリストＬ３を生成する（ステップＳ１２０３）。【００７９】
ここで、リストＬ３が空集合でない、つまり現在のハミルトン閉路上の隣接計算機と隣接な計算機グループが見つかった場合、または、探索長を表すｋが０の場合は、ノードコントローラＮＯＤＥ＿ＣＴＲＬは探索を終了する。もし、リストＬ３が空集合、つまり現在のハミルトン閉路上の隣接計算機と隣接な計算機グループが見つかっていない、かつ、探索長を表すｋが０でない場合、ノードコントローラＮＯＤＥ＿ＣＴＲＬは更にもう１つ先の計算機へ探索範囲を拡大する（ステップＳ１２０４）。【００８０】
探索範囲を拡大する場合、ノードコントローラＮＯＤＥ＿ＣＴＲＬは、探索計算機チェーンリストＬ５の各計算機リストの最終要素の計算機の隣接計算機リストをリスト情報ＤＣ＿ＣＯＮを基に追加しリストＬ５を更新する（ステップＳ１２０５）。ノードコントローラＮＯＤＥ＿ＣＴＲＬは、探索を１つ深める度に探索長ｋをデクリメントする。リストＬ５の各要素の最終要素計算機に対して、ノードコントローラＮＯＤＥ＿ＣＴＲＬは、各計算機が現在のハミルトン閉路上の隣接計算機と隣接する計算機のリストＬ３を生成する（ステップＳ１２０６）。ノードコントローラＮＯＤＥ＿ＣＴＲＬは、以上の手続きをリストＬ３が空集合であり、かつ、探索長ｋが０で無い間続ける。【００８１】
探索計算機チェーンリストＬ５の例を図１３に示す。計算機起動要求メッセージを受信した計算機を計算機１とする。計算機１はまず自身の隣接計算機である計算機２，３，４をリストＬ５としてリストアップする。リストＬ５の要素、ここでは２，３，４の最終要素、ここでは同様に２，３，４が現在のハミルトン閉路上の隣接計算機と隣接であるかを判定する。もし隣接計算機が見つからず、探索長ｋが０でない場合には更に探索範囲を１つ進める。ここでは、Ｌ５の計算機探索チェーンリストの最終要素計算機２，３，４それぞれの隣接計算機に基づき計算機探索チェーンリストＬ５を更新する。【００８２】
図１３では計算機２の隣接計算機として計算機５，６が計算機リスト（２，５）（２，６）として生成され、計算機３の隣接計算機として計算機６，７，８が計算機リスト（３，６）（３，７）（３，８）としてリストアップされ、計算機４の隣接計算機として計算機８，９が計算機リスト（４，８）（４，９としてリストアップされ、リストＬ５が更新される。よって、１段探索範囲を進めた際、リストＬ５は（（２，５），（２，６），（３，６），（３，７），（３，８），（４，８），（４，９））となる。ここで、リストＬ５中の各要素リストの最終要素、例えば（２，５）の場合は計算機５に関して現在のハミルトン閉路上の隣接計算機との隣接性を判定する。この段階でもリストＬ３が空であり、かつ、まだ探索長ｋが０でない場合はさらに探索範囲を進める。その際には、リストＬ５の各計算機リストの最終要素の隣接計算機を同様に探索計算機チェーンリストとして生成する。例えば、計算機リスト（２，５）の最終要素５の隣接計算機ｗを追加した（２，５，ｗ）がリストアップされ、計算機ｗが現在のハミルトン閉路上の隣接計算機への隣接性を判定される。【００８３】
次に、ノードコントローラＮＯＤＥ＿ＣＴＲＬは、リストＬ３にリストアップされた各計算機グループをメッセージと併せて送られてくる評価指標に基づき順序付し、順序に並べた新たなリストＬ４を作成する（ステップＳ１２０７）。評価指標はデータセンタの各計算機の接続情報および、各計算機の稼働状況から計算可能な指標である。例えば、ある計算機に接続する計算機の数（グラフ上では次数）、計算機を利用しているユーザの識別番号、ユーザのグループ識別番号、アプリケーションの識別番号などが考えられる。実施例１と異なり、実施例２ではリストＬ３にリストアップされる要素は１台の計算機の場合だけでなく、複数の計算機から構成される計算機グループである場合を含む。よって、評価指標には追加計算機の数なども含まれる。【００８４】
起点者Ｔｒｉｇから直接計算機起動要求メッセージＭｅ１を受信した計算機ＳＲＶ０ノードコントローラＮＯＤＥ＿ＣＴＲＬは（ステップＳ１２０８）、順序付けられたリストＬ４中から評価値の最良な計算機グループを現在の最有力候補計算機グループとして情報Ｃ＿ＣＡＮＤｓに書き込む（ステップ１２０９）。最後に、ノードコントローラＮＯＤＥ＿ＣＴＲＬは、現在のハミルトン閉路上の右または左隣接計算機に、計算機追加要求、現在の最有力候補計算機グループの情報Ｃ＿ＣＡＮＤｓおよびそれを選出した計算機である自計算機の識別子ＳＲＶ＿ＩＤと、評価指標ＥＶＡＬ＿ＣＲＴと、をメッセージＭｅ２として送信する（ステップ１２１０）。【００８５】
メッセージＭｅ２を受信した計算機のノードコントローラＮＯＤＥ＿ＣＴＲＬは、メッセージＭｅ１を受信した計算機と同様の手続きにより自身の隣接計算機の中から最有力候補計算機グループＣＡＮＤｓを選出し、現在の最有力候補計算機グループと比較する（ステップＳ１２１１）。ノードコントローラＮＯＤＥ＿ＣＴＲＬは、自身が選出した最有力候補計算機グループＣＡＮＤｓが現在の最有力候補計算機グループよりも良い場合（ステップＳ１２１２）は、情報Ｃ＿ＣＡＮＤｓをＣＡＮＤｓに更新し（ステップＳ１２１３）、現在の最有力候補計算機グループを選出した計算機を自身の識別子に更新する。最後に、ノードコントローラＮＯＤＥ＿ＣＴＲＬは、Ｃ＿ＣＡＮＤｓ，ＣＡＮＤｓの大小関係によらず、現在のハミルトン閉路上の隣接計算機に、計算機追加要求と、現在の最有力候補計算機グループの情報Ｃ＿ＣＡＮＤｓおよびそれを選出した計算機である自計算機の識別子ＳＲＶ＿ＩＤと、評価指標ＥＶＡＬ＿ＣＲＴと、をメッセージＭｅ２として送信する（ステップＳ１２１０）。【００８６】
上記手順を現在のハミルトン閉路上のすべての計算機において実行すると、最終的にメッセージＭｅ１を受信した計算機まで一巡する。この時点で、現在最も有力な計算機グループと、それを選出した計算機が確定する。【００８７】
最有力候補計算機グループ確定後、確定した計算機の起動および、現在のハミルトン閉路の更新を行う。現在のハミルトン閉路の更新を行う際に、その最有力候補計算機グループを選出した計算機情報を利用する。たとえば、現在のハミルトン閉路Ｃ＿ＨＣが（０→１→２→３→４）の場合に、計算機グループ（５、６，７）を計算機１が選出したとする。その場合、ハミルトン閉路上の右隣接方向にメッセージを流し、右隣接計算機との隣接性を候補選出の基準としている場合、計算機５は計算機１の現在のハミルトン閉路上の右隣接計算機である２との間に挿入され、現在のハミルトン閉路Ｃ＿ＨＣが（０→１→５→６→７→２→３→４）に更新される。ハミルトン閉路を稼働中の計算機全体へ放送することですべての稼働中の計算機でハミルトン閉路情報を更新すること、及び新たに稼働する計算機にも放送することで全稼働計算機でハミルトン閉路情報を更新することに関しては実施例１同様である。【００８８】
メッセージをハミルトン閉路上の右、左隣接のどちらに流すのか、候補リストＬ３の生成のための右、左隣接のどちらを判断基準にするのかは、予め設定しておく事も可能であり、メッセージとして併せて送信することも可能である。また、メッセージが一巡したことの判定方法はメッセージＭｅ１を受信した計算機に自身が起点であることを示すフラグを持たせる、または、メッセージＭｅ２に起点計算機情報を付加する、などの方法が考えられる。【００８９】
電源遮断による計算機の稼働停止に関しては実施例１と同様の手続きである。【００９０】
本実施例では１台の追加起動要求に対して、ハミルトン閉路を拡張する目的で複数の計算機が起動される場合が生じ、それらハミルトン閉路拡張のための起動される計算機はアプリケーションを実行しない待機状態となる場合が存在する。そのため、本実施例では、計算機の状態が稼働中、非稼働中、故障に加え待機状態が存在する。待機状態はユーザアプリケーションを実行していないが、ネットワーク機能目的として稼働を続けている状態である。情報ＤＣ＿ＡＣＴはこのネットワーク機能目的で稼働を続けている待機状態であるかの情報も含む。【００９１】
待機状態計算機が存在する場合に、実施例１同様に、計算機の追加稼働要求を受けた際に、新たに計算機を追加するのではなく、待機状態計算機を追加計算機として使用することも本実施例のデータセンタでは実現可能である。例えば、リストＬ２生成時に非稼働中という制約条件に加え、待機状態である計算機もリストアップするように制約条件を加え、評価指標ＥＶＡＬ＿ＣＲＴに待機状態である候補計算機が最優先されるように評価指標ＥＶＡＬ＿ＣＲＴを設定することで実現可能である。【００９２】
以上の手続きにより、複数の計算機から構成される計算機システムにおいて、すべての計算機間で効率的に情報交換を実施することが可能となる。この情報交換方法に基づきハートビートネットワークを構築することで、効率的な障害検知機構を構築することができる。【００９３】
本実施例に従い計算機の稼働、非稼働を制御することで、複数の計算機から構成される計算機システムにおいて、稼働中すべての計算機を接続するハミルトン閉路を利用して、稼働中のすべての計算機間で効率的に情報交換を実施することが可能となる。この情報交換方法に基づきハートビートネットワークを構築することで、効率的な障害検知機構を構築することができる。【００９４】
しかし、実施例１同様に、計算機の稼働、非稼動状態の遷移はオペレータやコントローラが主体的に制御する場合の他に、計算機自身の故障により強制的に非稼動状態に遷移する場合が想定される。そのような計算機の故障によりハミルトン閉路が切れてしまった場合のハミルトン閉路の再構成方法に関して説明する。【００９５】
本実施例では、大きくは３方式のハミルトン閉路の再構成方法を開示する。３方式とは縮小、拡大、リフレッシュの３方式である。なお、縮小に関しては実施例１と同様な手続きとなる。以下、図４の計算機システムとその稼働状況を想定し、そのグラフ表現である図５を用いて各再構成方式を説明する。【００９６】
第１の方式である縮小方式に関しては実施例１と同様なため説明を省略する。【００９７】
第２の方式である拡大方式は基本的には実施例１で開示される拡大方式と類似する方式である。但し、本実施例では、図１０のように各計算機が１隣接だけでなく、データセンタ内のすべての計算機に関する隣接関係を情報ＤＣ＿ＳＲＶ＿ＩＮＦを介して得られることを利用して、新たに稼働させる計算機を１台ではなく、最大ｋ台まで許容する。本方式をｋ拡大方式と呼ぶ。この場合、図１０の探索長ｋをｋ拡大方式の探索長として利用する。ｋの値はデータセンタの構成または、出荷時に予めポリシーとして内部記憶に保持しておき、故障発生時にｋに書き込む場合、もしくは故障検知時にデータセンタ外部またはデータセンタ内部のコントローラからｋに値を書込む場合が想定される。【００９８】
例えば図５の場合、計算機１３が故障した場合がｋ拡大方式の適用状況である。計算機１３が故障した場合、そのハミルトン閉路上の両側の隣接計算機１４，１８は互いに隣接ではなく、かつ、１台の新たな計算機を介しても連結ではない。そのため縮小、実施例１の拡大方式ではハミルトン閉路を再構築することができない。しかし、計算機８，１２，１７の３台の計算機を介することで計算機１４，１８は連結となることができる。よって、計算機８，１２，１７の３台を新たなに稼働させ、計算機１４，１８をこれら３台の計算機を介して接続することで、元のハミルトン閉路（１０→９→１４→１３→１８→１９→２０→１５）を（１０→９→１４→８→１２→１７→１８→１９→２０→１５）に再構成することができる。【００９９】
図１０の計算機において、故障制御部ＦＬＴ＿ＣＴＲＬが情報ＤＣ＿ＳＲＶ＿ＩＮＦに基づきｋ台先の連結計算機の隣接関係を知ることができるため、与えられるｋの値に基づき適時探索範囲を適時広げながら、ｋ台以下の計算機を新たに稼働させることでハミルトン閉路を再構成することができる。例えば図５の計算機１３が故障した際に、計算機１４がハミルトン閉路の再構築を担う場合を想定する。ハミルトン閉路の再構築は計算機１４ではなく、もう一方の隣接計算機である計算機１８が担うことも可能であり、また両者が同時に担うことも可能である。ただし、計算機１４，１８の２台の両方が同時に担う場合には、実行の冗長性は得られるものの、両者間で合意形成アルゴリズムを実行する必要がある。【０１００】
計算機１４はまず自身の１隣接計算機のうち非稼働中の計算機８が計算機１８と隣接であるかどうかを判定する。この場合計算機８は計算機１８と非隣接であるため、ｋの値が１つデクリメントし、ｋが０でなければ更に一つ先の連結計算機との隣接性を判定する。ここでは計算機８の１つ先の計算機である計算機７，１２が候補であり、計算機７，１２と計算機１８との隣接性を判定する。ここでも、計算機７，１２は計算機１８と隣接ではないため、ｋの値を１つデクリメントし、ｋが０でなければ更に１つ先の連結計算機との隣接性を判定する。ここではさらに、計算機７，１２それぞれの隣接計算機である計算機１，２，３，６、１１，１７と計算機１８との隣接性を判定する。ここで、計算機１７が計算機１８と隣接であることがわかる。そこで計算機１４は稼働計算機リストとして、計算機８，１２，１７を稼働させることを判断し、該当計算機を稼働させる。【０１０１】
計算機１４は計算機１８に到達するまでの計算機リストの順序を記憶しておく。例えば、計算機１４は計算機リスト（８、１２，１７）の順番で計算機１８との連結性を確保できることを判定する。そのために、探索の際には上述の実施例２同様に探索計算機チェーンリストＬ５を利用する。【０１０２】
また、同じ探索長で複数の経路が候補として選出された場合は、上述の実施例２同様に優先度判定基準ＥＶＡＬ＿ＣＲＴの利用が可能である。基準ＥＶＡＬ＿ＣＲＴはデータセンタ構成および出荷時に予め設定しておく、または、計算機故障イベント発生時に外部または内部のコントローラが設定するいずれも可能である。【０１０３】
なお、縮小、拡大のいずれの方式を優先して行うかはデータセンタ運用者の自由である。【０１０４】
縮小、拡大のいずれの方式でもハミルトン閉路を再構成できない場合にはリフレッシュ方式を適用する。リフレッシュ方式では容易にハミルトン閉路を再構築することを断念して、一度ハミルトン閉路を大きく縮小した後に、再度拡大を試みる。その際になるべく再拡大対象となる計算機台数が少なくなるように、現在のハミルトン閉路を可能な限り最大長で分断する。【０１０５】
図５の例を用いて具体的な手続きを説明する。リフレッシュ方式が適用される状況は計算機１０が故障するような場合である。この場合計算機９，１５は縮小、拡大方式のいずれでもハミルトン閉路を再構築することができない。そこで計算機１５もしくは計算機９、もしくはその両方はリフレッシュ方式の実行を開始する。２台の計算機が一度にリフレッシュ方式の実行をする場合に、両者で合意形成アルゴリズムの実行が必要であることは縮小、拡大方式の場合と同様である。ここでは計算機９がリフレッシュ方式の実行を担うとする。【０１０６】
図１０で例示される実施例２の計算機構成は実施例１の計算機構成の例図である図１を内包する関係にある。そのため、本実施例でも実施例１同様に実施例１で説明したメッセージ通信に基づく手続きによりリフレッシュ動作を実行可能である。しかし、図１０の構成では、各計算機がデータセンタ内のすべての計算機の隣接関係情報を保持しているため、メッセージ通信をせずとも、１台の計算機が同様の手続きを実行可能である。この場合、計算機９が同様の手続きを担当する。【０１０７】
計算機９は現在のハミルトン閉路上の各計算機に対して、それぞれの計算機がハミルトン閉路を分断する場合にもっとも経路長を長く分断できる分断長とその際の分断路を探索する。この例では、計算機９はハミルトン閉路上の計算機１４とのみ隣接であるため、閉路を構成できない。計算機１４は故障した計算機１０を除くと計算機１５，１９と隣接であり、計算機１５との分断路でハミルトン閉路を分断すると、分断後のハミルトン閉路は（１４→１３→１８→１９→２０→１５→１４）となり長さは６であり、計算機１９との分断路でハミルトン閉路を分断すると、分断後のハミルトン閉路は（１４→１３→１８→１９→１４）となり長さ４である。よって計算機１４に関しては計算機１５との分断路が最長分断長６を生む分断路として選出される。同様に計算機１３は計算機１９との分断路により長さ３のハミルトン閉路を構成でき、計算機１８、２０は計算機９同様に閉路を構成できず、計算機１９は計算機１４との分断路により長さ４のハミルトン閉路を構成でき、計算機１５は計算機１４との分断露により長さ６の分断路を構成できる。よってこの場合、分断後のハミルトン閉路最長である計算機１４と計算機１５の分断路が最長分断路Ｃ＿ＤＳＰとして決定され、その時のハミルトン閉路の長さがＣ＿ＭＡＸＬ＝６として決定される。また、元のハミルトン閉路の長さ８との差分から、故障した計算機を含めて２台の計算機９，１０がハミルトン閉路の分断によりハミルトン閉路上の経路から外れることがわかる。そこで、新たに２台の計算機を新たに稼働させる。この新規の稼働に関しては実施例１，２と同様の方法により、ハミルトン閉路を適時拡大することが可能である。【０１０８】
また、計算機９，１０上で稼動していたアプリケーションのように、ハミルトン閉路の再構築のために稼働計算機が別の計算機に移動する場合、そのアプリケーションが内部状態に依存するようなステートフルなアプリケーションである場合、その状態を適時移動後の計算機にコピーした後、アプリケーションユーザに稼働計算機変更の通知など稼働アプリケーション遷移処理を実行する。内部状態に依存しないステートレスなアプリケーションの場合には、新たな計算機稼働後にアプリケーションの遷移処理を実行する。アプリケーションの遷移完了後、ハミルトン閉路の更新および計算機９，１０は稼働停止処理を実行する。【０１０９】
いずれの方式においても、ハミルトン閉路情報の更新が発生するため、ハミルトン閉路の更新依頼メッセージを稼働中の計算機全体に放送して、稼働中のすべての計算機のハミルトン閉路情報を更新する。この手続に関しては実施例１，２と同様の手続きである。
【実施例３】
【０１１０】
実施例１，２では各計算機がメッセージ通信を用いて自律分散的に協調動作することで、計算機の新規稼働、停止を制御し、障害時の対応を実現する。しかし、同様のことは中央集権型な方式でも実現可能である。例えば、図４のデータセンタ制御部ＤＣ＿ＣＴＲＬが同様の計算機の新規稼働、停止を制御し、障害時の対応を制御することが可能である。【０１１１】
データセンタ制御部ＤＣ＿ＣＴＲＬにより制御を行う場合のデータセンタ制御部ＤＣ＿ＣＴＲＬの構成を図１４に示す。データセンタ制御部ＤＣ＿ＣＴＲＬは図１０の計算機の構成と類似した構成となる。【０１１２】
データセンタ制御部ＤＣ＿ＣＴＲＬはデータセンタ内の計算機と通信するためのインターフェイスＣＯＭ＿ＩＦ、データセンタ内の計算機に関する情報ＤＣ＿ＳＲＶ＿ＩＮＦ、一連の計算機追加のための手続きを担うノードコントローラＮＯＤＥ＿ＣＴＲＬを有する。データセンタ制御部ＤＣ＿ＣＴＲＬはインターフェイスＣＯＭ＿ＩＦを介して、直接または間接的にデータセンタ内の各計算機と通信可能であり、各計算機の稼働、停止を制御することができる。【０１１３】
データセンタ内の計算機に関する情報ＤＣ＿ＳＲＶ＿ＩＮＦは、データセンタ内の各計算機がどの計算機と隣接であるかを表すリスト情報ＤＣ＿ＣＯＮ、データセンタ内の各計算機の稼働、非稼働、および利用状況に関する情報ＤＣ＿ＡＣＴ、およびデータセンタ内の各計算機の故障に関する情報ＤＣ＿ＦＬＴを含む。情報ＤＣ＿ＡＣＴが保持する隣接計算機の利用状況とは、その計算機を使用中のユーザ情報であるユーザＩＤやグループＩＤ、またはアプリケーション情報であるアプリケーションＩＤである。【０１１４】
リスト情報ＤＣ＿ＣＯＮはデータセンタの出荷時または構成時に各計算機毎に予め設定しておき、構成変更の際に適時外部から更新する。情報ＤＣ＿ＡＣＴは各計算機が稼働開始、稼働停止、アプリケーション割当、ユーザ割当などのイベント発生時に更新する。情報ＤＣ＿ＦＬＴは故障を検知した計算機がデータセンタ制御部ＤＣ＿ＣＴＲＬに故障検出を通知することで更新する。【０１１５】
ノードコントローラＮＯＤＥ＿ＣＴＲＬは現在の最有力候補計算機グループを示す情報Ｃ＿ＣＡＮＤｓおよびそれを更新する制御部ＣＡＮＤｓ＿ＵＰＤＡＴＥと、追加候補計算機グループ同士を比較評価するための評価指標ＥＶＡＬ＿ＣＲＴおよびそれを用いて評価を行う制御部ＰＲＴ＿ＥＶＡＬと、現在のハミルトン閉路情報Ｃ＿ＨＣおよびその更新を行う制御部ＨＣ＿ＵＰＤＡＴＥと、データセンタ内の計算機の中から追加候補計算機グループのリストを生成する制御部ＧＥＮ＿ＣＡＮＤ＿ＬＩＳＴと、探索長を表す整数値ｋと、探索している計算機チェーンのリストを表すリストＬ１０（Ｌｉｓｔ１０）とを含む。評価指標ＥＶＡＬ＿ＣＲＴ、および探索長ｋはデータセンタの構成時、または出荷時に予め設定しておき、適時必要に応じて外部から更新することで所望の比較指標を使用する。【０１１６】
計算機追加の一連の手続きはまず計算機追加の要求を送信することが起点となる。計算機追加要求の送信者はデータセンタの外部からユーザやデータセンタの管理者が要求を出す場合、またデータセンタ内部で計算能力の逼迫を検知して、データセンタ制御部ＤＣ＿ＣＴＲＬ自身が新たな計算機を稼働要求を発行する場合が考えられる。【０１１７】
データセンタ制御部ＤＣ＿ＣＴＲＬによる中央集権型の計算機追加手続きのフローチャートを図１５に示す。【０１１８】
まずデータセンタ制御部ＤＣ＿ＣＴＲＬは、リスト情報ＤＣ＿ＣＯＮから現在のハミルトン閉路上の計算機毎にその計算機と隣接な計算機のリストのリストＬ６を生成し（ステップＳ１５０１）、リストＬ６の中から情報ＤＣ＿ＡＣＴ，情報ＤＣ＿ＦＬＴに基づき、正常かつ非稼働中、または、待機中の計算機のリストＬ７を生成し、リストＬ７を探索計算機チェーンリストＬ１０に書き込む（ステップＳ１５０２）。図４およびそのグラフ表現である図６の場合におけるリストＬ６，Ｌ７をそれぞれ図１６、１７に示す。【０１１９】
次に、リストＬ７の各計算機の隣接計算機に対が、各隣接計算機が現在のハミルトン閉路Ｃ＿ＨＣ上の右、または左隣接計算機と隣接であるかを判断し、隣接である計算機のみを抽出したリストＬ８を生成する（ステップＳ１５０３）。図１７のリストＬ７からリストＬ８を生成した場合の例を図１８に示す。【０１２０】
ここで、リストＬ８が空集合でない、つまり現在のハミルトン閉路上の隣接計算機と隣接な計算機グループが見つかった場合、または、探索長を表すｋが０の場合は探索を終了する。もし、リストＬ８が空集合、つまり現在のハミルトン閉路上の隣接計算機と隣接な計算機グループが見つかっていない、かつ、探索長を表すｋが０でない場合更にもう１つ先の計算機へ探索範囲を拡大する（ステップＳ１５０４）。【０１２１】
探索範囲を拡大する場合、探索長ｋをデクリメントし、探索計算機チェーンリストＬ１０の各計算機リストの最終要素の計算機の隣接計算機リストの内、非稼働中もしくは待機中の計算機のリストをリスト情報ＤＣ＿ＣＯＮを基に追加しリストＬ１０を更新する（ステップＳ１５０５）。図１８のリストＬ８は空集合ではないが、例示のために、リストＬ１０を１ステップ更新した場合のリストＬ１０を図１９に示す。リストＬ１０の各要素の最終要素計算機に対して、各計算機が現在のハミルトン閉路上の隣接計算機と隣接する計算機のリストＬ８を生成する（ステップＳ１５０６）。以上の手続きをリストＬ８が空集合であり、かつ、探索長ｋが０で無い間続ける。【０１２２】
次に、リストＬ８にリストアップされた各計算機グループを評価指標ＥＶＡＬ＿ＣＲＴに基づき順序付し、順序に並べた新たなリストＬ９を作成する（ステップＳ１５０７）。評価指標はデータセンタの各計算機の接続情報および、各計算機の稼働状況から計算可能な指標である。例えば、ある計算機に接続する計算機の数（グラフ上では次数）、計算機を利用しているユーザの識別番号、ユーザのグループ識別番号、アプリケーションの識別番号などが考えられる。また、評価指標には追加計算機の数なども含まれる。【０１２３】
データセンタ制御部ＤＣ＿ＣＴＲＬは順序付けられたリストＬ９中から評価値の最良な計算機グループを最有力候補計算機グループとして情報Ｃ＿ＣＡＮＤｓに書き込み、その計算機を追加起動計算機グループとして決定する。【０１２４】
追加起動計算機グループ確定後、確定した計算機の起動および、現在のハミルトン閉路の更新を行う。ハミルトン閉路の更新は追加起動計算機グループと現在のハミルトン閉路情報Ｃ＿ＨＣ，データセンタ内の計算機の接続関係情報ＤＣ＿ＳＲＶ＿ＩＮＦの情報に基づき実行される（ステップＳ１５０８）。【０１２５】
電源遮断による計算機の稼働停止は実施例１，２と同様の手続きである。【０１２６】
このように本実施例の場合では１台の追加起動要求に対して、ハミルトン閉路を拡張する目的で複数の計算機が起動される場合が生じ、それらハミルトン閉路拡張のための起動される計算機はアプリケーションを実行しない待機状態となる場合が存在する。そのため、本願では計算機の状態が稼働中、非稼働中、故障に加え待機状態が存在する。待機状態はユーザアプリケーションを実行していないが、ネットワーク機能目的として稼働を続けている状態である。情報ＤＣ＿ＡＣＴはこのネットワーク機能目的で稼働を続けている待機状態であるかの情報も含む。【０１２７】
待機状態計算機が存在する場合に、実施例１、２同様に、計算機の追加稼働要求を受けた際に、新たに計算機を追加するのではなく、待機状態計算機を追加計算機として使用することも本実施例で開示する技術により実現可能である。例えば、評価指標ＥＶＡＬ＿ＣＲＴに待機状態である候補計算機が最優先されるように評価指標ＥＶＡＬ＿ＣＲＴを設定することで実現可能である。【０１２８】
以上の手続きにより、複数の計算機から構成される計算機システムにおいて、すべての計算機間で効率的に情報交換を実施することが可能となる。この情報交換方法に基づきハートビートネットワークを構築することで、効率的な障害検知機構を構築することができる。【０１２９】
本実施例に従い計算機の稼働、非稼働を制御することで、複数の計算機から構成される計算機システムにおいて、稼働中すべての計算機を接続するハミルトン閉路を利用して、稼働中のすべての計算機間で効率的に情報交換を実施することが可能となる。この情報交換方法に基づきハートビートネットワークを構築することで、効率的な障害検知機構を構築することができる。しかし、実施例１、２同様に、計算機の稼働、非稼動状態の遷移はオペレータやコントローラが主体的に制御する場合の他に、計算機自身の故障により強制的に非稼動状態に遷移する場合が想定される。【０１３０】
そのような計算機の故障によりハミルトン閉路が切れてしまった場合のハミルトン閉路の再構成方法に関しての障害対応方式は実施例１，２同様に３方式がある。【０１３１】
３つの縮小、拡大、リフレッシュ方式いずれに関しても実施例１，２で開示される方式を本実施例の中央集権型にも適用可能である。具体的には縮小、拡大方式では故障計算機の隣接計算機が担当していた障害対応手続きと同様の手続きをデータセンタ制御部ＤＣ＿ＣＴＲＬが実行すれば良い。また、リフレッシュ方式に関しても実施例２のリフレッシュ方式にて開示している、メッセージ通信を用いずに、故障計算機の隣接する１台の計算機が実行する障害対応手続きと同様の手続きをデータセンタ制御部ＤＣ＿ＣＴＲＬが実行すれば良い。【０１３２】
以上の一連の手続きにより、データセンタ制御部ＤＣ＿ＣＴＲＬによる中央集権型制御方法により、実施例１，２，と同様の要求を実現することが可能である。
【実施例４】
【０１３３】
データセンタを運用しているといずれ計算機の故障が生じる。それら故障計算機がメンテナンスにより取り替えられない限り、その故障はデータセンタ内に蓄積する。【０１３４】
故障が蓄積すると、データセンタ内に複数存在する計算機がクラスタ化される可能性がある。また、上述の方式に従い新規に計算機を稼働させる際にハミルトン閉路の拡張を制約として考える場合、使用されない計算機が存在する可能性がある。【０１３５】
例えば、図２０のような１６台の計算機および３台の管理計算機とその接続関係からなるデータセンタを考える。管理計算機とはデータセンタ内の計算機の運用管理だけでなく、データセンタ内と外のインターフェイスであるゲートウェイなどもここでは含むものとする。【０１３６】
データセンタには複数の計算機が存在するが、そのすべてが管理計算機やゲートウェイと接続することはなく、図２０のように一部の計算機を介して接続する場合がある。そのような場合において、それら管理計算機やゲートウェイへの接続点（ハブ）となる計算機は他の計算機とは接続上の意味がその他の計算機とは異なる。図２０の例では計算機ＳＲＶ１，ＳＲＶ２の計算機がそのような計算機である。【０１３７】
ここで故障が蓄積し、図２０のデータセンタが図２１のような構成に縮退した場合を考える。図２１のようになった場合、計算機ＳＲＶ３，ＳＲＶ４はハミルトン閉路の構成要素とは成り得ない。そのため、例え計算機ＳＲＶ３，ＳＲＶ４が故障していない状況でも、実施例１，２，３の稼働制御方式に従うと計算機ＳＲＶ３，ＳＲＶ４は稼働することはない。【０１３８】
また、管理計算機やゲートウェイへの連結性が完全に切れた計算機ＳＲＶ６、ＳＲＶ７のような計算機はアプリケーションを実行してもその結果をデータセンタの外とやり取りすることができないため使用することができない。【０１３９】
そのため実施例１、２，３の稼働制御方式では、故障していない計算機を使用できない場合が存在するため、データセンタの効率の観点で非効率となる場合が存在する。【０１４０】
データセンタ制御部ＤＣ＿ＣＴＲＬは使用不可となる計算機の存在を管理して、使用優先度の異なる計算機が存在するとして、計算機の稼働を制御する。図１４のようにデータセンタ制御部ＤＣ＿ＣＴＲＬが情報ＤＣ＿ＳＲＶ＿ＩＮＦを保持する場合、データセンタ制御部ＤＣ＿ＣＴＲＬはデータセンタ内の各計算機それぞれの接続関係を把握可能である。よって、計算機ＳＲＶ３のように、グラフ表現において、次数が１となるような計算機を検出可能である。次数が１の計算機はハミルトン閉路の要素となることは不可能である。また、計算機ＳＲＶ４のように計算機ＳＲＶ３のような次数１の計算機から構成される木への接続辺を除いた時に、次数が１の計算機も同様にハミルトン閉路の要素とは成り得ず、データセンタ制御部ＤＣ＿ＣＴＲＬはこのような計算機も検出可能である。このようなハミルトン閉路の要素となりえない計算機を検出するとデータセンタ制御部ＤＣ＿ＣＴＲＬはその計算機の優先度を他の計算機よりも下げる。具体的には情報ＤＣ＿ＳＲＶ＿ＩＮＦの情報ＤＣ＿ＦＬＴにその情報を書き込む。【０１４１】
実施例１，２，３の計算機追加方式に従い計算機の追加が可能な限り、このように重要度が低下した計算機の追加は行われない。しかし、実施例１、２，３の方式でこれ以上計算機の追加が不可能となった場合には、重要度が低下した計算機の使用を開始する。ただし、このような計算機はハミルトン閉路を構成することができないため、実施例１，２，３の方式で構築される通常のハートビートネットワークによる障害検知機構とは異なる障害検知機構が必要となる。具体的には計算機ＳＲＶ３，ＳＲＶ４のような計算機は各自が現在存在するハミルトン閉路の最も近い計算機への最短経路上の隣接計算機にハートビートを打つ様にする。【０１４２】
図２１の計算機ＳＲＶ３，ＳＲＶ４の場合、計算機ＳＲＶ５が計算機ＳＲＶ３，ＳＲＶ４それぞれの現在のハミルトン閉路上の計算機に最も近い計算機である。そのため、計算機ＳＲＶ４は計算機ＳＲＶ５へハートビートを打ち、計算機ＳＲＶ３は計算機ＳＲＶ５への最短経路上の隣接計算機である計算機ＳＲＶ４にハートビートを打つ。【０１４３】
また、例えば図２２のように７台の通常の計算機がハミルトン閉路を構成している状況で、優先度の低い計算機ＳＲＶ２，３，４，５，６が稼働している状況を考える。この時、優先度の低い計算機ＳＲＶ２，３，４，５，６の現在のハミルトン閉路上の最も近い計算機は計算機ＳＲＶ１である。したがって、各計算機は計算機ＳＲＶ１への最短経路上の隣接計算機へ図２２のようにハートビートを打つ。【０１４４】
このようにすることで、例えば、計算機ＳＲＶ２が故障した場合にはその故障を計算機ＳＲＶ１が検知することが可能であり、その情報を基に、計算機ＳＲＶ３，４，５，６が計算機ＳＲＶ１との連結性が断たれ、使用ができなくなることをデータセンタ制御部ＤＣ＿ＣＴＲＬは判断可能であり、それらを稼働中の計算機としてではなく、使用不可な計算機として管理することが可能である。同様に、計算機ＳＲＶ４が故障した場合にはその故障を計算機ＳＲＶ２が検知することができ、その情報を基に、計算機ＳＲＶ５，６を使用不可計算機としてデータセンタ制御部ＤＣ＿ＣＴＲＬは管理可能である。【０１４５】
また、図２１同様に故障が蓄積すると、内部が複数の計算機グループにクラスタ化される状況が発生する。そこで、データセンタ制御部ＤＣ＿ＣＴＲＬは管理計算機またはゲートウェイへの連結度、またはハブとなる計算機への連結度に基づき各計算機のデータセンタ内のクラスタ化を管理する。【０１４６】
連結度が２よりも小さい場合、１台の計算機が故障した際に管理計算機などへの通信路が完全に遮断される可能性がある。そのためデータセンタ制御部ＤＣ＿ＣＲＴＬは各管理計算機またはゲートウェイおよびそのハブとなる計算機への連結度が２以上である計算機グループを１つのクラスタとして管理する。そして、各クラスタ毎に実施例１，２，３の方式に従いハミルトン閉路を構成、管理する。例えば、図２１同様に故障が蓄積した場合、図２３のようにハブとなる計算機である計算機ＳＲＶ１，ＳＲＶ２への連結度に基づきクラスタＣｌ１およびクラスタＣｌ２を管理する。【０１４７】
同じユーザ、同じアプリケーションは通信する可能性が高いため、なるべく同じクラスタに割当たるように計算機の起動を管理する。そのため、各クラスタで稼働中の計算機上のユーザ、アプリケーション情報を情報ＤＣ＿ＳＲＶ＿ＩＮＦの情報ＤＣ＿ＡＣＴに基づき判定し、どちらのクラスタに割り当てるのかを判定する。【０１４８】
以上のように、本実施例が開示するデータセンタ制御部ＤＣ＿ＣＴＲＬによる内部計算機の管理、およびそのクラスタ管理を実施例１，２，３と同時に適用することで、より効果的にデータセンタ内の計算機を利用することが可能となる。
【符号の説明】
【０１４９】
ＳＲＶ：計算機ＳＲＶ、ＳＲＶ＿ＢＡＳＥ：通常の計算機の要素、ＣＯＭ＿ＩＦ：インターフェイス、ＡＤＪ＿ＳＲＶ＿ＩＮＦ：自身の隣接計算機に関する情報、ＮＯＤＥ＿ＣＴＲＬ：ノードコントローラ、Ｍｅ１：メッセージ、Ｍｅ２：メッセージ。
【図１】
0005887462.tif 000002
【図２】
0005887462.tif 000003
【図３】
0005887462.tif 000004
【図４】
0005887462.tif 000005
【図５】
0005887462.tif 000006
【図６】
0005887462.tif 000007
【図７】
0005887462.tif 000008
【図８】
0005887462.tif 000009
【図９】
0005887462.tif 000010
【図１０】
0005887462.tif 000011
【図１１】
0005887462.tif 000012
【図１２Ａ】
0005887462.tif 000013
【図１２Ｂ】
0005887462.tif 000014
【図１３】
0005887462.tif 000015
【図１４】
0005887462.tif 000016
【図１５】
0005887462.tif 000017
【図１６】
0005887462.tif 000018
【図１７】
0005887462.tif 000019
【図１８】
0005887462.tif 000020
【図１９】
0005887462.tif 000021
【図２０】
0005887462.tif 000022
【図２１】
0005887462.tif 000023
【図２２】
0005887462.tif 000024
【図２３】
0005887462.tif 000025
【図２４】
0005887462.tif 000026