(57)【要約】【課題】  正常なノードによるサービスの継続を可能にする。【解決手段】  クラスタシステム１を構成するサーバ（ノード）１０ａとサーバ（ノード）１０ｂの間の通信が不通になると、それぞれのノードでは、ノード制御部１５で、割当て時間とその優先度に関する定義情報に基づき、次の割当て時間の開始時刻を算出する（ステップＳ１）。そして、算出された開始時刻まで、所定のサービス処理の起動を遅延させる（ステップＳ２）。そして、割当て時間の開始時刻になると、サービス処理を起動し、割当て時間内にサービスが実行できれば、サービス処理を継続し、サービスが実行できなければ、動作を停止する（ステップＳ３）。【選択図】  図１
2006048477.tif 000002
【特許請求の範囲】
【請求項１】
クラスタシステムを構成する複数のノードのうち所定のサービスを提供する前記ノードを調停するためのノード制御プログラムにおいて、
コンピュータに、
前記ノード間の情報交換に用いられる通信路経由の通信の不通が検出されると、前記サービスを実行可能な割当て時間と前記割当て時間を取得する優先順位が予め定義された定義情報に基づき、計時された現在時刻から最も近い次の割当て時間の開始時刻を算出し、
前記開始時刻まで前記サービスの起動を遅延し、
前記開始時刻に到達すると、前記サービスを起動させ、前記割当て時間内に前記サービスが実行できれば動作を継続し、前記割当て時間内に前記サービスが実行できない場合は、動作を停止する、
手順を実行させることを特徴とするノード制御プログラム。
【請求項２】
前記次の割当て時間の開始時刻を算出する際に、
前記割当て時間が所定の基準時刻から前記優先順位に従って前記クラスタシステムを構成する各ノードに順に割当てられたとして前記ノードに割当てられる前記割当て時間の開始時刻を算出することを特徴とする請求項１記載のノード制御プログラム。
【請求項３】
前記次の割当て時間の開始時刻を算出する際に、
前記割当て時間の終了時刻と開始時刻との間に前記クラスタシステムの各ノードが計時する時間のずれを調整する調整時間を加えることを特徴とする請求項１記載のノード制御プログラム。
【請求項４】
前記クラスタシステムを含むグループ全体を管理する管理装置から時間情報を取得して時刻調整を行い、
前記管理装置から前記時間情報が取得できない場合には、前記定義情報の前記優先順位を下げることを特徴とする請求項１記載のノード制御プログラム。
【請求項５】
ノードとしてクラスタシステムを構成し、所定のサービスを提供する前記ノードを調停するサーバにおいて、
前記サービスを実行可能な割当て時間と、前記割当て時間を取得する優先順位が定義された定義情報を格納する定義情報記憶手段と、
現在時刻を計時する計時手段と、
前記ノード間の情報交換に用いられる通信路経由の通信の不通が検出されると、前記定義情報記憶手段に格納された前記定義情報に基づいて、前記計時手段より取得した前記現在時刻から最も近い次の割当て時間の開始時刻を算出する割当て時間算出手段と、
前記開始時刻まで前記サービスの起動を遅延させる遅延手段と、
前記開始時刻に到達すると、前記サービスを起動し、前記割当て時間内に前記サービスが実行できれば動作を継続させる処理手段と、
を具備することを特徴とするサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクラスタシステムのノード制御プログラムおよびサーバに関し、特に独立して動作する複数のノードを構成要素とするクラスタシステムにおいて、所定のサービスを提供するノードを調停するためのノード制御プログラムおよびノードを構成するサーバに関する。
【背景技術】
【０００２】
従来、基幹業務などの重要なアプリケーションを実行するサーバの高信頼性を実現するために用いられている技法の１つにクラスタがある。クラスタとは、独立して動作する複数のコンピュータ（サーバ）が組み合わされて、全体として１つのシステムを構成する手法である。クラスタシステムの構成要素であるサーバは、一般にノードと呼ばれる。
【０００３】
図１２は、一般的なクラスタシステムの構成図である。図の例では、クラスタシステム９００は、ノードＡ９１０と、ノードＢ９２０から構成され、サービスを受けるクライアント９５１、９５２、９５３からは、１つのシステムとして認識される。なお、ノードの数は任意である。ノードＡ９１０とノードＢ９２０との間は、クライアント９５１、９５２、９５３とも接続されるパブリックＬＡＮ９３０と、クラスタシステム９００内のノードを接続するプライベートＬＡＮ９４０によって接続される。
【０００４】
クラスタシステムのノード間では、２重化されているパブリックＬＡＮもしくはプライベートＬＡＮのどちらかにより、どのノードがサービスを提供するかなどの調停を行っている。そして、クラスタシステム内のいずれかのノードが障害の発生や保守のために利用できなくなると、別のノードが直ちにサービスの提供を開始するフェールオーバー処理を行っている（たとえば、非特許文献１参照）。フェールオーバー処理によって、全体としての処理は中断されることがなく、サービスが提供され、システムの高信頼性を実現している。クラスタシステムが継続して稼動するためには、ＬＡＮ経路の情報交換が必須であり、単一箇所での故障による影響を防ぐため、各ノード間のＬＡＮ経路は２重化されている。
【０００５】
このようなクラスタシステムでノード間の相互通信ができなくなった場合には、事前に決めた優先度に従って高優先のノードを強制的に動作させたり、ＬＡＮ以外の経路を利用して調停を行って、サービスの継続を図っている（たとえば、非特許文献２参照）。
【非特許文献１】Ｍｉｃｒｏｓｏｆｔ、“クラスタサービスの新機能”、［ｏｎｌｉｎｅ］、平成１４年９月２６日、「平成１６年５月２６日検索」、インターネット＜URL:http://www.microsoft.com/japan/windowsserver2003/evaluation/overview/technologies/clustering.mspx＞
【非特許文献２】Ｍｉｃｒｏｓｏｆｔ、“クラスタサービスが共有バス上のディスクの所有権を獲得するしくみ”、［ｏｎｌｉｎｅ］、平成１４年１１月１９日、「平成１６年５月２６日検索」、インターネット＜URL:http://www.support.microsoft.com/default.aspx?scid=kb;ja;309186&sd=tech＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、従来の技法では、ノード間の相互通信ができない状態でサービスを継続すると判断されたノードが正常でないと、サービスの継続が困難になってしまうという問題点がある。
【０００７】
従来のクラスタシステムは、多重化された通信経路の双方が故障することは稀であるという前提にたっている。しかしながら、どのように多重化していてもすべての経路で通信ができなくなる状態が生じ得る。以下、このように相互通信ができなくなる状態をスプリットブレイン（split brain）と呼ぶ。
【０００８】
スプリットブレインが発生した場合、従来の事前に決めた優先度で起動するノードを決める技法では、高優先度のノードが正常でない場合にはサービスを継続できないという問題点がある。
【０００９】
また、ＬＡＮ以外の経路、たとえば、ノード間で共有されるディスク装置と接続するＳＣＳＩ（Small Computer System Interface）などを使ってどのノードがサービスを継続するか調停を行う技法では、ＳＣＳＩを介した調停により１のノードが選ばれ、サービスを継続させる。このとき、調停によってサービスを継続しないと判断されたノードは、処理を停止してしまう。もし、サービスを継続したノードに何らかの故障、たとえば、サービスを起動させると検出されるＬＡＮ異常などがあったとしても、調停が行われてサービス継続が決定されると、他のノードが起動されることはない。このため、故障のないノードが停止されて故障のあるノードが生き残り、結局サービスが継続されないケースが発生する可能性がある。
【００１０】
本発明はこのような点に鑑みてなされたものであり、ノード間の通信が不通となった場合であっても、正常なノードによるサービスの継続を可能にし、クラスタシステムの信頼性を向上させることが可能なクラスタシステムのノード制御プログラムおよびサーバを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では上記課題を解決するために、図１に示すようなクラスタシステムを構成するサーバ（ノード）の機能を実現するためのノード制御プログラムが提供される。本発明に係るクラスタシステムのノード制御プログラムは、ノード間の通信が不通となった場合に、所定のサービスが継続されるように各ノードの動作を制御するためのものである。このノード制御プログラムは、コンピュータに、以下の処理を実行させることができる。
【００１２】
コンピュータは、通信監視手段１１によって所定のサービスを実行するノードを調停するための情報交換を行う通信路経由の通信不通が検出されると、当該サーバ（ノード）１０ａが所定のサービスを実行可能な割当て時間と割当て時間を取得する優先順位が予め定義された定義情報が格納された定義情報記憶手段１６から定義情報を読み出し、計時手段１２の計時する現在時刻を取得する。そして、定義情報に基づき、計時された現在時刻から最も近い次の割当て時間の開始時刻を算出する（ステップＳ１）。次に、算出された割当て時間の開始時刻まで、サービス処理の起動を遅延する（ステップＳ２）。そして、割当て時間の開始時刻に到達すると、サービスを起動させ、割当て時間内にサービスが実行できれば動作を継続し、割当て時間内にサービスが実行できない場合は、動作を停止する（ステップＳ３）。
【００１３】
このようなクラスタシステムのノード制御プログラムをコンピュータに実行させることで、ノード間で行われている所定のサービスを実行するノードを調停するための情報交換に用いる通信路を経由した通信が不通になると、それぞれのノードでは、割当て時間と割当て時間の優先度が定義された定義情報に基づき、次の割当て時間の開始時刻が算出され、開始時刻に到達するまでサービス処理の起動は遅延される。それぞれのノードに付与された優先順位によって、割当て時間が重なることはない。そして、割当て時間の開始時刻になると、サービス処理が起動される。各ノードは、それぞれの割当て時間にサービス処理が実行できるかどうかを試みる。そして、割当て時間内にサービスが実行できれば、サービス処理を継続する。また、サービスが実行できなければ、動作を停止し、他のノードがサービスを実行するのを待つ。
【００１４】
また、本発明では上記課題を解決するために、ノードとしてクラスタシステムを構成し、所定のサービスを提供する前記ノードを調停するサーバにおいて、前記サービスを実行可能な割当て時間と、前記割当て時間を取得する優先順位が定義された定義情報を格納する定義情報記憶手段と、現在時刻を計時する計時手段と、前記ノード間の情報交換に用いられる通信路経由の通信の不通が検出されると、前記定義情報記憶手段に格納された前記定義情報に基づいて、前記計時手段より取得した前記現在時刻から最も近い次の割当て時間の開始時刻を算出する割当て時間算出手段と、前記開始時刻まで前記サービスの起動を遅延させる遅延手段と、前記開始時刻に到達すると、前記サービスを起動し、前記割当て時間内に前記サービスが実行できれば動作を継続させる処理手段と、を具備することを特徴とするサーバ、が提供される。
【００１５】
このような構成のサーバでは、定義情報記憶手段に割当て時間とサーバごとに設定される優先順位の定義情報が格納されている。割当て時間算出手段は、所定のサービスを提供するノードを調停するための情報交換を行う通信路経由の通信が不通となったことを検出すると、定義情報記憶手段から定義情報を読み出し、現在時刻から最も近い次の割当て時間の開始時刻を算出する。遅延手段は、現在時刻から割当て時間の開始時間までサービスの起動を遅延させる。そして、割当て時間の開始時刻になると、処理手段は、サービス処理を起動する。このとき、割当て時間内にサービスが実行できれば、動作を継続し、サービスを継続させる。また、割当て時間内にサービスが実行できない場合、処理を停止させる。
【発明の効果】
【００１６】
本発明では、独立して動作を行うクラスタシステムのノード間の通信が不通となった場合、予めそれぞれのノードに設定された優先順位と割当て時間とに基づき、ノードが順々にサービスの起動を試みる。そして、サービスが実行できたノード（故障のないノード）にサービスを継続させる。このように、ノード間の通信が不通になった場合でも、各ノードがサービスの稼動を試行することで、故障のないノードがサービス処理を行えるようになり、結果として、サービスの継続性を高めることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、本発明の実施の形態に適用される発明の概念図である。
【００１８】
本発明に係るクラスタシステム１は、複数のノード、図の例では、サーバ（ノード）１０ａとサーバ（ノード）１０ｂとから構成され、それぞれのノードからアクセス可能な共有ディスク装置２０を備える。
【００１９】
サーバ（ノード）１０ａは、通信状態を監視する通信監視手段１１、時刻を計時する計時手段１２、パブリックＬＡＮ３による通信を制御する通信制御手段１３、プライベートＬＡＮ４による通信を制御する通信制御手段１４、ノードの動作を制御するノード制御部１５および定義情報記憶手段１６を具備する。
【００２０】
通信監視手段１１は、通信制御手段１３および通信制御手段１４による通信状態を監視し、双方の通信路においてサーバ（ノード）１０ａと他のノードとの間の通信状態を判定する。一般に、クラスタシステムでは、ＬＡＮを通じ、ノード間で情報交換を行っている。そこで、パブリックＬＡＮ３およびプライベートＬＡＮ４のいずれの経路でも他のノードとの通信が不通となったとき、ノード制御部１５はスプリットブレインの発生を検出する。
【００２１】
計時手段１２は、自装置内で時刻を計時するとともに、たとえばパブリックＬＡＮ３を介して接続する管理装置から時間情報を取得し、時計の時刻調整を行う。管理装置は、クラスタシステムを含むグループ全体を管理する装置で、管理の一つに、グループ全体の装置の計時する時刻を合わせる時刻調整管理がある。計時手段１２では、時刻調整のための時間情報を取得し、自装置の時計の時刻調整を行う。これにより、クラスタシステム内のノードの時刻がほぼ一致するようになる。なお、時間情報が取得できない場合は、そのまま計時を継続するとともに、定義情報の優先順位を下げる。たとえば、優先度の高い順に１から整数が振られている場合、最大の優先順位の次の値としたり、現在設定されている優先順位の値にノード数を加算する。
【００２２】
通信制御手段１３は、サーバ（ノード）１０ａと他のノードを含む他装置との間で、パブリックＬＡＮ３を介して行われる通信を制御する。
通信制御手段１４は、サーバ（ノード）１０ａと、クラスタシステムを構成する他のノードとの間で、プライベートＬＡＮ４を介して行われる通信を制御する。
【００２３】
ノード制御部１５は、通常状態では、パブリックＬＡＮ３の通信制御手段１３もしくはプライベートＬＡＮ４の通信制御手段１４経由で入力する他ノードの故障などの情報によって、所定のサービスを提供するノードの調停を行っている。そして、通信監視手段１１によってスプリットブレインを検出すると、割当て時間算出処理（ステップＳ１）、遅延処理（ステップＳ２）、サービス起動処理（ステップＳ３）を順次行って、パブリックＬＡＮ３およびプライベートＬＡＮ４のどちらも用いることなく、ノードの調停を行う。割当て時間算出処理（ステップＳ１）では、定義情報記憶手段１６に格納された定義情報を読み出し、割当て時間と自装置に設定された優先順位を取得し、計時手段１２から現在時刻を取得する。割当て時間は、ノードに割当てられたサービス起動処理を行うための時間で、共通の時間が設定される。優先順位は、割当て時間が与えられる順番を示したもので、順位が高いほど、割当て時間の開始時刻が早くなる。割当て時間算出処理では、所定の基準点（特定の日時、またはグリニッジ標準時の０時など）から割当て時間を各ノードに割当てたとして自装置に割当てられる、現在時刻から最も近い次の割当て時間の開始時刻を算出する。また、算出の際には、割当て時間の終了時刻と、次の割当時間の開始時刻との間に、各ノードの時間のずれを調整する調整時間を加える。次に、遅延処理(ステップＳ２)では、算出された次の割当て時間の開始時刻までサービス起動処理（ステップＳ３）の開始を遅延させる。そして、開始時刻に到達すると、サービス起動処理（ステップＳ３）が開始され、サービス処理が起動される。割当て時間内にサービス処理が正常に実行できた場合は、サービス処理を継続させる。また、割当て時間内にサービス処理が実行できなかった場合は、動作を停止する。
【００２４】
定義情報記憶手段１６は、ノードがサービス処理を実行できる割当て時間と、ノードごとに設定された割当て時間の優先順位を含む定義情報を格納する。
なお、サーバ（ノード）１０ｂの構成もサーバ（ノード）１０ａと同様である。
【００２５】
このような構成のクラスタシステムの動作について説明する。
通常状態では、通信制御手段１３もしくは通信制御手段１４を介してノード間の情報交換が行われ、所定のサービスを実行するノードの調停が行われている。計時手段１２は、管理装置から時刻情報を取得し、時刻調整を行っている。ところが、何らかの故障により、通信制御手段１３および通信制御手段１４経由の通信が不通になると、通信監視手段１１がこれを検出し、スプリットブレイン発生にいたる。
【００２６】
ノード制御部１５は、スプリットブレインを検出すると、定義情報記憶手段１６から定義情報を読み出し、計時手段１２より現在時刻を取得する。次に、定義情報に従って、次の割当て時間の開始時刻を算出し、開始時刻までサービス起動処理を遅延する。そして、開始時刻となったら、サービス起動処理を開始する。割当て時間内にサービス処理が実行できた場合は、そのままサービス処理を継続する。また、割当て時間内にサービス処理が実行できなかった場合は、動作を停止する。
【００２７】
以上のように、本発明によれば、クラスタシステムにおいて、所定のサービスを実行するノードを調停するための情報交換を行う通信が不通となった場合、それぞれのノードが予め設定されている定義情報に従って、サービス処理を起動するタイミング（割当て時間の開始時刻）を算出し、その割当て時間内にサービスを起動する処理を行う。これにより、スプリットブレインが発生した場合でも、それぞれのノードが割当てられた時間でサービス稼動を試行することができる。そして、試行の結果、最初に正常に動作できたノードがサービス処理を継続し、それ以外のノードは動作を停止したことにより、業務を継続させることができる。
【００２８】
［第１の実施の形態］
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。以下、本発明の実施の形態では、クラスタシステムの一例として、Ｍｉｃｒｏｓｏｆｔ製クラスタサービス(以下、ＭＳＣＳとする)を運用した場合について説明する。
【００２９】
図２は、第１の実施の形態のシステムの構成図である。
本発明にかかるクラスタシステムを含むネットワークの管理単位であるグループは、クラスタシステム１と、管理装置であるドメインコントローラ（Domain Controller；以下、ＤＣとする）２０１、２０２と、クライアント９５１、９５２、９５３、９５４がパブリックＬＡＮ３を介して接続する。
【００３０】
クラスタシステム１は、ノードＡとなるサーバ１００ａと、ノードＢとなるサーバ１００ｂがパブリックＬＡＮ３とプライベートＬＡＮ４を介して接続され、共有の共有ディスク装置２０に接続する。
【００３１】
サーバ（ノードＡ）１００ａ、サーバ（ノードＢ）１００ｂは、それぞれ、パブリックＬＡＮ３に接続するＬＡＮインタフェース１１０ａ、１１０ｂと、プライベートＬＡＮ４に接続するＬＡＮインタフェース１２０ａ、１２０ｂと、共有ディスク装置２０に接続するＳＣＳＩ（Small Computer System Interface）１３０ａ、１３０ｂを具備する。また、ＤＣ２０１、２０２は、それぞれ、パブリックＬＡＮ３に接続するＬＡＮインタフェース２１１、２１２を具備する。
【００３２】
ＤＣ２０１、２０２は、サーバ（ノードＡ）１００ａ、サーバ（ノードＢ）１００ｂを管理しており、パブリックＬＡＮ３経由で、時間情報の送信を行っている。また、サーバ(ノードＡ）１００ａ、サーバ(ノードＢ）１００ｂ間では、情報交換のため、パブリックＬＡＮ３もしくはプライベートＬＡＮ４経由で定期的な通信を行っている。この通信はハートビート（Haert Beat）と呼ばれる。そして、ハートビートによって、サーバ(ノードＡ）１００ａとサーバ(ノードＢ）１００ｂ間の調停が行われ、いずれかのノードがサービス(業務)を稼動させている。クライアント９５１、９５２、９５３、９５４は、クラスタシステム１を１つのシステムとして認識しており、いずれのノードで業務を稼動中であるかを知る必要はない。
【００３３】
以上の構成のクラスタシステムに適用されるサーバのハードウェア構成を説明する。図３は、第１の実施の形態のサーバのハードウェア構成例を示すブロック図である。
サーバ１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ：Hard Disk Drive）１０３、パブリックＬＡＮインタフェース１１０、プライベートＬＡＮインタフェース１２０およびＳＣＳＩ１３０が接続されている。
【００３４】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションのプログラムが格納される。パブリックＬＡＮインタフェース１１０は、パブリックＬＡＮに接続されており、パブリックＬＡＮを介して他ノード、ＤＣ、あるいはクライアントとの間でデータの送受信を行う。プライベートＬＡＮインタフェース１２０は、プライベートＬＡＮに接続されており、プライベートＬＡＮを介して他のノードとの間でデータの送受信を行う。ＳＣＳＩ１３０には、共有ディスク装置２０が接続されており、ＣＰＵ１０１からの命令に従って共有ディスク装置２０のアクセス権を獲得し、データの読み書きを行う。
【００３５】
以上のハードウェア構成により、第１の実施の形態の処理機能を実現することができる。
次に、第１の実施の形態のサーバの内部構成について説明する。図４は、第１の実施の形態のサーバの内部構成を示すブロック図である。サーバ１００は、パブリックＬＡＮインタフェース１１０、プライベートＬＡＮインタフェース１２０、ＳＣＳＩ１３０、異常検出マネージャー１４０、切替マネージャー１５０、定義情報記憶装置１６０、リソースマネージャー１７０およびアプリケーションマネージャー１８０を有する。
【００３６】
パブリックＬＡＮインタフェース１１０は、パブリックＬＡＮ３経由の通信を制御し、プライベートＬＡＮインタフェース１２０は、プライベートＬＡＮ４経由の通信を制御する。通常動作時、クラスタシステムのノード間では、ハートビート通信が行われている。ＳＣＳＩ１３０は、共有ディスク装置２０の制御権を獲得するための制御コマンドなどを発行する。また、ハートビート通信が失われ、スプリットブレインが発生した場合、ＳＣＳＩコマンドを用いてノード間の調停が行われる。
【００３７】
異常検出マネージャー１４０は、ネットワーク、ＨＤＤ、アプリケーション、ノードなどの動作状態を監視し、異常を検出する。
切替マネージャー１５０は、異常検出マネージャー１４０が異常を検出した場合など、必要に応じて、ノード動作の切替制御を行う。ノード調停１５１では、ハートビート通信が正常な場合は、ハートビートにより得られた情報に基づいて、ノードの調停を行う。ＳＣＳＩ調停１５２では、ハートビート通信が失われた場合、ＳＣＳＩコマンドを用いてクォーラムの獲得を試行して、ノードの調停を行う。クォーラムは、ＭＳＣＳにおいて、クラスタを構成する全ノードから接続される共有ディスク装置２０上にあり、クラスタ運用時には１つのノードだけからアクセスできる。そして、各ノード間でクラスタ構成情報の整合性を保つために使用されるとともに、スプリットブレイン発生時の調停手段を提供する。スプリットブレイン発生時には、クォーラムを所持できるノードが生き残る。自律調停１５３では、ハートビート通信が失われたとき、それぞれのノードが自律してサービスの起動を試行して、ノードの調停を行う。自律調停１５３では、割当て時間算出部１５３ａは、定義情報記憶装置１６０に格納された定義情報に基づき、自ノードに与えられる試行のための割当て時間の開始時刻を算出し、遅延部１５３ｂは、算出された開始時刻まで待機状態を継続させ、サービス起動部１５３ｃは、開始時刻でサービス起動を試行し、試行の結果に応じてノードの動作を制御する。
【００３８】
リソースマネージャー１７０は、サーバ１００が保有するリソースの管理を行う。アプリケーションマネージャー１８０は、サーバ１００のアプリケーション実行を管理する。
以上のような構成のサーバを有するクラスタシステムにおけるスプリットブレイン発生時の自律調停１５３によるノード制御動作について説明する。
【００３９】
自律調停１５３は、定義情報記憶装置１６０に格納された定義情報に基づいて行われる。図５は、第１の実施の形態の定義情報の一例を示した図である。
定義情報ファイル３００は、定義情報記憶装置１６０に格納される。定義情報ファイル３００には、時間情報３０１とノード情報３０２が設定されている。
【００４０】
時間情報３０１には、サービス処理を起動する割当て時間を示した業務起動完了タイムアウト値が定義されている。割当て時間、すなわち、開始時刻から業務起動完了タイムアウト値が経過するまでの時間内に業務（サービス）の起動を試行する。図の例では、３６０秒が設定されている。なお、実際の試行処理の終了時刻は、業務起動完了タイムアウト値で設定された値より前に設定する。たとえば、割当て時間の８０％から９０％を消費した時刻を終了時刻とし、その後を調整時間として残す。このように調整時間を設けることにより、各ノードが計時する時刻のずれを吸収することができる。調整時間の割合は、適宜調整されて設定される。
【００４１】
また、ノード情報３０２には、クラスタシステムを構成するノード名と、その優先度が定義されている。図の例では、優先度１にはノードＡが設定され、優先度２にはノードＢが設定されている。
【００４２】
割当て時間算出部１５３ａは、上記の説明の定義情報に基づいて、自ノードの割当て時間を算出する。図６は、第１の実施の形態の割当て時間の経過状態を示したイメージ図である。割当て時間算出部１５３ａでは、基準時刻、図の例では、グリニッジ標準時（Greenwich Mean Time；以下、ＧＭＴとする）４０１から、計時手段の計時した現在時刻４０２までの時間差を算出し、自ノードの優先順位および調停時間の設定値より、自ノードの割当て時間を算出する。なお、現在時刻４０２が自ノードの割当て時間にあたる場合、サービス起動処理を終了できない場合があるので、次の割当て時間が開始時刻として算出されるようにする。したがって、優先順位をＰ、割当て時間をＴｗ、基準時をＧＭＴとすると、自ノードの現在時刻に最も近い次の割当て時間の開始時刻Ｔｓは、
Ｔｓ＝ｉｎｔ［（現在時刻―ＧＭＴ＋Ｔｗ）／Ｔｗ］×Ｔｗ＋（Ｐ−１）×Ｔｗ
・・・（１）
で表すことができる。ここで、ｉｎｔ［］は、［］の値を整数化した値を示す。
【００４３】
そして、終了時刻Ｔｅは、調停時間の割合をＲとして、
Ｔｅ＝Ｔｓ＋Ｔｗ×（１−Ｒ）                                    ・・・（２）
によって算出することができる。
【００４４】
これにより、次の優先順位１のノードの割当て時間の開始時刻Ｔｓ１と終了時刻Ｔｅ１が算出される。同様にして、優先順位２のノードの割当て時間の開始時刻Ｔｓ２と終了時刻Ｔｅ２が算出される。優先順位１のノードの割当て時間の終了時刻Ｔｅ１と優先順位２のノードの割当て時間の開始時刻Ｔｓ２との間には、調整時間４０３が設けられる。
【００４５】
割当て時間が算出されると、遅延部１５３ｂは、割当て時間の開始時刻まで待機状態になる。なお、スプリットブレインが発生したとき、自ノードで業務継続稼動中（クォーラム所持）であれば、割当て時間に関係なく何もしない（処理を継続する）。そして、クォーラムを継続所持し、他ノードからのクォーラム獲得をガードする。また、クォーラムを所持しているが業務継続中でなければ、そのノードで業務稼動は不可のはずという判断により、クォーラムを手放して、他ノードでＭＳＣＳサービスの動作を可能とするため、即座にＭＳＣＳサービスを停止させる。
【００４６】
そして、割当て時間の開始時刻になったら、サービス起動部１５３ｃは、ＭＳＣＳサービスの起動を試みる。割当て時間の終了時刻になっても業務稼動まで行えなかった場合、自ノードを停止させる。このとき、必要に応じて、電源切断まで行う。
【００４７】
以上の処理により、スプリットブレイン発生時、どこかのノードで業務が正常稼動していた場合、そのノードで業務が稼動し続け、他のノードすべてが停止する。場合によっては、他ノードすべての電源が切断される。
【００４８】
また、スプリットブレイン発生時、業務は停止していたが、最低１台業務が正常稼動するノードがある場合、正常稼動するノードのうち、先に割当て時間を得たノードで業務が継続稼動し、他のノードは停止する。
【００４９】
さらに、スプリットブレイン発生時、すべてのノードで業務継続不可の場合、全ノードが停止する。
このように、第１の実施の形態では、各ノードが割当て時間にサービス起動を試行することによって、正常なノードがあれば、そのノードによって業務を継続させることができる。
【００５０】
次に、スプリットブレイン発生時の様々な状態における、２つのノード、ノードＡとノードＢのそれぞれの動作を説明する。
図７は、第１の実施の形態におけるスプリットブレイン発生時のノードの状態とその動作を示した図である。図の例では、割当て時間を３００秒、調整時間を６０秒としている。また、簡単のため、最初の割当て時間はノードＡ、次の割当て時間はノードＢに与えられるとする。
【００５１】
（１）スプリットブレイン発生時、ノードＡで業務稼動中であった場合
最初の割当て時間（〜２４０秒）では、ノードＡでは何も処理しないので、業務稼動中を継続する。このとき、ノードＢは、ＭＳＣＳサービスを停止している。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行するが、ノードＡが稼動中であるため失敗し、割当て時間終了（〜６００秒）で処理を停止させる。こうして、正常に業務稼動中であったノードＡが業務を継続する。
【００５２】
（２）スプリットブレイン発生時、ノードＢで業務稼動中であった場合
最初の割当て時間（〜２４０秒）において、ノードＡが稼動を試行するが、ノードＢが稼動中であるため失敗し、割当て時間終了（〜３００秒）で処理を停止させる。一方、ノードＢは、業務稼動中であるので、そのまま業務稼動を継続する。こうして、正常に業務稼動中であったノードＢが業務を継続する。
【００５３】
（３）スプリットブレイン発生時、ノードＡがクォーラムを所持しているが業務を停止しており、ノードＢが業務稼動可である場合
最初の割当て時間（〜２４０秒）では、ノードＡでは、一旦処理を停止させてクォーラムを手放した後、業務稼動中を試行するが失敗し、割当て時間終了（〜３００秒）で処理を停止する。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行し、成功するので、業務稼動を継続する。こうして、業務稼動可のノードＢが業務を継続する。
【００５４】
（４）スプリットブレイン発生時、ノードＢがクォーラムを所持しているが業務を停止しており、ノードＡが業務稼動可である場合
最初の割当て時間（〜２４０秒）では、ノードＢが処理を停止しクォーラムを手放す。ノードＡでは業務稼動中を試行して成功し、割当て時間終了（〜３００秒）で処理を継続する。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行するが、失敗して処理を停止する。こうして、業務稼動可のノードＡが業務を継続する。
【００５５】
（５）スプリットブレイン発生時、両ノードがサービスを停止し、ノードＡで業務稼動可である場合
最初の割当て時間（〜２４０秒）では、ノードＡが業務稼動中を試行して成功し、割当て時間終了（〜３００秒）で処理を継続する。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行するが、失敗して処理を停止する。こうして、業務稼動可のノードＡが業務を継続する。
【００５６】
（６）スプリットブレイン発生時、両ノードがサービスを停止し、ノードＢで業務稼動可である場合
最初の割当て時間（〜２４０秒）では、ノードＡでは業務稼動中を試行するが失敗し、割当て時間終了（〜３００秒）で処理を停止する。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行し、成功するので、業務稼動を継続する。こうして、業務稼動可のノードＢが業務を継続する。
【００５７】
（７）スプリットブレイン発生時、両ノードがサービスを停止し、両ノードとも業務稼動不可である場合
最初の割当て時間（〜２４０秒）では、ノードＡでは業務稼動中を試行するが失敗し、割当て時間終了（〜３００秒）で処理を停止する。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行するが、失敗して処理を停止する。この場合は、両ノードとも業務を継続することができない。
【００５８】
（８）スプリットブレイン発生時、ノードＡが動作を停止し、ノードＢはサービス停止中であるが業務稼動可である場合
ノードＡは動作停止であるので、最初の割当て時間（〜２４０秒）は何も起こらない。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行し、成功するので、業務稼動を継続する。こうして、業務稼動可のノードＢが業務を継続する。
【００５９】
（９）スプリットブレイン発生時、ノードＢが動作を停止し、ノードＡはサービス停止中であるが業務稼動可である場合
最初の割当て時間（〜２４０秒）では、ノードＡが業務稼動中を試行して成功し、割当て時間終了（〜３００秒）で処理を継続する。次の割当て時間（〜５４０秒）において、ノードＢは何もしない。こうして、業務稼動可のノードＡが業務を継続する。
【００６０】
（１０）スプリットブレイン発生時、両ノードがサービスを停止し、ノードＡが停止すればノードＢで業務稼動可である場合
最初の割当て時間（〜２４０秒）では、ノードＡでは業務稼動中を試行するが失敗し、割当て時間終了（〜３００秒）で処理を停止する。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行し、成功するので、業務稼動を継続する。こうして、業務稼動可のノードＢが業務を継続する。
【００６１】
（１１）スプリットブレイン発生時、両ノードがサービスを停止し、ノードＢが停止すればノードＡで業務稼動可である場合
最初の割当て時間（〜２４０秒）では、ノードＢが停止していないので、ノードＡでは業務稼動中を試行するが失敗し、割当て時間終了（〜３００秒）で処理を停止する。次の割当て時間（〜５４０秒）において、ノードＢが稼動を試行するが、失敗して処理を停止する。この場合、両ノードとも業務を継続することができないが、たとえば、ノードＡが試行をリトライすれば、ノードＡで業務を継続することができる。また、ノードＢの割当て時間が先であれば、ケース（１１）と同様に、後から割当て時間になるノードＡが業務を継続する。
【００６２】
以上、第１の実施の形態によれば、両ノードが業務稼動不可である場合を除き、正常なノードで業務を継続することができる。なお、上記では、２ノードの場合について説明したが、２ノード以上でも同様にノードの調停を行うことができる。
【００６３】
次に、第１の実施の形態のノード制御処理の手順について説明する。図８は、第１の実施の形態のノード制御処理の手順を示したフローチャートである。第１の実施の形態のノード制御では、スプリットブレイン発生時、まず、ＭＳＣＳサービスによるＳＣＳＩを用いたノード調停を行った後、通信を用いない自律調停を行う。
【００６４】
［ステップＳ１１］  通信監視処理でパブリックＬＡＮおよびプライベートＬＡＮを用いたハートビート通信を監視している。通信監視処理によって、パブリックＬＡＮによる通信不通が検出されたかどうかを判定し、検出された場合は、ステップＳ１２へ処理を進める。正常に通信が行われている場合は、処理を終了する。
【００６５】
［ステップＳ１２］  通信監視処理によって、プライベートＬＡＮによる通信不通が検出されたかどうかを判定する。通信不通の場合、処理をステップＳ１３へ進める。正常に通信が行われている場合は、処理を終了する。
【００６６】
［ステップＳ１３］  パブリックＬＡＮおよびプライベートＬＡＮともに通信が不通となったので、スプリットブレインの発生を検出する。
［ステップＳ１４］  スプリットブレインにより、まず、ＭＳＣＳクラスタサービスによるＳＣＳＩを用いたノードの調整を行う。
【００６７】
［ステップＳ１５］  クラスタによる調整の結果、自ノードがクォーラムを保持し、共有ディスクをロックしているかどうかを判定する。ロックしていない場合は、処理をステップＳ１８へ進める。
【００６８】
［ステップＳ１６］  クォーラムを保持し、共有ディスクをロックしている場合、業務を継続中であるかどうかを判定する。業務が継続中でなければ処理をステップＳ１８へ進める。
【００６９】
［ステップＳ１７］  自ノードがクォーラムを所持して共有ディスクをロックし、業務継続中である場合、業務稼動可の状態と判断し、動作を継続する。これにより、スプリットブレイン発生後、このノードが業務を継続する。
【００７０】
［ステップＳ１８］  自ノードがクォーラムを所持していないか、クォーラムを所持しているが業務を停止している場合、自律調停によるサービス起動処理を行う。
次に、サービス起動処理について説明する。図９は、第１の実施の形態のサービス起動処理の手順を示したフローチャートである。スプリットブレインの後、自ノードがクォーラムを所持していないか、所持していても業務継続中でない場合に処理が起動される。
【００７１】
［ステップＳ２１］  ノードを停止する。これにより、クォーラムを所持していた場合、クォーラムを手放して他のノードのＭＳＣＳサービスの動作を可能とする。
［ステップＳ２２］  定義情報記憶装置１６０に格納されている定義ファイルから定義情報を取得する。定義ファイルには、割当て時間を示す時間情報と、優先順位を示すノード情報が定義されている。
【００７２】
［ステップＳ２３］  計時手段からシステム時刻を取得する。計時手段の計時する時刻は、ＤＣからの時間情報によって、システムで同じ時刻となるように調整されている。
［ステップＳ２４］  基準時刻から現在時刻までの経過時間と、割当て時間と優先順位を用いて、式（１）によって割当て時間の開始時刻を算出する。そして、スリープ状態になり、算出された自ノードの割当て時間の開始時刻まで待機する。
【００７３】
［ステップＳ２５］  割当て時間の開始時刻でノードの起動を開始する。
［ステップＳ２６］  割当て時間内に業務起動処理が完了したかどうかを判定する。自ノードが正常で、他ノードが業務稼動中でなければ、業務起動処理は正常に完了する。自ノードに故障があるか、他ノードが業務の稼動中であれば、業務起動処理は完了しない。割当て時間内に業務起動が完了すれば、処理をステップＳ２７へ進め、業務が起動していなければ、処理をステップＳ２９へ進める。
【００７４】
［ステップＳ２７］  自ノードの業務起動処理が完了したので、動作を継続し、業務を継続させる。
［ステップＳ２８］  自ノードの業務起動処理が完了しなかったので、ノードを停止させる。
【００７５】
［ステップＳ２９］  自ノードの電源を切断し、システムへの影響を断つ。
以上の処理手順が実行されることにより、スプリットブレイン発生によりノード間の通信が不通となっても、正常なノードが業務起動処理を完了し、業務処理を継続して行うことが可能なる。
【００７６】
［第２の実施の形態］
ところで、クラスタシステムにおいては、起動時にもノード間の調停を行わなければならない。第１の実施の形態では、スプリットブレイン発生時に通信を行わずにノード間の調停を行ったが、第２の実施の形態では、クラスタシステムの起動時にノード間の通信を行わずに調停を行う。
【００７７】
なお、第２の実施の形態におけるクラスタシステムの構成は、図２に示した第１の実施の形態のシステム構成と同様であり、サーバ（ノード）のハードウェア構成は、図３に示した第１の実施の形態のハードウェア構成と同様である。また、サーバ（ノード）が有する処理機能の構成要素は、図４に示した第１の実施の形態の構成要素と同様である。そこで、図４に示した構成要素の符号を用いて、第２の実施の形態における機能を説明する。
【００７８】
第２の実施の形態では、定義情報記憶装置１６０には、システム起動時に通信を用いない自律起動処理を行うための定義情報が格納される。図１０は、第２の実施の形態の定義情報の一例を示した図である。
【００７９】
定義情報ファイル５００には、時間情報５０１とクラスタノード数５０２とノード情報５０３が設定されている。なお、図５に示した第１の実施の形態では、クラスタノード数はなかったが、たとえば、クラスタノード数が固定されている場合や、ノード情報からクラスタノード数が算出できる場合などには必要ない。定義情報ファイル５００の場合も、ノード情報５０３からクラスタノード数を算出することができる。
【００８０】
時間情報５０１には、システム起動時のクラスタサービスを起動する割当て時間を示したクラスタサービス起動完了タイムアウト値が定義されている。割当て時間、すなわち、開始時刻からクラスタサービス起動完了タイムアウト値が経過するまでの時間内にクラスタサービスの起動を試行する。図の例では、２０秒が設定されている。第１の実施の形態の業務起動完了タイムアウト値（図５の例では３６０秒）と比較して、小さい値が設定されているのは、業務の起動が正常にできるかどうかを試行する必要がないからである。なお、調整時間は、必要に応じて適宜設定される。
【００８１】
クラスタノード数５０２には、クラスタシステムを構成するノード数が定義される。図の例では、３が設定されている。
また、ノード情報５０３には、クラスタシステムを構成するノード名と、その優先度が定義されている。図の例では、優先度１にはノードＡ、優先度２にはノードＢおよび優先度３にはノードＣが設定されている。
【００８２】
第２の実施の形態におけるノード起動処理の全体的な流れは、図９に示した第１の実施の形態と同じである。ただし、時間内に業務起動が完了したかどうかの判断（図９のステップＳ２６）以降の処理は行わない。
【００８３】
図１１は、第２の実施の形態のサービス起動処理の手順を示したフローチャートである。電源投入などによってサーバが起動し、処理が開始される。
［ステップＳ３１］  定義情報記憶装置１６０に格納されている定義ファイルから定義情報を取得する。定義情報には、割当て時間を示す時間情報と、優先順位を示すノード情報が定義されている。
【００８４】
［ステップＳ３２］  計時手段からシステム時刻を取得する。計時手段の計時する時刻は、ＤＣからの時間情報によって、システムで同じ時刻となるように調整されている。
［ステップＳ３３］  基準時刻から現在時刻までの経過時間と、割当て時間と優先順位を用いて、式（１）によって割当て時間の開始時刻を算出する。そして、スリープ状態になり、算出された自ノードの割当て時間の開始時刻まで待機する。
【００８５】
［ステップＳ３４］  割当て時間の開始時刻で、ＭＳＣＳクラスタサービス処理を開始してノードを起動する。
以上の手順が実行されることにより、クラスタシステムの立ち上げ時に、定義情報に従って、各ノードのＭＳＣＳクラスタサービスの開始時刻がずれる。これによって、複数のノードが一度に立ち上がり、クラスタシステムが正常に立ち上がらない状態となることを防止することができる。従来、クラスタシステムの立ち上げ時には、各ノードに立ち上がりを遅延させるプログラムを組込んで、複数のノードが同時に起動されることを防止していた。本発明の第２の実施の形態によれば、定義情報に割当て時間と優先順位を定義しておくことにより、クラスタシステムの起動を円滑に行うことが可能となる。
【００８６】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、クラスタシステムを構成するサーバが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disk)などがある。
【００８７】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８８】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００８９】
（付記１）  クラスタシステムを構成する複数のノードのうち所定のサービスを提供する前記ノードを調停するためのノード制御プログラムにおいて、
コンピュータに、
前記ノード間で情報交換を行う通信路経由の通信の不通が検出されると、前記サービスを実行可能な割当て時間と前記割当て時間を取得する優先順位が予め定義された定義情報に基づき、計時された現在時刻から最も近い次の割当て時間の開始時刻を算出し、
前記開始時刻まで前記サービスの起動を遅延し、
前記開始時刻に到達すると、前記サービスを起動させ、前記割当て時間内に前記サービスが実行できれば動作を継続し、前記割当て時間内に前記サービスが実行できない場合は、動作を停止する、
手順を実行させることを特徴とするノード制御プログラム。
【００９０】
（付記２）  前記次の割当て時間の開始時刻を算出する際に、
前記割当て時間が所定の基準時刻から前記優先順位に従って前記クラスタシステムを構成する各ノードに順に割当てられたとして前記ノードに割当てられる前記割当て時間の開始時刻を算出することを特徴とする付記１記載のノード制御プログラム。
【００９１】
（付記３）  前記次の割当て時間の開始時刻を算出する際に、
前記割当て時間の終了時刻と開始時刻との間に前記クラスタシステムの各ノードが計時する時間のずれを調整する調整時間を加えることを特徴とする付記１記載のノード制御プログラム。
【００９２】
（付記４）  前記クラスタシステムを含むグループ全体を管理する管理装置から時間情報を取得して時刻調整を行い、
前記管理装置から前記時間情報が取得できない場合には、前記定義情報の前記優先順位を下げることを特徴とする付記１記載のノード制御プログラム。
【００９３】
（付記５）  前記ノード間の通信不通が検出された際に、前記サービスを正常に実行していた場合は、動作を継続し、前記次の割当て時間の開始時刻からの手順を実行しないことを特徴とする付記１記載のノード制御プログラム。
【００９４】
（付記６）  前記ノード間の情報交換を行う前記通信路以外の第２の通信経路を有していた場合、前記第２の通信経路を用いて調停を行った後、前記次の割当て時間の開始時刻からの手順を実行することを特徴とする付記１記載のノード制御プログラム。
【００９５】
（付記７）  前記サービスが実行できない場合に動作を停止する際に、前記コンピュータの電源を切断することを特徴とする付記１記載のノード制御プログラム。
（付記８）  ノードとしてクラスタシステムを構成し、所定のサービスを提供する前記ノードを調停するサーバにおいて、
前記サービスを実行可能な割当て時間と、前記割当て時間を取得する優先順位が定義された定義情報を格納する定義情報記憶手段と、
現在時刻を計時する計時手段と、
前記ノード間で情報交換を行う通信路経由の通信の不通が検出されると、前記定義情報記憶手段に格納された前記定義情報に基づいて、前記計時手段より取得した前記現在時刻から最も近い次の割当て時間の開始時刻を算出する割当て時間算出手段と、
前記開始時刻まで前記サービスの起動を遅延させる遅延手段と、
前記開始時刻に到達すると、前記サービスを起動し、前記割当て時間内に前記サービスが実行できれば動作を継続させる処理手段と、
を具備することを特徴とするサーバ。
【００９６】
（付記９）  複数のノードで構成されるクラスタシステムの前記ノードの動作を制御するノード制御方法において、
前記ノード間の通信不通が検出されると、サービスを実行可能な割当て時間と前記割当て時間を取得する優先順位が予め定義された定義情報に基づき、計時された現在時刻から最も近い次の割当て時間の開始時刻を割当て時間算出手段で算出し、
前記開始時刻まで前記サービスの起動を遅延手段で遅延し、
前記開始時刻に到達すると、処理手段で、前記サービスを起動させ、前記割当て時間内に前記サービスが実行できれば動作を継続し、前記割当て時間内に前記サービスが実行できない場合は、動作を停止する、
手順を行うことを特徴とするノード制御方法。
【００９７】
（付記１０）  クラスタシステムを構成する複数のノードを起動させるためのノード制御プログラムにおいて、
コンピュータに、
起動処理が開始されると、予め定義情報に定義されたサービスを実行可能な割当て時間と前記割当て時間を取得する優先順位に基づき、次の割当て時間の開始時刻を算出し、
前記次の割当て時間の開始時刻まで前記サービスを遅延し、
前記次の割当て時間の開始時刻で前記サービスを開始させる、
手順を実行させることを特徴とするノード制御プログラム。
【００９８】
（付記１１）  クラスタシステムを構成するサーバにおいて、
前記クラスタシステムを含む所定のサービスを実行可能な割当て時間と、前記割当て時間を取得する優先順位が定義された定義情報を格納する定義情報記憶手段と、
現在時刻を計時する計時手段と、
起動処理が開始されると、前記定義情報記憶手段に格納された前記割当て時間と前記優先順位に基づいて、前記計時手段より取得した前記現在時刻から最も近い次の割当て時間の開始時刻を算出する割当て時間算出手段と、
前記割当て時間算出手段により算出された前記割当て時間の開始時刻に到達すると、前記サービスを開始し、前記割当て時間内に前記サービスが実行できれば動作を継続させる処理手段と、
を具備することを特徴とするサーバ。
【図面の簡単な説明】
【００９９】
【図１】本発明の実施の形態に適用される発明の概念図である。
【図２】第１の実施の形態のシステムの構成図である。
【図３】第１の実施の形態のサーバのハードウェア構成例を示すブロック図である。
【図４】第１の実施の形態のサーバの内部構成を示すブロック図である。
【図５】第１の実施の形態の定義情報の一例を示した図である。
【図６】第１の実施の形態の割当て時間の経過状態を示したイメージ図である。
【図７】第１の実施の形態におけるスプリットブレイン発生時のノードの状態とその動作を示した図である。
【図８】第１の実施の形態のノード制御処理の手順を示したフローチャートである。
【図９】第１の実施の形態のサービス起動処理の手順を示したフローチャートである。
【図１０】第２の実施の形態の定義情報の一例を示した図である。
【図１１】第２の実施の形態のサービス起動処理の手順を示したフローチャートである。
【図１２】一般的なクラスタシステムの構成図である。
【符号の説明】
【０１００】
１  クラスタシステム
３  パブリックＬＡＮ
４  プライベートＬＡＮ
１０ａ、１０ｂ  サーバ（ノード）
１１  通信監視手段
１２  計時手段
１３  通信制御手段（パブリックＬＡＮ）
１４  通信制御手段（プライベートＬＡＮ）
１５  ノード制御部
１６  定義情報記憶手段
２０  共有ディスク装置
【図１】
2006048477.tif 000003
【図２】
2006048477.tif 000004
【図３】
2006048477.tif 000005
【図４】
2006048477.tif 000006
【図５】
2006048477.tif 000007
【図６】
2006048477.tif 000008
【図７】
2006048477.tif 000009
【図８】
2006048477.tif 000010
【図９】
2006048477.tif 000011
【図１０】
2006048477.tif 000012
【図１１】
2006048477.tif 000013
【図１２】
2006048477.tif 000014