説明

クラスタシステムおよびその制御方法

【課題】クラスタシステムの処理性能の劣化を抑制しつつ、可用性を高める。
【解決手段】本発明のクラスタシステムは、3以上の複数のノードを有し、複数のノードの各々は、自ノードを、アプリケーションを実行する第1のノード、第1のノードに障害が発生したときにアプリケーションを実行する第2のノード、および、これら以外の第3のノードのいずれかに決定するクラスタ管理部と、自ノードが第1のノードと決定されると、記憶部に記憶させるアプリケーション情報を第2のノードに送信し、自ノードが第2のノードと決定されると、第1のノードから送信されてくるアプリケーション情報を記憶部に記憶させた後に、第1のノードに通知を行うレプリケータと、自ノードが第1のノードと決定されると、通知が行われた後に、アプリケーション情報を用いてアプリケーションを実行するアプリケーション部と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、3以上のノードを有するクラスタシステムおよびその制御方法に関する。
【背景技術】
【0002】
特許文献1(特開2008−140080号公報)には、それぞれが所定のアプリケーションを実行可能である2つのノードを接続し、一方のノードが所定のアプリケーションを実行し、その一方のノードに障害が発生すると、その一方のノードに代わって、他方のノードがアプリケーションを実行するクラスタシステムが開示されている。特許文献1に開示のクラスタシステムによれば、一方のノードに障害が発生しても、他方のノードがアプリケーションを実行するので、可用性を高めることができる。
【0003】
以下では、アプリケーションを実行するノードを稼動系ノードと称し、稼動系ノードが正常に動作している間は待機しており、稼動系のノードに障害が発生すると、稼動系ノードに代わってアプリケーションを実行するノードを待機系ノードと称する。
【0004】
特許文献2(特開2009−217765号公報)には、待機系ノードを2以上設け、障害が発生した稼動系ノードに代わってアプリケーションを実行する待機系ノードにも障害が発生した場合には、他の待機系ノードがアプリケーションを実行する技術が開示されている。特許文献2に開示の技術によれば、待機系ノードの数を増加させるほど、クラスタシステムの可用性を高めることができる。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−140080号公報
【特許文献2】特開2009−217765号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
稼動系ノードに障害が発生した場合に、稼動系ノードに代わって待機系ノードがアプリケーションを実行するためには、アプリケーションの実行に必要な情報であるアプリケーション情報を稼動系ノードと待機系ノードとの間で同期させておく必要がある。
【0007】
アプリケーション情報を稼動系ノードと待機系ノードとの間で同期させる方式としては、完全同期方式、非同期方式などがある。
【0008】
完全同期方式とは、稼動系ノードが、アプリケーション情報を待機系ノードに送信し、アプリケーション情報の待機系ノードとの同期が完了するまで、そのアプリケーション情報を用いた処理を待ち合わせる方式である。
【0009】
また、非同期方式とは、稼動系ノードが、アプリケーション情報を待機系ノードに送信し、アプリケーション情報の待機系ノードとの同期が完了するのを待たずに、そのアプリケーション情報を用いた処理を行う方式である。
【0010】
非同期方式では、稼動系ノードの有するアプリケーション情報のすべてが待機系ノードと同期されることが保障されないため、稼動系ノードに障害が発生した場合に、アプリケーション情報が失われる可能性がある。したがって、アプリケーション情報が失われることが許容されないシステムにおいては、完全同期方式を適用する必要がある。
【0011】
しかし、完全同期方式を適用したクラスタシステムにおいては、稼動系ノードが待機系ノードとのアプリケーション情報の同期が完了するまで処理を待ち合わせるため、アプリケーション情報を同期させる待機系ノードの数に応じてクラスタシステムの処理性能が劣化してしまう。したがって、待機系ノードの数を増加させるほどクラスタシステムの可用性を高めることができるにもかかわらず、処理性能の劣化を防ぐために、待機系ノードの数を制限しなければならないという課題があった。
【0012】
本発明の目的は、上述した課題を解決し、処理性能を劣化させることなく、可用性の向上を図ることができるクラスタシステムおよびその制御方法を提供することにある。
【課題を解決するための手段】
【0013】
上記目的を達成するために本発明のクラスタシステムは、
互いに接続された3以上の複数のノードを有するクラスタシステムであって、
前記複数のノードの各々は、
自ノードを、所定のアプリケーションを実行する第1のノード、前記第1のノードに障害が発生したときに前記第1のノードに代わって前記アプリケーションを実行する第2のノード、および、これら以外の第3のノードのいずれかに決定し、該決定の結果を出力するクラスタ管理部と、
前記所定のアプリケーションの実行に必要な情報であるアプリケーション情報を記憶する記憶部と、
前記クラスタ管理部により自ノードが前記第1のノードと決定されると、前記記憶部に記憶させるアプリケーション情報を前記第2のノードに送信し、前記クラスタ管理部により自ノードが前記第2のノードと決定されると、前記第1のノードから送信されてくるアプリケーション情報を前記記憶部に記憶させた後に、前記アプリケーション情報の同期が完了した旨の通知を前記第1のノードに行うレプリケータと、
前記クラスタ管理部により自ノードが前記第1のノードと決定されると、前記第2のノードから前記通知が行われた後に、前記記憶部に記憶されているアプリケーション情報を用いて前記所定のアプリケーションを実行するアプリケーション部と、を具備する。
【0014】
上記目的を達成するために本発明のクラスタシステムの制御方法は、
互いに接続された3以上の複数のノードを有するクラスタシステムの制御方法であって、
前記複数のノードの各々において、
前記クラスタ管理部が、自ノードを、所定のアプリケーションを実行する第1のノード、前記第1のノードに障害が発生したときに前記第1のノードに代わって前記アプリケーションを実行する第2のノード、および、これら以外の第3のノードのいずれかに決定し、該決定の結果を出力し、
記憶部が、前記所定のアプリケーションの実行に必要な情報であるアプリケーション情報を記憶し、
レプリケータが、前記クラスタ管理部により自ノードが前記第1のノードと決定されると、前記記憶部に記憶させるアプリケーション情報を前記第2のノードに送信し、前記クラスタ管理部により自ノードが前記第2のノードと決定されると、前記第1のノードから送信されてくるアプリケーション情報を前記記憶部に記憶させた後に、前記アプリケーション情報の同期が完了した旨の通知を前記第1のノードに行い、
アプリケーション部が、前記クラスタ管理部により自ノードが前記第1のノードと決定されると、前記第2のノードから前記通知が行われた後に、前記記憶部に記憶されているアプリケーション情報を用いて前記所定のアプリケーションを実行する。
【発明の効果】
【0015】
本発明によれば、クラスタシステムの処理性能の劣化を抑制しつつ、可用性の向上を図ることができる。
【図面の簡単な説明】
【0016】
【図1】本発明の一実施形態のクラスタシステムの構成を示すブロック図である。
【図2】図1に示すクラスタシステムの動作を説明するための図である。
【図3】図1に示すクラスタシステムにおけるアプリケーション情報の同期時の動作を示すフローチャートである。
【図4】図1に示すクラスタシステムにおける稼動系ノードに障害が発生した場合の動作を示すフローチャートである。
【図5】図1に示すクラスタシステムの動作を説明するための図である。
【図6】図1に示すクラスタシステムのさらに他の構成を示す図である。
【図7】図6に示すクラスタシステムにおけるアプリケーション情報の同期時の動作を示すフローチャートである。
【図8】図6に示すクラスタシステムにおける稼動系ノードに障害が発生した場合の動作を示すフローチャートである。
【発明を実施するための形態】
【0017】
以下に、本発明を実施するための形態について図面を参照して説明する。
【0018】
図1は、本発明の一実施形態のクラスタシステムの構成を示すブロック図である。
【0019】
図1に示すクラスタシステム1は、複数のノード10−1〜10−n(nは3以上の整数)と、スイッチ20と、を有する。
【0020】
ノード10−1〜10−nはそれぞれ、スイッチ20を介して互いに接続され、アプリケーション情報などを送受信する。
【0021】
ノード10−1〜10−nのうち、1つのノードは、所定のアプリケーションを実行する第1のノードとしての稼動系ノードとなり、他の1つは、稼動系ノードと完全同期方式を用いてアプリケーション情報を同期させ、稼動系ノードに障害が発生したときに、稼動系ノードに代わって所定のアプリケーションを実行する第2のノードとしての完全同期待機系ノードとなる。また、稼動系ノードおよび完全同期待機系ノード以外のノード10−1〜10−nは、稼動系ノードと非同期方式を用いてアプリケーション情報を同期させる第3のノードとしての非同期待機系ノードとなる。
【0022】
次に、ノード10−1の構成について説明する。なお、ノード10−2〜10−nは、ノード10−1と同様の構成であるので説明を省略する。
【0023】
ノード10−1は、クラスタ管理部110−1と、アプリケーション部120−1と、記憶部130−1と、レプリケータ140−1と、を具備する。
【0024】
クラスタ管理部110−1は、例えば、他のクラスタ管理部110−2〜110−nと通信を行い、ノード10−1を稼動系ノード、完全同期待機系ノード、非同期待機系ノードのいずれとするかを決定し、決定した結果をアプリケーション部120−1およびレプリケータ140−1に出力する。
【0025】
アプリケーション部120−1は、クラスタ管理部110−1がノード10−1を稼動系ノードと決定した場合には、記憶部130−1に記憶されているアプリケーション情報を用いて所定のアプリケーションを実行する。また、アプリケーション部120−1は、アプリケーション情報の更新が生じると、完全同期待機系ノードから更新後のアプリケーション情報の同期が完了した旨を示す完了通知が行われるまで、更新後のアプリケーション情報を用いた処理を待ち合わせる。
【0026】
記憶部130−1は、アプリケーション情報を記憶する。
【0027】
レプリケータ140−1は、クラスタ管理部110−1がノード10−1を稼動系ノードと決定した場合には、アプリケーション情報の更新が生じるたびに、更新後のアプリケーション情報を完全同期待機系ノード、および、非同期待機系ノードに送信する。また、レプリケータ140−1は、クラスタ管理部110−1がノード10−1を完全同期待機系ノード、または、非同期待機系ノードと決定した場合には、稼動系ノードから送信されてきたアプリケーション情報を記憶部130−1に書き込み、完了通知を稼動系ノードに行う。
【0028】
次に、本実施形態のクラスタシステム1の動作について説明する。
【0029】
以下では、図2に示すように、クラスタシステム1は、3つのノード10−1〜10−3を有するものとする。また、以下では、ノード10−1が稼動系ノードと決定され、ノード10−2が完全同期待機系ノードと決定され、ノード10−3が非同期待機系ノードと決定されているものとする。
【0030】
まず、アプリケーション情報の同期時のクラスタシステム1の動作について図3に示すフローチャートを参照して説明する。
【0031】
稼動系ノードであるノード10−1のアプリケーション部120−1は、アプリケーション情報の更新が生じると、更新後のアプリケーション情報の記憶部130−1への書き込み要求をレプリケータ140−1に出力する(ステップS31)。
【0032】
書き込み要求が出力されると、レプリケータ140−1は、例えば、クラスタ管理部110−1に、クラスタ管理部110−2,110−3各々への問い合せを行わせて、完全同期待機系ノードが存在するか否かを判定する(ステップS32)。
【0033】
ノード10−2が完全同期待機系ノードと決定されているので(ステップS32:YES)、レプリケータ140−1は、書き込み要求のあったアプリケーション情報をノード10−2に送信する(ステップS33)。
【0034】
ノード10−2ではレプリケータ140−2が、ノード10−1から送信されてきたアプリケーション情報を記憶部130−2に記憶させた後に、完了通知をノード10−1に行う。
【0035】
ノード10−1ではレプリケータ140−1が、アプリケーション情報を送信した後、所定時間以内にノード10−2から完了通知が行われたか否かに応じて、ノード10−2がアプリケーション情報の受信に成功したか否かを判定する(ステップS34)。
【0036】
ノード10−2がアプリケーション情報の受信に失敗したと判定した場合には(ステップS34:NO)、レプリケータ140−1は、書き込み要求のあったアプリケーション情報の記憶部130−1への書き込みを行わず、アプリケーション情報の書き込みに失敗した旨をアプリケーション部120−1に通知し(ステップS35)、処理を終了する。
【0037】
ノード10−2がアプリケーション情報の受信に成功したと判定した場合には(ステップS34:YES)、レプリケータ140−1は、書き込み要求のあったアプリケーション情報を記憶部130−1に書き込み、アプリケーション情報の書き込みに成功した旨をアプリケーション部120−1に通知する(ステップS36)。アプリケーション部120−1は、レプリケータ140−1からの通知を受けて、更新後のアプリケーション情報を用いた処理を進める。
【0038】
次に、レプリケータ140−1は、非同期待機系ノードが存在するか否かを判定する(ステップS37)。
【0039】
ノード10−3が非同期待機系ノードと決定されているので(ステップS37:YES)、レプリケータ140−1は、アプリケーション部120−1が処理を行っているバックグラウンドで書き込み要求のあったアプリケーション情報をノード10−3に送信し(ステップS38)、処理を終了する。
【0040】
なお、完全同期待機系ノードが存在しない場合には(ステップS32:NO)、レプリケータ140−1は、ステップS36の処理に進む。また、非同期待機系ノードが存在しない場合には(ステップS37:NO)、レプリケータ140−1は、処理を終了する。
【0041】
次に、稼動系ノードに障害が発生した場合のクラスタシステム1の動作について図4に示すフローチャートを参照して説明する。
【0042】
完全同期待機系ノードであるノード10−2のクラスタ管理部110−2、および、非同期待機系ノードであるノード10−3のクラスタ管理部110−3はそれぞれ、稼動系ノードであるノード10−1に障害が発生したことを検出すると、自ノードが完全同期待機系ノードであるか否かを判定する(ステップS41)。なお、クラスタ管理部110−2,110−3はそれぞれ、ノード10−1のクラスタ管理部110−1との通信により、ノード10−1に障害が発生したことを検出する。
【0043】
ノード10−2が完全同期待機系ノードであるので(ステップS41:YES)、クラスタ管理部110−2は、ノード10−2を新たな稼動系ノードと決定する。アプリケーション部120−2は、クラスタ管理部110−2の決定を受けて、ノード10−1に変わってアプリケーションを実行する(ステップS42)。
【0044】
ノード10−3が完全同期待機系ノードでない、すなわち、非同期待機系ノードであるので(ステップS41:NO)、クラスタ管理部110−3は、ノード10−3を新たな完全同期待機系ノードとするか否かを決定する(ステップS43)。
【0045】
ここで、非同期待機系ノードが複数存在する場合には、非同期待機系ノードのクラスタ管理部の各々は、その複数の非同期待機系ノードのうち、1つだけが完全同期待機系ノードとなるように、自ノードを完全同期待機系ノードとするか否かを決定する。
【0046】
本実施形態においては、非同期待機系ノードはノード10−3だけなので、クラスタ管理部110−3は、ノード10−3を新たな完全同期待機系ノードに変更すると決定し(ステップS43:YES)、レプリケータ140−3は、クラスタ管理部110−3の決定を受けて、新たな稼動系ノードであるノード10−2からアプリケーション情報を取得し、取得したアプリケーション情報と記憶部130−3に記憶されているアプリケーション情報とが一致するか否かを判定する(ステップS44)。
【0047】
ノード10−2から取得したアプリケーション情報と記憶部130−3に記憶されているアプリケーション情報とが一致している場合には(ステップS44:YES)、レプリケータ140−3は、以後、ノード10−2から送信されてくるアプリケーション情報を記憶部130−3に書き込み、ノード10−3を完全同期待機系ノードとして動作させる(ステップS45)。
【0048】
ノード10−2から取得したアプリケーション情報と記憶部130−3に記憶されているアプリケーション情報とに差分がある場合には(ステップS44:NO)、レプリケータ140−3は、その差分を記憶部130−3に記憶させて、記憶部130−3に記憶されるアプリケーション情報をノード10−2から取得したアプリケーション情報と一致させたのち(ステップS46)、ステップS45の処理に進む。
【0049】
図5は、図4のステップS41からステップS46までの処理が行われた場合の各ノードの状態を示す図である。図5に示すように、稼動系ノードであったノード10−1の停止にともない、完全同期待機系ノードであったノード10−2が新たな稼動系ノードとなり、非同期待機系ノードであったノード10−3が新たな完全同期待機系ノードとなる。
【0050】
なお、クラスタ管理部110−3は、ノード10−3を完全同期待機系ノードとしないと決定した場合には(ステップS43:NO)、ノード10−3を非同期待機系ノードのままとする(ステップS47)。
【0051】
このように本実施形態によれば、クラスタシステム1は、3以上の複数のノードのうち、1つを稼動系ノードとし、1つを完全同期待機系ノードとし、残りを非同期待機系ノードとし、稼動系ノードに障害が発生すると、完全同期待機系ノードを新たな稼動系ノードとし、非同期待機系ノードのうちの1つを新たな完全同期待機系ノードとする。
【0052】
そのため、完全同期待機系ノードは常に1つとなるので、性能低下を招くことなく、アプリケーション情報を稼動系ノードと完全同期待機系ノードとで同期させることができる。また、稼動系ノードに障害が発生しても、非同期待機系ノードのうち1つが完全同期待機系ノードとなるので、アプリケーション情報が欠落するのを防ぐことができる。
【0053】
なお、上述した実施形態においては、稼動系ノードは、非同期待機系ノードともアプリケーション情報を同期させる例を用いて説明したが、これに限られるものではない。
【0054】
図6は、本実施形態のクラスタシステムの他の構成を示す図である。なお、図6において、図1と同様の構成については同じ符号を付し、説明を省略する。
【0055】
図6に示すクラスタシステム1においては、稼動系ノードであるノード10−1のレプリケータ140−1は、完全同期待機系ノードであるノード10−2とは完全同期方式を用いてアプリケーション情報を同期させ、完全同期待機系ノードではないノード10−3とはアプリケーション情報の同期を行わない。ノード10−1の障害の発生にともない、ノード10−2が新たな稼動系ノードとなり、ノード10−3が新たな完全同期待機系ノードとなると、ノード10−2は、ノード10−3と完全同期方式を用いてアプリケーション情報を同期させる。
【0056】
図7は、図6に示すクラスタシステム1のアプリケーション情報の同期時の動作を示すフローチャートである。なお、図7において、図3と同様の処理については同じ符号を付し、説明を省略する。
【0057】
図7に示すように、ステップS36において、レプリケータ140−1は、アプリケーション情報の書き込みに成功した旨をアプリケーション部120−1に通知し、処理を終了する。つまり、ステップS37、S38の処理が省略される。
【0058】
図8は、稼動系ノードに障害が発生した場合のクラスタシステム1の動作を示すフローチャートである。なお、図7において、図4と同様の処理については同じ符号を付し、説明を省略する。
【0059】
図8に示すように、ステップS43において、ノード10−3のクラスタ管理部110−3は、ノード10−3を新たな完全同期待機系ノードとすると決定した場合には(ステップS43:YES)、それまで稼動系ノードとアプリケーション情報の同期を行っていないので、新たな稼動系ノードからアプリケーション情報を取得し、そのアプリケーション情報を記憶部130−3に記憶させる(ステップS51)。つまり、ステップS44の処理が省略される。
【0060】
このように、稼動系ノードが完全同期待機系ノードとだけアプリケーション情報を同期させることで、システム構成をより簡易にすることができる。
【符号の説明】
【0061】
1 クラスタシステム
10−1,10−2,10−3,10−n ノード
110−1,110−2,110−3,110−n クラスタ管理部
120−1,120−2,120−3,120−n アプリケーション部
130−1,130−2,130−3,130−n 記憶部
140−1,140−2,140−3,140−n レプリケータ

【特許請求の範囲】
【請求項1】
互いに接続された3以上の複数のノードを有するクラスタシステムであって、
前記複数のノードの各々は、
自ノードを、所定のアプリケーションを実行する第1のノード、前記第1のノードに障害が発生したときに前記第1のノードに代わって前記アプリケーションを実行する第2のノード、および、これら以外の第3のノードのいずれかに決定し、該決定の結果を出力するクラスタ管理部と、
前記所定のアプリケーションの実行に必要な情報であるアプリケーション情報を記憶する記憶部と、
前記クラスタ管理部により自ノードが前記第1のノードと決定されると、前記記憶部に記憶させるアプリケーション情報を前記第2のノードに送信し、前記クラスタ管理部により自ノードが前記第2のノードと決定されると、前記第1のノードから送信されてくるアプリケーション情報を前記記憶部に記憶させた後に、前記アプリケーション情報の同期が完了した旨の通知を前記第1のノードに行うレプリケータと、
前記クラスタ管理部により自ノードが前記第1のノードと決定されると、前記第2のノードから前記通知が行われた後に、前記記憶部に記憶されているアプリケーション情報を用いて前記所定のアプリケーションを実行するアプリケーション部と、を具備することを特徴とするクラスタシステム。
【請求項2】
請求項1記載のクラスタシステムにおいて、
前記クラスタ管理部は、前記第1のノードに障害が発生すると、自ノードを前記第2のノードと決定している場合には、自ノードを新たな前記第1のノードと決定し、自ノードを前記第3のノードと決定している場合には、前記第3のノードのうちの1つが新たな前記第2のノードとなるように、自ノードを前記新たな第2のノードとするか否かを決定し、該決定の結果を出力することを特徴とするクラスタシステム。
【請求項3】
互いに接続された3以上の複数のノードを有するクラスタシステムの制御方法であって、
前記複数のノードの各々において、
前記クラスタ管理部が、自ノードを、所定のアプリケーションを実行する第1のノード、前記第1のノードに障害が発生したときに前記第1のノードに代わって前記アプリケーションを実行する第2のノード、および、これら以外の第3のノードのいずれかに決定し、該決定の結果を出力し、
記憶部が、前記所定のアプリケーションの実行に必要な情報であるアプリケーション情報を記憶し、
レプリケータが、前記クラスタ管理部により自ノードが前記第1のノードと決定されると、前記記憶部に記憶させるアプリケーション情報を前記第2のノードに送信し、前記クラスタ管理部により自ノードが前記第2のノードと決定されると、前記第1のノードから送信されてくるアプリケーション情報を前記記憶部に記憶させた後に、前記アプリケーション情報の同期が完了した旨の通知を前記第1のノードに行い、
アプリケーション部が、前記クラスタ管理部により自ノードが前記第1のノードと決定されると、前記第2のノードから前記通知が行われた後に、前記記憶部に記憶されているアプリケーション情報を用いて前記所定のアプリケーションを実行することを特徴とするクラスタシステムの制御方法。
【請求項4】
請求項3記載のクラスタシステムの制御方法において、
前記クラスタ管理部が、前記第1のノードに障害が発生すると、自ノードを前記第2のノードと決定している場合には、自ノードを新たな前記第1のノードと決定し、自ノードを前記第3のノードと決定している場合には、前記第3のノードのうちの1つが新たな前記第2のノードとなるように、自ノードを前記新たな第2のノードとするか否かを決定し、該決定の結果を出力することを特徴とするクラスタシステムの制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−185560(P2012−185560A)
【公開日】平成24年9月27日(2012.9.27)
【国際特許分類】
【出願番号】特願2011−46708(P2011−46708)
【出願日】平成23年3月3日(2011.3.3)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】