(57)【要約】【課題】ノード数の多いクラスタ構成がノード間の通信の大幅な増加を招くことなく実現でき、且つノード数を柔軟に変更できるようにする。【解決手段】クラスタシステムを構成するサーバコンピュータ１０-1〜１０-4のうちの少なくとも一部の複数のコンピュータ、例えばコンピュータ１０-2，１０-3上では、それぞれクライアント端末２３から要求されたサービスを提供するためのサービス制御を行うワークサーバ１２-1，１２-2が独立して動作する。また、サーバコンピュータ１０-1〜１０-4のうちの少なくとも一部の複数のコンピュータ、例えば全てのコンピュータ１０-1〜１０-4上では、コアサーバ１１-1〜１１-4が動作する。コアサーバ１１-1〜１１-4は、互いに通信を行いながら同期してワークサーバを制御することにより、全体として１つのカーネル１１０として一貫性のあるクラスタ制御を行う。【選択図】      図１
2005063033.tif 000002
【特許請求の範囲】
【請求項１】
複数のコンピュータから構成されるクラスタシステムにおいて、
前記クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上でそれぞれ独立動作して、クライアント端末から要求されたサービスを提供するためのサービス制御を行うワークサーバと、
前記クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上でそれぞれ動作するコアサーバであって、他のコアサーバと互いに通信を行いながら同期して前記ワークサーバを制御することにより、他のコアサーバと一体となって１つのカーネルとして一貫性のあるクラスタ制御を行うコアサーバと
を具備することを特徴とするクラスタシステム。
【請求項２】
前記各コンピュータ上では、前記コアサーバ及びワークサーバのいずれか一方のみが動作することを特徴とする請求項１記載のクラスタシステム。
【請求項３】
前記ワークサーバは、
当該ワークサーバと接続されるコアサーバを切り替える切替手段と、
当該ワークサーバと接続されているコアサーバに対して当該ワークサーバから送信されたデータを格納するための第１のバッファと、
前記切替手段により当該ワークサーバと接続されるコアサーバが切り替えられた場合、前記第１のバッファに格納されているデータのうち、前記切替手段による切り替え前に当該ワークサーバと接続されていたコアサーバが確かに受信したと確認できないデータを、前記切替手段により当該ワークサーバと新たに接続されたコアサーバに再送する第１の再送手段とを備え、
前記コアサーバは、
前記ワークサーバ毎に設けられ、対応するワークサーバに対して当該コアサーバまたは他のコアサーバから送信されたデータを格納するための第２のバッファと、
当該コアサーバが新たにワークサーバと当該ワークサーバ内の前記切替手段により接続された場合、当該ワークサーバに対応する前記第２のバッファに格納されているデータのうち、前記切替手段による切り替え前に当該ワークサーバと接続されていたコアサーバから当該ワークサーバに送信されたものの、当該ワークサーバが確かに受信したと確認できないデータを当該ワークサーバに再送する第２の再送手段とを備えている
ことを特徴とする請求項１記載のクラスタシステム。
【請求項４】
前記ワークサーバは、
当該ワークサーバと接続されているコアサーバから送信されたデータを受信した場合に、受信応答を返す第１の送信手段と、
前記第１の再送手段による再送の対象となるデータのうち、最も古いデータが格納されている前記第１のバッファ内の位置を指し示す第１の再送ポインタ情報を保持する第１の再送ポインタ手段と、
当該ワークサーバと接続されているコアサーバに対して送信されたデータに対する受信応答が返された場合に、前記第１の再送ポインタ情報を更新する第１の再送ポインタ更新手段とを更に備え、
前記コアサーバは、
当該コアサーバと接続されているワークサーバから送信されたデータを受信した場合に、受信応答を返す第２の送信手段と、
前記第２の再送手段による再送の対象となるデータのうち、最も古いデータが格納されている前記第２のバッファ内の位置を指し示す第２の再送ポインタ情報を保持する第２の再送ポインタ手段と、
当該コアサーバと接続されているワークサーバに対して送信されたデータに対する受信応答が返された場合に、前記第２の再送ポインタ情報を更新する第２の再送ポインタ更新手段とを更に備えている
ことを特徴とする請求項３記載のクラスタシステム。
【請求項５】
前記ワークサーバは、当該ワークサーバにおけるサービスの状態を各サービス毎に保持する第１の状態保持手段を更に備え、
前記コアサーバは、
前記クラスタシステム内の全てのワークサーバにおけるサービスの状態を各サービス毎に保持する第２の状態保持手段と、
当該コアサーバが他のコアサーバと一体となって１つのカーネルとして再起動される際に、当該コアサーバと接続されている前記ワークサーバの第１の状態保持手段に保持されている情報を収集して前記第２の状態保持手段の内容を復元する手段とを更に備えている
ことを特徴とする請求項１記載のクラスタシステム。
【請求項６】
複数のコンピュータから構成されるクラスタシステムであって、当該クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上では、クライアント端末から要求されたサービスを提供するためのサービス制御を行うワークサーバがそれぞれ独立に動作し、前記クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上ではそれぞれクラスタ制御を行うコアサーバが他のコアサーバと互いに通信を行いながら同期して動作して前記ワークサーバを制御することにより、他のコアサーバと一体となって１つのカーネルとして一貫性のあるクラスタ制御を行うクラスタシステムにおいて、前記ワークサーバを実現するためのサーバプログラムであって、
前記ワークサーバが動作するコンピュータに、
当該ワークサーバと接続されているコアサーバに対して当該ワークサーバからデータを送信した場合に、当該送信データをバッファに格納するステップと、
当該ワークサーバと接続されるコアサーバを切り替えるステップと、
当該ワークサーバと接続されるコアサーバが切り替えられた場合、前記バッファに格納されているデータのうち、切り替え前に当該ワークサーバと接続されていたコアサーバが確かに受信したと確認できないデータを、新たに接続されたコアサーバに再送するステップと
を実行させるためのサーバプログラム。
【請求項７】
前記ワークサーバが動作するコンピュータに、
当該ワークサーバと接続されているコアサーバから送信されたデータを受信した場合に、受信応答を返すステップと、
当該ワークサーバと接続されているコアサーバに対して送信されたデータに対する受信応答が返された場合に、再送の対象となるデータのうち、最も古いデータが格納されている前記バッファ内の位置を指し示す再送ポインタを更新するステップと
を更に実行させるための請求項６記載のサーバプログラム。
【請求項８】
複数のコンピュータから構成されるクラスタシステムであって、当該クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上では、クライアント端末から要求されたサービスを提供するためのサービス制御を行うワークサーバがそれぞれ独立に動作し、前記クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上ではそれぞれクラスタ制御を行うコアサーバが他のコアサーバと互いに通信を行いながら同期して動作して前記ワークサーバを制御することにより、他のコアサーバと一体となって１つのカーネルとして一貫性のあるクラスタ制御を行うクラスタシステムにおいて、前記コアサーバを実現するためのサーバプログラムであって、
前記コアサーバが動作するコンピュータに、
当該コアサーバと接続されているワークサーバに対して当該コアサーバからデータを送信した場合に、当該送信データを当該ワークサーバに対応して設けられたバッファに格納するステップと、
当該コアサーバが新たにワークサーバと接続された場合、当該ワークサーバに対応する前記バッファに格納されているデータのうち、それ以前に当該ワークサーバと接続されていたコアサーバから当該ワークサーバに送信されたものの、当該ワークサーバが確かに受信したと確認できないデータを当該ワークサーバに再送するステップと
を実行させるためのサーバプログラム。
【請求項９】
前記コアサーバが動作するコンピュータに、
当該コアサーバと接続されているワークサーバから送信されたデータを受信した場合に、受信応答を返すステップと、
当該コアサーバと接続されているワークサーバに対して送信されたデータに対する受信応答が返された場合に、再送の対象となるデータのうち、最も古いデータが格納されている前記バッファ内の位置を指し示す再送ポインタを更新するステップと
を更に実行させるための請求項８記載のサーバプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコンピュータから構成されるクラスタシステムに係り、特にクラスタ制御を実行するコアサーバと、当該コアサーバと独立して設けられ、複数のコアサーバが同期して動作することで実現される仮想マシンとしてのカーネルからの制御によって動作するワークサーバとを実現するクラスタシステム及びサーバプログラムに関する。
【背景技術】
【０００２】
近年、コンピュータ上でアプリケーションプログラムを実行することにより、ユーザ（クライアント端末）にサービスを提供するシステムが運用されている。この種のシステムでは、継続したサービスの提供が必須になっている。これに伴い、サービス（業務）を実行しているコンピュータ（サーバコンピュータ）にも高い可用性（サーバ稼働率、業務稼働率）が求められる。そこで、複数のコンピュータをクラスタ構成として、一部のコンピュータで障害が発生しても、別のコンピュータでサービスを引き継いで、システム全体が停止するのを防止する、いわゆるクラスタシステムが開発されている（例えば、非特許文献１参照）。
【０００３】
クラスタシステムを構成するには、各コンピュータ上にクラスタマネージャが必要となる。クラスタマネージャは、クラスタの制御と、アプリケーションを起動・停止する制御（サービス制御）とを実行する。クラスタシステムでは、複数のコンピュータ（ノード）で分散してクラスタマネージャによるクラスタ制御が行われる。ここでは、クラスタ全体としての視点でクラスタ制御が行われること、つまり各コンピュータで分散して行われるクラスタ制御が、全体として一貫性のある制御となっていることが必要となる。そこでクラスタシステムでは、各コンピュータでのクラスタ制御が、互いに通信を行いながら同期して（連携して）行われる。つまり、クラスタ制御が各コンピュータで多重化して行われる。これにより高可用性（高業務稼働率）が実現される。
【０００４】
ところがクラスタシステムにおいてスプリットブレインと呼ばれる状況が発生すると、多重化された処理に一貫性がなくなり、システム全体に致命的な影響を及ぼす。このスプリットブレインは、コンピュータの障害検出が誤って行われたときに発生する。例えばクラスタシステム内の２つのコンピュータ群の間で互いに通信できない状態となった場合、それぞれのコンピュータ群は、互いに障害検出し、独立して動作を継続する。これにより、アプリケーションやデータが破壊される虞がある。そこで、スプリットブレインの発生を防止するために、ｎ台のコンピュータで処理を多重化し、ｆ台（ｆは３ｆ＜ｎを満足する最大の整数）のコンピュータが故障しても、残りのｎ−ｆ台のコンピュータが多重化処理を行うことにより、多数決により正しい処理結果を決定できるようにした技術が提案されている（例えば、特許文献１参照）。ここで、ｆ＜ｎ／３であることから、ｎ−ｆ＞ｎ−ｎ／３、即ちｎ−ｆ＞２ｎ／３である。このため、特許文献１に記載された技術は、少なくともｎ台のコンピュータのうちのｎ−ｆ台が正常であること、つまりｎ台のコンピュータのうちの２／３を超えるコンピュータが正常であることが要求されることから、２／３定足数アルゴリズムと呼ばれる。
【特許文献１】特開２００３−６７２１５（段落００５６乃至００６４、図４）
【非特許文献１】金子哲夫、森良哉、「クラスタソフトウェア」、東芝レビュー、Vol.54 No.12(1999)、p.18-21
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記したように従来のクラスタシステムでは、各コンピュータ上で動作するクラスタマネージャが互いに通信を行ってクラスタ制御を行うことで、システム全体として一貫性のある制御を実現している。また各コンピュータ上で動作するクラスタマネージャにより、ユーザにサービスを提供するためのアプリケーションを起動・停止する制御（サービス制御）が行われる。
【０００６】
このように従来のクラスタシステムでは、クラスタマネージャは、クラスタを構成する全てのノード（コンピュータ）に存在する。このため、各ノード上のクラスタマネージャが一貫性のある制御を行おうとすると、全てのノード間で当該制御のための通信が発生する。その結果、ノード数が多くなると、一貫性ある制御のためのノード間の通信が増加して、通信に起因するオーバヘッド（ネットワーク負荷）が大きくなる。よって従来は、少ないノード数（せいぜい１６ノード程度）のクラスタシステムしか実用的ではなかった。また従来のクラスタシステムでは、各ノード上のクラスタマネージャが、クラスタ制御と、アプリケーションを起動・停止する制御（サービス制御）とを実行している。このため従来のクラスタシステムでは、クラスタ制御の一貫性を保ちながら動的にノード数を増やすための仕組みが複雑であり、ノードの動的な追加に対応しきれていないという問題もある。
【０００７】
本発明は上記事情を考慮してなされたものでその目的は、ノード数の多いクラスタ構成がノード間の通信の大幅な増加を招くことなく実現できるクラスタシステム及びサーバプログラムを提供することにある。  
本発明の他の目的は、ノード数を柔軟に変更可能なクラスタシステム及びサーバプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の１つの観点によれば、複数のコンピュータから構成されるクラスタシステムが提供される。このクラスタシステムは、クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上でそれぞれ独立動作して、クライアント端末から要求されたサービスを提供するためのサービス制御を行うワークサーバと、上記
クラスタシステムを構成する複数のコンピュータのうちの少なくとも一部の複数のコンピュータ上でそれぞれ動作するコアサーバであって、他のコアサーバと互いに通信を行いながら同期して上記ワークサーバを制御することにより、他のコアサーバと一体となって１つのカーネルとして一貫性のあるクラスタ制御を行うコアサーバとを備えることを特徴とする。
【０００９】
このような構成においては、サービス制御とクラスタ制御とがそれぞれ独立のワークサーバとコアサーバによって行われることから、ワークサーバが配置されるサーバコンピュータとコアサーバが配置されるサーバコンピュータ（ワークサーバが動作するサーバコンピュータと同じコンピュータであっても構わない）とを柔軟に決定できる。このため、ノード数の多いクラスタ構成がノード間の通信の大幅な増加を招くことなく実現できると共にノード数を柔軟に変更することができる。
【００１０】
ここで、上記ワークサーバには、当該ワークサーバと接続されるコアサーバを切り替える切替手段と、当該ワークサーバと接続されているコアサーバに対して当該ワークサーバから送信されたデータを格納するための第１のバッファと、上記切替手段により当該ワークサーバと接続されるコアサーバが切り替えられた場合、上記第１のバッファに格納されているデータのうち、上記切替手段による切り替え前に当該ワークサーバと接続されていたコアサーバが確かに受信したと確認できないデータを、上記切替手段により当該ワークサーバと新たに接続されたコアサーバに再送する第１の再送手段とを持たせるとよい。一方、上記コアサーバには、上記ワークサーバ毎に設けられ、対応するワークサーバに対して当該コアサーバまたは他のコアサーバから送信されたデータを格納するための第２のバッファと、当該コアサーバが新たにワークサーバと当該ワークサーバ内の上記切替手段により接続された場合、当該ワークサーバに対応する上記第２のバッファに格納されているデータのうち、上記切替手段による切り替え前に当該ワークサーバと接続されていたコアサーバから当該ワークサーバに送信されたものの、当該ワークサーバが確かに受信したと確認できないデータを当該ワークサーバに再送する第２の再送手段とを持たせるとよい。
【００１１】
このような構成においては、ワークサーバと接続されているコアサーバの障害が発生しても、他のコアサーバとの接続にスムーズに切り替えることができ、しかもデータを失うことが防止できるため、コアサーバの障害に対して耐障害性を持つことができる。
【００１２】
また、上記ワークサーバには、当該ワークサーバにおけるサービスの状態を各サービス毎に保持する第１の状態保持手段を持たせ、上記コアサーバには、上記クラスタシステム内の全てのワークサーバにおけるサービスの状態を各サービス毎に保持する第２の状態保持手段と、当該コアサーバが他のコアサーバと一体となって１つのカーネルとして再起動される際に、当該コアサーバと接続されているワークサーバの第１の状態保持手段に保持されている情報を収集して上記第２の状態保持手段の内容を復元する手段を持たせるならば、カーネルの再起動後も、クラスタの状態を維持して制御を続けることができる。
【発明の効果】
【００１３】
本発明によれば、サービス制御を行うワークサーバとクラスタ制御を行うコアサーバとが互いに分離独立していることから、クラスタシステム上でワークサーバとコアサーバを柔軟に配置できる。このため本発明によれば、、ノード数の多いクラスタ構成がノード間の通信の大幅な増加を招くことなく実現でき、しかもノード数を柔軟に変更できる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施の形態につき図面を参照して説明する。  
［第１の実施形態］
図１は本発明の第１の実施形態に係るクラスタシステムの構成を示すブロック図である。図１のクラスタシステムは、４台のサーバコンピュータ１０-1（＃１），１０-2（＃２），１０-3（＃３），１０-4（＃４）から構成される。サーバコンピュータ１０-1，１０-2，１０-3，１０-4は２つのネットワーク２１，２２により相互接続されている。
【００１５】
サーバコンピュータ１０-1，１０-2，１０-3，１０-4上では、クラスタ制御を行うコアサーバ１１-1（＃１），１１-2（＃２），１１-3（＃３），１１-4（＃４）が動作する。コアサーバ１１-1〜１１-4は、サーバコンピュータ１０-1〜１０-4が、対応するサーバプログラム（クラスタ制御のためのコアサーバプログラム）を実行することにより実現される。
【００１６】
また、サーバコンピュータ１０-1〜１０-4のうちのサーバコンピュータ１０-2，１０-3上では、サービス制御（つまりアプリケーションを起動・停止する制御）を行うワークサーバ１２-1（＃１），１２-2（＃２）が動作する。ワークサーバ１２-1，１２-2は、サーバコンピュータ１０-2，１２-3が、対応するサーバプログラム（サービス制御のためのワークサーバプログラム）を実行することにより実現される。
【００１７】
ネットワーク２２には、ワークサーバ１２-1，１２-2に対してサービスの実行を要求するクライアント端末２３が接続されている。ワークサーバ１２-1，１２-2とクライアント端末２３との間の通信は、ネットワーク２２を介して行われる。なお、図１では、作図の都合上、ネットワーク２２に１つのクライアント端末２３が接続されている例が示されている。しかし、ネットワーク２２には、複数のクライアント端末が接続されるのが一般的である。
【００１８】
サーバコンピュータ１０-1〜１０-4上の各コアサーバ１１-1〜１１-4は、従来のクラスタシステムにおける各コンピュータ上で動作するクラスタマネージャのクラスタ制御機能と同様のクラスタ制御機能を有し、他のコアサーバと一体となって（多重化して動作して）、クラスタシステムの制御を実行する。一体となったコアサーバ１１-1〜１１-4は、カーネル１１０と呼ぶ１つのバーチャルマシン（仮想的な実行環境）を形成する。カーネル１１０は、個々のサーバコンピュータ１０-1〜１０-4上で動作するコアサーバ１１-1〜１１-4が連携して形成される。このためカーネル１１０は、サーバコンピュータ１０-1〜１０-4にまたがって存在していると考えることができる。つまり、個々のコアサーバ１１-1〜１１-4がカーネルなのではなく、コアサーバ１１-1〜１１-4が一体となってカーネル１１０が構築され、よってクラスタシステムにはひとつだけカーネルが存在する。
【００１９】
コアサーバ１１-1〜１１-4が一体となって同期（連携）して動作する（つまり多重化して動作する）のに必要な、コアサーバ１１-1〜１１-4間の通信には、ネットワーク２１が用いられる。ここで、ネットワーク２１には、上記多重化動作の高速化のために、ワークサーバ１２-1，１２-2とクライアント端末２３との間の通信に用いられるネットワーク２２よりも高速のネットワークが用いられる。なお、高速化が要求されない場合には、コアサーバ１１-1〜１１-4間の通信にもネットワーク２２を用いても構わない。
【００２０】
サーバコンピュータ１０-2，１０-3上のワークサーバ１２-1，１２-2は、カーネル１１０からの制御に従って動作し、サービス（アプリケーション）の起動・停止を制御する。つまり、ワークサーバ１２-1，１２-2ではサービスが実行される。このサービスについて、ウェブサービスを例に説明する。まずウェブサービスを実行するには、当該サービスに対するクライアント端末２３からのリクエストに応答してコンテンツを配信する役割を持つウェブサーバが必要である。またクライアント端末からウェブサーバにリクエストを届けるためにはアドレス、例えばＩＰ（Internet Protocol）アドレスが必要である。提供されるコンテンツを保存するためのファイルシステムも必要である。つまりウェブサービスの提供には、ウェブサーバ、ＩＰアドレス、ファイルシステムなどの、物理的、もしくは論理的な実体が必要となる。これらの実体は、「リソース」と呼ばれる。つまり、ワークサーバ１２-1，１２-2では、それぞれ複数のリソース１２１-1，１２１-2を組み合わせて実行することにより、結果としてサービスが実行される。ワークサーバ１２-1，１２-2において、リソース１２１-1，１２１-2の起動・停止を実際に行う手段をエージェント１２０-2と呼ぶ。エージェント１２０-1，１２０-2は、カーネル１１０から制御の指示を受け取り、それに従ってリソース１２１-1，１２１-2を制御し、結果をカーネル１１０に返す。
【００２１】
このように、図１のクラスタシステムには２台のワークサーバ１２-1，１２-2が存在し、それぞれが独立して稼働する。このため、カーネル１１０が、ワークサーバ１２-1，１２-2をいかに制御し、同期をとるかという点が重要である。そこで本実施形態では、クラスタシステムの制御がカーネル１１０によって一元的に行われる構成を適用している。カーネル１１０は、コアサーバ１１-1〜１１-4で多重化実行されるバーチャルマシンである。このため、一部のコアサーバに障害が発生した場合でも、クラスタシステムの制御を継続することが可能である。
【００２２】
コアサーバ１１-1〜１１-4における多重化実行のアルゴリズムには、前記特許文献１に記載されているスプリットブレインを起こさない２／３定足数アルゴリズムが適用される。本実施形態のクラスタシステムは、ｎ＝４，ｆ＝１であり、２／３定足数アルゴリズムが適用可能な最も少ない数のコンピュータで構成される。つまり、本実施形態のクラスタシステムは２／３定足数アルゴリズムが適用可能な最小クラスタ構成をとる。これにより、ｆ（＝１）台のコアサーバの停止障害だけでなく、ビザンティン故障にも耐障害性を実現できる。このように、カーネル１１０は、超高信頼なバーチャルマシンとなっており、信頼性の高いクラスタシステムの制御を実現する。
【００２３】
さて本実施形態では、クラスタシステム内の全てのサーバコンピュータ、つまり４台のサーバコンピュータ１０-1〜１０-4上でコアサーバ１１-1〜１１-4が稼働させられて、カーネル１１０が実現される。これにより上記したように、２／３定足数アルゴリズムを適用するのに必要な最少のコンピュータ数（ｎ＝４）でクラスタシステムが構築される。また、この４台のサーバコンピュータ１０-1〜１０-4のうちの２台のサーバコンピュータ１０-2，１０-3上でワークサーバ１２-1，１２-2が稼働させられて、クラスタシステムのサービスが実行される。このため、サーバコンピュータ１０-2，１０-3には、それぞれそのサービスに必要なリソース１２１-1，１２１-2と、それに見合ったハードウェア／ソフトウェアが必要になるものの、サーバコンピュータ１０-1，１０-4ではコアサーバ１１-1，１１-2しか動作しないため、当該サーバコンピュータ１０-1，１０-4は比較的小さなコンピュータで十分である。
【００２４】
以上のことから、図１のクラスタシステムでは、サービス制御に関しては、２つのワークサーバ１２-1，１２-2間でのフェイルオーバによる可用性の向上が期待できる。一方、クラスタ制御に関しては、４つのコアサーバ１１-1〜１１-4による２／３定足数アルゴリズムによる可用性の向上が期待できる。
【００２５】
図２は、図１のクラスタシステム内のコアサーバ及びワークサーバの構成を、コアサーバ１１-1，１１-4及びワークサーバ１２-1について示すブロック図である。図２に示すように、コアサーバ１１-1，１１-4は、同期処理部１１１-1，１１１-4と、状態管理テーブル１１２-1，１１２-4と、送信部１１３-1，１１３-4と、受信部１１４-1，１１４-4と、バッファ１１５-1，１１５-4と、再送ポインタ（再送ポインタ保持部）１１６-1，１１６-4と、再送部１１７-1，１１７-4とを備えている。なお、図２では省略されているが、コアサーバ１１-2，１１-3も、上記コアサーバ１１-1，１１-4と同様の構成を備えている。また、図２では省略されているが、これらの構成はワークサーバ毎に用意される。また、少なくともバッファがワークサーバ毎に用意される構成であっても構わない。
【００２６】
同期処理部１１１-i（ｉ＝１〜４）は、コアサーバ１１-1〜１１-4間の一貫性を保つために、ネットワーク２１を介して通信する。状態管理テーブル１１２-iは、図１のクラスタシステム内の全てのワークサーバ、即ちワークサーバ１２-1（＃１），１２-2（＃２）における各サービスの状態を管理するのに用いられる。
【００２７】
送信部１１３-iは、図１のクラスタシステム内のワークサーバ１２-j（ｊ＝１または２）へのデータ送信、及び当該ワークサーバ１２-jから送信されたデータを受信したことを当該ワークサーバ１２-jへ通知するための受信応答を行う。受信応答は、受信データに付される当該データを識別するために当該データに割り当てられた識別情報、例えばシーケンス番号を通知することで行われる。送信部１１３-iは、データ送信時または受信応答時には、送信データまたは受信データのシーケンス番号を同期処理部１１１-iにより他のコアサーバに通知させる。
【００２８】
受信部１１４-iは、ワークサーバ１２-jから送信されたデータの受信、及び当該ワークサーバ１２-jへのデータ送信に対する当該ワークサーバ１２-jからの受信応答の受信を行う。受信部１１４-iは、ワークサーバ１２-jからのデータの受信時または受信応答の受信時に、受信データまたは受信応答で通知されたシーケンス番号を同期処理部１１１-iにより他のコアサーバに通知させる。
【００２９】
バッファ１１５-iは、送信部１１３-iからワークサーバ１２-jに送信されたデータをシーケンス番号と対応付けて格納するのに用いられる。バッファ１１５-iは、ワークサーバ１２-j毎に用意される。バッファ１１５-iは、再送ポインタ（ＲＰ）１１６-iと、図示せぬ書き込みポインタ（ＷＰ）とによって管理される。再送ポインタ１１６-iは、バッファ１１５-iに格納されている、ワークサーバ１２-jが確かに受信したと確認できないデータのうち、最も古いデータの位置を指す。書き込みポインタは、次にバッファ１１５-iに書き込むべき送信データの格納先を指す。再送部１１７-iは、ワークサーバ１２-jと接続されるコアサーバが他のコアサーバからコアサーバ１１-iに切り替えられた場合に、それまでワークサーバ１２-jと接続されていたコアサーバが送信したデータのうち、当該ワークサーバ１２-jで確かに受信したと確認できないデータを、再送ポインタ１１６-iに従って取り出して当該ワークサーバ１２-jに再送する。
【００３０】
一方、ワークサーバ１２-1（１２-j）内のエージェント１２０-1（１２０-j）は、切替部１２１と、状態テーブル１２２と、送信部１２３と、受信部１２４と、バッファ１２５と、再送ポインタ（再送ポインタ保持部）１２６と、再送部１２７とを備えている。なお、図２では省略されているが、ワークサーバ１２-2内のエージェント１２０-2も、上記ワークサーバ１２-1内のエージェント１２０-1と同様の構成を備えている。
【００３１】
切替部１２１は、ワークサーバ１２-1（内のエージェント１２０-1）をコアサーバ１１-1〜１１-4のいずれかと接続する。切替部１２１は、動作しているコアサーバを見つけ、当該コアサーバに接続する。接続しているコアサーバが停止または無応答になった場合、切替部１２１は別のコアサーバに接続し直す。状態テーブル１２２は、ワークサーバ１２-1における各サービスの状態を管理するのに用いられる。
【００３２】
送信部１２３は、ワークサーバ１２-1（内のエージェント１２０-1）と接続されているコアサーバ１１-iへのデータ送信、及び当該コアサーバ１１-iから送信されたデータを受信したことを当該コアサーバ１１-iへ通知するための受信応答を行う。受信部１２４は、コアサーバ１１-iから送信されたデータの受信、及び当該コアサーバ１１-iへのデータ送信に対する当該コアサーバ１１-iからの受信応答の受信を行う。
【００３３】
バッファ１２５は、送信部１２３からコアサーバ１１-iに送信されたデータをシーケンス番号と対応付けて格納するのに用いられる。バッファ１２５は、再送ポインタ（ＲＰ）１２６と、書き込みポインタ（ＷＰ）１２８（図３参照）とによって管理される。再送ポインタ１２６は、バッファ１２５に格納されている、コアサーバ１１-iが確かに受信したと確認できないデータのうち、最も古いデータの位置を指す。書き込みポインタは、次にバッファ１２５に書き込むべき送信データの格納先を指す。再送部１２７は、ワークサーバ１２-1（内のエージェント１２０-1）と接続されるコアサーバが切替部１２１によって切り替えられた場合に、それまで当該ワークサーバ１２-1（内のエージェント１２０-1）と接続されていたコアサーバに送信したデータのうち、当該コアサーバで確かに受信したと確認できないデータを、再送ポインタ１２６に従って取り出して、新たにワークサーバ１２-1（内のエージェント１２０-1）と接続されるワークサーバに再送する。
【００３４】
図３は、バッファ１２５と再送ポインタ（ＲＰ）１２６及び書き込みポインタ（ＷＰ）１２８との関係を示す。バッファ１２５は、当該バッファ１２５の領域がサイクリックに用いられる循環バッファである。バッファ１２５の領域のうち、再送ポインタ１２６で指定される位置から書き込みポインタ１２８で指定される位置の直前の位置までの領域（図３においてハッチングが施されている部分）のデータが、再送部１２７による再送の対象となる。バッファ１１５-iと再送ポインタ（ＲＰ）１１６-i及び図示せぬ書き込みポインタ（ＷＰ）との関係も同様である。
【００３５】
図４は、コアサーバ１１-iが有する状態管理テーブル１１２-iのデータ構造例を示す。図４に示す状態管理テーブル１１２-iの例では、当該状態管理テーブル１１２-iの各エントリには、クラスタシステム内の各ワークサーバ１２-1（＃１），１２-2（＃２）における各サービスの状態が保持される。
【００３６】
図５は、ワークサーバ１２-1（内のエージェント１２０-1）が有する状態テーブル１２２のデータ構造例を示す。図５に示す状態テーブル１２２の例では、当該状態テーブル１２２の各エントリには、当該状態テーブル１２２を有するワークサーバ１２-1（＃１）における各サービスの状態が保持される。
【００３７】
本実施形態では、従来のクラスタマネージャとは異なって、クラスタ制御を行うコアサーバ１１-1〜１１-4とサービス制御を行うワークサーバ１２-1，１２-2とが分離独立して設けられる。このため、コアサーバ１１-1〜１１-4とワークサーバ１２-1，１２-2内のエージェント１２０-1，１２０-2とは、制御するものと制御されるものとの関係として、互いに通信する。また、コアサーバ１１-1〜１１-4間では、一貫性を保つための通信が行われる。ところが、例えばワークサーバ１２-1がコアサーバ１１-1と接続された状態で、当該コアサーバ１１-1に障害が発生したために、当該ワークサーバ１２-1が他のコアサーバに接続し直された場合には、コアサーバ１１-1〜１１-4とワークサーバ１２-1，１２-2とが分離独立していることに起因してデータが失われる虞がある。しかし本実施形態では、以下に述べるワークサーバ１２-1及びコアサーバ１１-1におけるデータ送受信処理により、データが失われるのを防止している。
【００３８】
そこで、本実施形態の動作について、ワークサーバ１２-1及びコアサーバ１１-1におけるデータ送受信処理を例に説明する。今、図２に示すように、ワークサーバ１２-1（内のエージェント１２０-1）がコアサーバ１１-1〜１１-4のうちのコアサーバ１１-1と接続されているものとする。この状態で、ワークサーバ１２-1内のエージェント１２０-1はコアサーバ１１-1とネットワーク２１を介して通信を行う。なお、ワークサーバ１２-1がコアサーバ１１-2と接続されている場合、両サーバ１２-1，１１-2は同一のサーバコンピュータ１０-2上で動作していることから、両サーバ１２-1，１１-2間の通信はネットワーク２１を介すことなく、当該サーバコンピュータ１０-2内で行われる。勿論、上記両サーバ１２-1，１１-2が同一のサーバコンピュータ１０-2上で動作していても、両サーバ１２-1，１１-2間の通信がネットワーク２１を介して行われる構成としてもよい。
【００３９】
まず、ワークサーバ１２-1（内のエージェント１２０-1）に設けられた送信部１２３の動作について、図６のフローチャートを参照して説明する。送信部１２３は、コアサーバ１１-1に対して送信すべきデータが無い場合（ステップＳ１）、受信応答が必要か否かを判定する（ステップＳ２）。ここでは、コアサーバ１１-1から送信されたデータを受信部１２４が受信してから一定期間を経過しても受信応答を返していない場合、受信応答が必要であると判定される。もし、受信応答が必要な場合、送信部１２３は、受信応答を目的のコアサーバ、即ちワークサーバ１２-1と接続されているコアサーバ１１-1に返す（ステップＳ３）。ここでの受信応答により、ワークサーバ１２-1内の受信部１２４によって受信されながら受信応答が未だ返されていないデータのうち、最も最近に受信されたデータ（つまり最も最近に受信が確認されたデータ）に付されていたシーケンス番号（以下、受信確認シーケンス番号と称する）が通知される。
【００４０】
一方、コアサーバ１１-1に対して送信すべきデータが有る場合にも（ステップＳ１）、送信部１２３は受信応答が必要か否かを判定する（ステップＳ４）。ここでの受信応答が必要か否かの判定は、先のステップＳ２とは異なり、まだ受信応答が返されていないデータが有るか否かによって行われる。送信すべきデータが有り、且つ受信応答が必要な場合、送信部１２３は、受信応答付きの送信データをコアサーバ１１-1に送信する（ステップＳ５）。受信応答付きの送信データとは、受信確認シーケンス番号（最も最近に受信が確認されたデータに付されていたシーケンス番号）を含むヘッダ部を持つ送信データをいう。この送信データのヘッダ部には、当該送信データに割り当てられたシーケンス番号（送信データシーケンス番号）も含まれている。この受信応答付きの送信データの送信により、通信回数を減らすことができる。送信部１２３は、送信したデータを当該データに割り当てられたシーケンス番号に対応付けて、書き込みポインタ１２８で指定されるバッファ１２５内の位置に格納する（ステップＳ６）。ここで、シーケンス番号はコアサーバ１１-1へのデータ送信の都度１インクリメントされる。また、書き込みポインタ１２８は、バッファ１２５に送信データを格納する都度、次に送信データを格納すべき位置を指すように更新される。
【００４１】
次に、コアサーバ１１-1に対して送信すべきデータは有るが（ステップＳ１）、受信応答の必要がない場合（ステップＳ４）、送信部１２３は、送信データシーケンス番号が付された送信データをコアサーバ１１-1に送信する（ステップＳ７）。そして送信部１２３は、送信したデータを送信データシーケンス番号に対応付けて、書き込みポインタ１２８で指定されるバッファ１２５内の位置に格納する（ステップＳ６）。
【００４２】
次に、ワークサーバ１２-1（内のエージェント１２０-1）に設けられた受信部１２４の動作について、図７のフローチャートを参照して説明する。受信部１２４は、ワークサーバ１２-1と接続されているコアサーバ１１-1から何らかの情報を受信すると（ステップＳ１１）、その情報に受信応答が含まれているか否かを判定する（ステップＳ１２）。もし、受信情報に受信応答が含まれている場合、即ち受信応答それ自体または受信応答付き送信データを受信した場合、受信部１２４は、再送ポインタ１２６を受信応答により通知された受信確認シーケンス番号に応じて更新する（ステップＳ１３）。即ち受信部１２４は、受信確認シーケンス番号に一致するシーケンス番号に対応付けてバッファ１２５に格納されている送信データの次の位置を指すように、再送ポインタ１２６を更新する（進める）。このことは、コアサーバ１１-1に送信したデータのうち、当該コアサーバ１１-1で確かに受信したと確認できたデータを、バッファ１２５から削除したことと等価である。もし、更新後の再送ポインタ１２６で指定されるバッファ１２５内の位置（第１の位置と称する）と書き込みポインタ１２８で指定されるバッファ１２５内の位置（第２の位置と称する）とが一致していない場合、バッファ１２５内の第１の位置から第２の位置の直前の位置までに格納されているデータが、現時点において、コアサーバ１１-1で確かに受信したと確認できないデータとなる。
【００４３】
次に、ワークサーバ１２-1（内のエージェント１２０-1）と接続されたコアサーバ１１-1に設けられた送信部１１３-1の動作について、図８のフローチャートを参照して説明する。送信部１１３-1は、ワークサーバ１２-1（内のエージェント１２０-1）に対して送信すべきデータが無い場合（ステップＳ２１）、受信応答が必要か否かを判定する（ステップＳ２２）。ここでは、ワークサーバ１２-1から送信されたデータを受信部１１４-1が受信してから一定期間を経過しても受信応答を返していない場合、受信応答が必要であると判定される。もし、受信応答が必要な場合、送信部１１３-1は、受信確認シーケンス番号を同期処理部１１１-1によりシステム内の他の全てのコアサーバ、即ちコアサーバ１１-2〜１１-4に通知する（ステップＳ２３）。そして送信部１１３-1は、ワークサーバ１２-1内の送信部１２３によるステップＳ３と同様にして、受信応答を目的のワークサーバ、即ちコアサーバ１１-1と接続されているワークサーバ１２-1に返す（ステップＳ２４）。ここでの受信応答により、コアサーバ１１-1内の受信部１１４-1によって受信されながら受信応答が未だ返されていないデータのうち、最も最近に受信が確認されたデータに付されていたシーケンス番号（つまり受信確認シーケンス番号）が通知される。
【００４４】
一方、ワークサーバ１２-1に対して送信すべきデータが有る場合にも（ステップＳ２１）、送信部１１３-1は受信応答が必要か否かを判定する（ステップＳ２５）。ここでの受信応答が必要か否かの判定は、先のステップＳ２２とは異なり、まだ受信応答が返されていないデータが有るか否かによって行われる。送信すべきデータが有り、且つ受信応答が必要な場合、送信部１１３-1は、送信データと受信確認シーケンス番号とを同期処理部１１１-1によりシステム内の他の全てのコアサーバ１１-2〜１１-4に通知する（ステップＳ２６）。次に送信部１１３-1は、ワークサーバ１２-1内の送信部１２３によるステップＳ５と同様にして、受信応答付きの送信データを目的のワークサーバ１２-1に返す（ステップＳ２７）。そして送信部１１３-1は、送信部１２３によるステップＳ６と同様にして、送信したデータを当該データに割り当てられたシーケンス番号に対応付けて、書き込みポインタ（図示せず）で指定されるバッファ１１５-1内の位置に格納する（ステップＳ２８）。ここで、シーケンス番号はワークサーバ１２-1へのデータ送信の都度１インクリメントされる。また、書き込みポインタは、バッファ１１５-1に送信データを格納する都度、次に送信データを格納すべき位置を指すように更新される。一方、コアサーバ１１-1以外のコアサーバ、即ちコアサーバ１１-2〜１１-4においても、コアサーバ１１-1内の送信部１１３-1から同期処理部１１１-1を通して通知された送信データと受信確認シーケンス番号とから、コアサーバ１１-1におけるのと同様の動作が行われる。これにより、例えば、コアサーバ１１-4内のバッファ１１５-4の内容、バッファ１１５-4用の再送ポインタ１１６-4及びバッファ１１５-4用の書き込みポインタが、コアサーバ１１-1内のバッファ１１５-1の内容、バッファ１１５-1用の再送ポインタ１１６-1及びバッファ１１５-1用の書き込みポインタに一致化される。
【００４５】
次に、ワークサーバ１２-1に対して送信すべきデータは有るが（ステップＳ２１）、受信応答の必要がない場合（ステップＳ２５）、送信部１１３-1は送信データシーケンス番号が付された送信データを同期処理部１１１-1によりシステム内の他の全てのコアサーバ１１-2〜１１-4に通知する（ステップＳ２９）。次に送信部１１３-1は、この送信データシーケンス番号が付された送信データをコアサーバ１１-1に送信する（ステップＳ３０）。そして送信部１１３-1は、送信したデータを送信データシーケンス番号に対応付けて、書き込みポインタで指定されるバッファ１１５-1内の位置に格納する（ステップＳ２８）。一方、コアサーバ１１-2〜１１-4においても、コアサーバ１１-1内の送信部１１３-1から同期処理部１１１-1を通して通知された送信データと送信データシーケンス番号とから、コアサーバ１１-1におけるのと同様の動作が行われる。これにより、例えば、コアサーバ１１-4内のバッファ１１５-4の内容、及びバッファ１１５-4用の書き込みポインタが、コアサーバ１１-1内のバッファ１１５-1の内容、及びバッファ１１５-1用の書き込みポインタに一致化される。
【００４６】
次に、コアサーバ１１-1に設けられた受信部１１４-1の動作について、図９のフローチャートを参照して説明する。受信部１１４-1は、コアサーバ１１-1と接続されているワークサーバ１２-1から何らかの情報を受信すると（ステップＳ３１）、その受信情報が受信応答のみ（つまり受信応答それ自体）であるか否かを判定する（ステップＳ３２）。もし、受信応答それ自体を受信した場合、受信部１１４-1は、受信応答により通知された受信確認シーケンス番号を同期処理部１１１-1により他の全てのコアサーバ１１-2〜１１-4に通知する（ステップＳ３３）。そして受信部１１４-1は、ワークサーバ１２-1内の受信部１２４によるステップＳ１３と同様にして、再送ポインタ１１６-1を受信応答により通知された受信確認シーケンス番号に応じて更新する（ステップＳ３４）。一方、コアサーバ１１-2〜１１-4においても、コアサーバ１１-1内の受信部１１４-1から同期処理部１１１-1を通して通知された受信確認シーケンス番号から、コアサーバ１１-1におけるのと同様の動作が行われる。これにより、例えば、コアサーバ１１-4内の再送ポインタ１１６-4が、コアサーバ１１-1内の再送ポインタ１１６-1に一致化される。
【００４７】
一方、受信情報が受信応答それ自体ではない場合、受信部１１４-1は、受信情報が受信応答付き受信データであるか否かを判定する（ステップＳ３５）。もし、受信情報が受信応答付き受信データである場合、受信部１１４-1は、受信データと受信確認シーケンス番号とを同期処理部１１１-1によりシステム内の他の全てのコアサーバ１１-2〜１１-4に通知する（ステップＳ３６）。そして受信部１１４-1は、受信情報が受信応答のみの場合と同様に、再送ポインタ１１６-1を受信応答により通知された受信確認シーケンス番号に応じて更新する（ステップＳ３４）。一方、コアサーバ１１-2〜１１-4においても、コアサーバ１１-1内の受信部１１４-1から同期処理部１１１-1を通して通知された受信確認シーケンス番号から、コアサーバ１１-1におけるのと同様の動作が行われる。これにより、例えば、コアサーバ１１-4内の再送ポインタ１１６-4が、コアサーバ１１-1内の再送ポインタ１１６-1に一致化される。
【００４８】
以上により、コアサーバ１１-1〜１１-4内のバッファ１１５-1〜１１５-4の内容、バッファ１１５-1〜１１５-4用の再送ポインタ１１６-1〜１１６-4及びバッファ１１５-1〜１１５-4用の書き込みポインタの一貫性が保たれる。
【００４９】
このような状態で、ワークサーバ１２-1（内のエージェント１２０-1）と接続されているコアサーバ１１-1の障害が発生したものとする。この場合、コアサーバ１１-1が停止したり、無応答となることから、ワークサーバ１２-1（内のエージェント１２０-1）に設けられた切替部１２１は、ワークサーバ１２-1と接続するコアサーバをコアサーバ１１-1から他の正常に動作する例えばコアサーバ１１-4に切り替える。
【００５０】
すると、ワークサーバ１２-1（内のエージェント１２０-1）に設けられた再送部１２７は、再送ポインタ１２６で指定されるバッファ１２５内の第１の位置から書き込みポインタ１２８で指定されるバッファ１２５内の第２の位置の直前の位置までに格納されているデータ（図３においてハッチングされた領域のデータ）を、前にワークサーバ１２-1と接続されていたコアサーバ１１-1で確かに受信したと確認できないデータであるとして、切替部１２１による切替でワークサーバ１２-1に新たに接続されたコアサーバ１１-4に送信（再送）する。このデータがコアサーバ１１-4で受信されると、そのデータがクラスタシステム内の他のコアサーバに同期処理部１１１-4により通知され、受信データに関し、コアサーバ１１-1〜１１-4間で一貫性が保たれる。
【００５１】
一方、ワークサーバ１２-1と新たに接続されたコアサーバ１１-4では、再送部１１７-1が、上記ワークサーバ１２-1内の再送部１２７と同様の送信動作（再送動作）を行う。即ち再送部１１７-1は、再送ポインタ１１６-4で指定されるバッファ１１５-4内の第１の位置から書き込みポインタで指定されるバッファ１１５-4内の第２の位置の直前の位置までに格納されているデータ、つまりワークサーバ１２-1が前にコアサーバ１１-1と接続されていた状態で確かに受信したと確認できないデータを、当該ワークサーバ１２-1に送信（再送）する。
【００５２】
これらの、ワークサーバ１２-1内の切替部１２１及び再送部１２７と、コアサーバ１１-4内の再送部１１７-4の動作によって、コアサーバ１１-1〜１１-4のうちのいずれが障害で停止した場合（ここではコアサーバ１１-1が停止）でも、スムーズに切り替えが行われ、且つデータのロスが発生しないで済む。つまり、これらの機能により、コアサーバとワークサーバとを分離したことに起因して発生する可能性のある問題を解消できる。
【００５３】
また本実施形態では、各ワークサーバ１２-1，１２-2（のエージェント１２０-1，１２０-2）には、当該ワークサーバ１２-1，１２-2におけるサービスの状態を保持する状態テーブル（ワークサーバ１２-1では状態テーブル１２２）が設けられている。このため、カーネル１１０の再起動後に、当該カーネル１１０が各ワークサーバ１２-1，１２-2の状態テーブルの内容（つまりワークサーバ１２-1，１２-2におけるサービスの状態）を収集することで、クラスタシステム内の全てのワークサーバ１２-1，１２-2におけるサービスの状態を復元する。具体的には、カーネル１１０を構成するコアサーバ１１-1〜１１-4のうち、ワークサーバ１２-1，１２-2と接続されているコアサーバ１１-2，１１-3がワークサーバ１２-1，１２-2におけるサービスの状態を収集する。収集したサービスの状態は、各コアサーバ１１-1〜１１-4の同期処理部１１１-1〜１１１-4により各コアサーバ１１-1〜１１-4に通知され、各コアサーバ１１-1〜１１-4内の状態管理テーブル１１２-1〜１１２-4に反映される。これにより、カーネル１１０はクラスタの制御を再開できる。つまり本実施形態においては、カーネル１１０を一時的に停止し、その後に再起動することが可能になる。これにより、コアサーバのバージョンアップ、コアサーバの移動などが可能となり、クラスタ構成における柔軟性が増す。
【００５４】
上記実施形態では、クラスタシステムを構成するサーバコンピュータ１０-1〜１０-4のうちのサーバコンピュータ１０-1，１０-4では、コアサーバ及びワークサーバのうちのコアサーバのみが稼働し、残りのサーバコンピュータ１０-2，１０-3では、コアサーバ及びワークサーバが共に稼働することを前提としている。しかし、クラスタシステムを構成する全てのサーバコンピュータでコアサーバ及びワークサーバの両方が稼働する構成であっても、一部のコンピュータ群ではコアサーバのみが稼働し、残りのコンピュータ群ではワークサーバのみが稼働する構成であっても構わない。つまり、クラスタシステムを構成するサーバコンピュータは、コアサーバのみが稼働するサーバコンピュータ、ワークサーバのみが稼働するサーバコンピュータ、或いはコアサーバとワークサーバの両方が稼働するサーバコンピュータの何れかとなる。コアサーバとワークサーバをどのように配置するかは、クラスタ構成設計の基本である。クラスタシステムに必要な可用性や拡張性、それぞれのコンピュータの用途、性能、信頼性などを考慮し、適切な配置を決定する必要がある。以下、上記第１の実施形態とは異なるクラスタ構成について説明する。
【００５５】
［第２の実施形態］
図１０は本発明の第２の実施形態に係るクラスタシステムの構成を示すブロック図である。図１０のクラスタシステムは、Ｎ台のサーバコンピュータ３０-1（＃１）〜３０-N（＃Ｎ）から構成される。この例では、Ｎ台のサーバコンピュータ３０-1（＃１）〜３０-N（＃Ｎ）の全てで、それぞれコアサーバ３１-1（＃１）〜３１-N（＃Ｎ）とワークサーバ３２-1（＃１）〜３２-N（＃Ｎ）とが稼働する。
【００５６】
このように図１０のクラスタシステムは、全てのサーバコンピュータ＃１〜＃Ｎでコアサーバ＃１〜＃Ｎによるクラスタ制御に加えて、ワークサーバ＃１〜＃Ｎによるクラスタシステムのサービスが実行される、最密クラスタ構成をとる。このため、サーバコンピュータ＃１〜＃Ｎには、そのサービスに必要なリソースと、それに見合ったハードウェア／ソフトウェアがに必要になるものの、サービスに関しては、Ｎ個のワークサーバ＃１〜＃Ｎ間（つまりシステムを構成するＮ台のサーバコンピュータ＃１〜＃Ｎ）でのフェイルオーバによる可用性の向上が期待できる。また、カーネルに関しては、Ｎ個のコアサーバ＃１〜＃Ｎ（つまりシステムを構成するＮ台のサーバコンピュータ＃１〜＃Ｎ）による２／３定足数アルゴリズムによる可用性の向上が期待できる。この図１０のクラスタシステムの構成（最密クラスタ構成）は最大の可用性を得ることができる。但し、コンピュータ数Ｎが大きい構成（例えばＮ＞１６）は、カーネルの可用性が必要以上に高く設定されることになるため好ましくない。なお、コアサーバ＃１〜＃Ｎ及びワークサーバ＃１〜＃Ｎの構成と動作は、前記第１の実施形態におけるコアサーバ及びワークサーバと同様である。
【００５７】
［第３の実施形態］（完全分離クラスタ構成）
図１１は本発明の第３の実施形態に係るクラスタシステムの構成を示すブロック図である。図１１のクラスタシステムは、Ｎ＋Ｋ台のサーバコンピュータ４０-1（＃１）〜４０-N（＃Ｎ），４０-(N+1)（＃Ｎ＋１）〜４０-(N+K)（＃Ｎ＋Ｋ）から構成される。この例では、Ｎ台のサーバコンピュータ４０-1（＃１）〜４０-N（＃Ｎ）で、それぞれワークサーバ４２-1（＃１）〜４２-N（＃Ｎ）が稼働し、残りのＫ台のサーバコンピュータ４０-(N+1)（＃Ｎ＋１）〜４０-(N+K)（＃Ｎ＋Ｋ）でコアサーバ４１-1（＃１）〜４１-K（＃Ｋ）が稼働する。
【００５８】
このように図１１のクラスタシステムは、ワークサーバ専用のＮ台のサーバコンピュータ＃１〜＃Ｎとコアサーバ専用のＫ台のサーバコンピュータ＃Ｎ＋１〜＃Ｎ＋Ｋとによる完全分離クラスタ構成をとる。このため、サーバコンピュータ＃１〜＃Ｎ＋Ｋには、それぞれの役割に見合ったハードウェア／ソフトウェアが必要となる。この図１１のクラスタシステムでは、サービスに関しては、Ｎ個のワークサーバ間でのフェイルオーバによる可用性の向上が期待できる。また、カーネルに関しては、Ｋ個のコアサーバ＃１〜＃Ｋによる２／３定足数アルゴリズムによる可用性の向上が期待できる。
【００５９】
また、図１１のクラスタシステムは１つのサーバコンピュータ上でコアサーバ及びワークサーバの一方だけが稼働する完全分離クラスタ構成をとることから、ワークサーバ＃１〜＃Ｎで動いているリソースの障害が、コアサーバ＃１〜＃Ｋに影響しにくく、より信頼性の高いクラスタ構成を実現できる。また、ワークサーバ数Ｎが多い（Ｎ＞１６）システムでも、コアサーバ数Ｋを適切な値（４≦Ｋ≦１６）に調整することにより、最適なクラスタシステムを構築できる。また完全分離クラスタ構成は、最初は少ない個数のワークサーバでクラスタシステムを構成し、順次ワークサーバを追加していく拡張性の高いクラスタシステムを構築したい場合にも適している。
【００６０】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【図面の簡単な説明】
【００６１】
【図１】本発明の第１の実施形態に係るクラスタシステムの構成を示すブロック図。
【図２】図１のクラスタシステム内のコアサーバ及びワークサーバの構成を、コアサーバ１１-1，１１-4及びワークサーバ１２-1について示すブロック図。
【図３】バッファ１２５と再送ポインタ（ＲＰ）１２６及び書き込みポインタ（ＷＰ）１２８との関係を示す図。
【図４】コアサーバ１１-iが有する状態管理テーブル１１２-iのデータ構造例を示す図。
【図５】ワークサーバ１２-1が有する状態テーブル１２２のデータ構造例を示す図。
【図６】ワークサーバ１２-1に設けられた送信部１２３の動作手順を示すフローチャート。
【図７】ワークサーバ１２-1に設けられた受信部１２４の動作手順を示すフローチャート。
【図８】コアサーバ１１-1に設けられた送信部１１３-1の動作手順を示すフローチャート。
【図９】コアサーバ１１-1に設けられた受信部１１４-1の動作手順を示すフローチャート。
【図１０】本発明の第２の実施形態に係るクラスタシステムの構成を示すブロック図。
【図１１】本発明の第３の実施形態に係るクラスタシステムの構成を示すブロック図。
【符号の説明】
【００６２】
１０-1〜１０-4，３０-1〜３０-N，４０-1〜４０-(N+K)…サーバコンピュータ、１１-1〜１１-4，３１-1〜３１-N，４１-1〜４１-K…コアサーバ、１２-1〜１２-4，３２-1〜３２-N，４２-1〜４２-N…ワークサーバ、２１，２２ネットワーク、２３…クライアント端末、１１１-1〜１１１-4…同期処理部、１１２-1〜１１２-4…状態管理テーブル（第２の状態保持手段）、１１３-1〜１１３-4…送信部、１１４-1〜１１４-4…受信部、１１５-1〜１１５-4…バッファ（第２のバッファ）、１１６-1〜１１６-4…再送ポインタ（ＲＰ、第２の再送ポインタ保持手段）、１１７-1〜１１７-4…再送部（第２の再送手段）、１２１…切替部、１２２…状態テーブル（第１の状態保持手段）、１２３…送信部、１２４…受信部、１２５…バッファ（第２のバッファ）、１２６…再送ポインタ（ＲＰ、第１の再送ポインタ保持手段）、１２７…再送部（第１の再送手段）、１２８…書き込みポインタ（ＷＰ）。
【図１】
2005063033.tif 000003
【図２】
2005063033.tif 000004
【図３】
2005063033.tif 000005
【図４】
2005063033.tif 000006
【図５】
2005063033.tif 000007
【図６】
2005063033.tif 000008
【図７】
2005063033.tif 000009
【図８】
2005063033.tif 000010
【図９】
2005063033.tif 000011
【図１０】
2005063033.tif 000012
【図１１】
2005063033.tif 000013