(57)【要約】【課題】クラスタシステムにおける障害発生時の処理の遅延を抑制することができる管理ノードを提供する。【解決手段】管理ノードを、構成情報記憶手段１と、実行可否判断手段２と、時間情報取得手段３と、ノード選択手段４と、制御手段５を備える構成とする。構成情報記憶手段１は、各ノードのハードウエアの情報を記憶する。実行可否判断手段２は、ノードで障害が発生したとき、障害要因のハードウエアが縮退されたノードで処理の実行が可能か判断する。時間情報取得手段３は、ノードの再起動に要する時間を取得する。ノード選択手段４は、障害箇所が縮退されたノードで処理の実行が可能であるときに、ノードを再起動し、処理を開始するまでに要する時間と、他のノードでの処理を開始するまでに要する時間とを比較する。ノード選択手段４は、要する時間が短い方を、実行するノードとして選択する。制御手段５は、実行するノードに処理の実行を指示する。【選択図】      図１
2019164405.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続され、クラスタシステムを構成している各ノードが有しているハードウエアの情報を記憶する構成情報記憶手段と、
いずれかの前記ノードで障害が発生したとき、障害の要因となった前記ハードウエアが縮退された状態のノードで処理の実行が可能かを判断する実行可否判断手段と、
障害が発生した前記ノードの再起動に要する時間の情報を取得する時間情報取得手段と、
障害箇所が縮退されたノードで前記処理の実行が可能であるときに、障害が発生したノードを再起動し、前記処理を開始するまでに要する時間と、他のノードでの前記処理を開始するまでに要する時間とを比較し、前記処理の開始までに要する時間が短い方を、前記処理を実行するノードとして選択するノード選択手段と、
前記ノード選択手段が前記処理を実行するノードとして選択したノードに前記処理の実行を指示する制御手段と
を備えることを特徴とする管理ノード。
【請求項２】
クラスタシステムにおいて実行される処理ごとに、必要なハードウエアの情報が関連づけられた情報をサービス情報テーブルとして保存しているサービス情報記憶手段をさらに備え、
前記制御手段は、前記サービス情報テーブルを参照して前記処理を実行するノードを選択することを特徴とする請求項１に記載の管理ノード。
【請求項３】
前記サービス情報記憶手段は、障害が発生した前記ノードにおいて前記処理を継続する条件の情報を継続利用条件として保存していることを特徴とする請求項２に記載の管理ノード。
【請求項４】
クラスタシステムの管理ノードから指定された処理を実行する処理実行手段と、
自装置を再起動して前記処理を開始するまでに要する時間を起動時間情報として前記管理ノードに送信する再起動時間送信手段と、
自装置の障害を検知し、故障箇所を特定する障害検知手段と、
前記障害検知手段が特定した故障箇所を縮退させた自ノードの構成を示す情報を構成情報として前記管理ノードに送信する構成情報送信手段と、
前記管理ノードが前記起動時間情報および前記構成情報を基に、自ノードを選択して前記処理の実行を指示してきたときに故障箇所を縮退した状態で処理を実行する制御手段と
を備えることを特長とするノード。
【請求項５】
前記構成情報送信手段は、自装置の再起動が行われる前に前記構成情報を前記管理ノードに送信することを特徴とする請求項４に記載のノード。
【請求項６】
前記再起動時間送信手段、前記障害検知手段、前記構成情報送信手段および前記制御手段は、オペレーティングシステムの起動前に動作する領域に形成されていることを特徴とする請求項４または５に記載のノード。
【請求項７】
請求項４から６いずれかに記載の複数のノードと、
請求項１から３いずれかに記載の管理ノードと
を備え、
前記管理ノードは、前記ノードに処理の実行を割り当てることを特徴とするクラスタシステム。
【請求項８】
ネットワークを介して接続され、クラスタシステムを構成している各ノードが有しているハードウエアの情報を記憶し、
いずれかの前記ノードで障害が発生したとき、障害の要因となった前記ハードウエアが縮退された状態のノードで処理の実行が可能かを判断し、
障害が発生した前記ノードの再起動に要する時間を取得し、
障害箇所が縮退されたノードで処理の実行が可能であるときに、障害が発生したノードを再起動し、前記処理を開始するまでに要する時間と、他のノードでの前記処理を開始するまでに要する時間とを比較し、前記処理の開始までに要する時間が短い方を、前記処理を実行するノードとして選択し、
前記処理を実行するノードとして選択したノードに前記処理の実行を指示することを特徴とするノード制御方法。
【請求項９】
クラスタシステムの管理ノードから指定された処理を実行し、
自装置を再起動して前記処理を開始するまでに要する時間を起動時間情報として前記管理ノードに送信し、
自装置の障害を検知し、故障箇所を特定し、
特定した故障箇所を縮退させた自ノードの構成を示す情報を構成情報として前記管理ノードに送信し、
前記管理ノードが前記起動時間情報および前記構成情報を基に、自ノードを選択して前記処理の実行を指示してきたときに故障箇所を縮退した状態で前記処理を実行することを特長とするノード制御方法。
【請求項１０】
自装置の再起動が行われる前に前記構成情報を前記管理ノードに送信することを特徴とする請求項９に記載のノード制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタシステムに関するものであり、特に、システムにおける処理の停止時間を抑制する技術に関すものである。
【背景技術】
【０００２】
複数のノードに分散して処理を実行するクラスタシステムが広く用いられている。クラスタシステムでは、各ノードの死活監視を行い、正常に動作していないノードが生じた場合に、そのノードで実施していた処理を他のノードで実行することで、システムにおける処理停止時間の抑制が行われる。そのため、処理を実行しているノードに障害が発生した際に、実行されていた処理の扱いを迅速に判断し、判断結果に基づいて処理を進める技術があることが望ましく、関連する技術の開発が行われている。そのような、クラスタシステムにおいてノードに障害が発生したときの対応技術としては、例えば、特許文献１のような技術が開示されている。
【０００３】
特許文献１は、クラスタシステムにおいてノードの死活監視を行う技術に関するものである。特許文献１のクラスタシステムは、ノードのオペレーティングシステム上で動作するノード管理部に加え、オペレーティングシステムとは独立した第２のノード管理部を備えている。特許文献１の第２のノード管理部は、他のノードの動作を監視し、オペレーティングシステム上で動作するノード管理部では検出できない異常を検出する。特許文献１は、そのような構成とすることで、障害の発生を早期に検出して処理を他のノードに切り替えることでクラスタシステムの信頼性を向上することができるとしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１８６７８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術は次のような点で十分ではない。特許文献１では障害発生したとき、処理を実行するノードを他のノードに切り替えている。しかし、ノードの構成によっては、新たに立ち上げるときには立ち上げに時間を要する場合があり、ノードの切り替えが長時間化する恐れがある。例えば、インメモリデータベースでは、システムの起動時にストレージ装置に保存されているデータがメモリ上に展開させる。そのため、起動時に時間を要し、他のノードへ切り替えても処理の短縮化につながらない恐れがある。
【０００６】
本発明は、上記の課題を解決するため、クラスタシステムにおける障害発生時の処理の遅延を抑制することができる管理ノードを提供することを目的としている。
【課題を解決するための手段】
【０００７】
上記の課題を解決するため、本発明の管理ノードは、構成情報記憶手段と、実行可否判断手段と、時間情報取得手段と、ノード選択手段と、制御手段を備えている。構成情報記憶手段は、ネットワークを介して接続され、クラスタシステムを構成している各ノードが有しているハードウエアの情報を記憶する。実行可否判断手段は、いずれかのノードで障害が発生したとき、障害の要因となったハードウエアが縮退された状態のノードで処理の実行が可能かを判断する。時間情報取得手段は、障害が発生したノードの再起動に要する時間の情報を取得する。ノード選択手段は、障害箇所が縮退されたノードで処理の実行が可能であるときに、障害が発生したノードを再起動し処理を開始するまでに要する時間と、他のノードでの処理を開始するまでに要する時間とを比較する。また、ノード選択手段は、比較したうち処理の開始までに要する時間が短い方を、処理を実行するノードとして選択する。制御手段は、ノード選択手段が処理を実行するノードとして選択したノードに処理の実行を指示する。
【０００８】
本発明のノード制御方法は、ネットワークを介して接続され、クラスタシステムを構成している各ノードが有しているハードウエアの情報を記憶する。本発明のノード制御方法は、いずれかのノードで障害が発生したとき、障害の要因となったハードウエアが縮退された状態のノードで処理の実行が可能かを判断する。本発明のノード制御方法は、障害が発生したノードの再起動に要する時間を取得する。本発明のノード制御方法は、障害箇所が縮退されたノードで処理の実行が可能であるときに、障害が発生したノードを再起動し、処理を開始するまでに要する時間と、他のノードでの処理を開始するまでに要する時間とを比較する。本発明のノード制御方法は、比較したうち処理の開始までに要する時間が短い方を、処理を実行するノードとして選択する。本発明のノード制御方法は、処理を実行するノードとして選択したノードに処理の実行を指示する。
【発明の効果】
【０００９】
本発明によると、クラスタシステムにおける障害発生時の処理の遅延を抑制することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態の構成の概要を示す図である。
【図２】本発明の第２の実施形態の構成の概要を示す図である。
【図３】本発明の第２の実施形態のノードの構成を示す図である。
【図４】本発明の第２の実施形態の管理ノードの構成を示す図である。
【図５】本発明の第２の実施形態のノード構成テーブルの構成の例を示す図である。
【図６】本発明の第２の実施形態のサービス情報テーブルの構成の例を示す図である。
【図７】本発明の第２の実施形態のサービス割り当てテーブルの構成の例を示す図である。
【図８】本発明の第２の実施形態のクラスタシステムの動作フローの概要を示す図である。
【図９】本発明の第３の実施形態の構成の概要を示す図である。
【図１０】本発明の第３の実施形態のノードの構成を示す図である。
【図１１】本発明の第３の実施形態のノードの一部の構成を詳細に示す図である。
【発明を実施するための形態】
【００１１】
（第１の実施形態）
本発明の第１の実施形態について図を参照して詳細に説明する。図１は、本実施形態の管理ノードの構成の概要を示したものである。本実施形態の管理ノードは、構成情報記憶手段１と、実行可否判断手段２と、時間情報取得手段３と、ノード選択手段４と、制御手段５を備えている。
【００１２】
構成情報記憶手段１は、ネットワークを介して接続され、クラスタシステムを構成している各ノードが有しているハードウエアの情報を記憶する。実行可否判断手段２は、いずれかのノードで障害が発生したとき、障害の要因となったハードウエアが縮退された状態のノードで処理の実行が可能かを判断する。時間情報取得手段３は、障害が発生したノードの再起動に要する時間の情報を取得する。ノード選択手段４は、障害箇所が縮退されたノードで処理の実行が可能であるときに、障害が発生したノードを再起動し、処理を開始するまでに要する時間と、他のノードでの処理を開始するまでに要する時間とを比較する。また、ノード選択手段４は、比較したうち処理の開始までに要する時間が短い方を、処理を実行するノードとして選択する。制御手段５は、ノード選択手段４が処理を実行するノードとして選択したノードに処理の実行を指示する。
【００１３】
本実施形態の管理ノードは、構成情報記憶手段１においてクラスタシステムを構成している各ノードがデータ処理等の処理を行うために有しているハードウエアの情報を、ノードごとに記憶している。また、障害が発生したときに、実行可否判断手段２において、障害の要因のハードウエアを縮退しても処理が可能かを判断し、可能であった場合に、ノード選択手段４において処理を実行するノードを選択している。ノード選択手段４において、処理を実行するノードを選択する際に、再起動に要する時間と、他のノードでの処理を起動するまでの時間を比較して、処理を実行するノードを選択しているので、処理の再開に要する時間を短くすることができる。その結果、本実施形態のクラスタシステムは、障害発生時の処理の遅延を抑制することができる。
【００１４】
（第２の実施形態）
本発明の第２の実施形態について図を参照して詳細に説明する。図２は、本実施形態のクラスタシステムの構成の概要を示したものである。本実施形態のクラスタシステムは、複数のノード１００と、管理ノード２００を備えている。管理ノード２００は、各ノード１００とネットワーク３００を介して接続されている。
【００１５】
本実施形態のクラスタシステムは、データ処理等の各処理を実行する際に、管理ノード２００が各ノード１００に処理を分散して実行する情報処理システムである。以下の説明では、各ノードで分散して行われる処理をサービスとも呼ぶ。
【００１６】
ノード１００の構成について説明する。図３は、本実施形態のノード１００の構成を示した図である。ノード１００は、サービス部１１０と、クラスタウエア部１２０と、ＯＳ（Operating System）部１３０と、ＣＰＵ（Central Processing Unit）１４０と、メモリ１４１と、Ｉ／Ｏ（Input / Output）カード１４２と、ＢＭＣ（Baseboard Management Controller）１５０を備えている。
【００１７】
サービス部１１０は、サービスの実行機能、すなわち、アプリケーションプログラムに基づいた処理を実行し、処理結果を出力する機能に相当する。本実施形態では、各ノード１００において処理を実行し、クラスタシステムを利用するユーザに対して処理結果を提供する機能を、サービス（Ｍ）として示す。Ｍは、正の整数である。
【００１８】
クラスタウエア部１２０は、サービス起動終了部１２１をさらに備えている。サービス起動終了部１２１は、管理ノード２００のクラスタ制御部２１１の要求に基づいて、サービスの起動、すわわち、ＯＳ部１３０上でのサービス部１１０による処理を開始させる。サービス起動終了部１２１は、オペレーティングシステム上で処理内容に応じたアプリケーションプログラムの実行を開始することでサービスの起動を行う。また、サービス起動終了部１２１は、管理ノード２００のクラスタ制御部２１１の要求に基づいて、サービスの終了、すなわち、サービス部１１０の処理を終了する。サービス起動終了部１２１は、オペレーティングシステム上での処理内容に応じたアプリケーションプログラムの実行を終了することでサービスを終了する。
【００１９】
ＯＳ部１３０は、ＣＰＵ１４０上で動作し、サービスを実行するアプリケーションプログラムの動作の基盤となるオペレーティングシステムの機能に相当する。
【００２０】
ＣＰＵ１４０は、単数または複数のプロセッサによって構成され、ＯＳ部１３０に相当するオペレーティングシステムおよびサービス部１１０に相当するアプリケーションプログラムを実行する。
【００２１】
メモリ１４１は、ＤＩＭＭ（Dual In - line Memory Module）やＮＶＤＩＭＭ（Non - Volatile Dual In - line Memory Module）のような半導体メモリによって構成されている。メモリ１４１は、ＯＳ部１３０やサービス部１１０が実行するプログラムのコードおよび処理中のデータの保存等を行う。
【００２２】
Ｉ／Ｏカード１４２は、他のノード１００および管理ノード２００との間でデータの送受信を行う通信インタフェースである。
【００２３】
ＢＭＣ１５０は、ハードウエア障害処理部１５１と、ノード起動終了制御部１５２と、ノード状態送信部１５３と、内部情報記憶部１５４と、ＣＰＵ１５５をさらに備えている。
【００２４】
ハードウエア障害処理部１５１は、ＣＰＵ１４０、メモリ１４１およびＩ／Ｏカード１４３等のノード１０において各処理を実行する際に用いられるハードウエアコンポーネントの障害発生の有無を監視する。ハードウエア障害処理部１５１は、障害が発生したハードウエアコンポーネントのレジスタのデータ等の解析を基に障害の発生要因となっている故障箇所を特定する。ハードウエア障害処理部１５１は、障害の発生を検出したハードウエアコンポーネントの情報を内部情報記憶部１５４の構成情報記憶部１５８に保存する。
【００２５】
ノード起動終了制御部１５２は、ＣＰＵ１４０、メモリ１４１およびＩ／Ｏカード１４３等のハードウエアコンポーネントの電源を制御し、ＯＳ部１０３のオペレーティングシステムの起動と終了を行う。ノード起動終了制御部１５２は、ＯＳ部１０３のオペレーティングシステムの起動を、構成情報記憶部１５８の構成情報を参照して行う。構成情報は、ノード１００に搭載されているハードウエアコンポーネントの種類、数および各ハードウエアコンポーネントの状態の情報によって構成されている。ノード起動終了制御部１５２は、構成情報記憶部１５８において障害が発生した情報が保存されているハードウエアコンポーネントについては縮退させて起動しない。ノード起動終了制御部１５２は、障害が発生したハードウエアコンポーネントを縮退、すなわち、動作を停止させた状態でノード１００を起動する。
【００２６】
ノード状態送信部１５３は、構成情報などの情報を管理ノード２００に送信する。
【００２７】
内部情報記憶部１５４は、ノード起動開始時刻記憶部１５６と、サービス起動時刻記憶部１５７と、構成情報記憶部１５８をさらに備えている。
【００２８】
ノード起動開始時刻記憶部１５６は、ノード１００の起動が開始された時刻を、ノード起動開始時刻として保存している。ノード起動開始時刻は、ノード起動終了制御部１５２によって更新される。
【００２９】
サービス起動時刻記憶部１５７は、サービス部１１０において起動されたサービスを識別する情報と各サービスの起動が完了した時刻が関連連付けられた情報を、サービス起動時刻として保存している。サービス起動時刻は、サービス起動終了部１２１によって更新される。
【００３０】
構成情報記憶部１５８は、構成情報、すなわち、ノード１００においてサービスの実行に用いられるハードウエアの構成の情報を保存している。
【００３１】
管理ノード２００の構成について説明する。図４は、本実施形態の管理ノード２００の構成を示したものである。管理ノード２００は、クラスタウエア部２１０を備えている。また、クラスタウエア部２１０は、クラスタ制御部２１１と、ノード状態受信部２１２と、ノード情報記憶部２１３を備えている。
【００３２】
クラスタ制御部２１１は、各サービスをどのノード１００で実行するかを判断し、サービスを実行するノード１００にサービスの起動および終了を要求する機能を有する。クラスタ制御部２１１は、ノード構成テーブル、サービス情報テーブルおよびサービス割当テーブルの情報を基に、サービスをどのノード１００で実行するかを判断する。また、クラスタ制御部２１１は、サービスを実行するノードとして選択したノード１００にサービスの起動および終了の指示を送る。また、本実施形態のクラスタ制御部２１１の機能は、第１の実施形態の実行可否判断手段２、ノード選択手段４および制御手段５に相当する。
【００３３】
ノード状態受信部２１２は、各ノード１００から構成情報等を受信する。ノード状態受信部２１２は、各ノード１００から受信した情報を基に、ノード情報記憶部２１３のノード構成テーブル、サービス割当テーブルの情報を更新する。また、本実施形態のノード状態受信部２１２の機能は、第１の実施形態の時間情報取得手段３に相当する。
【００３４】
また、クラスタ制御部２１１の各処理およびノード状態受信部２１２が受信した情報の処理は、ＣＰＵ上でコンピュータプログラムを実行することで行われる。クラスタ制御部２１１およびノード状態受信部２１２における各処理を行うプログラムは、不揮発性の半導体記憶装置やハードディスクドライブに記憶されている。
【００３５】
ノード情報記憶部２１３は、ノード構成テーブル記憶部２１４と、サービス情報テーブル記憶部２１５と、サービス割当テーブル記憶部２１６をさらに備えている。
【００３６】
ノード構成テーブル記憶部２１４は、ノード構成テーブルのデータを保存している。図５は、本実施形態のノード構成テーブルの構成の例を示す図である。図５のノード構成テーブルは、ノード１００を構成するＣＰＵやメモリなどのハードウエアコンポーネントごと個数、周波数または容量値などのパラメータと、各パラメータに対応する値の情報によって構成されている。ノード構成テーブルは、図５に示すハードウエアコンポーネントおよびパラメータ以外を含むものであってもよい。また、本実施形態のノード構成テーブル記憶部２１４の機能は、第１の実施形態の構成情報記憶手段１に相当する。
【００３７】
サービス情報テーブル記憶部２１５は、サービス情報テーブルのデータを保存している。図６は、本実施形態のサービス情報テーブルの構成の例を示す図である。サービス情報テーブルは、サービスの実行に必要なハードウエアコンポーネントのパラメータと対応する値、ノード継続利用条件、オペレーティングシステムの再起動を行って同じノードで再開するために要する時間の情報によって構成されている。ノード継続利用条件とは、障害が発生した際に、他のノードに切り替えずに同じノード１００で処理を継続する際に満たす必要がある条件のことをいう。サービス情報テーブルのサービス（Ｍ）の情報は、作業者等によってあらかじめ設定されている。また、サービス情報テーブルは、図６に示すパラメータ以外のパラメータを含むものであってもよい。
【００３８】
サービス割当テーブル記憶部２１６は、サービス割当テーブルのデータを保存している。図７は、本実施形態のサービス割当テーブルの構成の例を示したものである。図７に示すサービス割当テーブルは、各ノード１００に割り当てられているサービスの情報と、各サービスが現在のノード１００上で再起動する際に要する時間の情報によって構成されている。サービス割当テーブルは、ノード状態受信部２１２によって更新される。また、サービス割当テーブルは、図７に示すパラメータ以外のパラメータを含むものであってもよい。
【００３９】
ネットワーク３００は、各ノード１００と管理ノード２００を接続する通信ネットワークである。ネットワーク３００は、専用回線であってもよく、また、他の用途の通信ネットワークとの共用回線であってもよい。また、ネットワーク３００は、専用回線と共用回線との組み合わせによって構成されていてもよい。
【００４０】
本実施形態のクラスタシステムの動作について説明する。始めに、作業者等によって管理ノード２００にクラスタシステムで動作させるサービスの情報が入力され、サービス情報テーブル記憶部２１５のサービス情報テーブルが生成される。以下では、図６のようなサービス情報テーブルが登録されているとして説明を行う。
【００４１】
クラスタシステムが動作を開始すると、各ノード１００のノード状態送信部１５３は、構成情報記憶部１５８に保存されている構成情報を管理ノード２００に送信する。ノード状態送信部１５３は、ＯＳ部１３０におけるオペレーティングシステムの起動前に構成情報を管理ノード２００に送信する。
【００４２】
管理ノード２００は、ノード状態受信部２１２において各ノード１００から構成情報を受信する。構成情報を受信すると、ノード状態受信部２１２は、受信した構成情報を基に、ノード構成テーブル記憶部２１４のノード構成テーブルの情報を設定する。ここでは、ノード管理テーブルは、図５に示すように設定されているとする。
【００４３】
ノード構成テーブルの情報が設定されると、管理ノード２００のクラスタ制御部２１１は、サービス情報テーブルおよびサービス割当テーブルを参照し、ノード１００への割り当てが行われていないサービスを検出する。
【００４４】
ノード１００への割り当てが行われていないサービスが存在するとき、クラスタ制御部２１１は、サービス情報テーブルおよびノード構成テーブルを参照し、割り当てが行われていないサービスを動作させる構成を満たすノード１００を検索する。サービスの動作に必要な構成を有するノード１００の情報を抽出すると、クラスタ制御部２１１は、抽出したノード１００のいずれかにサービスを割り当て、サービス割当テーブルの情報を更新する。
【００４５】
サービス割当テーブルの情報を更新すると、クラスタ制御部２１１は、サービスの割り当てを行ったノード１００にサービスの内容を示す情報とサービスの起動を要求する情報を送る。
【００４６】
サービスの起動を要求する情報を受け取ると、サービス起動終了部１２１は、受け取った情報を保持する。サービスの起動が要求されたノード１００は、再起動が行われる。この再起動時には、処理を行うノード１００の切り替えは行われないように設定されている。再起動は、作業者によって行われてもよく、管理ノード２００の制御によって行われてもよい。また、再起動は、サービスの起動が要求されたノード１００によって自律的に行われてもよい。
【００４７】
サービスの起動が要求された状態で再起動が行われると、ノード状態送信部１５３は、自ノードの再起動と、サービスの起動に必要な時間を算出する。ノード状態送信部１５３は、ノード起動開始時刻とサービス起動時刻を基に、自ノードの再起動と、サービスの起動に必要な時間を算出する。ノードの再起動と、サービスの起動に必要な時間を算出すると、ノード状態送信部１５３は、算出した情報を管理ノード２００に送る。
【００４８】
管理ノード２００のノード状態受信部２１２は、ノードの再起動と、サービスの起動に必要な時間の情報を受け取ると、受け取った情報を基に、サービス割当テーブルの再起動時間の情報を更新する。再起動したノード１００のサービス部１１０では、サービスが実行される。
【００４９】
次に、サービスの実行中のノード１００に障害が生じた場合の例について説明する。図８は、本実施形態のクラスタシステムにおいて障害が発生した際の動作フローの概要を示したものである。
【００５０】
ノード１００がサービスの実行等の動作を行っている際に、ハードウエア障害処理部１５１は、自ノードの障害の有無を監視する。ハードウエア障害処理部１５１は、障害を検出するとハードウエアコンポーネントのレジスタの値やログなどを基に、障害を発生させたハードウエアコンポーネントを特定する。
【００５１】
障害を発生させたハードウエアコンポーネントを特定すると、ハードウエア障害処理部１５１は、特定したハードウエアコンポーネントが故障状態であることを示す情報を構成情報記憶部１５８の構成情報に設定する。
【００５２】
故障を示す構成情報が設定されると、ノード状態送信部１５３は、更新された構成情報のデータを管理ノード２００に送る。
【００５３】
更新された構成情報のデータを受け取ると、管理ノード２００のノード状態受信部２１２は、受け取った構成情報を基にノード構成テーブル記憶部２１４のノード構成テーブルのデータを更新する（ステップＳ１１）。
【００５４】
構成情報を送信すると、ノード１００は、故障として設定されたハードウエアコンポーネントを縮退させた状態で起動し、ＯＳ部１３０においてオペレーティングシステムの動作を開始させる。ＯＳ部１３０のオペレーティングシステムを起動すると、ノード１００は、管理ノード２００から要求を受けるまで待機する。
【００５５】
ノード１００の再起動が行われている際に、管理ノード２００のクラスタ制御部２１１は、障害が発生したノード１００で実行していたサービスの処理方法を判断する。クラスタ制御部２１１は、ノード構成テーブル、サービス情報テーブルおよびサービス割当テーブルを基に、障害が発生したノード１００で実行していたサービスをＯＳ部１３０の再起動後に元のノード１００で実行するか、別のノード１００で実行するかを判断する。
【００５６】
クラスタ制御部２１１は、サービス情報テーブルのサービスの動作に必要なハードウエアコンポーネントの構成の情報と、ノード構成テーブルに示されている縮退後のノード１００の情報を比較し、再起動後でもサービスの実行に必要な構成を備えているかを確認する。
【００５７】
縮退後もサービスの実行に必要な構成を満たしているとき（ステップＳ１２でＹｅｓＺ）、クラスタ制御部２１１は、サービス情報テーブルを参照しノード１００がサービスのノード継続利用条件を満たすかを確認する。ノード継続利用条件を満たすとき（ステップＳ１３でＹｅｓ）、クラスタ制御部２１１は、同じノード１００でのサービスの再起動に要する時間と他のノード１００への切り替えに要する時間とを比較する。
【００５８】
同じノードでの再起動時間のほうが短いとき（ステップＳ１４でＹｅｓ）、クラスタ制御部２１１は、同じノード１００、すなわち、障害が発生したノード１００にサービスの起動を要求する。すなわち、他のノード１００で起動するよりも、障害の発生したノード１００を再起動した方が早く処理を開始できるとき、クラスタ制御部２１１は、障害が発生したノード１００を再起動して処理を実行する(ステップＳ１５）。サービスの再起動を要求されたノード１００は、故障箇所を縮退させた状態で再起動し、要求されたサービスを実行する。
【００５９】
縮退後のノードが必要な構成を満たしていないとき（ステップＳ１２でＮｏ）、クラスタ制御部２１１は、障害が発生した元のノード１００には起動の指示を出さずに、他のノード１００にサービスの起動を要求する。すなわち、クラスタ制御部２１１は、障害が発生したノード１００を再起動するのではなく、処理を実行するために必要な構成を有する他のノード１００においてサービスを起動し、サービスの処理を実行する（ステップＳ１６）。サービスの起動を要求されたノード１００は、サービス部を起動し、要求されたサービスを実行する。
【００６０】
ノード継続利用条件を満たしていないとき（ステップＳ１３でＮｏ）、クラスタ制御部２１１は、障害が発生した元のノード１００には起動の指示を出さずに、他のノード１００にサービスの起動を要求し、サービスの処理を実行する（ステップＳ１６）。サービスの起動を要求されたノード１００は、要求されたサービスを実行する。
【００６１】
再起動に要する時間が切り替え時間よりも長いとき（ステップＳ１４でＮｏ）、クラスタ制御部２１１は、障害が発生した元のノード１００には起動の指示を出さずに、他のノード１００にサービスの起動を要求し、サービスの処理を実行する（ステップＳ１６）。サービスの起動を要求されたノード１００は、要求されたサービスを実行する。
【００６２】
本実施形態のクラスタシステムのノード１００は、障害が発生したときにＯＳ部１３０を動作させるＣＰＵ１４０とは別に備えられているＣＰＵ１５５上で動作する各部位が管理ノード２００に構成情報等の送信を行っている。また、ＣＰＵ１５５上で動作する各部位が管理ノード２００の制御に基づいて、再起動による処理の継続等に関する動作を行っている。そのように障害に対応することで、障害が発生したノード１００を再起動する場合にオペレーティングシステムの起動を待たずに障害への対応を行うことができるので、障害の発生への対応に要する時間を抑制することができる。
【００６３】
本実施形態のクラスタシステムの管理ノード２００は、内部情報記憶部１５４おいてクラスタシステムを構成している各ノード１００がデータ処理等の処理を行うために有しているハードウエアの情報を、ノード１００ごとの情報として記憶している。また、障害が発生したときに、クラスタ制御部２１１において、障害の要因のハードウエアを縮退しても処理が可能かを判断し、可能であって場合に、処理を実行するノードを選択している。クラスタ制御部２１１は、処理を実行するノード１００を選択する際に、再起動に要する時間と、他のノードでの処理を起動するまでに要する時間を比較して、処理を実行するノード１００を選択しているので、処理の再開に要する時間を抑制することができる。その結果、本実施形態のクラスタシステムは、障害発生時の処理の遅延を抑制することができる。
【００６４】
（第３の実施形態）
本発明の第３の実施形態について図を参照して詳細に説明する。図９は、本実施形態のクラスタシステムの構成の概要を示したものである。本実施形態のクラスタシステムは、ネットワーク３０１を介して互いに接続された複数のノード４００を備えている。第２の実施形態では、障害が発生した際に管理ノードがサービスを継続するノードを決定していたが、本実施形態のクラスタシステムは、システムを構成するノードのいずれかがサービスを継続するノードを決定することを特徴とする。
【００６５】
ノード１００の構成について説明する。図１０は、本実施形態のノード４００の構成を示したものである。
【００６６】
ノード４００は、サービス部１１０と、クラスタウエア部４１０と、ＯＳ部１３０と、ＣＰＵ１４０と、メモリ１４１と、Ｉ／Ｏカード１４２と、ＢＭＣ４２０を備えている。本実施形態のサービス部１１０、クラスタウエア部４１０、ＯＳ部１３０、ＣＰＵ１４０、メモリ１４１およびＩ／Ｏカード１４２の構成と機能は、第２の実施形態の同名称の部位と同様である。
【００６７】
クラスタウエア部４１０の構成について説明する。図１１は、本実施形態のクラスタウエア部４１０の構成について示したものである。本実施形態のクラスタウエア部４１０は、サービス起動終了部１２１と、クラスタ制御部１２２と、ノード状態送受信部４１１と、ノード状態入力部４１２と、内部情報記憶部１２４を備えている。また、内部情報記憶部１２４は、ノード構成テーブル記憶部１２５と、サービス情報テーブル記憶部１２６と、サービス割当テーブル記憶部１２７をさらに備えている。本実施形態のサービス起動終了部１２１、クラスタ制御部１２２、内部情報記憶部１２４ノード構成テーブル記憶部１２５、サービス情報テーブル記憶部１２６およびサービス割当テーブル記憶部１２７の構成と機能は、第２の実施形態と同様である。
【００６８】
ノード状態送受信部４１１は、内部情報に内部情報記憶部１５４に保存されている各データを他のノード４００と共有するためのデータの送受信を行う。
【００６９】
ノード状態入力部４１２は、自ノードの情報をＢＭＣ４２０から受け取る。ノード状態入力部４１２の機能は、第２の実施形態の管理ノード２００のノード状態受信部２１２を同様である。第２の実施形態の管理ノード２００のノード状態受信部２１２は、ネットワーク３００を介して各ノード１００から情報を受け取っていたが、本実施形態のノード状態入力部４１２は、自ノードのＢＭＣ４２０から情報を受け取る。
【００７０】
内部情報記憶部１５４は、ノード起動開始時刻記憶部１５６と、サービス起動時刻記憶部１５７と、構成情報記憶部１５８をさらに備えている。ノード起動開始時刻記憶部１５６、サービス起動時刻記憶部１５７および構成情報記憶部１５８の構成と機能は、第２の実施形態と同様である。
【００７１】
ＢＭＣ４２０は、ハードウエア障害処理部１５１と、ノード起動終了制御部１５２と、ノード状態送信部４２１と、内部情報記憶部１５４と、ＣＰＵ１５５をさらに備えている。
【００７２】
本実施形態のハードウエア障害処理部１５１、ノード起動終了制御部１５２、内部情報記憶部１５４およびＣＰＵ１５５の構成と機能は、第２の実施形態の同名称の部位と同様である。
【００７３】
ノード状態送信部４２１は、第２の実施形態のノード状態送信部１５３と同様の機能を有する。本実施形態のノード状態送信部４２１は、構成情報を他のノード４００全てと自ノードのノード状態入力部４１２に送る。
【００７４】
ネットワーク３０１は、各ノード４００間を接続する通信ネットワークである。ネットワーク３０１は、専用回線であってもよく、また、他の用途の通信ネットワークとの共用回線であってもよい。また、ネットワーク３０１は、専用回線と共用回線との組み合わせによって構成されていてもよい。
【００７５】
本実施形態のクラスタシステムの動作について説明する。本実施形態のノード４００のサービス起動終了部１２１は、クラスタ制御部２１１の要求に基づいて、第２の実施形態と同様にサービスを起動して実行する。また、障害が発生したとき、クラスタ制御部２１１は、ノード状態送受信部４１１およびノード状態入力部４１２が各ノード４００から取得した情報を基に、第２の実施形態と同様に実行中のサービスの処理方法を判断する。すなわち、障害が発生したとき、クラスタ制御部２１１は、処理中のノード４００で実行を続けるか、他のノード４００にサービスを再度、割り当てなおすかを判断する。
【００７６】
障害が起きたときのサービスの扱いの判断は、例えば、作業者が設定したノード４００において行われる。障害が起きたときのサービスの扱いの判断はノード４００に順位を割り当て、正常に動作するノード４００内において順位がもっとも高いノード４００で行われるようにしてもよい。また、各ノード４００間で情報を共有して、多数決で処理内容が決定されるようしてもよい。
【００７７】
本実施形態のクラスタシステムは、第２の実施形態のクラスタシステムと同様の効果を有する。また、本実施形態のクラスタシステムは、管理ノードが不要のため、システムの構成を簡略化することができる。また、本実施形態のクラスタシステムでは、管理ノードが不要のため、管理ノードの故障によるシステムの停止が生じないため、信頼性が向上する。
【００７８】
第２の実施形態および第３の実施形態のＢＭＣおよびクラスタウエア部における各処理を行うコンピュータプログラムは、記録媒体に記録して頒布することもできる。記録媒体としては、例えば、データ記録用磁気テープや、ハードディスクなどの磁気ディスクを用いることができる。また、記録媒体としては、ＣＤ-ＲＯＭ（Compact Disc Read Only Memory）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスクを用いることもできる。不揮発性の半導体記憶装置を記録媒体として用いてもよい。
【符号の説明】
【００７９】
１    構成情報記憶手段
２    実行可否判断手段
３    時間情報取得手段
４    ノード選択手段
５    制御手段
１００    ノード
１１０    サービス部
１２０    クラスタウエア部
１２１    サービス起動終了部
１３０    ＯＳ部
１４０    ＣＰＵ
１４１    メモリ
１４２    Ｉ／Ｏカード
１５０    ＢＭＣ
１５１    ハードウエア障害処理部
１５２    ノード起動終了制御部
１５３    ノード状態送信部
１５４    内部情報記憶部
１５５    ＣＰＵ
１５６    ノード起動開始時刻記憶部
１５７    サービス起動時刻記憶部
１５８    構成情報記憶部
２００    管理ノード
２１０    クラスタウエア部
２１１    クラスタ制御部
２１２    ノード状態受信部
２１３    ノード情報記憶部
２１４    ノード構成テーブル記憶部
２１５    サービス情報テーブル記憶部
２１６    サービス割当テーブル記憶部
４００    ノード
４１０    クラスタウエア部
４１１    ノード状態送受信部
４１２    ノード状態入力部
４２０    ＢＭＣ
４２１    ノード状態送信部
【図１】
2019164405.tif 000003
【図２】
2019164405.tif 000004
【図３】
2019164405.tif 000005
【図４】
2019164405.tif 000006
【図５】
2019164405.tif 000007
【図６】
2019164405.tif 000008
【図７】
2019164405.tif 000009
【図８】
2019164405.tif 000010
【図９】
2019164405.tif 000011
【図１０】
2019164405.tif 000012
【図１１】
2019164405.tif 000013