(57)【要約】【課題】ノード数が過半数未満になった場合にもクラスタ機能の停止を防ぐこと。【解決手段】他のクラスタグループとの間で通信障害が発生すると、引継ぎ部３ａは、自ノードが属するクラスタグループのノード数が半数を超える場合には、該クラスタグループを第１優先とする。また、引継ぎ部３ａは、自ノードが属するクラスタグループのノード数が１ではないが半数を超えず、該クラスタグループが運用ノードを含む場合には、該クラスタグループを第２優先とする。また、引継ぎ部３ａは、自ノードが属するクラスタグループのノード数が１ではないが半数を超えず、該クラスタグループが運用ノードを含まない場合には、該クラスタグループを第３優先とする。【選択図】図２
2019128803.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードグループを備える処理システムにおける処理の引き継ぎ方法において、
前記複数のノードグループの各ノードグループは、他のノードグループとの間の通信障害を検出すると、自ノードグループに含まれるノードの総数に応じた優先度で引継ぎ処理を開始し、
前記処理システムに含まれるノードの総数の半数を超えるノードを含むノードグループの優先度は、他のノードグループの優先度より高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含むノードグループの優先度は、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度よりも高い、
ことを特徴とする処理の引継ぎ方法。
【請求項２】
前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度は、性能に応じて運用ノードよりも低い優先度が割り当てられた各ノードのうち、最も高い優先度とする、
ことを特徴とする請求項１記載の処理の引継ぎ方法。
【請求項３】
前記運用ノードはデータベースを更新し、
前記ノードのうち前記運用ノード以外の待機ノードは、前記データベースの複製を有し、前記運用ノードからデータベースの更新差分を受信して自データベースを更新し、
前記優先度は、前記更新差分を一時的に蓄積するファイルへの書込性能に基づくことを特徴とする請求項１又は２記載の処理の引継ぎ方法。
【請求項４】
前記引継ぎ処理は、前記優先度に基づく時間が経過すると他のノードグループに含まれるノードにフェンシングを行う処理を含むことを特徴とする請求項１、２又は３記載の処理の引継ぎ方法。
【請求項５】
複数のノードグループを備える処理システムにおける処理の引き継ぎを行うクラスタ構築プログラムにおいて、
前記複数のノードグループの各ノードグループは、他のノードグループとの間の通信障害を検出すると、自ノードグループに含まれるノードの総数に応じた優先度で引継ぎ処理を開始する処理をコンピュータに実行させ、
前記処理システムに含まれるノードの総数の半数を超えるノードを含むノードグループの優先度は、他のノードグループの優先度より高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含むノードグループの優先度は、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度よりも高い、
ことを特徴とするクラスタ構築プログラム。
【請求項６】
複数のノードグループを備える処理システムにおける処理の引き継ぎを行うクラスタ構築装置において、
前記複数のノードグループの各ノードグループは、他のノードグループとの間の通信障害を検出すると、自ノードグループに含まれるノードの総数に応じた優先度で引継ぎ処理を開始する引継ぎ部を有し、
前記処理システムに含まれるノードの総数の半数を超えるノードを含むノードグループの優先度は、他のノードグループの優先度より高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含むノードグループの優先度は、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度よりも高い、
ことを特徴とするクラスタ構築装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置に関する。
【背景技術】
【０００２】
運用ノードと複数の待機ノードを有するクラスタシステムにおいて、運用ノードに障害が発生すると、いずれかの待機ノードが運用ノードとなって、運用ノードの処理を引継ぐ。ここで、ノードは、例えばデータベースを管理する情報処理装置である。運用ノードは、データベースの更新を行う情報処理装置であり、待機ノードは、データベースの複製を有し、運用ノードからデータベースの更新差分を受け取って自身のデータベースを更新する情報処理装置である。
【０００３】
待機ノードが複数あるマルチスタンバイのシステムでは、スプリットブレインの発生を回避することが必要である。ここで、スプリットブレインとは、ハードウェアやインターコネクトの障害によりクラスタシステムが分断され、複数の待機ノード群で運用ノードの処理を引継ごうとすることである。
【０００４】
図９は、マルチスタンバイにおけるスプリットブレイン回避を説明するための図である。図９において、「運」で示されるノード９２は運用ノードであり、「待」で示されるノード９２は待機ノードである。運用ノードで障害が発生した場合、待機ノード間でどの待機ノードを運用ノードとするかを合意できれば、スプリットブレインを回避することができる。
【０００５】
しかしながら、待機ノード間の通信に異常があると、待機ノード間の合意が中断し、フェイルオーバ停止が発生する。あるいは、相手ノードのフェンシングにより相撃ちが発生すると、両系停止が発生する。ここで、フェンシングとは、クラスタシステムからノード９２を取り除くことである。
【０００６】
このようなフェイルオーバ停止あるいは両系停止の発生を避けるために、どの待機ノードを運用ノードとするかを決定する第３者ノードを設ける技術がある。しかしながら、第３者ノードを設けると、第３者ノードが単一障害点となり、待機ノード数に比例した可用性が実現することができない。
【０００７】
そこで、クォーラムを採用することが考えられる。クォーラムでは、クラスタシステムを構成するノード９２の過半数以上の通信可能なノード群がクラスタシステムを継承することでスプリットブレインが回避される。
【０００８】
なお、スプリットブレインに関する技術として、ネットワークベースの分散コンピューティング環境で発生するスプリットブレイン状況においてメジャーグループを決定する技術がある。この技術は、第１グループのノード数と第２グループのノード数とを比較し、第１グループのノード及び第２グループのノードの履歴情報を取得する。そして、この技術は、ノード数の比較結果及び履歴情報の少なくともいずれかを用いて、第１グループ又は第２グループをメジャーグループと決定する。
【０００９】
また、ネットワークスプリットが発生した場合に、グループの処理内容から、クラスタとして構築するのに最適なグループを選択する技術がある。この技術では、複数のノードのうちのいずれか所定のノードが、所定の条件を保持し、所定の条件に対応する自ノードの情報を生成し、監視パスでの通信を可能とする他ノードから、所定の条件に対応する他ノードの情報を収集する。さらに当該所定のノードは、自ノードの情報又は他ノードの情報がある場合、他ノードの情報及び自ノードの情報に基づいて、少なくとも自ノードを含む監視パスで通信可能なノードで構成される自グループの優先度を生成する。そして、当該所定のノードは、自グループの優先度と、自ノードが監視パスでの通信を不可能とするノードから構成される他グループの優先度とに基づいて、クラスタとして再構築するグループを決定する。
【００１０】
また、クォーラムに関する技術として、２ノード分散型コンピュータ・システムにおいて障害を発生したノードが共有資源の予約を放棄することを必要としないクォーラム機構がある。このクォーラム機構では、障害を発生した分散型コンピュータ・システムの各ノードは、クォーラム・コントローラとして指定された２つの共有記憶装置の予約を成功させることによるクォーラムを達成する競争を行う。分散型コンピュータ・システムの正常動作の間、クォーラム・コントローラの各々は、各ノードに関連付けられ、これによって予約されている。分散型コンピュータ・システムの障害検出に応答したクォーラムのための競争の間、障害を発生していない各ノードは、他のノードに関連するクォーラム・コントローラを強制的に予約する。１つのノードが双方のクォーラム・コントローラに対する予約を保持した場合、このノードはクォーラムを獲得したことになる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１０−１８６４７２号公報
【特許文献２】国際公開第２０１１／１３５６２８号
【特許文献３】特開平１０−１１６２５９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
クォーラムでは、構成ノードの過半数以上の通信可能なクラスタノード群がクラスタシステムを継承する権利を有するため、ノード数が過半数未満になるとクォーラムが不成立となり、クラスタ機能が停止するという問題がある。
【００１３】
本発明は、１つの側面では、ノード数が過半数未満になった場合にもクラスタ機能の停止を防ぐことを目的とする。
【課題を解決するための手段】
【００１４】
１つの態様では、処理の引き継ぎ方法は、複数のノードグループを備える処理システムにおける処理を引き継ぐ方法である。前記引継ぎ方法は、前記複数のノードグループの各ノードグループは、他のノードグループとの間の通信障害を検出すると、自ノードグループに含まれるノードの総数に応じた優先度で引継ぎ処理を開始する。処理システムに含まれるノードの総数の半数を超えるノードを含むノードグループの優先度は、他のノードグループの優先度より高い。また、処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含むノードグループの優先度は、処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度より高い。
【発明の効果】
【００１５】
１つの側面では、本発明は、ノード数が過半数未満になった場合にもクラスタ機能の停止を防ぐことができる。
【図面の簡単な説明】
【００１６】
【図１】図１は、クラスタグループの優先度を説明するための図である。
【図２】図２は、実施例に係るクラスタシステムの構成を示す図である。
【図３】図３は、クラスタグループの優先度及びハンデを示す図である。
【図４】図４は、ハンデの一例を示す図である。
【図５】図５は、引継ぎ部による処理のフローを示すフローチャートである。
【図６Ａ】図６Ａは、ハンデを決定する処理において待機ノードが行う処理のフローを示すフローチャートである。
【図６Ｂ】図６Ｂは、ハンデを決定する処理において運用ノードが行う処理のフローを示すフローチャートである。
【図７】図７は、実施例に係るクラスタシステムの効果を説明するための図である。
【図８】図８は、実施例に係るクラスタ構築プログラムを実行するコンピュータのハードウェア構成を示す図である。
【図９】図９は、マルチスタンバイにおけるスプリットブレイン回避を説明するための図である。
【発明を実施するための形態】
【００１７】
以下に、本願の開示する処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１８】
まず、クラスタグループの優先度について説明する。ここで、クラスタグループとは、クラスタシステムに含まれるノードのグループである。クラスタシステムは、異常が検出されると、複数のクラスタグループに分けられる。各クラスタグループには１つ以上のノードが属する。クラスタグループ内ではノード間の通信が可能であるが、異なるクラスタグループ間では通信は可能でない。クラスタシステムの初期状態では、クラスタシステムに含まれる全ノードが属するクラスタグループが１つある。
【００１９】
図１は、クラスタグループの優先度を説明するための図である。図１において、「運」で示されるノード２は運用ノードであり、「待」で示されるノード２は待機ノードである。各ノード２の上に付加された１０ｓ（秒）〜７０ｓは、各ノード２のハンデを表す。ハンデは、各ノード２がフェンシングを開始するまでの秒数である。運用ノードのハンデは待機ノードのハンデよりも小さい。
【００２０】
図１（ａ）では、クラスタシステムを構成する５台のノード２が、２台（ノード＃１及びノード＃２）のクラスタグループ２１と３台（ノード＃３〜ノード＃５）のクラスタグループ２２に分けられる。クラスタグループ２２は、構成ノード数が過半数のクラスタグループであり、第１優先（優先度が１）でクラスタシステムを引き継ぐ。クラスタシステムを引き継いだクラスタグループ２２のハンデは０ｓと決定される。クラスタグループ２２には運用ノードが含まれないので、待機ノードのうち最もハンデが少ないノード＃３がリーダとなって、クラスタグループ２１に属するノード２に対して０ｓ後にフェンシングを開始する。
【００２１】
一方、クラスタグループ２１は、過半数のクラスタグループではない。このため、クラスタグループ２１のハンデは、２台のノード２のハンデの最小値１０ｓと決定される。２台のノード２のうち最もハンデが少ないノード＃１がリーダとなり、１０ｓ後にフェンシングを開始しようとするが、その前にクラスタグループ２２のリーダにフェンシングされる。
【００２２】
図１（ｂ）では、クラスタシステムを構成する７台のノード２が、２台（ノード＃１１及びノード＃１２）のクラスタグループ２３と３台（ノード＃１３〜ノード＃１５）のクラスタグループ２４と残りの２台のノード２に分けられる。構成ノード数が過半数のクラスタグループはなく、運用ノードを含むクラスタグループ２３が第２優先でクラスタシステムを引き継ぐ。クラスタシステムを引き継いだクラスタグループ２３のハンデは、クラスタグループ２３における最小値１０ｓと決定される。クラスタグループ２３には運用ノードが含まれるで、運用ノードがリーダとなって、クラスタグループ２４に属するノード２及び残りの２台のノード２に対して１０ｓ後にフェンシングを開始する。
【００２３】
一方、クラスタグループ２４は、過半数のクラスタグループでなく運用ノードを含まない。このため、クラスタグループ２４のハンデは、３台のノード２のハンデの最小値２０ｓと決定される。３台のノード２のうち最もハンデが少ないノード＃１３がリーダとなり、２０ｓ後にフェンシングを開始しようとするが、その前にクラスタグループ２３のリーダにフェンシングされる。
【００２４】
図１（ｃ）では、クラスタシステムを構成する７台のノード２が、３台（ノード＃２１〜ノード＃２３）のクラスタグループ２５と２台（ノード＃２４及びノード＃２５）のクラスタグループ２６と残りの２台のノード２に分けられる。構成ノード数が過半数のクラスタグループはなく、運用ノードを含むクラスタグループもない。このため、ハンデが最小のノード＃２１を含むクラスタグループ２５が第３優先でクラスタシステムを引き継ぐ。クラスタシステムを引き継いだクラスタグループ２５のハンデは、クラスタグループ２５における最小値２０ｓと決定される。クラスタグループ２５においてハンデが最小のノード＃２１がリーダとなって、クラスタグループ２６に属するノード２及び残りの２台のノード２に対して２０ｓ後にフェンシングを開始する。
【００２５】
一方、クラスタグループ２６は、過半数のクラスタグループでなく運用ノードを含まない。このため、クラスタグループ２６のハンデは、２台のノード２のハンデの最小値３０ｓと決定される。２台のノード２のうち最もハンデが少ないノード＃２４がリーダとなり、３０ｓ後にフェンシングを開始しようとするが、その前にクラスタグループ２５のリーダにフェンシングされる。
【００２６】
このように、各クラスタグループが、構成ノード数が過半数であるか否か、及び、運用ノードを含むか否かに基づいてクラスタグループの優先度を特定し、特定した優先度に基づいてフェンシングを行う、あるいは行おうとする。したがって、クラスタシステムは、異常が発生して過半数のノード２を含むクラスタグループがない場合にも、クラスタ機能の停止を防ぐことができる。なお、クラスタグループの構成ノード数が、過半数ではないが半数である場合、あるいは、１である場合については後述する。
【００２７】
次に、実施例に係るクラスタシステムの構成について説明する。図２は、実施例に係るクラスタシステムの構成を示す図である。図２に示すように、実施例に係るクラスタシステム１は、５台のノード２を有する。なお、クラスタシステム１は、３台以上であれば５台以外のノード２を有してよい。
【００２８】
５台のノード２のうち１台のノード２が運用ノードであり、他の４台のノード２は待機ノードである。運用ノードは、データベースの更新を行う情報処理装置であり、待機ノードは、データベースの複製を有し、運用ノードからデータベースの更新差分を受け取って自身のデータベースを更新する情報処理装置である。
【００２９】
各ノード２は、他のノード２とネットワークで接続される。ネットワークには、データベースに関する通信及びハートビートのための通信に用いられるネットワークと、フェンシングのための通信に用いられるネットワークがある。
【００３０】
各ノード２は、クラスタシステム１の構築に関する処理を行うクラスタ構築部３と、データベース４と、データベース４を管理するデータベース管理システム４ａとを有する。クラスタ構築部３は、引継ぎ部３ａとハンデ決定部３ｂとを有する。
【００３１】
引継ぎ部３ａは、クラスタシステム１に異常が発生した場合に、クラスタ機能の停止を防ぐ処理を行う。具体的には、引継ぎ部３ａは、クラスタシステム１に異常が発生した場合に、他のノード２の引継ぎ部３ａとの間でハンデの交換を行う。そして、引継ぎ部３ａは、ハンデの交換が行えたノード２の数を自ノードが属するクラスタグループのノード数として特定する。また、引継ぎ部３ａは、自ノードが属するクラスタグループに運用ノードが含まれるか否かを特定する。
【００３２】
そして、引継ぎ部３ａは、自ノードが属するクラスタグループのノード数と自ノードが属するクラスタグループに運用ノードが含まれるか否かに基づいて、自ノードが属するクラスタグループの優先度を特定する。そして、引継ぎ部３ａは、特定した優先度に基づいて、自ノードが属するクラスタグループのハンデとリーダを特定する。
【００３３】
図３は、クラスタグループの優先度及びハンデを示す図である。図３に示すように、クラスタグループの構成ノード数が過半数、又は運用ノードが存在する半数である場合には、優先度は１であり、ハンデはなし、すなわち０ｓである。また、クラスタグループの構成ノード数が運用ノードが存在する半数未満である場合には、優先度は２であり、ハンデはクラスタグループ内のノード２のハンデの最小値である。また、クラスタグループの構成ノード数が運用ノードが存在しない半数以下である場合には、優先度は３であり、ハンデはクラスタグループ内のノード２のハンデの最小値である。
【００３４】
そして、リーダとして特定されたノード２の引継ぎ部３ａは、自ノードが属するクラスタグループのハンデに基づいてフェンシングを行うか、あるいは、フェンシングを行おうとする。そして、他のノード２によりフェンシングされなければ、リーダとして特定されたノード２の引継ぎ部３ａは、自ノードを運用ノードとする。
【００３５】
ハンデ決定部３ｂは、自ノードのハンデを決定する。具体的には、自ノードが運用ノードである場合には、ハンデ決定部３ｂは、各待機ノードからデータベース４への書込性能を取得し、書込性能に基づいてハンデを決定して各待機ノードに送信する。書込性能が悪いほどハンデは大きくなる。
【００３６】
また、自ノードが待機ノードである場合には、ハンデ決定部３ｂは、データベース４の更新差分を蓄積する一時ファイルの書込性能を測定し、測定値の平均値を算出して運用ノードへ送信する。そして、ハンデ決定部３ｂは、運用ノードからハンデを受信して記憶する。
【００３７】
図４は、ハンデの一例を示す図である。図４では、待機ノード毎に書込性能とノード優先度とハンデが対応付けられる。例えば、待機ノードＡについては、書込性能は５４Ｍ／ｓｅｃ（５４メガバイト／秒）であり、書込性能が３番目に速いのでノード優先度は３であり、ハンデは３０ｓである。
【００３８】
次に、引継ぎ部３ａによる処理のフローについて説明する。図５は、引継ぎ部３ａによる処理のフローを示すフローチャートである。なお、ハートビートの応答が途絶えて異常が発生すると、図５に示す処理が起動される。
【００３９】
図５に示すように、引継ぎ部３ａは、異常発生直前のクラスタグループ内の全ノード２に対して、ハンデを送信する（ステップＳ１）。また、引継ぎ部３ａは、他のノード２からハンデを受信し（ステップＳ２）、自ノードが属するクラスタグループのノード数を特定する（ステップＳ３）。自ノードが属するクラスタグループのノード数は、ハンデを受信したノード２の数に１を加えた値である。
【００４０】
そして、引継ぎ部３ａは、クラスタグループのノード数が１であるか否かを判定し（ステップＳ４）、１でない場合には、クラスタグループのノード数が過半数である又は運用ノードを含む半数であるか否かを判定する（ステップＳ５）。
【００４１】
そして、クラスタグループのノード数が過半数である又は運用ノードを含む半数である場合には、引継ぎ部３ａは、クラスタグループの優先度を１と特定する（ステップＳ６）。そして、引継ぎ部３ａは、クラスタグループのリーダを運用ノード、又は、運用ノードが含まれない場合にはハンデの最も小さい待機ノードとし、クラスタグループのハンデを０ｓとする（ステップＳ７）。そして、引継ぎ部３ａは、ステップＳ１４へ移動する。
【００４２】
一方、クラスタグループのノード数が過半数でもなく、かつ、運用ノードを含む半数でもない場合には、引継ぎ部３ａは、クラスタグループ内に運用ノードが存在するか否かを判定する（ステップＳ８）。そして、クラスタグループ内に運用ノードが存在する場合には、引継ぎ部３ａは、クラスタグループの優先度を２と特定する（ステップＳ９）。そして、引継ぎ部３ａは、クラスタグループのリーダを運用ノードとし、クラスタグループのハンデをクラスタグループ内のノード２のハンデの最小値とする（ステップＳ１０）。そして、引継ぎ部３ａは、ステップＳ１４へ移動する。
【００４３】
一方、クラスタグループ内に運用ノードが存在しない場合には、引継ぎ部３ａは、運用ノードが存在せず、かつ、クラスタグループのノード数が過半数未満であると判定し（ステップＳ１１）、クラスタグループの優先度を３と特定する（ステップＳ１２）。そして、引継ぎ部３ａは、リーダをクラスタグループ内でハンデが最小の待機ノードとし、クラスタグループのハンデをクラスタグループ内のノード２のハンデの最小値とする（ステップＳ１３）。
【００４４】
そして、リーダの引継ぎ部３ａが、フェンシング処理を実行し（ステップＳ１４）、自ノードは運用ノードであるか否かを判定する（ステップＳ１５）。そして、自ノードは運用ノードでない場合には、リーダの引継ぎ部３ａは、自ノードを運用ノードへ昇格する（ステップＳ１６）。そして、リーダの引継ぎ部３ａは、縮退を完了する（ステップＳ１７）。
【００４５】
また、ステップＳ４において、クラスタグループのノード数が１である場合には、引継ぎ部３ａは、縮退不可と判定し（ステップＳ１８）、処理を終了する。
【００４６】
このように、引継ぎ部３ａは、クラスタグループのノード数と運用ノードの有無に基づいて優先度を特定するので、クラスタグループのノード数が過半数未満である場合にも、クラスタシステム１を縮退することができる。ここで、クラスタシステム１を縮退するとは、ノード数が減った状態でクラスタ機能を引き継ぐことである。
【００４７】
次に、ハンデを決定する処理のフローについて説明する。図６Ａは、ハンデを決定する処理において待機ノードが行う処理のフローを示すフローチャートであり、図６Ｂは、ハンデを決定する処理において運用ノードが行う処理のフローを示すフローチャートである。
【００４８】
図６Ａに示すように、待機ノードのハンデ決定部３ｂは、クラスタグループ内のノード２の更新差分を蓄積する一時ファイルへの書込性能を測定し（ステップＳ２１）、一定間隔待機する（ステップＳ２２）処理を定数回実行する。
【００４９】
そして、待機ノードのハンデ決定部３ｂは、測定した書込性能の平均値を性能値として算出し（ステップＳ２３）、算出した性能値を運用ノードへ送信する（ステップＳ２４）。そして、待機ノードのハンデ決定部３ｂは、運用ノードにより算出されたハンデを運用ノードから受信する（ステップＳ２５）。
【００５０】
また、図６Ｂに示すように、運用ノードのハンデ決定部３ｂは、クラスタグループ内の全ての待機ノードの性能値を収集し（ステップＳ３１）、性能値をハンデに変換する（ステップＳ３２）。そして、運用ノードのハンデ決定部３ｂは、ハンデを待機ノードに返信する（ステップＳ３３）。
【００５１】
このように、待機ノードのハンデ決定部３ｂと運用ノードのハンデ決定部３ｂが連携して各ノード２のハンデを決定するので、引継ぎ部３ａは、各ノード２のハンデを用いてクラスタグループのハンデを特定することができる。
【００５２】
次に、実施例に係るクラスタシステム１の効果について説明する。図７は、実施例に係るクラスタシステム１の効果を説明するための図である。図７に示すように、クラスタグループに運用ノードが含まれる場合には、クラスタグループのノード数が過半数でないと、従来技術では縮退不可であるが、実施例に係るクラスタシステム１では第１優先又は第２優先のクラスタグループが特定され縮退が可能である。また、クラスタグループに運用ノードが含まれない場合には、クラスタグループのノード数が過半数でないと、従来技術では縮退不可であるが、実施例に係るクラスタシステム１では第３優先のクラスタグループが特定され縮退が可能である。
【００５３】
上述してきたように、実施例では、他のクラスタグループとの間で通信障害が発生すると、引継ぎ部３ａは、自ノードが属するクラスタグループのノード数が半数を超える場合には、該クラスタグループを第１優先とする。また、引継ぎ部３ａは、自ノードが属するクラスタグループのノード数が１ではないが半数を超えず、該クラスタグループが運用ノードを含む場合には、該クラスタグループを第２優先とする。また、引継ぎ部３ａは、自ノードが属するクラスタグループのノード数が１ではないが半数を超えず、該クラスタグループが運用ノードを含まない場合には、該クラスタグループを第３優先とする。したがって、通信障害が発生してクラスタグループの構成ノード数が過半数未満になった場合にもクラスタ機能の停止を防ぐことができる。
【００５４】
また、実施例では、引継ぎ部３ａは、第２優先及び第３優先のクラスタグループのハンデをクラスタグループに含まれるノード２のハンデの最小値とする。また、第２優先のクラスタグループには運用ノードが含まれるため、第２優先のクラスタグループのハンデは第３優先のクラスタグループのハンデより小さい。したがって、第２優先のクラスタグループは、第３優先のクラスタグループをフェンシングすることができる。
【００５５】
また、実施例では、ハンデ決定部３ｂは、更新差分を蓄積する一時ファイルへの書込性能を測定し、測定した書込性能の平均値に基づいて各ノード２のハンデを決定する。したがって、実施例に係るクラスタシステム１は、クラスタ機能の引継ぎの際に書込性能が高いノード２を運用ノードとすることができる。
【００５６】
また、実施例では、リーダの引継ぎ部３ａがクラスタグループのハンデに基づいてフェンシング処理を実行するので、スプリットブレインを防ぐことができる。
【００５７】
なお、実施例では、クラスタ構築部３について説明したが、クラスタ構築部３をソフトウェアによって実現することで、同様の機能を有するクラスタ構築プログラムを得ることができる。そこで、クラスタ構築プログラムを実行するコンピュータについて説明する。
【００５８】
図８は、実施例に係るクラスタ構築プログラムを実行するコンピュータのハードウェア構成を示す図である。図８に示すように、コンピュータ５０は、メインメモリ５１と、ＣＰＵ（Central  Processing  Unit）５２と、ＬＡＮ（Local  Area  Network）インタフェース５３と、ＨＤＤ（Hard  Disk  Drive）５４とを有する。また、コンピュータ５０は、スーパーＩＯ（Input  Output）５５と、ＤＶＩ（Digital  Visual  Interface）５６と、ＯＤＤ（Optical  Disk  Drive）５７とを有する。
【００５９】
メインメモリ５１は、プログラムやプログラムの実行途中結果などを記憶するメモリである。ＣＰＵ５２は、メインメモリ５１からプログラムを読み出して実行する中央処理装置である。ＣＰＵ５２は、メモリコントローラを有するチップセットを含む。
【００６０】
ＬＡＮインタフェース５３は、コンピュータ５０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ５４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ５５は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。ＤＶＩ５６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ５７は、ＤＶＤの読み書きを行う装置である。
【００６１】
ＬＡＮインタフェース５３は、ＰＣＩエクスプレス（ＰＣＩｅ）によりＣＰＵ５２に接続され、ＨＤＤ５４及びＯＤＤ５７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ５２に接続される。スーパーＩＯ５５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ５２に接続される。
【００６２】
そして、コンピュータ５０において実行されるクラスタ構築プログラムは、コンピュータ５０により読み出し可能な記録媒体の一例であるＤＶＤに記憶され、ＯＤＤ５７によってＤＶＤから読み出されてコンピュータ５０にインストールされる。あるいは、クラスタ構築プログラムは、ＬＡＮインタフェース５３を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ５０にインストールされる。そして、インストールされたクラスタ構築プログラムは、ＨＤＤ５４に記憶され、メインメモリ５１に読み出されてＣＰＵ５２によって実行される。
【００６３】
また、実施例では、ノード２がデータベース４を更新する情報処理装置である場合について説明したが、ノード２は他の情報処理を行う情報処理装置でもよい。また、実施例では、ハンデ決定部３ｂは、更新差分を蓄積する一時ファイルへの書込性能に基づいてノード２のハンデを決定するが、ノード２の他の性能に基づいてハンデを決定してもよい。
【符号の説明】
【００６４】
１    クラスタシステム
２    ノード
３    クラスタ構築部
３ａ    引継ぎ部
３ｂ    ハンデ決定部
４    データベース
４ａ    データベース管理システム
２１，２２，２３，２４，２５，２６    クラスタグループ
５０    コンピュータ
５１    メインメモリ
５２    ＣＰＵ
５３    ＬＡＮインタフェース
５４    ＨＤＤ
５５    スーパーＩＯ
５６    ＤＶＩ
５７    ＯＤＤ
【図１】
2019128803.tif 000003
【図２】
2019128803.tif 000004
【図３】
2019128803.tif 000005
【図４】
2019128803.tif 000006
【図５】
2019128803.tif 000007
【図６Ａ】
2019128803.tif 000008
【図６Ｂ】
2019128803.tif 000009
【図７】
2019128803.tif 000010
【図８】
2019128803.tif 000011
【図９】
2019128803.tif 000012