(58)【調査した分野】(Int.Cl.,DB名)
前記サーバは、前記ハートビート応答に含まれる前記クラスタ情報に基づいて各サーバの情報をサーバ情報記憶部に記憶するサーバ管理部を更に有する請求項1に記載のクラスタシステム。
前記クラスタ制御部は、正常に動作していないと判定したサーバが存在する場合に、前記リソース情報記憶部を参照して、前記正常に動作していないと判定したサーバが提供していたサービスを特定し、該特定したサービスを正常に動作していないと判定したサーバとは異なるサーバに引き継がせる処理を更に実施する請求項3に記載のクラスタシステム。
【発明を実施するための形態】
【0020】
本発明の実施の形態の説明に先立って、本発明の概要を説明する。
図1は、本発明のクラスタシステムを示す。クラスタシステムは、複数のサーバ10と、それら複数のサーバのそれぞれと通信可能な管理装置20とを含む。各サーバ10は、ハートビート送信部11、ハートビート応答受信部12、及びクラスタ制御部13を有する。管理装置20は、ハートビート受信部21、ハートビート応答送信部22、クラスタ情報管理部23、及びクラスタ情報記憶部24を有する。
【0021】
管理装置20のハートビート受信部21は、サーバ10からハートビートを受信する。クラスタ情報記憶部24は、複数のサーバ10のそれぞれについてハートビートの受信間隔を含むクラスタ情報を記憶する。クラスタ情報管理部23は、ハートビートが受信された場合、クラスタ情報記憶部24に、ハートビートの受信間隔を記録する。ハートビート応答送信部22は、ハートビートを送信したサーバ10に、クラスタ情報記憶部24に記憶されたクラスタ情報を含むハートビート応答を送信する。
【0022】
各サーバ10のハートビート送信部11は、管理装置20にハートビートを送信する。ハートビート応答受信部12は、管理装置20からハートビート応答を受信する。ハートビート応答受信部12が受信するハートビート応答は、上記クラスタ情報を含む。クラスタ制御部13は、ハートビート応答に含まれるクラスタ情報を参照し、クラスタ情報における複数のサーバ10のハートビートの受信間隔に基づいて、各サーバ10が正常に動作しているか否かを判定する。
【0023】
本発明のクラスタシステムでは、クラスタを構成するサーバ10は、管理装置20とハートビートの通信を行う。管理装置20は、各サーバ10のハートビートの受信間隔を管理する。管理装置20は、ハートビートを送信したサーバ10に対し、各サーバ10のハートビートの受信間隔の情報を、ハートビート応答として送信する。各サーバ10は、ハートビート応答に含まれる情報を参照することで、他のサーバ10が正常に稼動しているか否かの判断が可能である。本発明では、各サーバ10は、管理装置20との間でハートビートの通信が可能であればよく、サーバ10同士で直接に通信を行う必要がない。このため、クラスタシステムを構成するサーバ10同士が直接通信できない場合でも、クラスタリングが可能である。
【0024】
以下、図面を参照して本発明の実施の形態について説明する。
図2は、本発明の一実施形態に係るクラスタシステムを示す。クラスタシステムは、複数のサーバ110A及び110Bと、ターゲット装置200とを有する。サーバ110A及び110B、並びにターゲット装置200は、ネットワーク通信機能を有する計算機などを用いて構成される。サーバ110A及び110B、並びにターゲット装置200は、典型的には、プロセッサ、メモリ、及び補助記憶装置などを有する。
【0025】
サーバ110A及び110Bは、例えばHAクラスタを構成するサーバである。サーバ110A及び110Bは、それぞれ、例えばオンプレミス又はクラウド環境などに配置された物理サーバ又は仮想サーバである。サーバ110A及び110Bは、稼働中である旨を示すハートビートを定期的にターゲット装置200へ送信する。なお、以下の説明において、複数のサーバを特に区別する必要がない場合は、サーバ110と呼ぶことがある。
【0026】
ターゲット装置200は、サーバ110A及び110Bから送信されるハートビートのターゲットとなるサーバである。ターゲット装置200は、クラスタを構成する全てのサーバ110から通信が可能なネットワーク、例えばインターネット00に配置される。ターゲット装置200は、停止することはなく、ハートビートの通信に対して確実に応答することができるものとする。
【0027】
ここで、サーバ110AはローカルネットワークであるサイトAに配置され、サーバ110BはサイトBに配置される。サーバ110A及び110Bには、それぞれのサイトのプライベートなIPアドレスが割り当てられている。NAT105は、ネットワークアドレス変換器であり、サイトAにおいて、サーバ110AのプライベートなIPアドレスをグローバルIPアドレスに変換する機能を有する。NAT106は、サイトBにおいて、サーバ110BのプライベートなIPアドレスをグローバルIPアドレスに変換する機能を有する。
【0028】
サーバ110Aは、NAT105を通じてインターネット300へアクセスする。サーバ110Bは、NAT106を通じてインターネット300へアクセスする。サーバ110A及び110Bに割り当てられているIPアドレスはそれぞれのサイトのプライベートIPアドレスであるため、サーバ110A及びサーバ110Bは、それぞれ相手サーバのIPアドレスを指定しても、直接に通信することはできない。
【0029】
一方、ターゲット装置200にはグローバルIPアドレスが割り当てられている。サーバ110A及びサーバ110Bは、ターゲット装置200のIPアドレスを指定することで、NAT105及び106を介してそれぞれターゲット装置200に対して通信することができる。また、ターゲット装置200は、サーバ110A及び110Bからの通信に対して応答を返すことができる。しかしながら、ターゲット装置200から、サーバ110A及び110Bに対してIPアドレスを指定して通信しようとしても、それらのIPアドレスはそれぞれのサイトのプライベートなIPアドレスであるため、ターゲット装置200はサーバ110A及び110Bに対する通信を開始することができない。
【0030】
図3は、ターゲット装置200の構成を示す。ターゲット装置200は、ハートビートターゲット制御部201、クラスタ情報管理部202、及びクラスタ情報記憶部203を有する。ターゲット装置200において、ハートビートターゲット制御部201及びクラスタ情報管理部202の機能は、例えばターゲット装置200を構成するコンピュータがプログラムに従って処理を実施することで実現される。
【0031】
ターゲット装置200は、
図1の管理装置20に対応する。ハートビートターゲット制御部201は、
図1のハートビート受信部21及びハートビート応答送信部22に対応し、クラスタ情報管理部202はクラスタ情報管理部23に対応し、クラスタ情報記憶部203はクラスタ情報記憶部24に対応する。
【0032】
ハートビートターゲット制御部201は、ハートビートの受信を待ち受ける。ハートビートターゲット制御部201は、サーバ110から送信されたハートビートを受信する。サーバ110が送信するハートビートには、ハートビートを送信したサーバ110のデータ(情報)が含まれている。ハートビートターゲット制御部201は、ハートビートを受信すると、ハートビートのデータ部分をクラスタ情報管理部202に渡す。
【0033】
クラスタ情報管理部202は、クラスタ情報記憶部203を用いてクラスタを構成する各サーバの状態などの情報を管理する。クラスタ情報記憶部203は、例えばハードディスク装置などの記憶装置であり、クラスタ情報を記憶する。クラスタ情報は、各サーバのハートビートの受信間隔を含む。クラスタ情報管理部202は、ハートビートターゲット制御部201がクラスタを構成するサーバからハートビートを受信したタイミングで、そのサーバ110のハートビートの受信間隔を、前回のハートビートの受信時刻からの経過時間で更新する。
【0034】
図4は、クラスタ情報記憶部203が記憶するクラスタ情報の一例を示す。クラスタ情報記憶部203は、例えば各サーバ110について、ハートビート間隔、ステータス、フェールオーバ優先度、及び動作しているサービス名を記憶する。ハートビート間隔はハートビートの受信時間間隔を示し、ステータスは各サーバの稼動状態を示す。フェールオーバ優先度は、フェールオーバの際の優先度(優先順位)を示す。動作しているサービス名は、各サーバ110で動作しているサービスの識別情報を示す。
【0035】
図4において、サーバAは
図2のサーバ110Aに対応し、サーバBはサーバ110Bに対応しているとする。クラスタ情報記憶部203を参照することで、例えばサーバ110Aについて、ハートビート間隔は10秒であり、ステータスは正常であることがわかる。また、フェールオーバ優先度は1であり、サーバ110AではサービスSAが動作していることがわかる。サーバ110Bについても、同様に、ハートビート間隔は15秒であり、ステータスは正常であり、フェールオーバ優先度は2であり、サービスSBが動作していることがわかる。
【0036】
図3に戻り、ハートビートターゲット制御部201は、ハートビートを送信したサーバ110に対してハートビート応答を送信する。ハートビート応答には、クラスタ情報記憶部203に記憶されたクラスタ情報が含まれる。ハートビートターゲット制御部201は、ハートビート応答の送信に際して、クラスタ情報記憶部203から、クラスタを構成する全てのサーバ110の情報を取得する。ハートビートターゲット制御部201は、取得した情報を含むハートビート応答を生成し、生成したハートビート応答をハートビートの送信元のサーバ110に送信する。
【0037】
図5は、サーバ110の構成を示す。サーバ110は、クラスタ制御部111、ハートビート制御部112、サーバ管理部113、リソース管理部114、サーバ情報記憶部115、及びリソース情報記憶部116を有する。サーバ110において、クラスタ制御部111、ハートビート制御部112、サーバ管理部113、及びリソース管理部114の機能は、例えばサーバ110を構成するコンピュータがプログラムに従って処理を実施することで実現される。
【0038】
サーバ110は、
図1のサーバ10に対応する。クラスタ制御部111は、
図1のクラスタ制御部13に対応し、ハートビート制御部112は、ハートビート送信部11及びハートビート応答受信部12に対応する。
【0039】
クラスタ制御部111は、ハートビート制御部112にハートビートの送信を依頼する。ハートビート制御部112は、ターゲット装置200にハートビートを送信し、送信したハートビートに対する応答であるハートビート応答を受信する。ハートビート応答は、上記クラスタ情報を含む。
【0040】
サーバ管理部113は、ハートビート応答に含まれるクラスタ情報に基づいて、各サーバの状態など情報を管理する。サーバ管理部113は、各サーバの状態などの情報をサーバ情報記憶部115に記憶する。サーバ情報記憶部115は、例えばハードディスク装置などの記憶装置であり、各サーバの情報をサーバリストとして記憶する。
【0041】
リソース管理部114は、ハートビート応答に含まれるクラスタ情報に基づいて、どのサーバでどのサービスが稼働中であるかを管理する。リソース管理部114は、稼働中のサービスの情報をリソース情報記憶部116に記憶する。リソース情報記憶部116は、例えばハードディスク装置などの記憶装置であり、各サーバで稼働中のサービスをリソースリストとして記憶する。
【0042】
図6は、サーバ110に設定される設定ファイルの一例を示す。設定ファイルには、クラスタ名、フェールオーバ優先度、ハートビート送信間隔、ハートビート異常間隔、及びターゲット装置のアドレスの各項目が含まれる。クラスタ名は、サーバ110(自サーバ)が構成するクラスタシステムの名称を示す。フェールオーバ優先度は、サーバ110に設定されたフェールオーバの優先順位を示す。ハートビート送信間隔は、サーバ110がターゲット装置200にハートビートを送信する際の送信間隔を示す。ハートビート異常間隔は、サーバ110に異常が発生したと判断する際の基準となるハートビートの受信間隔を示す。ターゲット装置のアドレスは、ターゲット装置200のグローバルIPアドレスを示す。
【0043】
図7は、サーバ情報記憶部115が記憶するサーバリストの一例を示す。サーバ情報記憶部115は、例えば各サーバ110について、ハートビート間隔、ステータス、及びフェールオーバ優先度を記憶する。ハートビート間隔、ステータス、及びフェールオーバ優先度は、クラスタ情報(
図4を参照)におけるそれらに対応する。サーバ管理部113は、ハートビート応答が受信されると、ハートビート応答に含まるクラスタ情報で、サーバ情報記憶部115が記憶するサーバリストの各項目を更新する。
【0044】
図8は、リソース情報記憶部116が記憶するリソースリストの一例を示す。リソース情報記憶部116は、例えばサービスと、そのサービスを実行しているサーバとの対応関係をサーバリストとして記憶する。リソース管理部114は、ハートビート応答が受信されると、ハートビート応答に含まれるクラスタ情報に基づいてリソースリストを生成し、生成したリソースリストをリソース情報記憶部116に記憶する。
【0045】
図5に戻り、クラスタ制御部111は、サーバ情報記憶部115が記憶するサーバリストを参照し、異常状態のサーバ110が存在するか否かを調べる。クラスタ制御部111は、ハートビートの受信間隔がしきい値を超えた場合にサーバ110が正常に動作していないと判定する。より詳細には、クラスタ制御部111は、サーバリストにおいて、ハートビート間隔が、設定ファイル(
図6を参照)のハートビート異常間隔以上となっているサーバ110を、異常なサーバとして認識する。
【0046】
クラスタ制御部111は、正常に動作していないサーバが存在すると判定した場合、正常に動作していないサーバ110が提供していたサービスを他のサーバ110に引き継がせる処理(フェールオーバ)を実施する。その際、クラスタ制御部111は、リソース情報記憶部116を参照し、正常に動作していないと判定したサーバ110が提供していたサービスを特定する。クラスタ制御部111は、例えば、各サーバ110のフェールオーバ優先度に基づいて、フェールオーバ先のサーバ110を選択する。クラスタ制御部111は、フェールオーバ先が自サーバである場合は、対象のサービスを起動する。
【0047】
以下、動作手順について説明する。
図9は、ハートビート送信時の動作手順を示す。各サーバ110において、クラスタ制御部111(
図5を参照)は、前回のハートビート送信から、設定ファイルのハートビート送信間隔が示す時間だけ経過すると、ハートビート制御部112にハートビートの送信を依頼する。ハートビート制御部112は、設定ファイルのターゲット装置のアドレスが示すIPアドレスを指定して、ターゲット装置200にハートビートを示すパケットを送信する(ステップA1)。
【0048】
ステップA1で送信されるハートビートを示すパケットは、例えばヘッダ部分にハートビートであることを示す情報を含む。また、ハートビートを示すパケットは、データ部分に、ハートビートを送信するサーバ110の情報、及び稼働中のサービスに関する情報を含む。例えば、ハートビートを示すパケットのデータ部分には、サーバ110の識別情報の他に、設定ファイルの「クラスタ名」及び「フェールオーバ優先度」と、サーバ110において稼動しているサービスのサービス名とが含まれる。ハートビート制御部112は、ハートビートの送信後、ハートビート応答が受信されるまで待機する。
【0049】
ターゲット装置200のハートビートターゲット制御部201(
図3を参照)は、サーバ110からパケットを受信すると、そのパケットのヘッダ部分を参照し、パケットがハートビートを示すものであるか否かを判断する。パケットがハートビートを示すものである場合、データ部分を参照し、ハートビートを送信したサーバ110がクラスタの対象サーバであるか否かを判断する。ハートビートターゲット制御部201は、クラスタの対象のサーバ110からハートビートが送信されるまで待機する。
【0050】
ハートビートターゲット制御部201は、クラスタを構成するサーバ110からハートビートを受信すると、ハートビートを示すパケットのデータ部分をクラスタ情報管理部202に渡す。クラスタ情報管理部202は、ハートビートを示すパケットのデータ部分を受け取ると、受け取ったデータ部分に基づいてクラスタ情報記憶部203が記憶するクラスタ情報を更新する(ステップA2)。クラスタ情報管理部202は、例えばクラスタを構成するサーバ110ごとに、直近のハートビートの受信時刻を保持している。クラスタ情報管理部202は、ステップA2では、例えばハートビートを送信したサーバ110の前回のハートビートの受信時刻からの経過時間を、クラスタ情報記憶部203のハートビート間隔(
図4を参照)に記憶する。
【0051】
クラスタ情報管理部202は、クラスタ情報記憶部203からクラスタ情報を取得する(ステップA3)。ステップA3で取得されるクラスタ情報には、クラスタを構成する全てのサーバ110の情報が含まれる。クラスタ情報管理部202は、取得したクラスタ情報をハートビートターゲット制御部201に渡す。ハートビートターゲット制御部201は、ステップA1でハートビートを送信したサーバ110に、ハートビート受信に対する応答として、クラスタ情報管理部202から受け取ったクラスタ情報を送信する(ステップA4)。ハートビートターゲット制御部201は、サーバ110からハートビートを受信するたびに、クラスタ情報記憶部203が記憶するクラスタ情報を、ハートビートに対する応答として返送する。
【0052】
サーバ110のハートビート制御部112は、ターゲット装置200からハートビートに対する応答(ハートビート応答)を受信する。ハートビート制御部112は、ハートビート応答に含まれるクラスタ情報をサーバ管理部113及びリソース管理部114に渡す。サーバ管理部113は、クラスタ情報に基づいてサーバ情報記憶部115が記憶するサーバリストを更新し、リソース管理部114は、クラスタ情報に基づいてリソース情報記憶部116が記憶するリソースリストを更新する(ステップA5)。
【0053】
図10は、異常サーバの発見からフェールオーバまでの動作手順を示す。各サーバ110のクラスタ制御部111は、
図9のステップA5で更新されたサーバリストのハートビート間隔を参照する(ステップB1)。クラスタ制御部111は、ハートビート間隔が異常のサーバ(異常サーバ)があるか否かを判断する(ステップB2)。
【0054】
クラスタ制御部111は、ステップB2では、各サーバのハートビート間隔と、設定ファイルの設定ファイルのハートビート異常間隔とを比較する。クラスタ制御部111は、ハートビート間隔がハートビート異常間隔異常となっているサーバ110を、何らかの原因でターゲット装置200と通信することができなくなった異常なサーバであると判断する。ステップB2で異常サーバがないと判断された場合、処理は終了となる。
【0055】
クラスタ制御部111は、ステップB2で異常サーバがあると判断した場合、そのサーバはダウンしていると判断する。クラスタ制御部111は、リソース情報記憶部116が記憶するリソースリストを参照して、異常と判断されたサーバでサービスが稼動しているか否かを判断する(ステップB3)。
【0056】
クラスタ制御部111は、ステップB3でサービスが稼動していると判断すると、そのサービスのフェールオーバ先を決定する(ステップB4)。クラスタ制御部111は、ステップB4では、サーバ情報記憶部115を参照してフェールオーバ先のサーバを決定する。より詳細には、クラスタ制御部111は、サーバ情報記憶部115が記憶するサーバリスト(
図7を参照)において、「ステータス」が正常で、かつフェールオーバ優先度が最も高いサーバを、フェールオーバ先のサーバとして決定する。
【0057】
クラスタ制御部111は、ステップB4でフェールオーバ先として決定したサーバが自サーバであるか否かを判断する(ステップB5)。クラスタ制御部111は、フェールオーバ先が自サーバである場合は、該当するサービスを起動する(ステップB6)。クラスタ制御部111は、サービスの起動後、サーバ情報記憶部115が記憶するサーバリスト、及びリソース情報記憶部116が記憶するリソースリストの内容を更新する(ステップB7)。
【0058】
クラスタ制御部111は、ステップB3でサービスが稼動していないと判断した場合は、フェールオーバ先の決定は不要であるため、ステップB7へ進み、サーバリスト及びリソースリストを更新する。クラスタ制御部111は、ステップB5でフェールオーバ先が自サーバではないと判断した場合も、ステップB7へ進み、サーバリスト及びリソースリストを更新する。以上の手順で示される処理が、クラスタを構成する各サーバ110においてそれぞれ実行され、サーバの稼動状態の監視と、それに基づくフェールオーバとが実施される。
【0059】
本実施形態では、サーバ110A及び110Bは、それぞれターゲット装置200にハートビートを送信する。本実施形態では、HAクラスタのクラスタリングにおいて、クラスタを構成するサーバ110A及び110Bは、サーバ間ではハートビートを用いた死活監視を行わずに、それぞれターゲット装置200と通信して死活監視を行う。本実施形態では、サーバ110A及び110Bは、それぞれターゲット装置200との間でハートビートの通信ができればよく、サーバ110A及び110Bの間でハートビートを直接に通信する必要がない。
【0060】
例えばサーバ110A及び110Bがローカルネットワークに所属し、かつサーバ110A及び110Bに対してそれぞれのネットワークにおいてローカルなIPアドレスが割り当ていた場合、サーバ110A及び110Bは、互いのIPアドレスで直接に通信することができない。本実施形態では、ターゲット装置200は、各サーバ110から送信された情報をクラスタ情報として記憶し、ハートビートの送信元のサーバ110に、クラスタ情報を含むハートビート応答を送信する。各サーバ110は、サーバ間で直接に通信ができなくても、ハートビート応答に含まれるクラスタ情報を用いることで、他のサーバの状態を知ることができる。各サーバ110は、クラスタ情報に基づいてフェールオーバが必要かどうかを判断し、必要な場合にフェールオーバを実施する。このように、本実施形態では、サーバ110間で直接通信ができない場合でも、クラスタリングが可能である。
【0061】
本実施形態では、全てのサーバ110から等しく通信できる場所にターゲット装置200が配置される。本実施形態では、サーバ110がオンプレミス又はクラウド環境の何れであっても、また、サーバ110が物理サーバであっても仮想サーバであっても、サーバ110がターゲット装置200と通信ができれば、HAクラスタを構成することが可能である。
【0062】
本実施形態では、各サーバ110は、互いのIPアドレスで疎通できる必要がない。このため、例えば企業のネットワークとクラウドとをVPN(virtual private network)や専用線などで接続してサーバ110同士をIPアドレスで疎通させる必要がない。本実施形態では、VPNや専用線などの必要がないため、ネットワークを簡素化でき、コストの低減が可能である。さらに、遠隔クラスタなどの長距離で不安定なネットワークの場合、相互接続型のクラスタでは通信遅延や通信失敗に起因する障害が発生する場合がある。本実施形態では、ターゲット装置200を中間に配置することで、それら通信遅延などを軽減できる効果もある。
【0063】
本実施形態では、各サーバ110は、ターゲット装置200に対してハートビートを送信すればよい。このため、各サーバ110間でハートビートを相互に通信する場合に比べて、サーバ数が増えても通信経路が複雑にならず、また、通信量の増大を抑制することができる。その結果として、それぞれのサーバの負荷やデータ通信にかかるコストを下げることができる。HAクラスタの課題であるスプリットブレインについても、ターゲット装置200がスプリットブレイン対策のネットワークの疎通確認のターゲットとなる装置と同等の役割を担うことができる。このため、サーバ110の数が増えても、ネットワーク構成を変更することなくスプリットブレイン対策ができる。
【0064】
特許文献1との比較では、特許文献1では、クラスタを構成するサーバは、他のサーバに生存情報を記録できた旨を通知するため、クラスタを構成するサーバ同士が直接通信できる必要がある。また、クラスタを構成するサーバが増えた場合、生存情報を記録できた旨の通知先のサーバの数が増えることで、その通信量が増大する。これに対し、本実施形態では、各サーバ110は、ターゲット装置200に通信できればよいため、サーバ同士が直接通信できる必要はないし、また、サーバ数が増えた場合でも通信量の増大を抑えることができる。
【0065】
なお、上記実施形態では、サーバ110A及び110Bの双方がNAT105及び106を通じてターゲット装置200と通信する例を示したが、クラスタシステムを構成する全てのサーバがNATを通じてターゲット装置200と通信する必要はない。上記実施形態は、サーバ間でIPアドレスで直接に通信できない場合でもクラスタリングを可能にするものであるものの、サーバ間で直接に通信ができないこと自体は、必須の要件ではない。クラスタシステムにおいて、クラスタシステムを構成する全てのサーバ間でIPアドレスを指定した直接通信ができない必要はなく、少なくとも一部のサーバがIPアドレスで直接に通信できてもよい。
【0066】
図11は、本発明の変形例に係るクラスタシステムを示す。この変形例に係るクラスタシステムは、
図2に示す一実施形態に係るクラスタシステムの構成に加えて、サーバ110Cを有する。サーバ110Cには、グローバルIPアドレスが割り当てられており、サーバ110CはNATを介さずにインターネット300に接続している。この例では、サーバ110A及び110Bは、サーバ110CのIPアドレスを指定することで、サーバ110Cと通信することができる。この例のように、クラスタシステムにNATを介さずにインターネット300に接続するサーバ110Cが含まれる場合でも、上記実施形態と同様な動作を実施することで、上記実施形態で説明したものと同様な効果を得ることができる。
【0067】
上記実施形態では、クラスタ情報が、サーバ名、ハートビート間隔、ステータス、フェールオーバ優先度、及び動作しているサービス名を含む例を説明したが、これには限定されない。例えば、クラスタ情報は、サーバ110の負荷情報を含んでいてもよい。
図12は、クラスタ情報に負荷情報が追加された例を示す。クラスタ情報記憶部203は、
図4に示される項目に加えて、各サーバのCPU(central processing unit)使用率及びメモリ使用量を、サーバの負荷情報として記憶する。
【0068】
各サーバ110のハートビート制御部112(
図5を参照)は、ハートビートの送信時に、自サーバのCPU使用率と、メモリ使用量とを取得し、それらの情報をハートビートを示すパケットのデータ部分に付加する。ターゲット装置200のクラスタ情報管理部202(
図3を参照)は、ハートビートのデータ部分に含まれるCPU使用率とメモリ使用量とを、ハートビートの送信元もサーバ110の情報としてクラスタ情報記憶部203に記憶する。ハートビートターゲット制御部201は、CPU使用率及びメモリ使用量を含んだクラスタ情報を含むハートビート応答を、ハートビートの送信元のサーバ110に送信する。
【0069】
サーバ110は、CPU使用率及びメモリ使用量を含んだクラスタ情報を含むハートビート応答を受信する。サーバ情報記憶部115が記憶するサーバリストは、各サーバのCPU使用率及びメモリ使用量の項目を含む。サーバ110のサーバ管理部113は、ハートビート応答に含まれるクラスタ情報で、CPU使用率及びメモリ使用量を含めたサーバ情報記憶部115が記憶するサーバリストの対応する項目を更新する。クラスタ制御部111は、サーバリストを参照することで、各サーバの処理負荷を知ることができる。
【0070】
クラスタ制御部111は、サーバリストに含まれるCPU使用率及びメモリ使用量に基づいて、サーバ110の異常状態の判断を行ってもよい。例えば、設定ファイル(
図6を参照)は、サーバ異常と判断する際の基準値となるCPU使用率及びメモリ使用量を規定する情報を含む。クラスタ制御部111は、設定ファイルを参照し、ハートビート間隔が基準値異常と成っているか否かを判断することに加えて、CPU使用率及びメモリ使用量が基準値異常となっているか否かを判断することで、サーバ110が正常に動作しているか否かを判断してもよい。このようにした場合、ハートビート間隔の異常だけでなく、CPU使用率及びメモリ使用量が基準値異常となったことを契機としてフェールオーバを実施することができる。
【0071】
上記実施形態において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記憶媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、例えばフレキシブルディスク、磁気テープ、又はハードディスクなどの磁気記録媒体、例えば光磁気ディスクなどの光磁気記録媒体、CD(compact disc)、又はDVD(digital versatile disk)などの光ディスク媒体、及び、マスクROM(read only memory)、PROM(programmable ROM)、EPROM(erasable PROM)、フラッシュROM、又はRAM(random access memory)などの半導体メモリを含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)を用いてコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバなどの有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0072】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【0073】
例えば、上記の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
【0074】
[付記1]
複数のサーバと、該複数のサーバのそれぞれと通信可能な管理装置とを含むクラスタシステムであって、
前記管理装置は、
前記サーバからハートビートを受信するハートビート受信部と、
前記ハートビートが受信された場合、前記複数のサーバのそれぞれについて前記ハートビートの受信間隔を含むクラスタ情報を記憶するクラスタ情報記憶部に、前記ハートビートの受信間隔を記録するクラスタ情報管理部と、
前記ハートビートを送信したサーバに、前記クラスタ情報を含むハートビート応答を送信するハートビート応答送信部とを有し、
前記サーバは、
前記管理装置にハートビートを送信するハートビート送信部と、
前記管理装置から前記ハートビート応答を受信するハートビート応答受信部と、
前記ハートビート応答に含まれる前記複数のサーバのハートビートの受信間隔に基づいて、各サーバが正常に動作しているか否かを判定するクラスタ制御部とを備えるクラスタシステム。
【0075】
[付記2]
前記クラスタ制御部は、前記ハートビートの受信間隔がしきい値を超えた場合に前記サーバが正常に動作していないと判定する付記1に記載のクラスタシステム。
【0076】
[付記3]
前記サーバは、前記ハートビート応答に含まれる前記クラスタ情報に基づいて各サーバの情報をサーバ情報記憶部に記憶するサーバ管理部を更に有する付記1又は2に記載のクラスタシステム。
【0077】
[付記4]
前記ハートビート及びクラスタ情報は、前記サーバで動作しているサービスの識別情報を含み、
クラスタ情報管理部は、前記クラスタ情報記憶部に前記ハートビートに含まれる前記識別情報を更に記録し、
前記サーバは、前記ハートビート応答に含まれる前記識別情報に基づいて、各サービスと該サービスを実行しているサーバとの対応関係をリソース情報記憶部に記憶するリソース管理部を更に有する付記1から3何れか1つに記載のクラスタシステム。
【0078】
[付記5]
前記クラスタ制御部は、正常に動作していないと判定したサーバが存在する場合に、前記リソース情報記憶部を参照して、前記正常に動作していないと判定したサーバが提供していたサービスを特定し、該特定したサービスを正常に動作していないと判定したサーバとは異なるサーバに引き継がせる処理を更に実施する付記4に記載のクラスタシステム。
【0079】
[付記6]
前記ハートビート及び前記クラスタ情報がフェールオーバ優先度を含み、
前記クラスタ情報管理部は、前記クラスタ情報記憶部に前記ハートビートに含まれる前記フェールオーバ優先度を更に記録し、
前記クラスタ制御部は、前記ハートビート応答に含まれる前記フェールオーバ優先度に基づいて前記サービスの引継ぎ先を決定する付記7に記載のクラスタシステム。
【0080】
[付記7]
前記クラスタ制御部は、前記サービスの引継ぎ先として決定したサーバが自サーバである場合は、当該サービスを起動する付記6に記載のクラスタシステム。
【0081】
[付記8]
前記ハートビート及び前記クラスタ情報は、前記サーバの負荷情報を含んでおり、
クラスタ情報管理部は、前記クラスタ情報記憶部に前記ハートビートに含まれる前記負荷情報を更に記録する付記1から7何れか1つに記載のクラスタシステム。
【0082】
[付記9]
前記クラスタ制御部は、更に前記ハートビート応答に含まれる前記負荷情報に基づいて前記サーバが正常に動作しているか否かを判定する付記8に記載のクラスタシステム。
【0083】
[付記10]
前記複数のサーバのうちの少なくとも1つは、ローカルネットワークに所属しており、かつ所属するローカルネットワーク内でプライベートなアドレスが割当て割れており、前記プライベートなアドレスをグローバルなアドレスに変換するネットワークアドレス変換器を通じて前記管理装置と通信を行う付記1から9何れか1つに記載のクラスタシステム。
【0084】
[付記11]
複数のサーバを含んで成るクラスタシステムに含まれるサーバからハートビートを受信するハートビート受信部と、
前記ハートビートが受信された場合、前記複数のサーバのそれぞれについて前記ハートビートの受信間隔を含むクラスタ情報を記憶するクラスタ情報記憶部に、前記ハートビートの受信間隔を記録するクラスタ情報管理部と、
前記ハートビートを送信したサーバに、前記クラスタ情報を含むハートビート応答を送信するハートビート応答送信部とを備える管理装置。
【0085】
[付記12]
複数のサーバを含んで成るクラスタシステムに用いられるサーバであって、
前記複数のサーバと通信可能な管理装置にハートビートを送信するハートビート送信部と、
前記管理装置から、前記複数のサーバのそれぞれについて前記ハートビートの受信間隔を含むクラスタ情報を含むハートビート応答を受信するハートビート応答受信部と、
前記ハートビート応答に含まれる前記複数のサーバのハートビートの受信間隔に基づいて、各サーバが正常に動作しているか否かを判定するクラスタ制御部とを備えるサーバ。
【0086】
[付記13]
複数のサーバと、該複数のサーバのそれぞれと通信可能な管理装置とを含むクラスタシステムの動作方法であって、
前記サーバが、前記管理装置にハートビートを送信するステップと、
前記管理装置が、前記サーバからハートビートを受信するステップと、
前記管理装置が、前記ハートビートを受信すると、前記複数のサーバのそれぞれについて前記ハートビートの受信間隔を含むクラスタ情報を記憶するクラスタ情報記憶部に、前記ハートビートの受信間隔を記録するステップと、
前記管理装置が、前記ハートビートを送信したサーバに、前記クラスタ情報を含むハートビート応答を送信するステップと、
前記サーバが、前記管理装置から前記ハートビート応答を受信するステップと、
前記サーバが、前記ハートビート応答に含まれる前記複数のサーバのハートビートの受信間隔に基づいて、各サーバが正常に動作しているか否かを判定するステップとを有するクラスタシステムの動作方法。
【0087】
[付記14]
複数のサーバと、該複数のサーバのそれぞれと通信可能な管理装置とを含むクラスタシステムにおける前記管理装置の動作方法であって、
前記サーバからハートビートを受信するステップと、
前記ハートビートを受信すると、前記複数のサーバのそれぞれについて前記ハートビートの受信間隔を含むクラスタ情報を記憶するクラスタ情報記憶部に、前記ハートビートの受信間隔を記録するステップと、
前記ハートビートを送信したサーバに、前記クラスタ情報を含むハートビート応答を送信するステップとを有する管理装置の動作方法。
【0088】
[付記15]
複数のサーバを含んで成るクラスタシステムに用いられるサーバの動作方法であって、
前記複数のサーバと通信可能な管理装置にハートビートを送信するステップと、
前記管理装置から、前記複数のサーバのそれぞれについて前記ハートビートの受信間隔を含むクラスタ情報を含むハートビート応答を受信するステップと、
前記ハートビート応答に含まれる前記複数のサーバのハートビートの受信間隔に基づいて、各サーバが正常に動作しているか否かを判定するステップとを有するサーバの動作方法。
【0089】
[付記16]
クラスタシステムに含まれる複数のサーバのそれぞれと通信可能な管理装置に、
前記サーバからハートビートを受信するステップと、
前記ハートビートを受信すると、前記複数のサーバのそれぞれについて前記ハートビートの受信間隔を含むクラスタ情報を記憶するクラスタ情報記憶部に、前記ハートビートの受信間隔を記録するステップと、
前記ハートビートを送信したサーバに、前記クラスタ情報を含むハートビート応答を送信するステップとを実行させるためのプログラム。
【0090】
[付記17]
複数のサーバを含んで成るクラスタシステムに用いられるサーバに、
前記複数のサーバと通信可能な管理装置にハートビートを送信するステップと、
前記管理装置から、前記複数のサーバのそれぞれについて前記ハートビートの受信間隔を含むクラスタ情報を含むハートビート応答を受信するステップと、
前記ハートビート応答に含まれる前記複数のサーバのハートビートの受信間隔に基づいて、各サーバが正常に動作しているか否かを判定するステップとを実行させるためのプログラム。