(57)【要約】【課題】プログラムの処理状況に応じてフェイルオーバの実行を制御する。【解決手段】クラスタシステム１０１を構成するサーバ計算機１０２は、クライアント計算機１０４〜１０６にサービス提供を行うサービス提供部１１２と、他のサーバ計算機１０２の稼動の停止を検出した場合、又は、フェイルオーバの実行指示を受け付けた場合に、フェイルオーバを実行するクラスタ処理部１１１と、サービス提供部１１２の処理状況を監視するサービス提供部状況監視部１２１と、を備え、サービス提供部状況監視部１２１は、定期的にサービス提供部１１２の処理時間が予め定めた限界処理時間を超えているか否かを判定し、超えていると判定した場合にフェイルオーバの実行をクラスタ処理部１１１に指示する。【選択図】図１
2008305353.tif 000002
【特許請求の範囲】
【請求項１】
フェイルオーバの実行指示を受けることにより、サービスの提供を行う一のサーバから、他のサーバに前記サービスの提供を引き継ぐフェイルオーバ処理を行うフェイルオーバ処理部を各々備える複数のサーバを有するクラスタシステムを構成するサーバであって、
フェイルオーバを行う処理状況の状態を特定する状態情報を記憶する記憶部と、
サービスを提供する際の処理状況を特定する状況監視部と、
前記状況監視部が特定した処理状況が、前記状態情報で特定される処理状況に一致する場合に、前記フェイルオーバ処理部にフェイルオーバの実行を指示するフェイルオーバ実行指示部と、
を有することを特徴とするサーバ。
【請求項２】
請求項１に記載のサーバであって、
前記記憶部には、フェイルオーバを行う条件を特定する条件情報が前記状態情報毎に対応されて記憶されており、
前記状況監視部が特定した処理状況が、前記状態情報で特定される処理状況に一致し、前記状況監視部が特定した処理状況が、一致すると判断された状態情報に対応する前記条件情報を満たす場合に、前記フェイルオーバ実行指示部は、前記フェイルオーバ処理部にフェイルオーバの実行を指示すること、
を特徴とするサーバ。
【請求項３】
請求項１に記載のサーバであって、
前記処理状況は、予め定められた処理の処理時間であり、
前記状態情報は、予め定められた処理の処理時間が予め定められた限界時間を超えたことを特定する情報であること、
を特徴とするサーバ。
【請求項４】
請求項２に記載のサーバであって、
前記処理状況は、予め定められた処理の処理時間であり、
前記状態情報は、予め定められた処理の処理時間が予め定められた限界時間を超えたことを特定する情報であり、
前記条件情報は、前記予め定められた処理以外の他の処理が完了していること、および、前記予め定められた処理以外の他の処理の処理時間が予め定められた限界時間を超えたこと、の少なくともいずれか一方を特定する情報であること、
を特徴とするサーバ。
【請求項５】
請求項２に記載のサーバであって、
前記処理状況は、予め定められた処理の稼動又は停止を示す動作状態であり、
前記状態情報は、予め定められた処理の動作状態が停止中であることを特定する情報であり、
前記条件情報は、前記予め定められた処理以外の他の処理が完了していること、および、前記予め定められた処理以外の他の処理の処理時間が予め定められた限界時間を超えたこと、の少なくともいずれか一方を特定する情報であること、
を特徴とするサーバ。
【請求項６】
フェイルオーバの実行指示を受けることにより、サービスの提供を行う一のサーバから、他のサーバに前記サービスの提供を引き継ぐフェイルオーバ処理を行うフェイルオーバ処理部を各々備える複数のサーバを有するクラスタシステムを構成するサーバにおける、フェイルオーバ実行方法であって、
前記サーバは、
フェイルオーバを行う処理状況の状態を特定する状態情報を記憶し、
サービスを提供する際の処理状況を特定する状況監視ステップと、
前記状況監視ステップで特定した処理状況が、前記状態情報で特定される処理状況に一致する場合に、前記フェイルオーバ処理部にフェイルオーバの実行を指示するフェイルオーバ実行指示ステップと、
を実行することを特徴とするフェイルオーバ実行方法。
【請求項７】
請求項６に記載のフェイルオーバ実行方法であって、
前記サーバは、
前記状態情報毎にフェイルオーバを行う条件を特定する条件情報を対応させて記憶しており、
前記フェイルオーバ実行指示ステップは、
前記状況監視部が特定した処理状況が、前記状態情報で特定される処理状況に一致し、前記状況監視部が特定した処理状況が、一致すると判断された状態情報に対応する前記条件情報を満たす場合に、前記フェイルオーバ処理部にフェイルオーバの実行を指示すること、
を特徴とするフェイルオーバ実行方法。
【請求項８】
請求項６に記載のフェイルオーバ実行方法であって、
前記処理状況は、予め定められた処理の処理時間であり、
前記状態情報は、予め定められた処理の処理時間が予め定められた限界時間を超えたことを特定する情報であること、
を特徴とするフェイルオーバ実行方法。
【請求項９】
請求項７に記載のフェイルオーバ実行方法であって、
前記処理状況は、予め定められた処理の処理時間であり、
前記状態情報は、予め定められた処理の処理時間が予め定められた限界時間を超えたことを特定する情報であり、
前記条件情報は、前記予め定められた処理以外の他の処理が完了していること、および、前記予め定められた処理以外の他の処理の処理時間が予め定められた限界時間を超えたこと、の少なくともいずれか一方を特定する情報であること、
を特徴とするフェイルオーバ実行方法。
【請求項１０】
請求項７に記載のフェイルオーバ実行方法であって、
前記処理状況は、予め定められた処理の稼動又は停止を示す動作状態であり、
前記状態情報は、予め定められた処理の動作状態が停止中であることを特定する情報であり、
前記条件情報は、前記予め定められた処理以外の他の処理が完了していること、および、前記予め定められた処理以外の他の処理の処理時間が予め定められた限界時間を超えたこと、の少なくともいずれか一方を特定する情報であること、
を特徴とするフェイルオーバ実行方法。
【請求項１１】
コンピュータを、フェイルオーバの実行指示を受けることにより、サービスの提供を行う一のサーバから、他のサーバに前記サービスの提供を引き継ぐフェイルオーバ処理を行うフェイルオーバ処理部を各々備える複数のサーバを有するクラスタシステムを構成するサーバとして、機能させるためのプログラムであって、
前記コンピュータを、
フェイルオーバを行う処理状況の状態を特定する状態情報を記憶する記憶部と、
サービスを提供する際の処理状況を特定する状況監視部と、
前記状況監視部が特定した処理状況が、前記状態情報で特定される処理状況に一致する場合に、前記フェイルオーバ処理部にフェイルオーバの実行を指示するフェイルオーバ実行指示部として、
機能させることを特徴とするプログラム。
【請求項１２】
請求項１１に記載のプログラムであって、
前記記憶部には、フェイルオーバを行う条件を特定する条件情報が前記状態情報毎に対応されて記憶されており、
前記状況監視部が特定した処理状況が、前記状態情報で特定される処理状況に一致し、前記状況監視部が特定した処理状況が、一致すると判断された状態情報に対応する前記条件情報を満たす場合に、前記フェイルオーバ実行指示部は、前記フェイルオーバ処理部にフェイルオーバの実行を指示すること、
を特徴とするプログラム。
【請求項１３】
請求項１１に記載のプログラムであって、
前記処理状況は、予め定められた処理の処理時間であり、
前記状態情報は、予め定められた処理の処理時間が予め定められた限界時間を超えたことを特定する情報であること、
を特徴とするプログラム。
【請求項１４】
請求項１２に記載のプログラムであって、
前記処理状況は、予め定められた処理の処理時間であり、
前記状態情報は、予め定められた処理の処理時間が予め定められた限界時間を超えたことを特定する情報であり、
前記条件情報は、前記予め定められた処理以外の他の処理が完了していること、および、前記予め定められた処理以外の他の処理の処理時間が予め定められた限界時間を超えたこと、の少なくともいずれか一方を特定する情報であること、
を特徴とするプログラム。
【請求項１５】
請求項１２に記載のプログラムであって、
前記処理状況は、予め定められた処理の稼動又は停止を示す動作状態であり、
前記状態情報は、予め定められた処理の動作状態が停止中であることを特定する情報であり、
前記条件情報は、前記予め定められた処理以外の他の処理が完了していること、および、前記予め定められた処理以外の他の処理の処理時間が予め定められた限界時間を超えたこと、の少なくともいずれか一方を特定する情報であること、
を特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フェイルオーバの実行を制御する技術に関する。
【背景技術】
【０００２】
コンピュータシステムの信頼性や処理性能を向上するためのシステムとして、複数の計算機を疎結合したクラスタシステムがある。クラスタシステムとして、例えば、サーバ計算機１台あたりの処理負荷を低減する負荷分散型や、業務アプリケーションが動作するサーバ計算機（現用系サーバ）で障害が発生した場合に、当該サーバ計算機上の業務アプリケーション等のリソースを他のサーバ計算機（待機系サーバ）に引き継いで業務を継続させるフェイルオーバ型が知られている。例えば、特許文献１には、クラスタシステムにおいて、引き継ぐリソースとフェイルオーバ先で動作しているリソースの実行優先度に応じて、リソースの実行優先度を変更してフェイルオーバを実行する方法について記載されている。
【０００３】
【特許文献１】特開平１１−３５３２９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
さて、特許文献１の様な従来のフェイルオーバ型のクラスタシステムでは、例えば、サーバ計算機は、ハートビート通信により監視対象の他のサーバ計算機の正常稼動を確認し、監視対象のサーバ計算機の停止、すなわち、ハードウェア障害等によるダウンを検出した場合にフェイルオーバを実行する。
【０００５】
しかしながら、上記のクラスタシステムでは、サーバ計算機上で稼動するプログラムの処理状況は、監視対象となっていない。すなわち、ＣＰＵやメモリ等のリソース不足やソフトウェア障害等によりプログラムの応答性が低下した場合に、フェイルオーバは実行されない。そのため、当該クラスタシステムは、クライアントに対するサービス提供の応答性を即座に正常な状態に回復することができない。
【０００６】
そこで、本発明は、クラスタシステムにおいて、ハードウェア障害だけでなくプログラムの処理状況に応じてフェイルオーバの実行を制御する技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記問題を解決するために、第１の態様によれば、フェイルオーバの実行指示を受けることにより、フェイルオーバ処理を行うフェイルオーバ処理部を各々備える複数のサーバを有するクラスタシステムを構成するサーバであって、フェイルオーバを行う処理状況の状態を特定する状態情報を記憶する記憶部と、サービスを提供する際の処理状況を特定する状況監視部と、前記状況監視部が特定した処理状況が、前記状態情報で特定される処理状況に一致する場合に、前記フェイルオーバ処理部にフェイルオーバの実行を指示するフェイルオーバ実行指示部と、を有する。
【０００８】
また、前記記憶部には、フェイルオーバを行う条件を特定する条件情報が前記状態情報毎に対応されて記憶されており、前記状況監視部が特定した処理状況が、前記状態情報で特定される処理状況に一致し、前記状況監視部が特定した処理状況が、一致すると判断された状態情報に対応する前記条件情報を満たす場合に、前記フェイルオーバ実行指示部は、前記フェイルオーバ処理部にフェイルオーバの実行を指示する。
【発明を実施するための最良の形態】
【０００９】
本発明の実施の形態について図面を参照して説明する。
【００１０】
以下、第１の実施形態について説明する。第１の実施形態では、ネットワークブートシステムに本発明を適用する構成を例に説明する。先ず、ネットワークブートシステムの概略を説明する。
【００１１】
ネットワークブートシステムでは、クライアント計算機が起動するために必要なＯＳやアプリケーションプログラム（以下、アプリケーションと呼ぶ。）等のファイル群から構成される起動イメージは、サーバ計算機上に格納される。そして、クライアント計算機は、その起動時に、ネットワークを経由してサーバ計算機上の起動イメージを読み込んでブートを実行する。
【００１２】
１台のサーバ計算機で構成されるネットワークブートシステムにおいて、そのサーバ計算機がハードウエア障害またはソフトウエア障害によってダウンした場合、ネットワークブートのサービスを提供できなくなる。すなわち、クライアント計算機は、ネットワーク経由でブート及び起動されることができない。この結果、ユーザは、クライアントの計算機を使用できなくなる。また、そのサーバ計算機上の、ネットワークブートのサービスを提供するためのサーバプログラムの応答性低下が発生した場合、クラアント計算機は、ネットワークブートによる起動時間が長くなり、タイムアウト等によって起動ができなくなることがある。この結果、ユーザは、即座にクラアント計算機を使用開始できなくなる。
【００１３】
ネットワークブートの方法としては、例えば、ＰＸＥ（Ｐｒｅｂｏｏｔ  Ｅｘｃｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ）ブートが知られている。ＰＸＥブートでは、サーバ計算機で、クライアント計算機毎の起動イメージの設定が行われ、また、その起動イメージが格納される。クライアント計算機は、そのブート時に、自身のネットワークカードのＭＡＣアドレスをサーバ計算機に対して送信する。そして、サーバ計算機は、受信したＭＡＣアドレスに対応する起動イメージをクライアント計算機に送信する。
【００１４】
さて、図１は、第１の実施形態が適用されるシステム構成、及び、サーバ計算機の機能構成を示すブロック図である。なお、サーバ計算機１０２ｂは、サーバ計算機１０２ａと同様の機能構成を有するため、機能構成を図示しない。また、サーバ計算機１０２ａ及びサーバ計算機１０２ｂを区別しない場合は単にサーバ計算機１０２と表記する。
【００１５】
本図に示すように、本システムでは、クラスタシステム１０１と、クライアント計算機１０４、１０５及び１０６とが、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０７を介して接続される。もちろん、接続方法は、ＬＡＮに限られず、他の方法であってもよい。
【００１６】
クラスタシステム１０１は、サーバ計算機１０２ａとサーバ計算機１０２ｂから構成され、二重化されている。すなわち、サーバ計算機１０２ａ及びサーバ計算機１０２ｂいずれか一方が現用系として動作し、他方が待機系として動作する。サーバ計算機１０２ａとサーバ計算機１０２ｂは、ＬＡＮ１０８により接続され、ＬＡＮ１０８を介してハートビート通信を行って互いに稼動状況を監視する。もちろん、サーバ計算機１０２ａとサーバ計算機１０２ｂとの間の接続方法は、ＬＡＮに限られず、例えば、シリアル通信であってもよい。
【００１７】
サーバ計算機１０２上には、制御部１５０及び記憶部１５２が構築される。制御部１５０は、クラスタ処理部１１１と、サービス提供部１１２と、サービス提供部状況監視部１２１とを備える。また、記憶部１５２は、サービス提供部動作履歴テーブル１１３と、サービス提供部特性テーブル１２２と、サービス提供部状態テーブル１２３と、フェイルオーバ指示ルールテーブル１２４とを備える。
【００１８】
上記の機能で構成されるサーバ計算機１０２は、例えば、図７に示すような、ＣＰＵ１１と、主記憶装置１２と、ハードディスク等の補助記憶装置１３と、ＣＤ−ＲＯＭ等の可搬性を有する可搬型記憶媒体の情報を読み出す読み取り装置１６と、キーボードやマウス等の入力装置１４と、ディスプレイ等の出力装置１５と、外部装置と通信を行うための通信装置１７と、を備えた一般的なコンピュータにより実現可能である。
【００１９】
例えば、制御部１５０や記憶部１５２は、ＣＰＵ１１が補助記憶装置１３に予め記憶されている所定のプログラムを主記憶装置１２にロードして実行することにより達成される。記憶部１５２は、データを一時的に保持する場合は主記憶装置１２を利用して、継続的に保持する場合は補助記憶装置１３を利用して実現される。プログラムは、読み取り装置１６を介して可搬型記憶媒体から、あるいは、通信装置１７を介してネットワークから、補助記憶装置１３にダウンロードされ、それから、主記憶装置１２上にロードされてＣＰＵ１１により実行されるようにしてもよい。また、読み取り装置１６を介して可搬型記憶媒体から、あるいは、通信装置１７を介してネットワークから、主記憶装置１２上に直接ロードされ、ＣＰＵ３０１により実行されるようにしてもよい。
【００２０】
図１に戻って、クラスタ処理部１１１は、現用系及び待機系のサーバ計算機１０２上でそれぞれ動作し、ＬＡＮ１０８を介して互いにハートビート通信を行う。待機系のクラスタ処理部１１１は、現用系のクラスタ処理部１１１からの生存信号が途絶えたことを検出して、フェイルオーバを実行する。また、現用系のクラスタ処理部１１１は、現用系のサービス提供部状況監視部１２１の指示を受けて、待機系のクラスタ処理部１１１にフェイルオーバを実行させる。
【００２１】
以下、クラスタ処理部１１１の動作について、サーバ計算機１０２ａが現用系、サーバ計算機１０２ｂが待機系である場合を例にとって具体的に説明する。
【００２２】
この場合、クラスタ処理部１１１の制御により、サーバ計算機１０２ａ上のサービス提供部１１２は動作中であり、一方、サーバ計算機１０２ｂ上のサービス提供部１１２は停止した状態である。サービス提供部１１２については後述する。また、サーバ計算機１０２ａ上のクラスタ処理部１１１とサーバ計算機１０２ｂ上のクラスタ処理部１１１は、ＬＡＮ１０８を介してハートビート通信を行い、互いのサーバ計算機の稼動状況を監視している。
【００２３】
ここで、例えば、サーバ計算機１０２ａがハードウェア障害により停止した場合、サーバ計算機１０２ｂ上のクラスタ処理部１１１は、サーバ計算機１０２ａからの生存信号が途絶えたことを検出する。そして、サーバ計算機１０２ａをダウンとみなしてリソースの引継ぎ（フェイルオーバ）を実行する。引き継がれるリソースは、サーバ計算機１０２ａの、サービス提供部１１２がその処理に使用しているデータ、ＬＡＮ１０７側のエイリアスＩＰアドレス、及び、サービス提供部１１２の処理などである。
【００２４】
ＩＰアドレスの引継ぎは、サーバ計算機１０２ｂ上のクラスタ処理部１１１が、サーバ計算機１０２ａのＬＡＮ１０７側のネットワークインタフェースのエイリアスＩＰアドレスと同一のエイリアスＩＰアドレスを、サーバ計算機１０２ｂのＬＡＮ１０７側のネットワークインタフェースの設定に追加することによって行われる。エイリアスＩＰアドレスとはＩＰアドレスの別名となるＩＰアドレスであり追加や変更がしやすい。サービス提供部１１２の処理の引継ぎは、サーバ計算機１０２ｂ上のクラスタ処理部１１１が、サーバ計算機１０２ｂ上のサービス提供部１１２を起動することによって行われる。また、データの引継ぎは、例えば、サーバ計算機１０２がそれぞれ接続された共有記憶装置等を介して行われる。
【００２５】
サーバ計算機１０２ａからサーバ計算機１０２ｂへリソースの引継ぎが行われた後、サーバ計算機１０２ｂは待機系から現用系へと切り替わる。サーバ計算機１０２ａは停止したままであるが、停止から復帰した場合には現用系から待機系へと切り替わる。
【００２６】
以上のように、現用系のサーバ計算機１０２ａが停止した場合、サーバ計算機１０２ｂがリソースの引継ぎを行って待機系から現用系として切り替わる。そして、起動されたサービス提供部１１２は、引き継がれたデータを用いて、ＬＡＮ１０７を介して、クライアント計算機１０４〜１０６へのサービス提供を開始する。クラアント計算機１０４〜１０６は、同一のＩＰアドレスを用いてサーバ計算機１０２ｂにアクセスできるため、フェイルオーバの実行に係らず、通常通りにサービス提供部１１２によるサービスの提供を受けられる。
【００２７】
サービス提供部１１２は、例えば、サーバプログラム、アプリケーションプログラムや業務処理プログラムなどであり、複数あってもよい。本実施形態では、サービス提供部１１２は、ネットワークブート用のサーバプログラムとして必要な、ＤＨＣＰ（Ｄｙｎａｍｉｃ  Ｈｏｓｔ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）サーバ、及び、ＴＦＴＰ（Ｔｒｉｖｉａｌ  Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバである。ＤＨＣＰサーバは、クライアント計算機のＩＰアドレスなどのネットワーク情報を自動設定するためのサーバプログラムである。ＴＦＴＰサーバは、ユーザ名等の認証無しでクライアント計算機へのファイル転送を行うためのサーバプログラムである。転送されるファイルは、クライアント計算機が起動するときに必要なＯＳやアプリケーションのファイル群から構成される起動イメージである。
【００２８】
待機系のサーバ計算機１０２上のサービス提供部１１２は、クラスタ処理部１１１の制御により、起動されないため動作しない。なお、サーバ計算機１０２が現用系に切り替わった場合、クラスタ処理部１１１の制御により、サービス提供部１１２は起動され、動作を開始する。
【００２９】
一方、現用系のサービス提供部１１２は、クライアント計算機１０４〜１０６にサービスを提供すると共に、図２に示す、サービス提供部動作履歴管理テーブル１１３に、リアルタイムに動作履歴を格納する。
【００３０】
図２は、サービス提供部動作履歴テーブル１１３の構成を示す図である。サービス提供部動作履歴テーブル１１３は、日付２０１と、時刻２０２と、ホスト名２０３と、サービス提供部名２０４と、内容２０５とが対応付けられた動作履歴情報を格納する。日付２０１は、サービス提供部１１２が動作した日付を格納する。時刻２０２は、サービス提供部１１２が動作した時刻を格納する。ホスト名２０３は、サービス提供部１１２をアクセスしたクライアント計算機を特定するホスト名を格納する。サービス提供部名２０４は、サービス提供部１１２を特定するサービス提供部の名称を格納する。内容２０５は、サービス提供部１１２の動作の詳細を格納する。
【００３１】
具体的に、図２を参照して、サービス提供部１１２（ＤＨＣＰサーバ、ＴＦＴＰサーバ）が格納する動作履歴の一例を説明する。以下、"client1"、"client2"、"client3"は、クライアント計算機１０４〜１０６のホスト名を示す。また、"dhcpd"は、ＤＨＣＰサーバのプログラム名を、"tftpd"は、ＴＦＴＰサーバのプログラム名を示す。
【００３２】
第１行目の動作履歴２１０〜第４行目の動作履歴２４０は、クライアント計算機１０４"client1"がネットワークブートした場合の、サービス提供部１１２の動作履歴の内容を示している。クライアント計算機１０４"client1"のネットワークブートは、ＤＨＣＰサーバ"dhcpd"がクライアント計算機１０４"client1"にＩＰアドレスを提供した後に、ＴＦＴＰサーバ"tftpd"がクライアント計算機１０４"client1"に起動イメージをファイル転送することにより実行される。
【００３３】
動作履歴２１０は、ＤＨＣＰサーバ"dhcpd"が、"2007 01 06"の日付で"12:00:01"の時刻に、クライアント計算機１０４"client1"からのアクセスを受け付け、サービスの提供を開始"start"したことを示す。動作履歴２２０は、ＤＨＣＰサーバ"dhcpd"が、"2007 01 06"の日付で"12:00:03"の時刻に、クライアント計算機１０４"client1"へのサービスの提供を終了"end"したことを示す。なお、終了"end"は、ＤＨＣＰサーバ"dhcpd"がサービスの受け付け待ち状態に入ったことを意味し、動作を停止した状態ではない。動作履歴２３０は、ＴＦＴＰサーバ"tftpd"が、"2007 01 06"の日付で"12:00:04"の時刻に、クライアント計算機１０４"client1"からのアクセスを受け付け、サービスの提供を開始"start"したことを示す。動作履歴２４０は、ＴＦＴＰサーバ"tftpd"が、"2007 01 06"の日付で"12:00:24"の時刻に、クライアント計算機１０４"client1"へのサービスの提供を終了"end"したことを示す。なお、終了"end"は、ＴＦＴＰサーバ"tftpd"がサービスの受け付け待ち状態に入ったことを意味し、動作を停止した状態ではない。
【００３４】
以上のように、サービス提供部１１２は、クライアント計算機にサービスを提供すると共に、サービス提供部動作履歴管理テーブル１１３に、リアルタイムに動作履歴を格納する。後述するように、サービス提供部動作履歴テーブル１１３の内容は、サービス提供部１１２がクライアント計算機へのサービス提供を行う処理時間を求めるために使用される。
【００３５】
次に、サービス提供部状況監視部１２１について説明する。
【００３６】
サービス提供部状況監視部１２１は、所定の周期で以下の処理を実行する。サービス提供部動作履歴テーブル１１３に格納された動作履歴を参照して、サービス提供部１１２のサービス提供の処理経過時間を算出し、その時間をサービス提供部状態テーブル１２３に格納する。また、サービス提供部１１２の生死状態を、例えばＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）から取得して、サービス提供部状態テーブル１２３に格納する。そして、サービス提供部状態テーブル１２３に格納したサービス提供部１１２の処理状況（生死状態、処理経過時間）に対応する指示ルールをフェイルオーバ指示ルールテーブル１２４から検索する。また、選定した指示ルールに定められた条件が成立する場合は、フェイルオーバの実行の指示をクラスタ処理部１１１に出す。
【００３７】
以下、具体的に、サービス提供部状況監視部１２１の処理を、その処理に使用されるテーブルを参照しながら説明する。なお、サービス提供部状況監視部１２１は、サービス提供部１１２が動作する現用系のサーバ計算機１０２で動作する。
【００３８】
図３は、サービス提供部特性テーブル１２２の構成を示す図である。ユーザは、このテーブルに、サービス提供部１１２の動作の特性を設定しておく。サービス提供部特性テーブル１２２は、サービス提供部名３０１と、平均処理時間３０３と、限界処理時間３０４とが対応付けられた特性情報を格納する。サービス提供部名３０１は、サービス提供部１１２を特定するサービス提供部の名称を格納する。具体的には、本実施形態では、ＤＨＣＰサーバのプログラム名"dhcpd"およびＴＦＴＰサーバのプログラム名"tftpd"を格納する。
【００３９】
平均処理時間３０３は、サービス提供部１１２がクライアント計算機にサービスを提供する処理に要する平均的な処理時間（秒）を格納する。具体的には、例えば、図２に示すサービス提供部動作履歴テーブル１１３の動作履歴に基づいて求めた処理時間を、平均値と想定し、その値を格納する。すなわち、動作履歴２１０及び動作履歴２２０の時刻２０２の差分から、ＤＨＣＰサーバ"dhcpd"がクライアント計算機にサービスを提供するために要する時間は、"2"となる。同様に、動作履歴２３０及び動作履歴２４０の時刻２０２の差分から、ＴＦＴＰサーバ"tftpd"がクライアント計算機にサービスを提供するために要する時間は、"20"となる。
【００４０】
限界処理時間３０４は、何らかの異常によって、サービス提供部１１２の応答時間が低下した場合に、サービス提供部１１２の要求性能として、限界となる処理時間（秒）を格納する。例えば、ここでは、平均処理時間３０３の３倍を限界処理時間とし、限界処理時間３０４は、それぞれ"6"、"60"を格納する。なお、クライアント計算機１０４〜１０６からの同時アクセスの総数Ｎによって、サービス提供部１１２の処理時間が比例してＮ倍となる場合、限界処理時間３０４には、比例関係式として、例えば"6×Ｎ"、"60×Ｎ"格納することができる。ここで、同時アクセスの総数とは、ある処理の開始時点からの平均処理時間内のアクセス数をいう。以下の例では、処理時間は、同時アクセスの総数Ｎに無関係であるものとする。
【００４１】
図４は、サービス提供部状態テーブル１２３の構成を示す図である。サービス提供部状態テーブル１２３は、サービス提供部状況監視部１２１によって定期的に更新され、サービス提供部１１２の生死状態及び処理経過時間の最新の情報が格納される。サービス提供部状態テーブル１２３は、サービス提供部名４０１と、生死状態４０３と、処理経過時間４０４とが対応付けられた状態情報を格納する。サービス提供部名４０１は、サービス提供部１１２を特定するサービス提供部の名称を格納する。本実施形態では、監視対象のＤＨＣＰサーバのプログラム名"dhcpd"およびＴＦＴＰサーバのプログラム名"tftpd"を格納する。
【００４２】
生死状態４０３は、サービス提供部１１２の生死状態（稼動中又は停止中）を格納する。具体的には、稼動中として"alive"、停止中として"dead"を格納する。なお、生死状態は、サービス提供部状況監視部１２１が、例えばＯＳに問い合わせることによって取得される。
【００４３】
処理経過時間４０４は、サービス提供部１１２がクライアント計算機にサービスを提供する処理を開始してからの経過時間（秒）を格納する。
【００４４】
具体的には、サービス提供部状況監視部１２１は、図２に示すサービス提供部動作履歴テーブル１１３を参照して、参照した履歴情報の日付２０１及び時刻２０２と、現在日時との差分から、処理経過時間４０４を求める。例えば、サービス提供部動作履歴テーブル１１３を参照した現在日時が2007年01月06日"2007 01 06"の日付で12時00分14秒"12:00:14"の時刻（履歴情報２４０は未だ格納されていないものとする）であるものとする。この場合、ＤＨＣＰサーバ"dhcpd"の履歴情報２２０において、内容２０５が"end"となっており、また、時刻"12:00:03"は現在時刻より前であるため、ＤＨＣＰサーバ"dhcpd"の処理経過時間は"0"となる。一方、ＴＦＴＰサーバ"tftpd"の履歴情報２３０において、内容２０５が"start"となっているため、処理経過時間は、現在時刻"12:00:14"と時刻"12:00:04"の差分"10"となる。以上のようにして、サービス提供部１１２それぞれの処理経過時間が算出され、処理経過時間４０４に格納される。
【００４５】
図５は、フェイルオーバ指示ルールテーブル１２４の構成を示す図である。ユーザは、このテーブルに、サービス提供部１１２の処理状況に応じたフェイルオーバの動作を指定するルールを設定しておく。ユーザが任意に設定できることにより、フェイルオーバを木目細かく制御することも可能となる。フェイルオーバ指示ルールテーブル１２４は、サービス提供部１１２毎の生死状態５０１と、サービス提供部１１２毎の処理経過時間５０２と、ルール５０３とが対応付けられた指示ルール情報を格納する。
【００４６】
生死状態５０１は、サービス提供部状態テーブル１２３に格納された監視対象のサービス提供部１１２のサービス提供部名４０１についての生死状態を格納する。同様に、処理時間５０２は、監視対象のサービス提供部１１２のサービス提供部名４０１についての処理経過時間（秒）を格納する。これらの値（生死状態、処理経過時間）は、サービス提供部状態テーブル１２３に格納したサービス提供部１１２の処理状況と比較するための基準値若しくは閾値として使用されるデータである。本実施形態では、生死状態５０１は、監視対象であるＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"それぞれの生死状態５０４及び５０５を格納する。また、処理経過時間５０２は、監視対象であるＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"それぞれの処理経過時間５０６及び５０７を格納する。ユーザは、生死状態５０１と処理経過時間５０２の任意の組み合わせと、それらに対応付けたルール５０３を設定する。
【００４７】
ルール５０３は、条件５０８と実行内容５０９を対応付けて格納する。ルール５０３は、上述したように、サービス提供部１１２毎の生死状態５０４及び５０５と、サービス提供部１１２毎の処理経過時間５０６及び５０７と、の組み合わせそれぞれに対応している。条件５０８は、実行内容５０９を実行するための条件を格納する。
【００４８】
例えば、条件５０８が"無し"の場合、サービス提供部状況監視部１２１は、無条件で実行内容５０９の内容を実行する。条件５０８が、"サービス提供部の処理完了直後"の場合、サービス提供部状況監視部１２１は、指定されたサービス提供部の、サービス提供を開始したことを示す履歴情報（内容２０５が"start"）に対応する履歴情報（内容２０５が"end"）がサービス提供部動作履歴テーブル１１３に格納されていることを検出したときに、実行内容５０９の内容を実行する。条件５０８が、"サービス提供部の限界処理時間後"の場合、サービス提供部状況監視部１２１は、指定されたサービス提供部の、サービス提供部状態テーブル１２３の処理経過時間４０４がサービス提供部特性テーブル１２２の限界処理時間３０４を超えていることを検出したときに、実行内容５０９の内容を実行できる。これらの条件内容をＡＮＤ条件やＯＲ条件で結合しても良い。
【００４９】
実行内容５０９は、サービス提供部状況監視部１２１が実行すべき処理の内容を格納する。例えば、実行内容５０９が"通常処理"の場合、サービス提供部状況監視部１２１は何も行わない。実行内容５０９が"フェイルオーバ実行"の場合、サービス提供部状況監視部１２１は、クラスタ処理部１１１に対してフェイルオーバ実行を指示する。
【００５０】
上記のフェイルオーバ指示ルールテーブル１２４を使用して、サービス提供部状況監視部１２１は、指示ルールに従った処理を定期的に行う。先ず、サービス提供部状況監視部１２１は、サービス提供部状態テーブル１２３に格納された、各サービス提供部４０１の生死状態４０３及び処理経過時間４０４を取得する。その後、取得した生死状態及び処理経過時間と、指示ルール情報５１１〜５４１のうち、生死状態５０１及び処理経過時間５０２の内容とが一致する指示ルール情報を選択する。そして、選択した指示ルール情報の条件５０８が成立するか否かを判定する。成立すると判定した場合は、実行内容５０９の内容を実行する。成立しないと判断した場合は、実行内容５０９の内容を実行しない。以下、各指示ルール情報と、サービス提供部状況監視部１２１の動作について具体的に説明する。
【００５１】
指示ルール情報５１１は、ＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"の両方の生存状態４０３が稼動中"alive"であり、かつ、処理経過時間４０４が、それぞれ限界処理時間"6"秒、"60"秒以下である場合である。この場合、条件５０８は"無し"、実行内容５０９は"通常処理"であるため、サービス提供部状況監視部１２１は、特に何も処理を行わない。
【００５２】
指示ルール情報５２１は、ＤＨＣＰサーバ"dhcpd"の生存状態４０３が停止中"dead"であり、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が"0"秒（サービスの受け付け待ち状態）である場合である。また、指示ルール情報５３１は、ＴＦＴＰサーバ"tftpd"の生存状態４０３が停止中"dead"であり、かつ、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が"0"秒である場合である。そして、指示ルール情報５４１は、ＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"の両方の生存状態４０３が、停止中"dead"である場合である。これらの場合、条件５０８は"無し"、実行内容５０９は"フェイルオーバ実行"であるため、サービス提供部状況監視部１２１は、フェイルオーバの実行指示をクラスタ処理部１１１に出す。
【００５３】
指示ルール情報５１２は、ＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"の両方の生存状態４０３が、稼動中"alive"であり、かつ、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が限界処理時間"6"秒を超え、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が"0"秒である場合である。また、指示ルール情報５１４は、ＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"の両方の生存状態４０３が、稼動中"alive"であり、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が限界処理時間"60"秒を超え、かつ、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が"0"秒である場合である。これらの場合、条件５０８は"無し"、実行内容５０９は"フェイルオーバ実行"であるため、サービス提供部状況監視部１２１は、フェイルオーバの実行指示をクラスタ処理部１１１に出す。このような指示ルール情報により、サービス提供部１１２のうち少なくとも１つの処理時間が限界処理時間を超えていた場合に、フェイルオーバが実行される。そのため、サービス提供部１１２の応答性が低下しても、その応答性の低下を回避することが可能となる。
【００５４】
指示ルール情報５１３及び５１５は、それぞれ指示ルール情報５１２及び５１４の内容を、より細かな条件設定としたものである。
【００５５】
指示ルール情報５１３は、ＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"の両方の生存状態４０３が、稼動中"alive"であり、かつ、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が限界処理時間"6"秒を超え、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が"0"秒より大きい（クライアント計算機にサービスを提供中）場合である。条件５０８は、"tftpdの処理完了直後又はtftpdの限界処理時間６０s後"であり、実行内容５０９は"フェイルオーバ実行"である。この場合、サービス提供部状況監視部１２１は、ＴＦＴＰサーバ"tftpd"の、サービス提供を開始したことを示す履歴情報（内容２０５が"start"）に対応する履歴情報（内容２０５が"end"）がサービス提供部動作履歴テーブル１１３に格納されていることを検出した場合、又は、処理経過時間４０４が限界処理時間"60"秒を超えていることを検出した場合に、フェイルオーバの実行指示をクラスタ処理部１１１に出す。この条件５０８が成立しない場合は、フェイルオーバの実行指示を行わない。
【００５６】
指示ルール情報５１５は、ＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"の両方の生存状態４０３が、稼動中"alive"であり、かつ、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が"0"秒より大きく、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が限界処理時間"60"秒を超える場合である。条件５０８は、"dhcpdの処理完了直後又はdhcpdの限界処理時間６s後"であり、実行内容５０９は"フェイルオーバ実行"である。この場合、サービス提供部状況監視部１２１は、ＤＨＣＰサーバ"dhcpd"の、サービス提供を開始したことを示す履歴情報（内容２０５が"start"）に対応する履歴情報（内容２０５が"end"）がサービス提供部動作履歴テーブル１１３に格納されていることを検出した場合、又は、処理経過時間４０４が限界処理時間"6"秒を超えていることを検出した場合に、フェイルオーバの実行指示をクラスタ処理部１１１に出す。この条件５０８が成立しない場合は、フェイルオーバの実行指示を行わない。
【００５７】
指示ルール情報５１３及び５１５のような指示ルール情報により、サービス提供部１１２のうち少なくとも１つの処理時間が限界処理時間を超えていた場合に、他の停止状態でないサービス提供部１１２が処理中であるならば、処理中のサービス提供部１１２の処理完了後にフェイルオーバが実行される。そのため、サービス提供部１１２のクライアント計算機へのサービス提供が中断されない。なお、無条件でフェイルオーバを実行させる場合、指示ルール情報５１３及び５１５の条件５０８を"無し"に設定する。
【００５８】
指示ルール情報５２２及び５３２は、それぞれ指示ルール情報５２１及び５３１の内容を、より細かな条件設定としたものである。
【００５９】
指示ルール情報５２２は、ＤＨＣＰサーバ"dhcpd"の生存状態４０３が停止中"dead"であり、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が"0"秒より大きい（クライアント計算機にサービスを提供中）場合である。条件５０８は、指示ルール情報５１３と同様に、"tftpdの処理完了直後又はtftpdの限界処理時間６０s後"であり、実行内容５０９は"フェイルオーバ実行"である。この場合、サービス提供部状況監視部１２１は、ＴＦＴＰサーバ"tftpd"の、サービス提供を開始したことを示す履歴情報（内容２０５が"start"）に対応する履歴情報（内容２０５が"end"）がサービス提供部動作履歴テーブル１１３に格納されていることを検出した場合、又は、処理経過時間４０４が限界処理時間"60"秒を超えていることを検出した場合に、フェイルオーバの実行指示をクラスタ処理部１１１に出す。この条件５０８が成立しない場合は、フェイルオーバの実行指示を行わない。
【００６０】
指示ルール情報５３２は、ＴＦＴＰサーバ"tftpd"の生存状態４０３が停止中"dead"であり、かつ、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が"0"秒より大きい（クライアント計算機にサービスを提供中）場合である。条件５０８は、指示ルール情報５１５と同様に、"dhcpdの処理完了直後又はdhcpdの限界処理時間６s後"であり、実行内容５０９は"フェイルオーバ実行"である。この場合、サービス提供部状況監視部１２１は、ＤＨＣＰサーバ"dhcpd"の、サービス提供を開始したことを示す履歴情報（内容２０５が"start"）に対応する履歴情報（内容２０５が"end"）がサービス提供部動作履歴テーブル１１３に格納されていることを検出した場合、又は、処理経過時間４０４が限界処理時間"6"秒を超えていることを検出した場合に、フェイルオーバの実行指示をクラスタ処理部１１１に出す。この条件５０８が成立しない場合は、フェイルオーバの実行指示を行わない。
【００６１】
指示ルール情報５２２及び５３２のような指示ルール情報により、サービス提供部１１２のうち少なくとも１つが停止していた場合でも、他の停止状態でないサービス提供部１１２が処理中であるならば、処理中のサービス提供部１１２の処理完了後にフェイルオーバが実行される。そのため、サービス提供部１１２のクライアント計算機へのサービス提供が中断されない。なお、無条件でフェイルオーバを実行させる場合、指示ルール情報５２２及び５３２の条件５０８を"無し"に設定する。
【００６２】
以上のように指示ルールを設定することにより、ネットワークブートシステムにおいて、現用系のサーバ計算機、又は、ＤＨＣＰサーバ若しくはＴＦＴＰサーバがダウンした場合であっても、クライアント計算機がネットワークブートできなくなる事態を回避することができる。また、ＤＨＣＰサーバ若しくはＴＦＴＰサーバの応答性が低下した場合であっても、クラアント計算機がネットワークブートによる起動時間のタイムアウト等によって起動ができなくなる事態を回避することができる。
【００６３】
次に、上記のように構成されるサービス提供部状況監視部１２１の動作を説明する。
【００６４】
図６は、サービス提供部状況監視部１２１の処理の流れを示すフロー図である。サービス提供部状況監視部１２１は、ユーザにより指定された周期で、定期的に以下のフローを実行する。例えば、周期は、ネットワークブート用のサービス提供部（ＤＨＣＰサーバ、ＴＦＴＰサーバ）では秒オーダの処理であるので、１秒程度とするのが好ましい。
【００６５】
先ず、サービス提供部状況監視部１２１は、サービス提供部動作履歴テーブル１１３に格納されているサービス提供部１１２の動作履歴を読み込む（Ｓ６０１）。
【００６６】
それから、サービス提供部状況監視部１２１は、サービス提供部状態テーブル１２３を更新する（Ｓ６０２）。具体的には、サービス提供部１１２の稼動状態（稼動中"alive"又は停止中"dead"）をＯＳに問い合わせ、取得した稼動状態を生死状態４０３に格納する。また、読み込んだ動作履歴を順番にチェックし、ホスト名２０３の名称毎およびサービス提供部名２０４毎に分類する。そして、サービス提供部毎の動作履歴の内容２０５を参照する。開始"start"に対応する終了"end"が記録されている動作履歴がある場合、"0"秒を処理経過時間４０４に格納する。開始"start"のみが記録されている場合、当該動作履歴の日付２０１及び時刻２０２と、現在日時の差分から求めた時間を処理経過時間４０４に格納する。
【００６７】
次に、サービス提供部状況監視部１２１は、Ｓ６０２で更新したサービス提供部状態テーブル１２３の各サービス提供部１１２の生死状態４０３が、フェイルオーバ指示ルールテーブル１２４の各指示ルール情報の生死状態５０１と一致するか判定し、一致する指示ルール情報を選択する（Ｓ６０３）。
【００６８】
また、サービス提供部状況監視部１２１は、Ｓ６０２で更新したサービス提供部状態テーブル１２３の各サービス提供部１１２の処理経過時間４０４が、Ｓ６０３で選択した指示ルール情報の処理経過時間５０２と一致するか判定し、一致する指示ルール情報を選択する（Ｓ６０４）。Ｓ６０３、Ｓ６０４の処理を経て、指示ルール情報５１１〜５４１のうちのいずれか一つが選定される。
【００６９】
次に、サービス提供部状況監視部１２１は、Ｓ６０４で選定した指示ルール情報の条件５０８を、サービス提供部１１２の状態が満たすか否かを判定する（Ｓ６０５）。具体的には、条件５０８が“無し”の場合、Ｓ６０６に進む（Ｓ６０５で“ＹＥＳ”）。条件５０８が“無し”以外の場合、指定されたサービス提供部の処理が完了しているか、又は、指定されたサービス提供部の処理時間が限界処理時間を超えているか否かを判定する。そして、処理完了直後、又は、限界処理時間経過後であることを検出した場合、その条件５０８を満たしているので、Ｓ６０６に進む（Ｓ６０５で“ＹＥＳ”）。一方、条件５０８を満たさない場合は、処理を終了する（Ｓ６０５で“ＮＯ”、ＥＮＤ）。
【００７０】
Ｓ６０６では、サービス提供部状況監視部１２１は、選定した指示ルール情報の実行内容５０９の内容を実行する（Ｓ６０６）。具体的には、実行内容５０９が"通常処理"の場合、サービス提供部状況監視部１２１は何も行わない。実行内容５０９が"フェイルオーバ実行"の場合、サービス提供部状況監視部１２１は、クラスタ処理部１１１に対してフェイルオーバ実行を指示する。クラスタ処理部１１１は、指示を受けると、現用系サーバ計算機１０２から待機系のサーバ計算機１０２にリソースの引継ぎを行い、待機系と現用系を切り替える。
【００７１】
以上の各ステップを実行し、サービス提供部状況監視部１２１は、処理を終了する。以降も同様に、定期的に上記のフローを実行する。
【００７２】
以上、第１の実施形態について説明した。第１の実施形態によれば、クラスタシステムにおいて、現用系サーバ計算機上でサーバプログラムのうちの少なくとも１つが性能要求となる限界処理時間内に処理を終了していない場合に、待機系サーバ計算機上へフェイルオーバが実行される。これにより、サーバプログラムに高負荷状態が発生した場合にも、待機系サーバ計算機上へフェイルオーバが実行されるため、サーバ計算機のハードウェア障害だけでなく、サーバプログラムの応答性の低下にも対処ができる。
【００７３】
また、現用系サーバ計算機上でサーバプログラムのうちの少なくとも１つが限界処理時間内に処理を終了していない場合に、他のサーバプログラムの処理完了を待った後に、待機系サーバ計算機上へフェイルオーバを実行する。これにより、フェイルオーバ時にサーバプログラムとクライアント計算機の間の処理を中断させなくて済む。このように、サービスの無停止化を実現する高信頼かつ高応答なクラスタシステムを提供できる。
【００７４】
次に、第１の実施形態の変形例について説明する。この変形例は、第１の実施形態の一部をより簡単な構成としたものである。以下、この変形例について、第１の実施形態と異なる点を中心に、図８、９、１０を用いて説明する。第１の実施形態と同様に、ネットワークブートシステムに本発明を適用する構成を例に説明する。システム構成及びサーバ計算機の機能構成（図１）、サービス提供部動作履歴テーブル１１３（図２）、サービス提供部特性テーブル１２２（図３）、サーバ計算機のハードウェア構成（図７）は、第１の実施形態と同様であるため説明を省略する。
【００７５】
この変形例は、第１の実施形態と異なり、図８に示すサービス提供部状態テーブル１２３と、図９に示すフェイルオーバ指示ルールテーブル１２４を有する。すなわち、これらのテーブルを用いるサービス提供部状況監視部１２１の処理が異なる。
【００７６】
図８は、変形例のサービス提供部状態テーブル１２３の構成を示す図である。第１の実施形態（図４）と異なるのは、生死状態４０３を省いた構成となっている点である。サービス提供部状態テーブル１２３は、サービス提供部状況監視部１２１によって定期的に更新され、サービス提供部１１２の処理経過時間の最新の情報が格納される。サービス提供部状態テーブル１２３は、サービス提供部名４０１と、処理経過時間４０４とが対応付けられた状態情報を格納する。処理経過時間４０４の内容は、第１の実施形態と同様である。
【００７７】
図９は、変形例のフェイルオーバ指示ルールテーブル１２４の構成を示す図である。第１の実施形態（図５）と異なるのは、サービス提供部１１２毎の生死状態５０１を省いた構成となっている点である。フェイルオーバ指示ルールテーブル１２４は、ユーザの設定により、サービス提供部１１２毎の処理経過時間５０２と、ルール５０３とが対応付けられた指示ルール情報を格納する。処理経過時間５０２及びルール５０３の内容は、第１の実施形態と同様である。
【００７８】
上記のフェイルオーバ指示ルールテーブル１２４を使用して、サービス提供部状況監視部１２１は、指示ルールに従った処理を定期的に行う。先ず、サービス提供部状況監視部１２１は、サービス提供部状態テーブル１２３に格納された、各サービス提供部４０１の処理経過時間４０４を取得する。その後、取得した処理経過時間と、指示ルール情報９１１〜９１５のうち、処理経過時間５０２の内容が一致する指示ルール情報を選択する。そして、選択した指示ルール情報の条件５０８が成立するか否かを判定する。成立すると判定した場合は、実行内容５０９の内容を実行する。成立しないと判断した場合は、実行内容５０９の内容を実行しない。以下、各指示ルール情報と、サービス提供部状況監視部１２１の動作について具体的に説明する。
【００７９】
指示ルール情報９１１は、ＤＨＣＰサーバ"dhcpd"及びＴＦＴＰサーバ"tftpd"の両方の処理経過時間４０４が、それぞれ限界処理時間"6"秒、"60"秒以下である場合である。この場合、条件５０８は"無し"、実行内容５０９は"通常処理"であるため、サービス提供部状況監視部１２１は、特に何も処理を行わない。
【００８０】
指示ルール情報９１２は、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が限界処理時間"6"秒を超え、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が"0"秒である場合である。また、指示ルール情報９１４は、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が限界処理時間"60"秒を超え、かつ、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が"0"秒である場合である。これらの場合、条件５０８は"無し"、実行内容５０９は"フェイルオーバ実行"であるため、サービス提供部状況監視部１２１は、フェイルオーバの実行指示をクラスタ処理部１１１に出す。このような指示ルール情報により、サービス提供部１１２のうち少なくとも１つの処理時間が限界処理時間を超えていた場合に、フェイルオーバが実行される。そのため、サービス提供部１１２の応答性が低下しても、その応答性の低下を回避することが可能となる。
【００８１】
指示ルール情報９１３は、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が限界処理時間"6"秒を超え、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が"0"秒より大きい（クライアント計算機にサービスを提供中）場合である。条件５０８は、"tftpdの処理完了直後又はtftpdの限界処理時間６０s後"であり、実行内容５０９は"フェイルオーバ実行"である。この場合、サービス提供部状況監視部１２１は、ＴＦＴＰサーバ"tftpd"の、サービス提供を開始したことを示す履歴情報（内容２０５が"start"）に対応する履歴情報（内容２０５が"end"）がサービス提供部動作履歴テーブル１１３に格納されていることを検出した場合、又は、処理経過時間４０４が限界処理時間"60"秒を超えていることを検出した場合に、フェイルオーバの実行指示をクラスタ処理部１１１に出す。この条件５０８が成立しない場合は、フェイルオーバの実行指示を行わない。
【００８２】
指示ルール情報９１５は、ＤＨＣＰサーバ"dhcpd"の処理経過時間４０４が"0"秒より大きく、かつ、ＴＦＴＰサーバ"tftpd"の処理経過時間４０４が限界処理時間"60"秒を超える場合である。条件５０８は、"dhcpdの処理完了直後又はdhcpdの限界処理時間６s後"であり、実行内容５０９は"フェイルオーバ実行"である。この場合、サービス提供部状況監視部１２１は、ＤＨＣＰサーバ"dhcpd"の、サービス提供を開始したことを示す履歴情報（内容２０５が"start"）に対応する履歴情報（内容２０５が"end"）がサービス提供部動作履歴テーブル１１３に格納されていることを検出した場合、又は、処理経過時間４０４が限界処理時間"6"秒を超えていることを検出した場合に、フェイルオーバの実行指示をクラスタ処理部１１１に出す。この条件５０８が成立しない場合は、フェイルオーバの実行指示を行わない。
【００８３】
指示ルール情報９１３及び９１５のような指示ルール情報により、サービス提供部１１２のうち少なくとも１つの処理時間が限界処理時間を超えていた場合に、他の停止状態でないサービス提供部１１２が処理中であるならば、処理中のサービス提供部１１２の処理完了後にフェイルオーバが実行される。そのため、サービス提供部１１２のクライアント計算機へのサービス提供が中断されない。
【００８４】
以上のように指示ルールを設定することにより、ネットワークブートシステムにおいて、ＤＨＣＰサーバ若しくはＴＦＴＰサーバの応答性が低下した場合であっても、クラアント計算機がネットワークブートによる起動時間のタイムアウト等によって起動ができなくなる事態を回避することができる。
【００８５】
次に、上記のように構成されるサービス提供部状況監視部１２１の動作を説明する。
【００８６】
図１０は、変形例のサービス提供部状況監視部１２１の処理の流れを示すフロー図である。第１の実施形態（図６）と異なるのは、Ｓ６０３を省いた処理となっている点である。また、サービス提供部状態テーブル１２３（図８）と、フェイルオーバ指示ルールテーブル１２４（図９）に応じた処理（Ｓ６０２´、Ｓ６０４´）を実行する点である。Ｓ６０１、Ｓ６０５、Ｓ６０６は、第１の実施形態と同様であるので説明を省略する。
【００８７】
Ｓ６０１の後、サービス提供部状況監視部１２１は、サービス提供部状態テーブル１２３を更新する（Ｓ６０２´）。具体的には、読み込んだ動作履歴を順番にチェックし、ホスト名２０３の名称毎およびサービス提供部名２０４毎に分類する。そして、サービス提供部毎の動作履歴の内容２０５を参照する。開始"start"に対応する終了"end"が記録されている動作履歴がある場合、"0"秒を処理経過時間４０４に格納する。開始"start"のみが記録されている場合、当該動作履歴の日付２０１及び時刻２０２と、現在日時の差分から求めた時間を処理経過時間４０４に格納する。
【００８８】
次に、サービス提供部状況監視部１２１は、Ｓ６０２´で更新したサービス提供部状態テーブル１２３の各サービス提供部１１２の処理経過時間４０４が、フェイルオーバ指示ルールテーブル１２４の各指示ルール情報の処理経過時間５０２と一致するか判定し、一致する指示ルール情報を選択する（Ｓ６０４´）。以降、サービス提供部状況監視部１２１は、Ｓ６０５、Ｓ６０６の処理を実行する。
【００８９】
以上、第１の実施形態の変形例について説明した。この変形例によれば、クラスタシステムにおいて、現用系サーバ計算機上でサーバプログラムのうちの少なくとも１つが性能要求となる限界処理時間内に処理を終了していない場合に、待機系サーバ計算機上へフェイルオーバが実行される。これにより、サーバプログラムに高負荷状態が発生した場合に、待機系サーバ計算機上へフェイルオーバが実行されるため、サーバプログラムの応答性の低下に対処ができる。
【００９０】
また、現用系サーバ計算機上でサーバプログラムのうちの少なくとも１つが限界処理時間内に処理を終了していない場合に、他のサーバプログラムの処理完了を待った後に、待機系サーバ計算機上へフェイルオーバを実行する。これにより、フェイルオーバ時にサーバプログラムとクライアント計算機の間の処理を中断させなくて済む。このように、サービスの無停止化を実現する高信頼かつ高応答なクラスタシステムを提供できる。
【００９１】
以上、本発明について、例示的な実施形態と関連させて記載した。多くの代替物、修正および変形例が当業者にとって明らかであることは明白である。したがって、上に記載の本発明の実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。
【図面の簡単な説明】
【００９２】
【図１】第１の実施形態に係るシステム構成、及び、サーバ計算機の機能構成を示すブロック図。
【図２】第１の実施形態に係るサービス提供部動作履歴管理テーブルの構成を説明するための図。
【図３】第１の実施形態に係るサービス提供部特性テーブルの構成を説明するための図。
【図４】第１の実施形態に係るサービス提供部状態テーブルの構成を説明するための図。
【図５】第１の実施形態に係るフェイルオーバ指示ルールテーブルの構成を説明するための図。
【図６】第１の実施形態に係るサービス提供部状況監視部の処理の流れを示すフロー図。
【図７】第１の実施形態に係るサーバ計算機のハードウェア構成を示すブロック図。
【図８】第１の実施形態の変形例に係るサービス提供部状態テーブルの構成を説明するための図。
【図９】第１の実施形態の変形例に係るフェイルオーバ指示ルールテーブルの構成を説明するための図。
【図１０】第１の実施形態の変形例に係るサービス提供部状況監視部の処理の流れを示すフロー図。
【符号の説明】
【００９３】
１０１・・・クラスタシステム、１０２・・・サーバ計算機、１０４・・・クライアント計算機、１０５・・・クライアント計算機、１０６・・・クライアント計算機、１０７・・・ＬＡＮ、１０８・・・ＬＡＮ、１１１・・・クラスタ処理部、１１２・・・サービス提供部、１１３・・・サービス提供部動作履歴テーブル、１２２・・・サービス提供部特性テーブル、１２３・・・サービス提供部状態テーブル、１２４・・・フェイルオーバ指示ルールテーブル、１５０・・・制御部、１５２・・・記憶部、
２０１・・・日付、２０２・・・時刻、２０３・・・ホスト名、２０４・・・サービス提供部名、２０５・・・内容、２１０〜２４０・・・動作履歴、
３０１・・・サービス提供部名、３０３・・・平均処理時間、３０４・・・限界処理時間、３１０〜３２０・・・特性情報、
４０１・・・サービス提供部名、４０３・・・生死状態、４０４・・・処理経過時間、４１０〜４２０・・・状態情報、
５０１・・・生死状態、５０２・・・処理経過時間、５０３・・・ルール、５０４〜５０５・・・サービス提供部毎の生死状態、５０６〜５０７・・・サービス提供部毎の処理経過時間、５０８・・・条件、５０９・・・実行内容、５１１〜５４１・・・指示ルール情報、
１１・・・ＣＰＵ、１２・・・主記憶装置、１３・・・補助記憶装置、１４・・・入力装置、１５・・・出力装置、１６・・・読み取り装置、１７・・・通信装置。
【図１】
2008305353.tif 000003
【図２】
2008305353.tif 000004
【図３】
2008305353.tif 000005
【図４】
2008305353.tif 000006
【図５】
2008305353.tif 000007
【図６】
2008305353.tif 000008
【図７】
2008305353.tif 000009
【図８】
2008305353.tif 000010
【図９】
2008305353.tif 000011
【図１０】
2008305353.tif 000012