(57)【特許請求の範囲】
【請求項１】
互いに接続された３以上の複数のノードを有するクラスタシステムであって、
前記複数のノードの各々は、
自ノードを、所定のアプリケーションを実行する第１のノード、前記第１のノードに障害が発生したときに前記第１のノードに代わって前記アプリケーションを実行する第２のノード、および、これら以外の第３のノードのいずれかに決定し、該決定の結果を出力するクラスタ管理部と、
前記所定のアプリケーションの実行に必要な情報であるアプリケーション情報を記憶する記憶部と、
前記クラスタ管理部により自ノードが前記第１のノードと決定されると、前記記憶部に記憶させるアプリケーション情報を前記第２のノードに送信し、前記クラスタ管理部により自ノードが前記第２のノードと決定されると、前記第１のノードから送信されてくるアプリケーション情報を前記記憶部に記憶させた後に、前記アプリケーション情報の同期が完了した旨の通知を前記第１のノードに行うレプリケータと、
前記クラスタ管理部により自ノードが前記第１のノードと決定されると、前記第２のノードから前記通知が行われた後に、前記記憶部に記憶されているアプリケーション情報を用いて前記所定のアプリケーションを実行するアプリケーション部と、を具備し、
前記クラスタ管理部は、前記第１のノードに障害が発生すると、自ノードを前記第２のノードと決定している場合には、自ノードを新たな前記第１のノードと決定し、自ノードを前記第３のノードと決定している場合には、前記第３のノードのうちの１つが新たな前記第２のノードとなるように、自ノードを前記新たな第２のノードとするか否かを決定し、該決定の結果を出力し、
前記レプリケータは、前記クラスタ管理部により自ノードが前記新たな第２のノードと決定されると、前記新たな第１のノードからアプリケーション情報を取得し、自ノードの前記記憶部に記憶されるアプリケーション情報を、前記新たな第１のノードから取得したアプリケーション情報と一致させるクラスタシステム。
【請求項２】
互いに接続された３以上の複数のノードを有するクラスタシステムの制御方法であって、
前記複数のノードの各々において、
クラスタ管理部が、自ノードを、所定のアプリケーションを実行する第１のノード、前記第１のノードに障害が発生したときに前記第１のノードに代わって前記アプリケーションを実行する第２のノード、および、これら以外の第３のノードのいずれかに決定し、該決定の結果を出力し、
記憶部が、前記所定のアプリケーションの実行に必要な情報であるアプリケーション情報を記憶し、
レプリケータが、前記クラスタ管理部により自ノードが前記第１のノードと決定されると、前記記憶部に記憶させるアプリケーション情報を前記第２のノードに送信し、前記クラスタ管理部により自ノードが前記第２のノードと決定されると、前記第１のノードから送信されてくるアプリケーション情報を前記記憶部に記憶させた後に、前記アプリケーション情報の同期が完了した旨の通知を前記第１のノードに行い、
アプリケーション部が、前記クラスタ管理部により自ノードが前記第１のノードと決定されると、前記第２のノードから前記通知が行われた後に、前記記憶部に記憶されているアプリケーション情報を用いて前記所定のアプリケーションを実行し、
前記クラスタ管理部が、前記第１のノードに障害が発生すると、自ノードを前記第２のノードと決定している場合には、自ノードを新たな前記第１のノードと決定し、自ノードを前記第３のノードと決定している場合には、前記第３のノードのうちの１つが新たな前記第２のノードとなるように、自ノードを前記新たな第２のノードとするか否かを決定し、該決定の結果を出力し、
前記レプリケータが、前記クラスタ管理部により自ノードが前記新たな第２のノードと決定されると、前記新たな第１のノードからアプリケーション情報を取得し、自ノードの前記記憶部に記憶されるアプリケーション情報を、前記新たな第１のノードから取得したアプリケーション情報と一致させるクラスタシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３以上のノードを有するクラスタシステムおよびその制御方法に関する。
【背景技術】
【０００２】
特許文献１（特開２００８−１４００８０号公報）には、それぞれが所定のアプリケーションを実行可能である２つのノードを接続し、一方のノードが所定のアプリケーションを実行し、その一方のノードに障害が発生すると、その一方のノードに代わって、他方のノードがアプリケーションを実行するクラスタシステムが開示されている。特許文献１に開示のクラスタシステムによれば、一方のノードに障害が発生しても、他方のノードがアプリケーションを実行するので、可用性を高めることができる。
【０００３】
以下では、アプリケーションを実行するノードを稼動系ノードと称し、稼動系ノードが正常に動作している間は待機しており、稼動系のノードに障害が発生すると、稼動系ノードに代わってアプリケーションを実行するノードを待機系ノードと称する。
【０００４】
特許文献２（特開２００９−２１７７６５号公報）には、待機系ノードを２以上設け、障害が発生した稼動系ノードに代わってアプリケーションを実行する待機系ノードにも障害が発生した場合には、他の待機系ノードがアプリケーションを実行する技術が開示されている。特許文献２に開示の技術によれば、待機系ノードの数を増加させるほど、クラスタシステムの可用性を高めることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１４００８０号公報
【特許文献２】特開２００９−２１７７６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
稼動系ノードに障害が発生した場合に、稼動系ノードに代わって待機系ノードがアプリケーションを実行するためには、アプリケーションの実行に必要な情報であるアプリケーション情報を稼動系ノードと待機系ノードとの間で同期させておく必要がある。
【０００７】
アプリケーション情報を稼動系ノードと待機系ノードとの間で同期させる方式としては、完全同期方式、非同期方式などがある。
【０００８】
完全同期方式とは、稼動系ノードが、アプリケーション情報を待機系ノードに送信し、アプリケーション情報の待機系ノードとの同期が完了するまで、そのアプリケーション情報を用いた処理を待ち合わせる方式である。
【０００９】
また、非同期方式とは、稼動系ノードが、アプリケーション情報を待機系ノードに送信し、アプリケーション情報の待機系ノードとの同期が完了するのを待たずに、そのアプリケーション情報を用いた処理を行う方式である。
【００１０】
非同期方式では、稼動系ノードの有するアプリケーション情報のすべてが待機系ノードと同期されることが保障されないため、稼動系ノードに障害が発生した場合に、アプリケーション情報が失われる可能性がある。したがって、アプリケーション情報が失われることが許容されないシステムにおいては、完全同期方式を適用する必要がある。
【００１１】
しかし、完全同期方式を適用したクラスタシステムにおいては、稼動系ノードが待機系ノードとのアプリケーション情報の同期が完了するまで処理を待ち合わせるため、アプリケーション情報を同期させる待機系ノードの数に応じてクラスタシステムの処理性能が劣化してしまう。したがって、待機系ノードの数を増加させるほどクラスタシステムの可用性を高めることができるにもかかわらず、処理性能の劣化を防ぐために、待機系ノードの数を制限しなければならないという課題があった。
【００１２】
本発明の目的は、上述した課題を解決し、処理性能を劣化させることなく、可用性の向上を図ることができるクラスタシステムおよびその制御方法を提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するために本発明のクラスタシステムは、
互いに接続された３以上の複数のノードを有するクラスタシステムであって、
前記複数のノードの各々は、
自ノードを、所定のアプリケーションを実行する第１のノード、前記第１のノードに障害が発生したときに前記第１のノードに代わって前記アプリケーションを実行する第２のノード、および、これら以外の第３のノードのいずれかに決定し、該決定の結果を出力するクラスタ管理部と、
前記所定のアプリケーションの実行に必要な情報であるアプリケーション情報を記憶する記憶部と、
前記クラスタ管理部により自ノードが前記第１のノードと決定されると、前記記憶部に記憶させるアプリケーション情報を前記第２のノードに送信し、前記クラスタ管理部により自ノードが前記第２のノードと決定されると、前記第１のノードから送信されてくるアプリケーション情報を前記記憶部に記憶させた後に、前記アプリケーション情報の同期が完了した旨の通知を前記第１のノードに行うレプリケータと、
前記クラスタ管理部により自ノードが前記第１のノードと決定されると、前記第２のノードから前記通知が行われた後に、前記記憶部に記憶されているアプリケーション情報を用いて前記所定のアプリケーションを実行するアプリケーション部と、を具備する。
【００１４】
上記目的を達成するために本発明のクラスタシステムの制御方法は、
互いに接続された３以上の複数のノードを有するクラスタシステムの制御方法であって、
前記複数のノードの各々において、
前記クラスタ管理部が、自ノードを、所定のアプリケーションを実行する第１のノード、前記第１のノードに障害が発生したときに前記第１のノードに代わって前記アプリケーションを実行する第２のノード、および、これら以外の第３のノードのいずれかに決定し、該決定の結果を出力し、
記憶部が、前記所定のアプリケーションの実行に必要な情報であるアプリケーション情報を記憶し、
レプリケータが、前記クラスタ管理部により自ノードが前記第１のノードと決定されると、前記記憶部に記憶させるアプリケーション情報を前記第２のノードに送信し、前記クラスタ管理部により自ノードが前記第２のノードと決定されると、前記第１のノードから送信されてくるアプリケーション情報を前記記憶部に記憶させた後に、前記アプリケーション情報の同期が完了した旨の通知を前記第１のノードに行い、
アプリケーション部が、前記クラスタ管理部により自ノードが前記第１のノードと決定されると、前記第２のノードから前記通知が行われた後に、前記記憶部に記憶されているアプリケーション情報を用いて前記所定のアプリケーションを実行する。
【発明の効果】
【００１５】
本発明によれば、クラスタシステムの処理性能の劣化を抑制しつつ、可用性の向上を図ることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態のクラスタシステムの構成を示すブロック図である。
【図２】図１に示すクラスタシステムの動作を説明するための図である。
【図３】図１に示すクラスタシステムにおけるアプリケーション情報の同期時の動作を示すフローチャートである。
【図４】図１に示すクラスタシステムにおける稼動系ノードに障害が発生した場合の動作を示すフローチャートである。
【図５】図１に示すクラスタシステムの動作を説明するための図である。
【図６】図１に示すクラスタシステムのさらに他の構成を示す図である。
【図７】図６に示すクラスタシステムにおけるアプリケーション情報の同期時の動作を示すフローチャートである。
【図８】図６に示すクラスタシステムにおける稼動系ノードに障害が発生した場合の動作を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下に、本発明を実施するための形態について図面を参照して説明する。
【００１８】
図１は、本発明の一実施形態のクラスタシステムの構成を示すブロック図である。
【００１９】
図１に示すクラスタシステム１は、複数のノード１０−１〜１０−ｎ（ｎは３以上の整数）と、スイッチ２０と、を有する。
【００２０】
ノード１０−１〜１０−ｎはそれぞれ、スイッチ２０を介して互いに接続され、アプリケーション情報などを送受信する。
【００２１】
ノード１０−１〜１０−ｎのうち、１つのノードは、所定のアプリケーションを実行する第１のノードとしての稼動系ノードとなり、他の１つは、稼動系ノードと完全同期方式を用いてアプリケーション情報を同期させ、稼動系ノードに障害が発生したときに、稼動系ノードに代わって所定のアプリケーションを実行する第２のノードとしての完全同期待機系ノードとなる。また、稼動系ノードおよび完全同期待機系ノード以外のノード１０−１〜１０−ｎは、稼動系ノードと非同期方式を用いてアプリケーション情報を同期させる第３のノードとしての非同期待機系ノードとなる。
【００２２】
次に、ノード１０−１の構成について説明する。なお、ノード１０−２〜１０−ｎは、ノード１０−１と同様の構成であるので説明を省略する。
【００２３】
ノード１０−１は、クラスタ管理部１１０−１と、アプリケーション部１２０−１と、記憶部１３０−１と、レプリケータ１４０−１と、を具備する。
【００２４】
クラスタ管理部１１０−１は、例えば、他のクラスタ管理部１１０−２〜１１０−ｎと通信を行い、ノード１０−１を稼動系ノード、完全同期待機系ノード、非同期待機系ノードのいずれとするかを決定し、決定した結果をアプリケーション部１２０−１およびレプリケータ１４０−１に出力する。
【００２５】
アプリケーション部１２０−１は、クラスタ管理部１１０−１がノード１０−１を稼動系ノードと決定した場合には、記憶部１３０−１に記憶されているアプリケーション情報を用いて所定のアプリケーションを実行する。また、アプリケーション部１２０−１は、アプリケーション情報の更新が生じると、完全同期待機系ノードから更新後のアプリケーション情報の同期が完了した旨を示す完了通知が行われるまで、更新後のアプリケーション情報を用いた処理を待ち合わせる。
【００２６】
記憶部１３０−１は、アプリケーション情報を記憶する。
【００２７】
レプリケータ１４０−１は、クラスタ管理部１１０−１がノード１０−１を稼動系ノードと決定した場合には、アプリケーション情報の更新が生じるたびに、更新後のアプリケーション情報を完全同期待機系ノード、および、非同期待機系ノードに送信する。また、レプリケータ１４０−１は、クラスタ管理部１１０−１がノード１０−１を完全同期待機系ノード、または、非同期待機系ノードと決定した場合には、稼動系ノードから送信されてきたアプリケーション情報を記憶部１３０−１に書き込み、完了通知を稼動系ノードに行う。
【００２８】
次に、本実施形態のクラスタシステム１の動作について説明する。
【００２９】
以下では、図２に示すように、クラスタシステム１は、３つのノード１０−１〜１０−３を有するものとする。また、以下では、ノード１０−１が稼動系ノードと決定され、ノード１０−２が完全同期待機系ノードと決定され、ノード１０−３が非同期待機系ノードと決定されているものとする。
【００３０】
まず、アプリケーション情報の同期時のクラスタシステム１の動作について図３に示すフローチャートを参照して説明する。
【００３１】
稼動系ノードであるノード１０−１のアプリケーション部１２０−１は、アプリケーション情報の更新が生じると、更新後のアプリケーション情報の記憶部１３０−１への書き込み要求をレプリケータ１４０−１に出力する（ステップＳ３１）。
【００３２】
書き込み要求が出力されると、レプリケータ１４０−１は、例えば、クラスタ管理部１１０−１に、クラスタ管理部１１０−２，１１０−３各々への問い合せを行わせて、完全同期待機系ノードが存在するか否かを判定する（ステップＳ３２）。
【００３３】
ノード１０−２が完全同期待機系ノードと決定されているので（ステップＳ３２：ＹＥＳ）、レプリケータ１４０−１は、書き込み要求のあったアプリケーション情報をノード１０−２に送信する（ステップＳ３３）。
【００３４】
ノード１０−２ではレプリケータ１４０−２が、ノード１０−１から送信されてきたアプリケーション情報を記憶部１３０−２に記憶させた後に、完了通知をノード１０−１に行う。
【００３５】
ノード１０−１ではレプリケータ１４０−１が、アプリケーション情報を送信した後、所定時間以内にノード１０−２から完了通知が行われたか否かに応じて、ノード１０−２がアプリケーション情報の受信に成功したか否かを判定する（ステップＳ３４）。
【００３６】
ノード１０−２がアプリケーション情報の受信に失敗したと判定した場合には（ステップＳ３４：ＮＯ）、レプリケータ１４０−１は、書き込み要求のあったアプリケーション情報の記憶部１３０−１への書き込みを行わず、アプリケーション情報の書き込みに失敗した旨をアプリケーション部１２０−１に通知し（ステップＳ３５）、処理を終了する。
【００３７】
ノード１０−２がアプリケーション情報の受信に成功したと判定した場合には（ステップＳ３４：ＹＥＳ）、レプリケータ１４０−１は、書き込み要求のあったアプリケーション情報を記憶部１３０−１に書き込み、アプリケーション情報の書き込みに成功した旨をアプリケーション部１２０−１に通知する（ステップＳ３６）。アプリケーション部１２０−１は、レプリケータ１４０−１からの通知を受けて、更新後のアプリケーション情報を用いた処理を進める。
【００３８】
次に、レプリケータ１４０−１は、非同期待機系ノードが存在するか否かを判定する（ステップＳ３７）。
【００３９】
ノード１０−３が非同期待機系ノードと決定されているので（ステップＳ３７：ＹＥＳ）、レプリケータ１４０−１は、アプリケーション部１２０−１が処理を行っているバックグラウンドで書き込み要求のあったアプリケーション情報をノード１０−３に送信し（ステップＳ３８）、処理を終了する。
【００４０】
なお、完全同期待機系ノードが存在しない場合には（ステップＳ３２：ＮＯ）、レプリケータ１４０−１は、ステップＳ３６の処理に進む。また、非同期待機系ノードが存在しない場合には（ステップＳ３７：ＮＯ）、レプリケータ１４０−１は、処理を終了する。
【００４１】
次に、稼動系ノードに障害が発生した場合のクラスタシステム１の動作について図４に示すフローチャートを参照して説明する。
【００４２】
完全同期待機系ノードであるノード１０−２のクラスタ管理部１１０−２、および、非同期待機系ノードであるノード１０−３のクラスタ管理部１１０−３はそれぞれ、稼動系ノードであるノード１０−１に障害が発生したことを検出すると、自ノードが完全同期待機系ノードであるか否かを判定する（ステップＳ４１）。なお、クラスタ管理部１１０−２，１１０−３はそれぞれ、ノード１０−１のクラスタ管理部１１０−１との通信により、ノード１０−１に障害が発生したことを検出する。
【００４３】
ノード１０−２が完全同期待機系ノードであるので（ステップＳ４１：ＹＥＳ）、クラスタ管理部１１０−２は、ノード１０−２を新たな稼動系ノードと決定する。アプリケーション部１２０−２は、クラスタ管理部１１０−２の決定を受けて、ノード１０−１に変わってアプリケーションを実行する（ステップＳ４２）。
【００４４】
ノード１０−３が完全同期待機系ノードでない、すなわち、非同期待機系ノードであるので（ステップＳ４１：ＮＯ）、クラスタ管理部１１０−３は、ノード１０−３を新たな完全同期待機系ノードとするか否かを決定する（ステップＳ４３）。
【００４５】
ここで、非同期待機系ノードが複数存在する場合には、非同期待機系ノードのクラスタ管理部の各々は、その複数の非同期待機系ノードのうち、１つだけが完全同期待機系ノードとなるように、自ノードを完全同期待機系ノードとするか否かを決定する。
【００４６】
本実施形態においては、非同期待機系ノードはノード１０−３だけなので、クラスタ管理部１１０−３は、ノード１０−３を新たな完全同期待機系ノードに変更すると決定し（ステップＳ４３：ＹＥＳ）、レプリケータ１４０−３は、クラスタ管理部１１０−３の決定を受けて、新たな稼動系ノードであるノード１０−２からアプリケーション情報を取得し、取得したアプリケーション情報と記憶部１３０−３に記憶されているアプリケーション情報とが一致するか否かを判定する（ステップＳ４４）。
【００４７】
ノード１０−２から取得したアプリケーション情報と記憶部１３０−３に記憶されているアプリケーション情報とが一致している場合には（ステップＳ４４：ＹＥＳ）、レプリケータ１４０−３は、以後、ノード１０−２から送信されてくるアプリケーション情報を記憶部１３０−３に書き込み、ノード１０−３を完全同期待機系ノードとして動作させる（ステップＳ４５）。
【００４８】
ノード１０−２から取得したアプリケーション情報と記憶部１３０−３に記憶されているアプリケーション情報とに差分がある場合には（ステップＳ４４：ＮＯ）、レプリケータ１４０−３は、その差分を記憶部１３０−３に記憶させて、記憶部１３０−３に記憶されるアプリケーション情報をノード１０−２から取得したアプリケーション情報と一致させたのち（ステップＳ４６）、ステップＳ４５の処理に進む。
【００４９】
図５は、図４のステップＳ４１からステップＳ４６までの処理が行われた場合の各ノードの状態を示す図である。図５に示すように、稼動系ノードであったノード１０−１の停止にともない、完全同期待機系ノードであったノード１０−２が新たな稼動系ノードとなり、非同期待機系ノードであったノード１０−３が新たな完全同期待機系ノードとなる。
【００５０】
なお、クラスタ管理部１１０−３は、ノード１０−３を完全同期待機系ノードとしないと決定した場合には（ステップＳ４３：ＮＯ）、ノード１０−３を非同期待機系ノードのままとする（ステップＳ４７）。
【００５１】
このように本実施形態によれば、クラスタシステム１は、３以上の複数のノードのうち、１つを稼動系ノードとし、１つを完全同期待機系ノードとし、残りを非同期待機系ノードとし、稼動系ノードに障害が発生すると、完全同期待機系ノードを新たな稼動系ノードとし、非同期待機系ノードのうちの１つを新たな完全同期待機系ノードとする。
【００５２】
そのため、完全同期待機系ノードは常に１つとなるので、性能低下を招くことなく、アプリケーション情報を稼動系ノードと完全同期待機系ノードとで同期させることができる。また、稼動系ノードに障害が発生しても、非同期待機系ノードのうち１つが完全同期待機系ノードとなるので、アプリケーション情報が欠落するのを防ぐことができる。
【００５３】
なお、上述した実施形態においては、稼動系ノードは、非同期待機系ノードともアプリケーション情報を同期させる例を用いて説明したが、これに限られるものではない。
【００５４】
図６は、本実施形態のクラスタシステムの他の構成を示す図である。なお、図６において、図１と同様の構成については同じ符号を付し、説明を省略する。
【００５５】
図６に示すクラスタシステム１においては、稼動系ノードであるノード１０−１のレプリケータ１４０−１は、完全同期待機系ノードであるノード１０−２とは完全同期方式を用いてアプリケーション情報を同期させ、完全同期待機系ノードではないノード１０−３とはアプリケーション情報の同期を行わない。ノード１０−１の障害の発生にともない、ノード１０−２が新たな稼動系ノードとなり、ノード１０−３が新たな完全同期待機系ノードとなると、ノード１０−２は、ノード１０−３と完全同期方式を用いてアプリケーション情報を同期させる。
【００５６】
図７は、図６に示すクラスタシステム１のアプリケーション情報の同期時の動作を示すフローチャートである。なお、図７において、図３と同様の処理については同じ符号を付し、説明を省略する。
【００５７】
図７に示すように、ステップＳ３６において、レプリケータ１４０−１は、アプリケーション情報の書き込みに成功した旨をアプリケーション部１２０−１に通知し、処理を終了する。つまり、ステップＳ３７、Ｓ３８の処理が省略される。
【００５８】
図８は、稼動系ノードに障害が発生した場合のクラスタシステム１の動作を示すフローチャートである。なお、図７において、図４と同様の処理については同じ符号を付し、説明を省略する。
【００５９】
図８に示すように、ステップＳ４３において、ノード１０−３のクラスタ管理部１１０−３は、ノード１０−３を新たな完全同期待機系ノードとすると決定した場合には（ステップＳ４３：ＹＥＳ）、それまで稼動系ノードとアプリケーション情報の同期を行っていないので、新たな稼動系ノードからアプリケーション情報を取得し、そのアプリケーション情報を記憶部１３０−３に記憶させる（ステップＳ５１）。つまり、ステップＳ４４の処理が省略される。
【００６０】
このように、稼動系ノードが完全同期待機系ノードとだけアプリケーション情報を同期させることで、システム構成をより簡易にすることができる。
【符号の説明】
【００６１】
１    クラスタシステム
１０−１，１０−２，１０−３，１０−ｎ    ノード
１１０−１，１１０−２，１１０−３，１１０−ｎ    クラスタ管理部
１２０−１，１２０−２，１２０−３，１２０−ｎ    アプリケーション部
１３０−１，１３０−２，１３０−３，１３０−ｎ    記憶部
１４０−１，１４０−２，１４０−３，１４０−ｎ    レプリケータ
【図１】
0005716460.tif 000002
【図２】
0005716460.tif 000003
【図３】
0005716460.tif 000004
【図４】
0005716460.tif 000005
【図５】
0005716460.tif 000006
【図６】
0005716460.tif 000007
【図７】
0005716460.tif 000008
【図８】
0005716460.tif 000009