特許第6984437号(P6984437)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6984437処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置
<>
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000002
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000003
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000004
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000005
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000006
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000007
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000008
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000009
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000010
  • 特許6984437-処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置 図000011
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6984437
(24)【登録日】2021年11月29日
(45)【発行日】2021年12月22日
(54)【発明の名称】処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置
(51)【国際特許分類】
   G06F 11/20 20060101AFI20211213BHJP
   G06F 16/11 20190101ALI20211213BHJP
【FI】
   G06F11/20 630
   G06F11/20 682
   G06F16/11
【請求項の数】5
【全頁数】13
(21)【出願番号】特願2018-10095(P2018-10095)
(22)【出願日】2018年1月24日
(65)【公開番号】特開2019-128803(P2019-128803A)
(43)【公開日】2019年8月1日
【審査請求日】2020年10月8日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】加藤 翔
(72)【発明者】
【氏名】谷口 和博
(72)【発明者】
【氏名】鎌内 彬貴
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 特開2010−186472(JP,A)
【文献】 特開2009−181597(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/20
G06F 16/11
(57)【特許請求の範囲】
【請求項1】
複数のノードグループを備える処理システムにおける処理の引き継ぎ方法において、
前記複数のノードグループの各ノードグループは、他のノードグループとの間の通信障害を検出すると、自ノードグループに含まれるノードの総数に応じた優先度で引継ぎ処理を開始し、
前記処理システムに含まれるノードの総数の半数を超えるノードを含むノードグループの優先度は、他のノードグループの優先度より高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含むノードグループの優先度は、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度よりも高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度は、性能に応じて運用ノードよりも低いノード優先度が割り当てられた各ノードのうち、最も高いノード優先度とする
ことを特徴とする処理の引継ぎ方法。
【請求項2】
前記運用ノードはデータベースを更新し、
前記ノードのうち前記運用ノード以外の待機ノードは、前記データベースの複製を有し、前記運用ノードからデータベースの更新差分を受信して自データベースを更新し、
前記ノード優先度は、前記更新差分を一時的に蓄積するファイルへの書込性能に基づくことを特徴とする請求項1に記載の処理の引継ぎ方法。
【請求項3】
前記引継ぎ処理は、前記優先度に基づく時間が経過すると他のノードグループに含まれるノードにフェンシングを行う処理を含むことを特徴とする請求項1又は2に記載の処理の引継ぎ方法。
【請求項4】
複数のノードグループを備える処理システムにおける処理の引き継ぎを行うクラスタ構築プログラムにおいて、
前記複数のノードグループの各ノードグループは、他のノードグループとの間の通信障害を検出すると、自ノードグループに含まれるノードの総数に応じた優先度で引継ぎ処理を開始する処理をコンピュータに実行させ、
前記処理システムに含まれるノードの総数の半数を超えるノードを含むノードグループの優先度は、他のノードグループの優先度より高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含むノードグループの優先度は、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度よりも高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度は、性能に応じて運用ノードよりも低いノード優先度が割り当てられた各ノードのうち、最も高いノード優先度とする
ことを特徴とするクラスタ構築プログラム。
【請求項5】
複数のノードグループを備える処理システムにおける処理の引き継ぎを行うクラスタ構築装置において、
前記複数のノードグループの各ノードグループは、他のノードグループとの間の通信障害を検出すると、自ノードグループに含まれるノードの総数に応じた優先度で引継ぎ処理を開始する引継ぎ部を有し、
前記処理システムに含まれるノードの総数の半数を超えるノードを含むノードグループの優先度は、他のノードグループの優先度より高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含むノードグループの優先度は、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度よりも高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度は、性能に応じて運用ノードよりも低いノード優先度が割り当てられた各ノードのうち、最も高いノード優先度とする
ことを特徴とするクラスタ構築装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置に関する。
【背景技術】
【0002】
運用ノードと複数の待機ノードを有するクラスタシステムにおいて、運用ノードに障害が発生すると、いずれかの待機ノードが運用ノードとなって、運用ノードの処理を引継ぐ。ここで、ノードは、例えばデータベースを管理する情報処理装置である。運用ノードは、データベースの更新を行う情報処理装置であり、待機ノードは、データベースの複製を有し、運用ノードからデータベースの更新差分を受け取って自身のデータベースを更新する情報処理装置である。
【0003】
待機ノードが複数あるマルチスタンバイのシステムでは、スプリットブレインの発生を回避することが必要である。ここで、スプリットブレインとは、ハードウェアやインターコネクトの障害によりクラスタシステムが分断され、複数の待機ノード群で運用ノードの処理を引継ごうとすることである。
【0004】
図9は、マルチスタンバイにおけるスプリットブレイン回避を説明するための図である。図9において、「運」で示されるノード92は運用ノードであり、「待」で示されるノード92は待機ノードである。運用ノードで障害が発生した場合、待機ノード間でどの待機ノードを運用ノードとするかを合意できれば、スプリットブレインを回避することができる。
【0005】
しかしながら、待機ノード間の通信に異常があると、待機ノード間の合意が中断し、フェイルオーバ停止が発生する。あるいは、相手ノードのフェンシングにより相撃ちが発生すると、両系停止が発生する。ここで、フェンシングとは、クラスタシステムからノード92を取り除くことである。
【0006】
このようなフェイルオーバ停止あるいは両系停止の発生を避けるために、どの待機ノードを運用ノードとするかを決定する第3者ノードを設ける技術がある。しかしながら、第3者ノードを設けると、第3者ノードが単一障害点となり、待機ノード数に比例した可用性が実現することができない。
【0007】
そこで、クォーラムを採用することが考えられる。クォーラムでは、クラスタシステムを構成するノード92の過半数以上の通信可能なノード群がクラスタシステムを継承することでスプリットブレインが回避される。
【0008】
なお、スプリットブレインに関する技術として、ネットワークベースの分散コンピューティング環境で発生するスプリットブレイン状況においてメジャーグループを決定する技術がある。この技術は、第1グループのノード数と第2グループのノード数とを比較し、第1グループのノード及び第2グループのノードの履歴情報を取得する。そして、この技術は、ノード数の比較結果及び履歴情報の少なくともいずれかを用いて、第1グループ又は第2グループをメジャーグループと決定する。
【0009】
また、ネットワークスプリットが発生した場合に、グループの処理内容から、クラスタとして構築するのに最適なグループを選択する技術がある。この技術では、複数のノードのうちのいずれか所定のノードが、所定の条件を保持し、所定の条件に対応する自ノードの情報を生成し、監視パスでの通信を可能とする他ノードから、所定の条件に対応する他ノードの情報を収集する。さらに当該所定のノードは、自ノードの情報又は他ノードの情報がある場合、他ノードの情報及び自ノードの情報に基づいて、少なくとも自ノードを含む監視パスで通信可能なノードで構成される自グループの優先度を生成する。そして、当該所定のノードは、自グループの優先度と、自ノードが監視パスでの通信を不可能とするノードから構成される他グループの優先度とに基づいて、クラスタとして再構築するグループを決定する。
【0010】
また、クォーラムに関する技術として、2ノード分散型コンピュータ・システムにおいて障害を発生したノードが共有資源の予約を放棄することを必要としないクォーラム機構がある。このクォーラム機構では、障害を発生した分散型コンピュータ・システムの各ノードは、クォーラム・コントローラとして指定された2つの共有記憶装置の予約を成功させることによるクォーラムを達成する競争を行う。分散型コンピュータ・システムの正常動作の間、クォーラム・コントローラの各々は、各ノードに関連付けられ、これによって予約されている。分散型コンピュータ・システムの障害検出に応答したクォーラムのための競争の間、障害を発生していない各ノードは、他のノードに関連するクォーラム・コントローラを強制的に予約する。1つのノードが双方のクォーラム・コントローラに対する予約を保持した場合、このノードはクォーラムを獲得したことになる。
【先行技術文献】
【特許文献】
【0011】
【特許文献1】特開2010−186472号公報
【特許文献2】国際公開第2011/135628号
【特許文献3】特開平10−116259号公報
【発明の概要】
【発明が解決しようとする課題】
【0012】
クォーラムでは、構成ノードの過半数以上の通信可能なクラスタノード群がクラスタシステムを継承する権利を有するため、ノード数が過半数未満になるとクォーラムが不成立となり、クラスタ機能が停止するという問題がある。
【0013】
本発明は、1つの側面では、ノード数が過半数未満になった場合にもクラスタ機能の停止を防ぐことを目的とする。
【課題を解決するための手段】
【0014】
1つの態様では、処理の引き継ぎ方法は、複数のノードグループを備える処理システムにおける処理を引き継ぐ方法である。前記引継ぎ方法は、前記複数のノードグループの各ノードグループは、他のノードグループとの間の通信障害を検出すると、自ノードグループに含まれるノードの総数に応じた優先度で引継ぎ処理を開始する。処理システムに含まれるノードの総数の半数を超えるノードを含むノードグループの優先度は、他のノードグループの優先度より高い。また、処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含むノードグループの優先度は、処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度より高く、前記処理システムに含まれるノードの総数の半数を超えないノードを含み、かつ、運用ノードを含まないノードグループの優先度は、性能に応じて運用ノードよりも低いノード優先度が割り当てられた各ノードのうち、最も高いノード優先度とする
【発明の効果】
【0015】
1つの側面では、本発明は、ノード数が過半数未満になった場合にもクラスタ機能の停止を防ぐことができる。
【図面の簡単な説明】
【0016】
図1図1は、クラスタグループの優先度を説明するための図である。
図2図2は、実施例に係るクラスタシステムの構成を示す図である。
図3図3は、クラスタグループの優先度及びハンデを示す図である。
図4図4は、ハンデの一例を示す図である。
図5図5は、引継ぎ部による処理のフローを示すフローチャートである。
図6A図6Aは、ハンデを決定する処理において待機ノードが行う処理のフローを示すフローチャートである。
図6B図6Bは、ハンデを決定する処理において運用ノードが行う処理のフローを示すフローチャートである。
図7図7は、実施例に係るクラスタシステムの効果を説明するための図である。
図8図8は、実施例に係るクラスタ構築プログラムを実行するコンピュータのハードウェア構成を示す図である。
図9図9は、マルチスタンバイにおけるスプリットブレイン回避を説明するための図である。
【発明を実施するための形態】
【0017】
以下に、本願の開示する処理の引継ぎ方法、クラスタ構築プログラム及びクラスタ構築装置の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【0018】
まず、クラスタグループの優先度について説明する。ここで、クラスタグループとは、クラスタシステムに含まれるノードのグループである。クラスタシステムは、異常が検出されると、複数のクラスタグループに分けられる。各クラスタグループには1つ以上のノードが属する。クラスタグループ内ではノード間の通信が可能であるが、異なるクラスタグループ間では通信は可能でない。クラスタシステムの初期状態では、クラスタシステムに含まれる全ノードが属するクラスタグループが1つある。
【0019】
図1は、クラスタグループの優先度を説明するための図である。図1において、「運」で示されるノード2は運用ノードであり、「待」で示されるノード2は待機ノードである。各ノード2の上に付加された10s(秒)〜70sは、各ノード2のハンデを表す。ハンデは、各ノード2がフェンシングを開始するまでの秒数である。運用ノードのハンデは待機ノードのハンデよりも小さい。
【0020】
図1(a)では、クラスタシステムを構成する5台のノード2が、2台(ノード#1及びノード#2)のクラスタグループ21と3台(ノード#3〜ノード#5)のクラスタグループ22に分けられる。クラスタグループ22は、構成ノード数が過半数のクラスタグループであり、第1優先(優先度が1)でクラスタシステムを引き継ぐ。クラスタシステムを引き継いだクラスタグループ22のハンデは0sと決定される。クラスタグループ22には運用ノードが含まれないので、待機ノードのうち最もハンデが少ないノード#3がリーダとなって、クラスタグループ21に属するノード2に対して0s後にフェンシングを開始する。
【0021】
一方、クラスタグループ21は、過半数のクラスタグループではない。このため、クラスタグループ21のハンデは、2台のノード2のハンデの最小値10sと決定される。2台のノード2のうち最もハンデが少ないノード#1がリーダとなり、10s後にフェンシングを開始しようとするが、その前にクラスタグループ22のリーダにフェンシングされる。
【0022】
図1(b)では、クラスタシステムを構成する7台のノード2が、2台(ノード#11及びノード#12)のクラスタグループ23と3台(ノード#13〜ノード#15)のクラスタグループ24と残りの2台のノード2に分けられる。構成ノード数が過半数のクラスタグループはなく、運用ノードを含むクラスタグループ23が第2優先でクラスタシステムを引き継ぐ。クラスタシステムを引き継いだクラスタグループ23のハンデは、クラスタグループ23における最小値10sと決定される。クラスタグループ23には運用ノードが含まれるで、運用ノードがリーダとなって、クラスタグループ24に属するノード2及び残りの2台のノード2に対して10s後にフェンシングを開始する。
【0023】
一方、クラスタグループ24は、過半数のクラスタグループでなく運用ノードを含まない。このため、クラスタグループ24のハンデは、3台のノード2のハンデの最小値20sと決定される。3台のノード2のうち最もハンデが少ないノード#13がリーダとなり、20s後にフェンシングを開始しようとするが、その前にクラスタグループ23のリーダにフェンシングされる。
【0024】
図1(c)では、クラスタシステムを構成する7台のノード2が、3台(ノード#21〜ノード#23)のクラスタグループ25と2台(ノード#24及びノード#25)のクラスタグループ26と残りの2台のノード2に分けられる。構成ノード数が過半数のクラスタグループはなく、運用ノードを含むクラスタグループもない。このため、ハンデが最小のノード#21を含むクラスタグループ25が第3優先でクラスタシステムを引き継ぐ。クラスタシステムを引き継いだクラスタグループ25のハンデは、クラスタグループ25における最小値20sと決定される。クラスタグループ25においてハンデが最小のノード#21がリーダとなって、クラスタグループ26に属するノード2及び残りの2台のノード2に対して20s後にフェンシングを開始する。
【0025】
一方、クラスタグループ26は、過半数のクラスタグループでなく運用ノードを含まない。このため、クラスタグループ26のハンデは、2台のノード2のハンデの最小値30sと決定される。2台のノード2のうち最もハンデが少ないノード#24がリーダとなり、30s後にフェンシングを開始しようとするが、その前にクラスタグループ25のリーダにフェンシングされる。
【0026】
このように、各クラスタグループが、構成ノード数が過半数であるか否か、及び、運用ノードを含むか否かに基づいてクラスタグループの優先度を特定し、特定した優先度に基づいてフェンシングを行う、あるいは行おうとする。したがって、クラスタシステムは、異常が発生して過半数のノード2を含むクラスタグループがない場合にも、クラスタ機能の停止を防ぐことができる。なお、クラスタグループの構成ノード数が、過半数ではないが半数である場合、あるいは、1である場合については後述する。
【0027】
次に、実施例に係るクラスタシステムの構成について説明する。図2は、実施例に係るクラスタシステムの構成を示す図である。図2に示すように、実施例に係るクラスタシステム1は、5台のノード2を有する。なお、クラスタシステム1は、3台以上であれば5台以外のノード2を有してよい。
【0028】
5台のノード2のうち1台のノード2が運用ノードであり、他の4台のノード2は待機ノードである。運用ノードは、データベースの更新を行う情報処理装置であり、待機ノードは、データベースの複製を有し、運用ノードからデータベースの更新差分を受け取って自身のデータベースを更新する情報処理装置である。
【0029】
各ノード2は、他のノード2とネットワークで接続される。ネットワークには、データベースに関する通信及びハートビートのための通信に用いられるネットワークと、フェンシングのための通信に用いられるネットワークがある。
【0030】
各ノード2は、クラスタシステム1の構築に関する処理を行うクラスタ構築部3と、データベース4と、データベース4を管理するデータベース管理システム4aとを有する。クラスタ構築部3は、引継ぎ部3aとハンデ決定部3bとを有する。
【0031】
引継ぎ部3aは、クラスタシステム1に異常が発生した場合に、クラスタ機能の停止を防ぐ処理を行う。具体的には、引継ぎ部3aは、クラスタシステム1に異常が発生した場合に、他のノード2の引継ぎ部3aとの間でハンデの交換を行う。そして、引継ぎ部3aは、ハンデの交換が行えたノード2の数を自ノードが属するクラスタグループのノード数として特定する。また、引継ぎ部3aは、自ノードが属するクラスタグループに運用ノードが含まれるか否かを特定する。
【0032】
そして、引継ぎ部3aは、自ノードが属するクラスタグループのノード数と自ノードが属するクラスタグループに運用ノードが含まれるか否かに基づいて、自ノードが属するクラスタグループの優先度を特定する。そして、引継ぎ部3aは、特定した優先度に基づいて、自ノードが属するクラスタグループのハンデとリーダを特定する。
【0033】
図3は、クラスタグループの優先度及びハンデを示す図である。図3に示すように、クラスタグループの構成ノード数が過半数、又は運用ノードが存在する半数である場合には、優先度は1であり、ハンデはなし、すなわち0sである。また、クラスタグループの構成ノード数が運用ノードが存在する半数未満である場合には、優先度は2であり、ハンデはクラスタグループ内のノード2のハンデの最小値である。また、クラスタグループの構成ノード数が運用ノードが存在しない半数以下である場合には、優先度は3であり、ハンデはクラスタグループ内のノード2のハンデの最小値である。
【0034】
そして、リーダとして特定されたノード2の引継ぎ部3aは、自ノードが属するクラスタグループのハンデに基づいてフェンシングを行うか、あるいは、フェンシングを行おうとする。そして、他のノード2によりフェンシングされなければ、リーダとして特定されたノード2の引継ぎ部3aは、自ノードを運用ノードとする。
【0035】
ハンデ決定部3bは、自ノードのハンデを決定する。具体的には、自ノードが運用ノードである場合には、ハンデ決定部3bは、各待機ノードからデータベース4への書込性能を取得し、書込性能に基づいてハンデを決定して各待機ノードに送信する。書込性能が悪いほどハンデは大きくなる。
【0036】
また、自ノードが待機ノードである場合には、ハンデ決定部3bは、データベース4の更新差分を蓄積する一時ファイルの書込性能を測定し、測定値の平均値を算出して運用ノードへ送信する。そして、ハンデ決定部3bは、運用ノードからハンデを受信して記憶する。
【0037】
図4は、ハンデの一例を示す図である。図4では、待機ノード毎に書込性能とノード優先度とハンデが対応付けられる。例えば、待機ノードAについては、書込性能は54M/sec(54メガバイト/秒)であり、書込性能が3番目に速いのでノード優先度は3であり、ハンデは30sである。
【0038】
次に、引継ぎ部3aによる処理のフローについて説明する。図5は、引継ぎ部3aによる処理のフローを示すフローチャートである。なお、ハートビートの応答が途絶えて異常が発生すると、図5に示す処理が起動される。
【0039】
図5に示すように、引継ぎ部3aは、異常発生直前のクラスタグループ内の全ノード2に対して、ハンデを送信する(ステップS1)。また、引継ぎ部3aは、他のノード2からハンデを受信し(ステップS2)、自ノードが属するクラスタグループのノード数を特定する(ステップS3)。自ノードが属するクラスタグループのノード数は、ハンデを受信したノード2の数に1を加えた値である。
【0040】
そして、引継ぎ部3aは、クラスタグループのノード数が1であるか否かを判定し(ステップS4)、1でない場合には、クラスタグループのノード数が過半数である又は運用ノードを含む半数であるか否かを判定する(ステップS5)。
【0041】
そして、クラスタグループのノード数が過半数である又は運用ノードを含む半数である場合には、引継ぎ部3aは、クラスタグループの優先度を1と特定する(ステップS6)。そして、引継ぎ部3aは、クラスタグループのリーダを運用ノード、又は、運用ノードが含まれない場合にはハンデの最も小さい待機ノードとし、クラスタグループのハンデを0sとする(ステップS7)。そして、引継ぎ部3aは、ステップS14へ移動する。
【0042】
一方、クラスタグループのノード数が過半数でもなく、かつ、運用ノードを含む半数でもない場合には、引継ぎ部3aは、クラスタグループ内に運用ノードが存在するか否かを判定する(ステップS8)。そして、クラスタグループ内に運用ノードが存在する場合には、引継ぎ部3aは、クラスタグループの優先度を2と特定する(ステップS9)。そして、引継ぎ部3aは、クラスタグループのリーダを運用ノードとし、クラスタグループのハンデをクラスタグループ内のノード2のハンデの最小値とする(ステップS10)。そして、引継ぎ部3aは、ステップS14へ移動する。
【0043】
一方、クラスタグループ内に運用ノードが存在しない場合には、引継ぎ部3aは、運用ノードが存在せず、かつ、クラスタグループのノード数が過半数未満であると判定し(ステップS11)、クラスタグループの優先度を3と特定する(ステップS12)。そして、引継ぎ部3aは、リーダをクラスタグループ内でハンデが最小の待機ノードとし、クラスタグループのハンデをクラスタグループ内のノード2のハンデの最小値とする(ステップS13)。
【0044】
そして、リーダの引継ぎ部3aが、フェンシング処理を実行し(ステップS14)、自ノードは運用ノードであるか否かを判定する(ステップS15)。そして、自ノードは運用ノードでない場合には、リーダの引継ぎ部3aは、自ノードを運用ノードへ昇格する(ステップS16)。そして、リーダの引継ぎ部3aは、縮退を完了する(ステップS17)。
【0045】
また、ステップS4において、クラスタグループのノード数が1である場合には、引継ぎ部3aは、縮退不可と判定し(ステップS18)、処理を終了する。
【0046】
このように、引継ぎ部3aは、クラスタグループのノード数と運用ノードの有無に基づいて優先度を特定するので、クラスタグループのノード数が過半数未満である場合にも、クラスタシステム1を縮退することができる。ここで、クラスタシステム1を縮退するとは、ノード数が減った状態でクラスタ機能を引き継ぐことである。
【0047】
次に、ハンデを決定する処理のフローについて説明する。図6Aは、ハンデを決定する処理において待機ノードが行う処理のフローを示すフローチャートであり、図6Bは、ハンデを決定する処理において運用ノードが行う処理のフローを示すフローチャートである。
【0048】
図6Aに示すように、待機ノードのハンデ決定部3bは、クラスタグループ内のノード2の更新差分を蓄積する一時ファイルへの書込性能を測定し(ステップS21)、一定間隔待機する(ステップS22)処理を定数回実行する。
【0049】
そして、待機ノードのハンデ決定部3bは、測定した書込性能の平均値を性能値として算出し(ステップS23)、算出した性能値を運用ノードへ送信する(ステップS24)。そして、待機ノードのハンデ決定部3bは、運用ノードにより算出されたハンデを運用ノードから受信する(ステップS25)。
【0050】
また、図6Bに示すように、運用ノードのハンデ決定部3bは、クラスタグループ内の全ての待機ノードの性能値を収集し(ステップS31)、性能値をハンデに変換する(ステップS32)。そして、運用ノードのハンデ決定部3bは、ハンデを待機ノードに返信する(ステップS33)。
【0051】
このように、待機ノードのハンデ決定部3bと運用ノードのハンデ決定部3bが連携して各ノード2のハンデを決定するので、引継ぎ部3aは、各ノード2のハンデを用いてクラスタグループのハンデを特定することができる。
【0052】
次に、実施例に係るクラスタシステム1の効果について説明する。図7は、実施例に係るクラスタシステム1の効果を説明するための図である。図7に示すように、クラスタグループに運用ノードが含まれる場合には、クラスタグループのノード数が過半数でないと、従来技術では縮退不可であるが、実施例に係るクラスタシステム1では第1優先又は第2優先のクラスタグループが特定され縮退が可能である。また、クラスタグループに運用ノードが含まれない場合には、クラスタグループのノード数が過半数でないと、従来技術では縮退不可であるが、実施例に係るクラスタシステム1では第3優先のクラスタグループが特定され縮退が可能である。
【0053】
上述してきたように、実施例では、他のクラスタグループとの間で通信障害が発生すると、引継ぎ部3aは、自ノードが属するクラスタグループのノード数が半数を超える場合には、該クラスタグループを第1優先とする。また、引継ぎ部3aは、自ノードが属するクラスタグループのノード数が1ではないが半数を超えず、該クラスタグループが運用ノードを含む場合には、該クラスタグループを第2優先とする。また、引継ぎ部3aは、自ノードが属するクラスタグループのノード数が1ではないが半数を超えず、該クラスタグループが運用ノードを含まない場合には、該クラスタグループを第3優先とする。したがって、通信障害が発生してクラスタグループの構成ノード数が過半数未満になった場合にもクラスタ機能の停止を防ぐことができる。
【0054】
また、実施例では、引継ぎ部3aは、第2優先及び第3優先のクラスタグループのハンデをクラスタグループに含まれるノード2のハンデの最小値とする。また、第2優先のクラスタグループには運用ノードが含まれるため、第2優先のクラスタグループのハンデは第3優先のクラスタグループのハンデより小さい。したがって、第2優先のクラスタグループは、第3優先のクラスタグループをフェンシングすることができる。
【0055】
また、実施例では、ハンデ決定部3bは、更新差分を蓄積する一時ファイルへの書込性能を測定し、測定した書込性能の平均値に基づいて各ノード2のハンデを決定する。したがって、実施例に係るクラスタシステム1は、クラスタ機能の引継ぎの際に書込性能が高いノード2を運用ノードとすることができる。
【0056】
また、実施例では、リーダの引継ぎ部3aがクラスタグループのハンデに基づいてフェンシング処理を実行するので、スプリットブレインを防ぐことができる。
【0057】
なお、実施例では、クラスタ構築部3について説明したが、クラスタ構築部3をソフトウェアによって実現することで、同様の機能を有するクラスタ構築プログラムを得ることができる。そこで、クラスタ構築プログラムを実行するコンピュータについて説明する。
【0058】
図8は、実施例に係るクラスタ構築プログラムを実行するコンピュータのハードウェア構成を示す図である。図8に示すように、コンピュータ50は、メインメモリ51と、CPU(Central Processing Unit)52と、LAN(Local Area Network)インタフェース53と、HDD(Hard Disk Drive)54とを有する。また、コンピュータ50は、スーパーIO(Input Output)55と、DVI(Digital Visual Interface)56と、ODD(Optical Disk Drive)57とを有する。
【0059】
メインメモリ51は、プログラムやプログラムの実行途中結果などを記憶するメモリである。CPU52は、メインメモリ51からプログラムを読み出して実行する中央処理装置である。CPU52は、メモリコントローラを有するチップセットを含む。
【0060】
LANインタフェース53は、コンピュータ50をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD54は、プログラムやデータを格納するディスク装置であり、スーパーIO55は、マウスやキーボードなどの入力装置を接続するためのインタフェースである。DVI56は、液晶表示装置を接続するインタフェースであり、ODD57は、DVDの読み書きを行う装置である。
【0061】
LANインタフェース53は、PCIエクスプレス(PCIe)によりCPU52に接続され、HDD54及びODD57は、SATA(Serial Advanced Technology Attachment)によりCPU52に接続される。スーパーIO55は、LPC(Low Pin Count)によりCPU52に接続される。
【0062】
そして、コンピュータ50において実行されるクラスタ構築プログラムは、コンピュータ50により読み出し可能な記録媒体の一例であるDVDに記憶され、ODD57によってDVDから読み出されてコンピュータ50にインストールされる。あるいは、クラスタ構築プログラムは、LANインタフェース53を介して接続された他のコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてコンピュータ50にインストールされる。そして、インストールされたクラスタ構築プログラムは、HDD54に記憶され、メインメモリ51に読み出されてCPU52によって実行される。
【0063】
また、実施例では、ノード2がデータベース4を更新する情報処理装置である場合について説明したが、ノード2は他の情報処理を行う情報処理装置でもよい。また、実施例では、ハンデ決定部3bは、更新差分を蓄積する一時ファイルへの書込性能に基づいてノード2のハンデを決定するが、ノード2の他の性能に基づいてハンデを決定してもよい。
【符号の説明】
【0064】
1 クラスタシステム
2 ノード
3 クラスタ構築部
3a 引継ぎ部
3b ハンデ決定部
4 データベース
4a データベース管理システム
21,22,23,24,25,26 クラスタグループ
50 コンピュータ
51 メインメモリ
52 CPU
53 LANインタフェース
54 HDD
55 スーパーIO
56 DVI
57 ODD
図1
図2
図3
図4
図5
図6A
図6B
図7
図8
図9