(57)【特許請求の範囲】
【請求項１】
サーバ間の唯一のミラーリング・リンクとして役目を果たす通信リンクによって接続されている第１のサーバおよび第２のサーバを含むコンピュータ・クラスタリング・システムであって、当該コンピュータ・クラスタリング・システムにおける通信途絶時に、前記第２のサーバに生き残る権利が割り当てられているコンピュータ・クラスタリング・システムの可用性および信頼性を向上させる方法であって
前記第２のサーバから前記第１のサーバへの通信の抜け落ちを前記第１のサーバが検出する動作と、
前記第１のサーバが、前記通信リンクを分析して、前記通信リンクが適切に機能しているかどうかを決定する動作と、
前記通信リンクが適切に機能していると決定された場合、前記第１のサーバがオペレーションを継続し、前記生き残る権利を引き受ける動作と、
前記通信リンクが適切に機能していないと決定された場合、前記第１のサーバがオペレーションを打ち切る動作と、
前記第１のサーバがオペレーションを打ち切った後、前記第２のサーバが、オペレーションを継続し、前記第１のサーバに対してなされたネットワーク要求に応える動作と
を備えることを特徴とする方法。
【請求項２】
通信の抜け落ちを検出する前記動作は、前記第２のサーバによって生成されたハートビート信号を、前記通信リンクを介して検出できないと前記第１のサーバが決定する動作を備えることを特徴とする請求項１に記載の方法。
【請求項３】
前記通信リンクは前記第１のサーバおよび前記第２のサーバを接続する専用リンクを備えることを特徴とする請求項２に記載の方法。
【請求項４】
前記通信リンクは、互いに相互接続され、且つ前記第１のサーバおよび前記第２のサーバに相互接続される１つまたは複数のネットワーク装置を備えるコンピュータ・ネットワークに確立された仮想チャネルを含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記第１のサーバおよび前記第２のサーバのそれぞれは、ファイル・オペレーティング・システムおよび少なくとも１つの接続された大容量記憶装置をさらに備え、
前記第１のサーバおよび前記第２のサーバのそれぞれは、前記ファイル・オペレーティング・システムを実行して、他のネットワーク装置からの、前記第１のサーバおよび前記第２のサーバのリソースを使用する要求を備えるネットワーク要求に応える
ことを特徴とする請求項１に記載の方法。
【請求項６】
前記第１のサーバの前記少なくとも１つの接続された記憶装置から、前記第２のサーバの前記少なくとも１つの接続された記憶装置に、データをミラーする動作と、
前記第２のサーバの前記少なくとも１つの接続された記憶装置から、前記第１のサーバの前記少なくとも１つの接続された記憶装置に、データをミラーする動作と
をさらに備えることを特徴とする請求項５に記載の方法。
【請求項７】
前記通信リンクは前記第１のサーバおよび前記第２のサーバのみを相互接続する専用通信リンクであり、通信の抜け落ちを検出する前記動作は、
前記第１のサーバが前記通信リンクを介して前記第２のサーバとの通信を試行する動作と、
前記第１のサーバが、前記通信リンクを介して前記試行した通信の結果を分析して、前記第１のサーバが前記第２のサーバと通信できないと決定する動作と
を備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記通信リンクを分析して、前記通信リンクが適切に機能しているかどうかを決定する前記動作は、前記第１のサーバが前記通信リンクの伝送特性をチェックして、その伝送特性が指定するパラメータ内にあるかどうかを決定する動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
前記通信リンクが適切に機能していると前記第１のサーバが決定した場合、前記第１のサーバはネットワーク装置によって前記第２のサーバになされたネットワーク要求に応える動作をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記第２のサーバからの通信が回復されていると前記第１のサーバが決定する動作と、
前記第２のサーバがオペレーションを打ち切る動作と
をさらに備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記通信リンクは適切に機能していないと前記第１のサーバが決定した場合、前記第１のサーバがオペレーションを打ち切った後、前記第２のサーバが、オペレーションを継続し、前記第１のサーバに対してなされたネットワーク要求に応える動作をさらに備えることを特徴とする請求項１に記載の方法。
【請求項１２】
サーバ間の唯一のミラーリング・リンクとして役目を果たす通信リンクによって相互接続されている第１のサーバおよび第２のサーバを含むコンピュータ・クラスタリング・システムであって、前記第１のサーバおよび前記第２のサーバのそれぞれは、ファイル・サーバ・オペレーティング・システム、および少なくとも１つの関連付けられた大容量記憶装置を含み、当該関連付けられた少なくとも１つの大容量記憶装置にデータが書き込まれ、またはそこからデータが読み出されることに帰着する要求を受信することができ、前記コンピュータ・クラスタリング・システムの通信途絶時に、前記第２のサーバに生き残る権利が割り当てられているコンピュータ・クラスタリング・システムの可用性および信頼性を向上させる方法であって、
前記第２のサーバに関連付けられたハートビート信号がもはや前記通信リンクを介して検出されないと前記第１のサーバが決定する動作と、
前記第１のサーバが、前記通信リンクを分析して、前記通信リンクの保全性のエラーがあるかどうかを決定する動作と、
前記通信リンクについて保全性のエラーがあると前記第１のサーバが決定した場合、前記第１のサーバはオペレーションを打ち切り、そうでない場合に前記第１のサーバに向けられることになる要求に前記第２のサーバが応えられるように、前記第２のサーバは、前記コンピュータ・クラスタリング・システムを再構成する動作と、
前記通信リンクの保全性にエラーがないと前記第１のサーバが決定した場合、前記第１のサーバはそれ自体に前記生き残る権利を割り当て、前記第１のサーバは、そうでない場合前記第２のサーバに向けられることになる要求に前記第１のサーバが応えられるように、前記第１のサーバが前記コンピュータ・クラスタリング・システムを再構成する動作と
を備えることを特徴とする方法。
【請求項１３】
前記第２のサーバに関連付けられた前記ハートビート信号はもはや検出されていないと決定する前記動作の前に、前記第１のサーバおよび前記第２のサーバは、前記第１のサーバに属する前記少なくとも１つの大容量記憶装置、および前記第２のサーバに属する前記少なくとも１つの大容量記憶装置に格納されているデータをミラーする動作をさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１４】
データをミラーする前記動作は、前記第１のサーバと前記第２のサーバの間に前記通信リンクを介してデータを送信する動作を備えることを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第１のサーバが、前記第２のサーバに関連付けられた前記ハートビート信号はもはや検出されていないと決定する前記動作は、
前記ハートビート信号があるかどうかを前記第１のサーバが前記通信リンクを繰り返し監視する動作と、
指定された期間の間中、前記通信リンクを繰り返し監視する前記動作中に、前記第１のサーバが前記ハートビート信号を検出しないときに、前記ハートビート信号はもはや検出されないと前記第１のサーバが決定する動作と
を備えることを特徴とする請求項１３に記載の方法。
【請求項１６】
前記第１のサーバが前記コンピュータ・クラスタリング・システムを再構成する前記動作の後、
前記第１のサーバが前記第２のサーバに関連付けられた前記ハートビート信号を再度検出する動作と、
前記第２のサーバが前記第２のサーバに関連付けられた前記少なくとも１つの大容量記憶装置にアクセスする前にオペレーションを打ち切る動作と
をさらに備えることを特徴とする請求項１２に記載の方法。
【請求項１７】
サーバ間の唯一のミラーリング・リンクとして役目を果たす通信リンクによって相互接続されている第１のサーバおよび第２のサーバを含むコンピュータ・クラスタリング・システムであって、前記第１のサーバおよび前記第２のサーバのそれぞれは、ファイルサーバオペレーティングシステム、および少なくとも１つの関連付けられた大容量記憶装置を含み、当該関連付けられた少なくとも１つの大容量記憶装置にデータが書き込まれ、またはそこからデータが読み出されることに帰着する要求を受信することができ、前記コンピュータ・クラスタリング・システムの通信途絶時に、前記第２のサーバに生き残る権利が割り当てられているコンピュータ・クラスタリング・システムの可用性および信頼性を向上させる方法であって、
前記コンピュータ・クラスタリング・システムの通常のオペレーション中に、前記通信リンクを使用して前記第１のサーバおよび前記第２のサーバの間にデータを送信することによって、前記第１のサーバに関連付けられた前記少なくとも１つの大容量記憶装置および前記第２のサーバに関連付けられた前記少なくとも１つの大容量記憶装置にあるデータをミラーする動作と、
前記第２のサーバは適切に機能していないと前記第１のサーバが決定する動作であって、前記第１のサーバが指定された時間間隔で前記通信リンクを分析する動作と、前記第１のサーバが前記通信リンクを介して前記第２のサーバからの通信の検出に失敗する動作と、前記通信リンクを分析する前記動作に基づいて前記第１のサーバが前記通信リンクの適切な機能を検出する動作とを含む動作と、
前記第１のサーバが前記コンピュータ・クラスタリング・システムの制御を獲得する動作と、
前記第１のサーバが、前記コンピュータ・クラスタリング・システムを再構築して、そうでない場合に前記第２のサーバに向けられることになるファイル・サーバ要求を受信する動作と
を備えることを特徴とする方法。
【請求項１８】
前記第１のサーバが前記コンピュータ・クラスタリング・システムの制御を獲得後、前記第２のサーバが適切な機能性を再確立したと前記第１のサーバが決定する動作と、
前記第２のサーバが、前記第２のサーバに関連付けられた前記少なくとも１つの大容量記憶装置にアクセスする前にオペレーションを打ち切る動作と
をさらに備えることを特徴とする請求項１７に記載の方法。
【請求項１９】
第２のサーバおよび第１のサーバと前記第２のサーバを接続し、サーバ間の唯一のミラーリング・リンクとして役目を果たす通信リンクも含むコンピュータ・クラスタリング・システムに含まれる前記第１のサーバにおいて、前記第２のサーバの機能不全に応答して前記第１のサーバが前記コンピュータ・クラスタリング・システムの制御を引き受ける方法であって、
前記第１のサーバが前記第２のサーバからの通信を検出することに失敗した場合に、前記第１のサーバにおいて格納されている生き残る権利のフラグを検査することを含み、最初は生き残る権利を得ていなかった前記第１のサーバが生き残る権利を有しているかどうかを決定すること、
前記第２のサーバからの通信の抜け落ちを検出すること、
通信の抜け落ちに応答して、通信リンクが適切に機能しているかどうかを決定すること、
前記通信リンクが適切に機能していない場合、前記第１のサーバのオペレーションを打ち切る動作と、および
前記通信リンクが適切に動作している場合、前記第１のサーバが、最初は生き残る権利を有していないにも関わらず、前記第１のサーバのオペレーションを続行すること
を備えることを特徴とする方法。
【請求項２０】
前記通信リンクは、前記第１のサーバおよび前記第２のサーバの間の専用リンクを備えることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記通信リンクは、前記第１のサーバ、前記第２のサーバ、および複数のネットワーク装置を相互接続するネットワークに含まれる仮想チャネルを備えることを特徴とする請求項１９に記載の方法。
【請求項２２】
前記コンピュータ・クラスタリング・システムの通常のオペレーション中で、同時に前記第１のサーバおよび前記第２のサーバが互いに通信している期間、前記第１のサーバに関連付けられた大容量記憶装置と前記第２のサーバに関連付けられた大容量記憶装置との間でデータをミラーすることをさらに備えることを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【０００１】
（発明の背景）
発明の分野
本発明は、コンピュータ・クラスタリング・システムに関し、より詳細には、コンピュータ・クラスタリング・システム・サーバ間の通信の抜け落ちの事象発生時におけるコンピュータ・クラスタリング・システム・リソースおよびデータの可用性および信頼性を向上させる方法に関する。
【０００２】
関連技術の説明
一般のコンピュータ・クラスタは、コンピュータ・ネットワークを介して互いに通信する２つ以上のサーバ、および１つまたは複数のネットワーク装置を含む。コンピュータ・クラスタの通常のオペレーション中に、サーバは、コンピュータ・リソースおよびデータを格納し取り出す場所をネットワーク装置に提供する。現在のコンピュータ・クラスタ構成では、コンピュータ・クラスタ・データは、ネットワーク・サーバのいずれかからアクセスされる共有コンピュータ・ディスクに格納される。
【０００３】
図１に一般のコンピュータ・クラスタを示している。図１には、コンピュータ・ネットワーク１０１を介してネットワーク装置１３０、１４０、１５０と通信する２つのネットワーク・サーバ１１０および１２０を示している。ネットワーク・サーバ１１０およびネットワーク・サーバ１２０は、それぞれ通信回線１０５および１０６を介して共有ディスク１０４と通信する。
【０００４】
コンピュータ・クラスタを使用するとき、特に、コンピュータ・クラスタがいくつかのユーザ・ワークステーション、パーソナル・コンピュータ、または他のネットワーク・クライアント装置をサポートしている場合は、コンピュータ・クラスタ・リソースの連続的な可用性を提供することがしばしば望まれる。また、コンピュータ・クラスタリング・システムに接続されている異なるファイル・サーバの間で統一されたデータを維持すること、およびクライアント装置からのこのデータの連続的な可用性を維持することもしばしば望まれる。コンピュータ・クラスタ・リソースおよびデータの信頼性の高い可用性を達成するには、コンピュータ・クラスタがソフトウェアおよびハードウェアの問題および障害に対する耐性をもっている必要がある。一般に冗長コンピュータおよび大容量記憶装置を持つことによって、障害発生時にはバックアップ・コンピュータまたはディスク・ドライブがすぐに引き継ぐことができるというような、上述した必要事項を実行する。
【０００５】
図１に示す共有ディスク構成を使用してコンピュータ・クラスタ・リソースおよびデータの信頼性の高い可用性を実装するために現在使用されている手法は、クォーラム（quorum）の概念を伴う。クォーラム（quorum）の概念は、他の任意のネットワーク・サーバからのサービスが途絶（disruption）した場合に、ひとつのネットワーク・サーバがコンピュータ・リソースおよびデータの可用性を制御する権利を有するような、そのネットワーク・サーバが指定された最小数のネットワーク装置を制御する状態に関係する。特定のネットワーク・サーバがクォーラムを獲得する方法は、各サーバおよび他のネットワーク装置が「票（votes）」を投じる観点からうまく説明することができる。例えば、図１の２つのサーバ・コンピュータ・クラスタ構成では、ネットワーク・サーバ１１０およびネットワーク・サーバ１２０がそれぞれ１票を投じてどのネットワーク・サーバがクォーラムを有するかを決定する。ネットワーク・サーバのいずれもが票の過半数を獲得していない場合、共有ディスク１０４は、２つのネットワーク・サーバ１１０および１２０の一方が過半数を獲得するように投票し、その結果、相互に理解し受け入れることができるようなやり方でネットワーク・サーバの一方がクォーラムを獲得する。常に１つのネットワーク・サーバのみがクォーラムを有し、これによって、ネットワーク・サーバ１１０と１２０の間の通信が途絶し場合に、必ず一方のネットワーク・サーバのみがネットワーク全体の制御を引き受けるようにする。
【０００６】
次に、通信途絶時にクォーラムを使用してネットワーク・サーバを使用可能にしようと試みることについて説明する。サーバ１１０がサーバ１２０との通信の抜け落ち（loss of communication）を検出することができる理由は主に２つある。第１は、例えば破損（crash）などの、サーバ１２０でのイベントであり、この場合サーバ１２０は、もはやクライアントにネットワーク・リソースを提供することができない。第２は、２つのサーバ間のネットワーク１０１の通信インフラストラクチャでの通信途絶であり、この場合サーバ１２０は、ネットワーク内で引き続きのオペレーション動作をすることができる。サーバ１１０がもはやサーバ１２０と通信できない場合、その最初の動作は、それがクォーラムを有しているかどうかを決定することである。サーバ１１０は、クォーラムを有していないと決定した場合、共有ディスク１０４に投票するよう要求するコマンドを、その１０４に送信することによってクォーラムを獲得しようと試みる。共有ディスク１０４がサーバ１１０に投票しない場合、サーバ１２０から独立してオペレーション動作をすることを回避するために、このサーバ自体をシャットダウンする。この場合、サーバ１１０は、ネットワーク・サーバ１２０がクォーラムを有してオペレーション動作をしており、サーバ１２０がコンピュータ・クラスタを引き続き制御するとみなす。しかし、共有ディスク１０４がネットワーク・サーバ１１０に投票した場合、このサーバは、クォーラムおよびコンピュータ・クラスタの制御を獲得し、ネットワーク・サーバ１２０が正しく動作しないものとみなして、オペレーションを継続する。
【０００７】
ネットワークの通信途絶時に複数のネットワーク・サーバのうちの１つがネットワーク・リソースを引き続き提供できるようにするクォーラムの使用は、多くの場合、十分であるが、共有ディスクの使用によって、ネットワーク全体およびディスクに保存されているデータが失われる危険にさらされる。例えば、共有ディスク１０４が、あるいはネットワーク・サーバ１１０および１２０の一方ではなく複数のサーバのどちらもが、オペレーション動作をすることができない場合に、データが永久に失われることがある。さらに、共有ディスク構成では、コンピュータ・クラスタ・サーバは一般に、互いに近接して配置される。このことで、自然災害、または停電によってコンピュータ・クラスタ全体が停止する可能性が生じる。
【０００８】
（発明の概要）
本発明は、コンピュータ・クラスタリング・システムにおいてコンピュータ・クラスタ・リソースおよびデータの可用性および信頼性を向上させる方法に関する。それぞれが関連付けられたディスクを有する２つのサーバは、コンピュータ・ネットワークを介して通信する。各サーバは、コンピュータ・ネットワークに接続されたすべてのネットワーク装置のために、コンピュータ・クラスタ・リソースを提供し、コンピュータ・クラスタ・データへのアクセスを提供することができる。通信が抜け落ちた場合、各サーバは、通信の抜け落ちの理由を決定し、オペレーションを継続するべきかどうかを決定する能力を有する。
【０００９】
あるネットワーク・サーバが、別のネットワーク・サーバとの通信が抜け落ちたことを検出したとき、その通信の抜け落ちは、通信回線の障害、またはもう一方のネットワーク・サーバの障害のいずれかによるものとすることができる。各ネットワーク・サーバは、ネットワーク・データのミラーされたコピーを有するため、通信の抜け落ちに続いて、ネットワーク・サーバが互いに独立してオペレーション動作を開始しないようにするために、オペレーション動作を維持しているネットワーク・サーバで一連の動作が実行される。これらの動作がなければ、互いに独立してオペレーション動作している複数のネットワーク・サーバは、望ましくない「スプリット・ブレイン（split brain）」モードで存在することになる。このモードでは、ネットワーク・サーバ間でデータのミラーリングが実行されず、その結果、データが破損する可能性がある。
【００１０】
コンピュータ・クラスタのオペレーションが開始されたときに、１つのサーバに、コンピュータ・クラスタ・リソースおよびデータの制御が割り当てられ、通信回線に障害が起こった結果としてネットワーク・サーバ間の通信が失われた場合に「生き残る権利（right of survive）」が与えられる。便宜上、通常のオペレーション中に「生き残る権利」を有する１つのネットワーク・サーバを、本明細書では「１次」サーバと呼び、通常のオペレーション中に生き残る権利を有していない任意のサーバを「２次」サーバと呼ぶ。「１次」および「２次」という用語は、サーバの相対的な重要性を意味するのではなく、また、どのサーバが主にネットワーク装置にネットワーク・リソースを提供する責任を負うのかを指すものでもないことに注意されたい。通常のオペレーション中、１次サーバおよび２次サーバは、ネットワーク・リソースを提供するという見地から交換可能である。生き残る権利は、ネットワーク・サーバ間の通信が失われた場合にスプリット・ブレイン問題が確実に起きないようにするために、デフォルトのプロトコルで使用される。
【００１１】
１次ネットワーク・サーバが通信の抜け落ちを検出したとき、１次ネットワーク・サーバは、もう一方の２次ネットワーク・サーバに障害が起こった、あるいは２次ネットワーク・サーバがオペレーション動作を継続しないとみなすことができるため、オペレーションを継続することができる。通信の抜け落ちを検出した後すぐに２次ネットワーク・サーバによって実行される一連の動作は、やや複雑である。２次ネットワーク・サーバは、単にオペレーションを停止するのではなく、通信の抜け落ちが１次ネットワーク・サーバの障害によるものであるか、通信回線の障害によるものであるかを推測または決定する。通信回線がオペレーション動作可能な場合、２次ネットワーク・サーバは、１次ネットワーク・サーバに障害がありオペレーション動作をしていないと結論づける。この場合、２次ネットワーク・サーバは、実質的にスプリット・ブレイン問題を引き起こす危険性なしに、引き続き動作する。しかし、２次ネットワーク・サーバは、通信回線に障害があると決定した場合、１次ネットワーク・サーバがオペレーション動作可能であるとみなす。この仮定に応答して、２次ネットワーク・サーバは、スプリット・ブレイン・モードでのオペレーション動作を回避するためにオペレーションを中止する。
【００１２】
本発明による重要な利点は、最初に生き残る権利を有していない２次サーバが、１次サーバとの通信の抜け落ちが通信回線の障害によるものではないと決定した場合、オペレーション動作を継続することができることである。通信回線のどんな分析もなしに、２次サーバは、１次サーバとの通信の抜け落ちに応答して自動的にシャットダウンして、スプリット・ブレイン問題を回避することが必要とされる。サーバ間の通信の抜け落ちに応答する本発明の上記の方法では、１次サーバが障害を起こしたときに、スプリット・ブレイン・モードでオペレーション動作をする可能性によって２次サーバを強制的にオフラインにしないため、各ネットワーク・サーバが専用のミラーディスクまたは大容量記憶装置を有するコンピュータ・クラスタの信頼性および可用性が強化されることに注意されたい。
【００１３】
従来の「クォーラム」規則を、各ネットワーク・サーバが専用のミラーディスクを有するコンピュータ・クラスタに適用することは、一般には最適ではない。例えば、クォーラムを有するネットワーク・サーバが障害を起こした場合、投票してクォーラムをもう一方のネットワーク・サーバに割り当て直す共有ディスクがない。その結果、従来のクォーラム規則をこの種のコンピュータ・クラスタに直接適用することは、クォーラムを有するネットワーク・サーバが障害を起こした場合に、非クォーラムのネットワーク・サーバが不必要にシャットダウンすることになる。
【００１４】
個別のミラーディスクにデータを格納することによって、ネットワーク・データを失う可能性が大幅に減る。ネットワーク・データを失う可能性は、ネットワーク・サーバ間で単一のディスクを共有しているコンピュータ・クラスタでしばしば遭遇する問題であった。さらに、本発明によればサーバは単一のディスクを共有してはいないので、サーバの場所は、ディスク・ドライブ装置に関連付けられたケーブル長によって限定されない。したがって、ネットワーク・サーバおよびその関連付けられたミラーディスクは、他から離れた場所に配置することができる。これによって、自然災害または停電によってコンピュータ・クラスタ全体が使用不可になる可能性が減る。
【００１５】
本発明の他の特徴および利点が、以下の説明に記載されており、一部は説明から明らかになり、あるいは本発明を実施することによって学びとることができよう。本発明の特徴および利点は、頭記の特許請求の範囲で特に指摘した手法（instrument）および組合せによって実現し取得することができる。本発明のこれらおよび他の特徴は、以下の説明および頭記の特許請求の範囲からさらに十分に明らかになり、あるいは以下に記載したように本発明を実施することによって学びとることができよう。
【００１６】
上記および他の本発明の利点および特徴を取得できるやり方を説明するために、添付の図面に示した本発明の特定の実施形態を参照することによって、上記で簡単に説明した本発明のより詳細な説明を行う。これらの図面は、本発明の一般的な実施形態を示しているにすぎず、したがってその範囲を限定するものとみなされるものではないことを理解した上で、添付の図面を使用して、本発明を他の明細（specificity）および詳細について記載し説明する。
【００１７】
（発明の詳細な説明）
本発明は、コンピュータ・クラスタリング・システムにおいてコンピュータ・クラスタ・リソースおよびデータの可用性および信頼性を向上させる方法に関する。コンピュータ。クラスタは、少なくとも２つのサーバを含み、それぞれが専用の大容量記憶装置を有する。サーバは、コンピュータ・ネットワークを介して互いに、また他のネットワーク装置と通信する。データは、各サーバのディスク間でミラーされ、したがってネットワーク装置は、一方のサーバが障害を起こした場合に信頼性の高いデータにアクセスすることができる。通信モジュールは、各サーバ上で動作して、サーバ間の通信が抜け落ちた場合にサーバ自体がシャットダウンするべきかどうかを決定する。
【００１８】
「生き残る権利」という用語は、サーバ間の通信回線のエラーのためにサーバ間の通信の抜け落ちが検出された場合に、サーバがオペレーションを継続する権利を有しているかどうかに関連する。例えば、２つのサーバ間の通信の抜け落ちが検出され、こうした抜け落ちが通信回線における物理的破損による場合、生き残る権利を有するサーバは引き続き動作し、一方生き残る権利を有していないサーバはそれ自体でシャットダウンする。上述したように、「１次」サーバは、通信が抜け落ちる前に生き残る権利を有しているサーバであり、「２次」サーバは、サーバ間の通信が抜け落ちる前に生き残る権利を有していないサーバである。
【００１９】
「スプリット・ブレイン」という用語は、ネットワーク・サーバごとに専用の大容量記憶装置を有するコンピュータ・クラスタのネットワーク・サーバが互いに独立してミラーリングなしに動作する望ましくない状態、に関連する。本発明がなければ、ネットワーク・サーバ間の通信が失われ、その際に両方のネットワーク・サーバがその後も依然として動作し続けて、もう一方が障害を起こしていると各ノードがみなしているときに、スプリット・ブレインが起こり得る。スプリット・ブレインが起こると、各サーバ上のミラー・データはもはや一致せず、破損することになる。通信回線に物理的な破損があるためにサーバが通信を失った上記の例に関連して、サーバが、その抜け落ちは物理的な破損によるものであると決定することができない場合、それぞれはオペレーション動作を継続し、それ自体のデータをその関連付けられた大容量記憶装置に書き込むことになる。しかし、通信回線が破損しているため、データはミラーされず、その結果大容量記憶装置には矛盾したデータがもたらされることになる。本発明は、通信の抜け落ちの原因が１次サーバの障害による場合に２次サーバがオペレーション動作を継続できるようにしながら、コンピュータ・クラスタがスプリット・ブレイン・モードでオペレーション動作するのを防ぐ。
【００２０】
また、本発明の範囲内の実施形態は、コンピュータ実行可能命令またはデータ構造を、含むまたは格納するコンピュータ可読媒体も含む。こうしたコンピュータ可読媒体は、汎用または専用コンピュータからアクセスでき、それらに使用可能な任意の媒体とすることができる。それだけには限定されないが、一例として、こうしたコンピュータ可読媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、または他の光学ディスク記憶装置、磁気ディスク記憶装置または他の磁気記憶装置、またはコンピュータ実行可能命令またはデータ構造の形で所望のプログラム・コード手段を含み、または格納するために使用でき、汎用または専用コンピュータからアクセスできる他の任意の媒体、を含むことができる。情報を、ネットワークまたは他の通信接続（有線、無線、または有線および無線の組合せ）を介してコンピュータに転送または提供するとき、コンピュータは、その接続をコンピュータ可読媒体として適切にみなす。したがって、こうした接続は、適切にコンピュータ可読媒体と呼ばれる。上記の組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。コンピュータ実行可能命令には、例えば、汎用コンピュータ、専用コンピュータ、または専用処理装置にある機能または機能群を実行させる命令およびデータが含まれる。
【００２１】
図２および以下の説明は、本発明を実装できる適切なコンピューティング環境の簡単で一般的な説明を提供するものである。必ずしも必要ではないが、本発明は、プログラム・モジュールなど、ネットワーク環境でコンピュータによって実行されるコンピュータ実行可能命令の一般的な文脈で説明する。一般にプログラム・モジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。コンピュータ実行可能命令、関連付けられたデータ構造、およびプログラム／モジュールは、本明細書に開示した方法のステップを実行するプログラム・コード手段の例を表す。こうした実行可能命令または関連付けられたデータ構造の特定のシーケンスは、こうしたステップに記載されている機能を実装するための対応する動作の例を表す。
【００２２】
本発明は、パーソナル・コンピュータ、ハンドヘルド装置、マルチ・プロセッサ・システム、マイクロ・プロセッサ・ベースまたはプログラム可能家庭用電化製品、ネットワークＰＣ、ミニ・コンピュータ、メインフレーム・コンピュータなどを含む多くのタイプのコンピュータ・システム構成とともにネットワーク・コンピューティング環境で実施できることを、当分野の技術者であれば理解されよう。本発明はまた、通信ネットワークを介して（有線リンク、無線リンク、または有線リンクおよび無線リンクの組合せで）リンクされたローカル処理装置およびリモート処理装置でタスクを実行する分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラム・モジュールを、ローカルおよびリモートのメモリ記憶装置に配置することができる。
【００２３】
図２は、本発明の方法を実施できる代表的なコンピュータ・クラスタ構成を示す。コンピュータ・クラスタは、サーバＡ２１０およびサーバＢ２２０と呼ぶ２つのサーバを含む。図２にはサーバを２つのみ示しているが、本明細書に開示した一般的な原理を、２つを超えるネットワーク・サーバを有するコンピュータ・クラスタに容易に適合させることができる。サーバＡ２１０およびサーバＢ２２０は、ファイル・オペレーティング・システム（file operating system）を実行する。ファイル・オペレーティング・システムは、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ＮＴでもよいが、様々なオペレーティング・システムのうちのどれでも本発明で使用することができる。サーバＡ２１０は、ネットワーク・インターフェース２１１を介してネットワーク２０１に接続されたコンピュータ２１２、および大容量記憶装置コントローラ２１３を介して接続された大容量記憶装置２１４を含む。同様に、サーバＢ２２０は、ネットワーク・インターフェース２２０を介してネットワーク２０１に接続されたコンピュータ２２２、および大容量記憶装置コントローラ２２３を介して接続された大容量記憶装置２２４を含む。ネットワーク２０１は、Ｅｔｈｅｒｎｅｔ（登録商標）、トークンリング、Ａｒｃｎｅｔ、またはサーバＡ２１０およびサーバＢ２２０がそれによってネットワーク装置２３０、２４０、２５０と通信できる他の任意のネットワークとすることができる。
【００２４】
サーバＡ２１０が必ずしもサーバＢ２２０と同じ構成要素を有している必要はないが、多くの場合、実際にそうである。別の例では、サーバＡ２１０とサーバＢ２２０で、プロセッサタイプ、プロセッサ速度、大容量記憶装置のサイズが異なっていてもよく、またはその他のハードウェアの違いがいくつあってもよい。サーバＡ２１０およびサーバＢ２２０に必要なことは、ファイル・オペレーティング・システムを実行することができ、サーバの一方にあるドライブがもう一方のサーバにミラーできないほど大きくないことだけである。
【００２５】
図２に示した実施形態では、サーバＡ２１０とサーバＢ２２０の間の通信は、専用リンク２０２を使用して確立される。コンピュータ２１２は、コンピュータ接続機構２１５を介して専用リンク２０２に接続され、コンピュータ２２２は、コンピュータ接続機構２２５を介して専用リンク２０２に接続される。専用リンク２０２は、当分野の技術者によく知られている様々な手法を使用して実装することができる。一実施形態では、専用リンク２１２は、Ｅｔｈｅｒｎｅｔ（登録商標）プロトコルを使用するリンクである。代替は、高速で実行するようにプログラムされたコンピュータ２１２および２２２のシリアル通信ポート、またはコンピュータ２１２および２２２のパラレル・インターフェースの使用を含む。もう１つの代替によれば、専用リンク２０２および通信接続機構２１５および２２５はなく、サーバＡ２１０およびサーバＢ２２０の間の通信は、ネットワーク２０１を介して搬送される仮想回路または仮想チャネルで確立される。専用リンク２０２の実装に使用するハードウェアの特定のタイプは重要ではなく、データ転送速度が、大容量記憶装置２１４および２２４でのデータ転送速度と同等であり、システムのパフォーマンスが限定されなければよい。
【００２６】
ネットワーク装置２３０、２４０、２５０は、それぞれネットワーク・インターフェース２３１、２４１、２５１を介してネットワーク２０１に接続する。これらは、コンピュータ・システム２１０および２２０のリソースを使用して、大容量記憶装置２１４および２２４に格納されているデータにアクセスするクライアント装置である。ネットワーク装置２３０、２４０、および２５０は、ネットワーク２０１を介して通信できるものであればどんな装置でもよい。
【００２７】
コンピュータ・クラスタのオペレーション中、サーバＡ２１０およびサーバＢ２２０は、ネットワーク装置２３０、２４０、または２５０のいずれかにリソースを提供することができる。さらに、サーバＡ２１０およびサーバＢ２２０は、専用リンク２０２の保全性（integrity）のエラーを感知することができる。サーバＡ２１０と通信するネットワーク装置が、大容量記憶装置２１４にデータを追加する、そこのデータを変更する、あるいはそこからデータを削除するとき、この更新は、専用リンク２０２を介して大容量記憶装置２２４にミラーされる。同様に、サーバＢ２２０と通信するネットワーク装置が、大容量記憶装置２２４にデータを追加する、そこのデータを変更する、あるいはそこからデータを削除するとき、この更新は、専用リンク２０２を介して大容量記憶装置２１４にミラーされる。図２の実施形態では、データが専用リンク２０２を介してミラーされるので、ネットワーク２０１が混雑しない。
【００２８】
ミラーリングの結果、大容量記憶装置２１４および２２４は、すべてのコンピュータ・クラスタ・データの同じコピーを含んでいる。したがってコンピュータ・クラスタは、大容量記憶装置のいずれかが誤作動した場合も引き続き確実にオペレーション動作をすることができる。ネットワーク装置２３０、２４０、２５０は、大容量記憶装置２１４の誤作動の結果大容量記憶装置２１４のデータにアクセスできない場合、大容量記憶装置２２４のデータにアクセスすることができ、またその逆も可能である。サーバＡ２１０およびサーバＢ２２０が大容量記憶装置を共有していないため、シングル・ポイント障害（single point of failure）がなく、互いに離して配置することができる。サーバＡ２１０およびサーバＢ２２０をリモートに配置することによって、両方の大容量記憶装置に同時にアクセスすることを妨げる停電または自然災害の可能性が低減する。
【００２９】
サーバＡ２１０およびサーバＢ２２０を初期構成するとき、オペレータによって、サーバの一方に生き残る権利が割り当てられる。この場合、生き残る権利は、ソフトウェア・フラグとして表され、「オン」または「オフ」のいずれかに設定される。一般に、コンピュータ・クラスタの通常のオペレーション中、生き残る権利のフラグは、ただ１つのサーバのみで「オン」に設定される。初期構成後、生き残る権利のフラグが「オフ」のサーバは、以下により詳しく開示するように、あるネットワーク条件に基づいて生き残る権利のフラグを「オン」にすることができる。
【００３０】
サーバ間の通信が失われた場合、どのサーバがクラスタ・オペレーションを続行するためのもので、どのサーバがクラスタ・オペレーションを中止するためのものかを決定するのに「生き残る権利」を使用する。サーバＡ２１０とサーバＢ２２０の間の通信の抜け落ちが起こるのは主に２つの場合がある。第１の場合は、例えば、サーバの一方がソフトウェア・エラーまたはサーバの停電に遭遇した結果、そのサーバが専用リンク２０２を介した通信を中止するときに起こる。第２の場合は、専用リンク２０２の保全性に障害があるときに起こる。
【００３１】
上述したように、サーバＡ２１０およびサーバＢ２２０は、通信障害のタイプを区別することができる。以下の考察では、サーバＢ２２０が、コンピュータ・クラスタの通常のオペレーションの初期期間中に生き残る権利を有していることを意味する１次サーバであり、一方サーバＡ２１０は、生き残り権利を初期において有していない２次サーバであると仮定する。１次サーバＢ２２０がサーバＡ２１０からの通信の抜け落ちを検出した場合、サーバＢ２２０は、通信の抜け落ちが通信リンク２０２の障害に起因するかあるいはサーバＡ２１０の障害に起因するかに関係なく、生き残る権利の点から見て、オペレーション動作を継続する。
【００３２】
２次サーバＡ２１０は、サーバＢ２２０からの通信の抜け落ちを検出したとき、サーバＡ２１０は、それが生き残る権利を引き受けるのに安全であると決定しない場合は、オペレーションを打ち切る。サーバＡ２１０が、通信の抜け落ちは通信リンク２０２の障害によるものであると決定した場合、サーバＡ２１０は、１次サーバＢ２２０はオペレーション動作可能であるとみなす。したがってサーバＡ２１０は、生き残る権利を有していないため、スプリット・ブレイン・モードでのオペレーション動作を避けるためにアクティビティを中止する。しかし、２次サーバＡ２１０は、通信リンク２０２が障害を起こしていないと決定した場合、通信の抜け落ちは、障害を起こしている、またはそうでない場合でももはやネットワークにサービスを提供していない１次サーバ２２０Ｂに関連付けられているとみなす。この場合、２次サーバＡ２１０は、それ自体に生き残る権利を割り当て、コンピュータ・クラスタにおいてスプリット・ブレインを引き起こす危険性なしにオペレーションを継続する。後者の場合、サーバＡ２１０は、そうでない場合は障害があるサーバＢ２２０に向けられることになるネットワーク装置２３０、２４０、２５０からのリソースの要求に応えることができる。上記状況のいずれにおいても、１つのサーバのみが、サーバ間で通信の抜け落ちに遭遇した後に、引き続き機能し、これによってスプリット・ブレインの問題が起こるのを防ぐ。
【００３３】
図３は、本発明の一実施形態による代表的なコンピュータ・ソフトウェア上で実行する様々なソフトウェア・モジュールの相互関係を示す。図３のシステムおよび構造は、サーバＡ２１０が、他のサーバとの通信の抜け落ちを検出した後、引き続き機能すべきかどうかをどのようにして決定し、生き残る権利をどのようにして引き受けるかの一例を表している。コンピュータ・クラスタのオペレーションが起動されたときに、生き残る権利のフラグ３０６は、自動的に、あるいはシステム管理者によって初期設定される。上述したように、生き残る権利のフラグ３０６が「オン」に設定されているサーバは、その原因が専用リンク２０２の保全性のエラーによるか、もう一方のサーバの障害によるかに関係なく、もう一方のサーバとの通信が抜け落ちた場合に引き続き機能する。本明細書で大まかに開示している本発明は、「オン」位置に初期設定された生き残る権利のフラグ３０６を有し、通信の抜け落ちに遭遇した後にオペレーションを継続する１次サーバにも適用されるが、図３は、生き残る権利のフラグ３０６が「オフ」位置に設定されている間に通信を失う２次サーバの文脈で以下に詳しく説明する。
【００３４】
サーバＡ２１０は、コンピュータ・クラスタでオペレーション動作するので、サーバは、図３に示したように、コンピュータ・クラスタの構成要素間でデータを送受信する。データ３０８は、専用リンク２０２を介してサーバＡ２１０に通信するサーバＢ２２０のハートビート信号を表す。本明細書で使用するときは、「ハートビート信号（heartbeat signal）」という用語は、一方のサーバが、もう一方のサーバはオペレーション動作可能であるかどうか、を決定するために使用することができる任意の形式の任意の信号またはデータに適用される。通信接続ドライバ３０１は、通信接続機構２１５を制御し、データ３０８を受信するソフトウェア・モジュールである。同様に、データ３０９は、ネットワーク２０１を介して送信されるデータを表す。ネットワーク・インターフェース・ドライバ３０２は、ネットワーク・インターフェース２１１を制御し、データ３０９を受信する。
【００３５】
サーバＡ２１０は、データ３０８、およびデータ３０８および専用リンク２１０を処理し分析するモジュールを使用して、生き残る権利のフラグ３０６が「オフ」位置に設定されているときに、サーバＢ２２０との通信がその時に失われたとの決定に応答してオペレーションを続行するか打ち切るかを決定することができる。サーバＡ２１０は、サーバＢ２２０との通信を監視して、データ３０８が予想通りに受信されているかどうかを決定するサーバ通信検出器を含む。リンク状態検出器３０４は、サーバＢ２２０との通信が失われたときに専用リンク２０２が障害を起こしたかどうかを決定することができる任意のハードウェア構成要素、ソフトウェア構成要素、またはそれらの任意の組合せである。サーバ通信検出器３０３およびリンク状態検出器３０４は、これら２つの構成要素の機能を組み合わせて、単一の構造にすることができるけれども、多くの場合、個別モジュールとされる。
【００３６】
この例では、通信検出器３０３およびリンク状態検出器３０４は、データ３０８、および専用リンク２０２の保全性を監視する。しかし、サーバＢ２２０との通信が、専用リンク２０２ではなく、ネットワーク２０１およびネットワーク・インターフェース・ドライバ３０２を使用して送信される代替実施形態では、サーバ通信検出器３０３およびリンク状態検出器３０４は、データ３０９、およびネットワーク２０１の保全性を監視する。
【００３７】
いずれの場合においても、サーバ通信検出器３０３は、サーバＢ２２０のハートビート信号が検出されるかどうかを決定する。サーバＢ２２０のハートビート信号が抜け落ちた場合、リンク状態検出器は、ハートビート信号を搬送している通信リンク（例えば、専用リンク２０２またはネットワーク２０１）の保全性を分析する。サーバＢ２２０との通信の抜け落ちに遭遇したとき、サーバ通信検出器３０３およびリンク状態検出器３０４は、この事実、およびハートビート信号を搬送している通信リンクが障害を起こしたように思われるかどうかを通信の抜け落ちのマネージャ（loss of communication manager）３０５に通知する。次いで通信の抜け落ちのマネージャ３０５によって、生き残る権利のフラグ３０６、サーバ通信検出器３０３およびリンク状態検出器３０４から受信した情報に基づいて、サーバＡ２１０をシャットダウンするか、あるいはサーバＡがオペレーション動作を継続するのを許すかを決定する。
【００３８】
通信の抜け落ちのマネージャ３０５によって適用される規則を要約すると、サーバＡ２１０は生き残る権利を有していることを生き残る権利のフラグ３０６が示している場合、サーバＡ２１０は、オペレーション動作を継続することが許される。しかし、サーバＢ２２０との通信が失われたときに、生き残る権利のフラグ３０６に従って、サーバＡ２１０は生き残る権利を有していない２次サーバであると仮定すると、通信の抜け落ちの原因は通信リンクの障害によるものと決定された場合、通信の抜け落ちのネージャ３０５によって、サーバＡ２１０のオペレーションが打ち切られる。通信の抜け落ちが通信リンクの障害によるものである場合、サーバＢ２２０がオペレーション動作可能であるとみなされ、この場合、サーバＡ２１０はオペレーションを打ち切り、それによってスプリット・ブレイン・モードでコンピュータ・クラスタをオペレーション動作させる可能性が回避される。
【００３９】
一方、サーバＡ２１０がサーバＢ２２０からの通信の抜け落ちを検出し、通信リンクは障害を起こしていないと、通信の抜け落ちのマネージャ３０５が決定した場合、通信の抜け落ちのマネージャ３０５は、サーバＢ２２０が正しく動作していないと推測する。サーバＡ２１０が２次サーバであると仮定すると、次いで、生き残る権利のフラグ３０６は、サーバＡ２１０が生き残る権利を引き受けることを示す、「オン」位置に設定される。この場合、サーバＡ２１０は、サーバＢ２２０に以前なされた要求への対応を開始することによって、コンピュータ・クラスタを「再構成（reform）」する。サーバＡ２１０は、ネットワーク・インターフェース・ドライバ３０２に、ネットワーク装置がネットワーク２０１を介してサーバＢ２２０に送信した要求に応えさせるようにするコマンドをネットワーク・インターフェース・ドライバ３０２に送信することによって、それを行うことができる。
【００４０】
図４は、１次サーバ（すなわち生き残る権利を初期状態で有しているサーバ）の障害時にネットワーク・リソースの可用性を向上させるために、本発明の一実施形態に従ってコンピュータ・クラスタの２次サーバ（すなわちまだ生き残る権利を有していないサーバ）で実行するステップを示す流れ図である。図５を参照して以下でより詳しく説明するように、１次サーバは一般に、それが所有する生き残る権利によって、通信の抜け落ちの理由に関係なく引き続きオペレーション動作することができるので、２次サーバとの通信が失われた後、図４に示したステップを実行する必要はないことに注意されたい。
【００４１】
まず図４を参照すると、決定ブロック４０１で、２次サーバＡは、サーバＢとの信頼性の高い通信を検出しようと試みる。サーバＡが、サーバＢとの信頼性の高い通信を検出することができた場合、この方法はステップ４０２に進み、サーバＡは、ある時間間隔の間待ち、次いで決定ブロック４０１を繰り返す。
【００４２】
決定ブロック４０１で、サーバＡがサーバＢとの信頼性の高い通信を検出しなかった場合、決定ブロック４０３で、サーバＡは、通信リンクの信頼性をチェックする。決定ブロック４０２で、サーバＡが信頼性の高い通信リンクを検出しなかった場合、サーバＡは、ステップ４０５で、スプリット・ブレイン・モードで動作するのを避けるためにクラスタ・アクティビティを中止する。
【００４３】
しかし、決定ブロック・ステップ４０３で、サーバＡが信頼性の高い通信リンクを検出した場合、この方法は決定ブロック４０７に進み、サーバＢが障害を起こしたとみなすことになる前にサーバＡが要求された時間間隔数の間待ったかどうかが決定される。決定ブロック４０７に従って、サーバＡが要求された時間間隔数の間待たなかった場合、この方法は、ステップ４０８に進み、サーバＡは、１つの時間間隔の間待つ。ステップ４０８の時間間隔の間待った後、決定ブロック４０９で、サーバＡは、サーバＢとの信頼性の高い通信を再度検出しようと試みる。ステップ４０９で、サーバＡが、サーバＢとの信頼性の高い通信を検出した場合、この方法はステップ４０２に戻る。クラスタの再構成前にステップ４０７、４０８、４０９によって定義されたループに従って再確立された通信があるかどうかを繰り返しチェックすることによって、サーバＢにおける短時間の非致命的ソフトウェア・エラーで、サーバＢの代わりにサーバＡがオペレーション動作を開始することを防ぐ。
【００４４】
要求された試行数の後、サーバＡがサーバＢから信頼性の高い通信を検出しなかった場合、サーバＡは、ステップ４１１で、それ自体に生き残る権利を割り当て、次いでステップ４１２でクラスタを再構成する。ステップ４１２で、サーバＡがクラスタを再構成した後、決定ブロック４１３で、サーバＢから信頼性の高い通信があるかどうかのチェックを再度開始する。サーバＢが非終了（non-terminating）ソフトウェア・エラーから回復した場合、クラスタが再構成された後、ハートビート信号の送信を再開したり、あるいはサーバＡとの通信を再開したりするかもしれない。サーバＢからの通信が検出されない限り、サーバＡは、オペレーション動作を続け、決定ブロック４１３およびステップ４１４に示すループで、サーバＢからの通信があるかどうかを定期的に監視する。決定ブロック４１３での検出時にサーバＢからの通信が再確立された場合、処理はステップ４１５に進み、任意のディスク・アクセスが許可される前に、ステップ４１５でサーバＢがシャットダウンし、それによってスプリット・ブレイン・モードでのオペレーション、およびサーバＡおよびサーバＢの大容量記憶装置での関連付けられたデータの不一致が回避される。
【００４５】
生き残る権利を有する１次サーバは、図５の方法のステップを実行して、本発明の一実施形態に従ってもう一方のサーバからの通信の抜け落ちに応答する。決定ブロック５０１で、１次サーバＢは、サーバＡとの信頼性の高い通信の検出を試みる。サーバＢが、サーバＡとの信頼性の高い通信を検出することができる場合、この方法はステップ５０２に進み、サーバＢは、ある時間間隔の間待ち、次いで決定ブロック５０１を繰り返す。
【００４６】
決定ブロック・ステップ５０１で、サーバＢがサーバＡとの信頼性の高い通信を検出しなかった場合、この方法は決定ブロック５０７に進み、サーバＡが障害を起こしたとみなすことになる前にサーバＢが要求された時間間隔数の間待ったかどうかが決定される。決定ブロック５０７に従って、サーバＢが要求された時間間隔数の間待たなかった場合、この方法は、ステップ５０８に進み、サーバＢは、１つの時間間隔の間待つ。ステップ５０８の時間間隔の間待った後、決定ブロック５０９で、サーバＢは、サーバＡからの信頼性の高い通信を再度検出しようと試みる。ステップ５０９で、サーバＢが、サーバＡとの信頼性の高い通信を検出した場合、この方法はステップ５０２に戻る。クラスタの再構成前にステップ５０７、５０８、５０９によって定義されたループを使用して再確立された通信があるかどうかを繰り返しチェックすることによって、サーバＡにおける短時間の非致命的ソフトウェア・エラーで、サーバＡの代わりにサーバＢがオペレーション動作を開始することを防ぐ。
【００４７】
要求された試行数の後、サーバＢがサーバＡから信頼性の高い通信を検出しなかった場合、ステップ５１２で、サーバＢは、クラスタを再構成する。ステップ５１２で、サーバＢがクラスタを再構成した後、決定ブロック５１３で、サーバＡから信頼性の高い通信があるかどうかのチェックを再度開始する。サーバＡは、非終了ソフトウェア・エラーから回復した場合、クラスタが再構成された後、ハートビート信号の送信を再開したり、あるいはサーバＢとの通信を再開したりするかもしれない。サーバＡからの通信が検出されない限り、サーバＢは、決定ブロック５１３およびステップ５１４に示すループで、サーバＡからの通信があるかどうかを定期的に監視し続ける。決定ブロック５１３での検出時にサーバＡからの通信が再確立された場合、処理はステップ５１６に進み、サーバＢがクラスタを再構成して、サーバＡの再開されたオペレーション動作に対応する。
【００４８】
本発明は、本発明の意図または本質的特性から逸脱することなく他の特定の形態で具現化することができる。記載した実施形態は、あらゆる点で例示的なものにすぎず、制限的なものとみなされないものとする。したがって本発明の範囲は、上記の説明ではなく頭記の特許請求の範囲によって示される。特許請求の範囲の意図および均等物の範囲内のすべての変更は、その範囲内に含まれるものとする。
【図面の簡単な説明】
【図１】  １つのディスクを共有する複数のサーバを有する従来のコンピュータ・クラスタを示すブロック図である。
【図２】  本発明の適切なオペレーティング動作環境を提供するコンピュータ・クラスタの一例を示す図である。
【図３】  サーバが生き残る権利を引き受けるかどうかを決定できるようにする、サーバ内の異なるソフトウェア・モジュール間の通信を示す図である。
【図４】  サーバがそれによってもう一方のサーバとの通信の抜け落ちを検出した後で、生き残る権利を引き受けるかどうかを決定する方法を示す流れ図である。
【図５】  生き残る権利を有するサーバがそれによってコンピュータ・クラスタ内のもう一方のサーバの障害に応答する方法を示す流れ図である。
【図１】
0004500490.tif 000002
【図２】
0004500490.tif 000003
【図３】
0004500490.tif 000004
【図４】
0004500490.tif 000005
【図５】
0004500490.tif 000006