(57)【要約】【課題】  現用系サーバの障害発生を正確に検出することを可能にする多重化サーバシステムおよび障害検出方法を提供する。【解決手段】  共有記憶装置と、所定の周期毎に、共有記憶装置の第一の領域に記憶された値に所定の増分値を加算して書き換える第一のカウントアップ手段を含む現用系サーバと、所定の周期毎に、共有記憶装置の第二の領域に記憶された値に所定の増分値を加算して書き換える第二のカウントアップ手段を含む待機系サーバとを備え、第一の領域に記憶された値と第二の領域に記憶された値に基づいて現用系サーバの障害発生を検出する障害検出処理を行う。【選択図】      図１
2011013878.tif 000002
【特許請求の範囲】
【請求項１】
共有記憶装置と、
所定の周期毎に、前記共有記憶装置の第一の領域に記憶された値に所定の増分値を加算して書き換える第一のカウントアップ手段を含む現用系サーバと、
前記所定の周期毎に、前記共有記憶装置の第二の領域に記憶された値に前記所定の増分値を加算して書き換える第二のカウントアップ手段を含む待機系サーバとを備え、
前記第一の領域に記憶された値と前記第二の領域に記憶された値に基づいて前記現用系サーバの障害発生を検出する障害検出処理を行うことを特徴とする多重化サーバシステム。
【請求項２】
前記第一の領域に記憶された値と前記第二の領域に記憶された値を比較することによって、前記障害検出処理を行うことを特徴とする請求項１記載の多重化サーバシステム。
【請求項３】
前記第一の領域に記憶された値と前記第二の領域に記憶された値の差分を算出し、前記差分と所定の閾値を比較することによって、前記障害検出処理を行うことを特徴とする請求項１または２記載の多重化サーバシステム。
【請求項４】
前記待機系サーバは、前記障害検出処理を行う障害検出手段をさらに含むことを特徴とする請求項１乃至３のいずれかに記載の多重化サーバシステム。
【請求項５】
前記障害検出処理を行う前記障害検出手段を含むサーバをさらに備えることを特徴とする請求項１乃至４のいずれかに記載の多重化サーバシステム。
【請求項６】
共有記憶装置の第一の領域と第二の領域に初期値を書き込むステップと、
現用系サーバが、前回の書き込みから所定の周期後に、前記第一の領域に記憶された値に所定の増分値を加算して書き換えるステップと、
待機系サーバが、前回の書き込みから前記所定の周期後に、前記第二の領域に記憶された値に前記所定の増分値を加算して書き換えるステップと、
前記第一の領域に記憶された値と前記第二の領域に記憶された値に基づいて前記現用系サーバの障害発生を検出するステップ
とを備えることを特徴とする障害検出方法。
【請求項７】
前記障害発生を検出するステップは、前記第一の領域に記憶された値と前記第二の領域に記憶された値を比較する処理を含むことを特徴とする請求項６記載の障害検出方法。
【請求項８】
前記障害発生を検出するステップは、前記第一の領域に記憶された値と前記第二の領域に記憶された値の差分を算出する処理と、前記差分と所定の閾値を比較する処理を含むことを特徴とする請求項６または７記載の障害検出方法。
【請求項９】
前記待機系サーバが前記障害発生を検出するステップを実行することを特徴とする請求項６乃至８のいずれかに記載の障害検出方法。
【請求項１０】
前記現用系サーバおよび前記待機系サーバとは異なるサーバが、前記障害発生を検出するステップを実行することを特徴とする請求項６乃至９のいずれかに記載の障害検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は多重化サーバシステムおよび障害検出方法に関し、特に多重化サーバシステムにおけるサーバの障害の検出に関する。
【背景技術】
【０００２】
現用系サーバと待機系サーバからなる多重化サーバシステムにおいて、現用系サーバに障害が発生した場合は、待機系サーバを現用系へ切り替える処理（系切替処理）が行われる。例えばある多重化サーバシステムにおいては、現用系サーバが自身の障害を検出した場合、現用系サーバより待機系サーバへ系切替処理の指示が送信される。この指示を受けて、待機系サーバは系切替処理などを行う。
【０００３】
また、特許文献１は、現用系コンピュータから待機系コンピュータにハートビート信号（キープアライブ信号とも呼ばれる）を送信し、ハートビート信号の途絶によって現用系コンピュータの障害を検出する技術を開示している。現用系コンピュータの障害を検出した場合、待機系コンピュータは系切替処理などを行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−３０２６３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
現用系サーバが系切替処理の指示を送信する多重化サーバシステムにおいては、ＯＳのフリーズなど、現用系サーバが指示を送信できなくなるような障害が発生することがある。このような場合、障害が検出されず、例えば系切替処理が実行されないという問題があった。
【０００６】
また、特許文献１に開示された技術は、ネットワーク機能の障害などで待機系コンピュータがハートビート信号を受信できなくなることがある。このような場合、待機系コンピュータが現用系コンピュータに障害が発生したと誤認識し、不適切な系切替処理を実行するという問題があった。
【０００７】
本発明は、上述した課題を解決し、現用系サーバの障害発生を正確に検出することを可能にする多重化サーバシステムおよび障害検出方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る多重化サーバシステムは、
共有記憶装置と、
所定の周期毎に、共有記憶装置の第一の領域に記憶された値に所定の増分値を加算して書き換える第一のカウントアップ手段を含む現用系サーバと、
所定の周期毎に、共有記憶装置の第二の領域に記憶された値に所定の増分値を加算して書き換える第二のカウントアップ手段を含む待機系サーバとを備え、
第一の領域に記憶された値と第二の領域に記憶された値に基づいて現用系サーバの障害発生を検出する障害検出処理を行う。
【０００９】
本発明に係る障害検出方法は、
共有記憶装置の第一の領域と第二の領域に初期値を書き込むステップと、
現用系サーバが、前回の書き込みから所定の周期後に、第一の領域に記憶された値に所定の増分値を加算して書き換えるステップと、
待機系サーバが、前回の書き込みから所定の周期後に、第二の領域に記憶された値に所定の増分値を加算して書き換えるステップと、
第一の領域に記憶された値と第二の領域に記憶された値に基づいて現用系サーバの障害発生を検出するステップ
とを備える。
【発明の効果】
【００１０】
本発明に係る多重化サーバシステムおよび障害検出方法は、現用系サーバの障害発生を正確に検出することを可能にする。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施形態に係る多重化サーバシステムの主要な構成要素を示すシステム構成図である。
【図２】本発明の第２の実施形態に係る多重化サーバシステムの主要な構成要素を示すシステム構成図である。
【図３】第２の実施形態における現用系サーバ１の処理動作を説明するフローチャートである。
【図４】第２の実施形態における待機系サーバ２の処理動作を説明するフローチャートである。
【図５】第２の実施形態における現用系サーバ１と待機系サーバ２の処理動作および共有記憶装置３の状態遷移の例を説明するシーケンス図である。
【図６】第２の実施形態における現用系サーバ１と待機系サーバ２の処理動作および共有記憶装置３の状態遷移の他の例を説明するシーケンス図である。
【発明を実施するための形態】
【００１２】
次に、本発明の実施形態について図面を参照して説明する。
【００１３】
［第１の実施形態］
図１は、本発明の第１の実施形態に係る多重化サーバシステムの主要な構成要素を示すシステム構成図である。第１の実施形態に係る多重化サーバシステムは、現用系サーバ１と、待機系サーバ２と、共有記憶装置３とを備えている。現用系サーバ１、待機系サーバ２および共有記憶装置３は、それぞれお互いにデータの通信が可能なように接続されている。接続の方法は、例えば、インターネット、ＬＡＮ(Local Area Network)、電話回線、専用線、および無線通信など、データの通信を可能とするものならば何を使用してもよい。
【００１４】
現用系サーバ１は、例えば、サーバコンピュータ、ワークステーション、パーソナルコンピュータ、またはホストコンピュータなどの情報処理装置である。現用系サーバ１は、共有記憶装置３に記憶された値の更新を行うカウントアップ手段１１を備えている。
【００１５】
待機系サーバ２は、現用系サーバ１と同様の機能・構成を有する情報処理装置である。待機系サーバ２は、共有記憶装置３に記憶された値の更新を行うカウントアップ手段２１を備えている。
【００１６】
共有記憶装置３は、磁気ディスク装置またはメモリ装置などの情報記憶媒体を含んで構成されている。また、共有記憶装置３は、ファイルサーバや、ＮＡＳ(Network Attached Storage)のような情報処理装置でもよい。現用系サーバ１および待機系サーバ２は、共有記憶装置３にデータの書き込みや読み出しを行う。共有記憶装置３は、カウントアップ手段１１およびカウントアップ手段２１のそれぞれに使用される記憶領域である、第一の領域３１と第二の領域３２を備えている。第一の領域３１と第二の領域３２は、例えば、ファイルでもよいし、表またはデータベースの項目などでもよい。
【００１７】
これらの構成要素は、ハードウェアで構成されていてもよいし、ソフトウェアで構成されていてもよい。
【００１８】
以下に第一の実施形態に係る多重化サーバシステムの処理動作の概要を説明する。
【００１９】
処理の開始時において、共有記憶装置３の第一の領域３１と第二の領域３２には何らかの初期値（例えば「０」）が記憶されている。現用系サーバ１のカウントアップ手段１１は、第一の領域３１の値を所定の周期（例えば１０秒）毎に所定の増分値（例えば「１」）を加算した値に書き換える。同様に、待機系サーバ２のカウントアップ手段２１は、第二の領域３２の値を所定の周期毎に所定の増分値を加算した値に書き換える。第一の領域３１と第二の領域３２の初期値、書き換えの周期、および増分値は、同じものでもよい。その場合、通常時は、第一の領域３１と第二の領域３２の値は常に等しくなる。
【００２０】
現用系サーバ１に障害が発生すると、第一の領域３１の値の書き換えが停止する。すると、第一の領域３１の値と第二の領域３２の値に差が発生する。従って、第一の領域３１の値と第二の領域３２の値を参照することにより、それらの値に基づいて現用系サーバ１の障害発生を検出することができる（この処理を以降「障害検出処理」と称する）。具体的には、第一の領域３１の値と第二の領域３２の値を比較することにより、現用系サーバ１の障害発生を検出することができる。なお、待機系サーバ２に障害が発生して第二の領域３２の値の書き換えが停止した場合も、第一の領域３１の値と第二の領域３２の値に差が発生する。しかし、第一の領域３１の値と第二の領域３２の値のどちらが大きいかを判定することにより、現用系サーバ１の障害と区別することができる。
【００２１】
このように、第一の実施形態に係る多重化サーバシステムは、現用系サーバ１の障害発生を正確に検出することを可能にする。なぜならば、現用系サーバ１に障害が発生したために第一の領域３１の値の書き換えが停止することによって、第一の領域３１の値と第二の領域３２の値に差が発生するからである。また、待機系サーバ２に障害が発生した場合においても、第一の領域３１の値と第二の領域３２の値のどちらが大きいかを判定することにより、現用系サーバ１の障害発生と区別することができるからである。
【００２２】
［第２の実施形態］
次に、本発明の第２の実施形態を説明する。
【００２３】
図２は、本発明の第２の実施形態に係る多重化サーバシステムの主要な構成要素を示すシステム構成図である。第１の実施形態との構成上の相違点として、第２の実施形態における待機系サーバ２は、障害検出処理を行う障害検出手段２２を備えている。なお、それ以外の構成は図１と同様であるため、説明を省略する。
【００２４】
図３は、第２の実施形態における現用系サーバ１の処理動作を説明するフローチャートである。以下、第２の実施形態における現用系サーバ１の処理動作について、図３を参照して説明する。
【００２５】
最初に、カウントアップ手段１１は共有記憶装置３の第一の領域３１に初期値（例えば「０」）を書き込む（ステップＳ３０１）。次に、カウントアップ手段１１は、前回の書き込みから所定の周期（例えば１０秒）が経過したかどうかを判定する（ステップＳ３０２）。経過していない場合（ステップＳ３０２のＮＯ）、カウントアップ手段１１は、所定の周期が経過するまで待機する。経過していた場合（ステップＳ３０２のＹＥＳ）、カウントアップ手段１１は、第一の領域３１の値を所定の増分値（例えば「１」）を加算した値に書き換える（ステップＳ３０３）。以降、カウントアップ手段１１は、ステップＳ３０２以降の処理を繰り返す。
【００２６】
図４は、第２の実施形態における待機系サーバ２の処理動作を説明するフローチャートである。以下、第２の実施形態における待機系サーバ２の処理動作について、図４を参照して説明する。
【００２７】
最初に、カウントアップ手段２１は共有記憶装置３の第二の領域３２に初期値（例えば「０」）を書き込む（ステップＳ４０１）。次に、カウントアップ手段２１は、前回の書き込みから所定の周期（例えば１０秒）が経過したかどうかを判定する（ステップＳ４０２）。経過していない場合（ステップＳ４０２のＮＯ）、カウントアップ手段２１は、所定の周期が経過するまで待機する。経過していた場合（ステップＳ４０２のＹＥＳ）、カウントアップ手段２１は、第二の領域３２の値を所定の増分値（例えば１）を加算した値に書き換える（ステップＳ４０３）。
【００２８】
次に、障害検出手段２２は、第二の領域３２の値から第一の領域３１の値を引いた差分の値を求める（ステップＳ４０４）。差分の値が所定の閾値（例えば「１」）を超えていた場合（ステップＳ４０５のＹＥＳ）、障害検出手段２２は、現用系サーバ１に障害が発生したものと判定する（ステップＳ４０６）。障害が発生した場合、例えば、待機系サーバ２を現用系に切り替える系切替処理が行われる。一方で、差分の値が所定の閾値を超えていなかった場合（ステップＳ４０５のＮＯ）、障害検出手段２２は、障害が発生していないと判定する。障害が発生していない場合、カウントアップ手段２１は、ステップＳ４０２以降の処理を繰り返す。
【００２９】
図５は、第２の実施形態における、現用系サーバ１と待機系サーバ２の処理動作および共有記憶装置３の状態遷移の例を説明するシーケンス図である。以下、第２の実施形態における現用系サーバ１と待機系サーバ２が連携して行う処理動作の例について、図５を参照して説明する。なお、以下の説明においては、第一の領域３１および第二の領域３２の初期値を「０」、増分値を「１」、書き換えの周期を１０秒、障害判定の閾値を「１」であるとする。
【００３０】
処理の開始時において、カウントアップ手段１１が第一の領域３１に初期値「０」を書き込む（ステップＳ５０１）。同様に、カウントアップ手段２１が第二の領域３２に初期値「０」を書き込む（ステップＳ５０２）。なお、これら初期値の書き込み処理は、カウントアップ手段１１またはカウントアップ手段２１のいずれか、あるいはその他の手段によって一括して行われてもよい。
【００３１】
２つの領域の初期化が終了すると、カウントアップ手段１１およびカウントアップ手段２１は、１０秒の周期が経過するまで待機する。１０秒の周期が経過すると、カウントアップ手段１１は、第一の領域３１の値に増分値「１」を加算し、その加算した値で第一の領域３１を書き換える。書き換えが終了後、第一の領域３１の値は「１」になる（ステップＳ５０３）。同様に、１０秒の周期が経過すると、カウントアップ手段２１は、第二の領域３２の値に増分値「１」を加算し、その加算した値で第二の領域３２を書き換える。書き換えが終了後、第二の領域３２の値は「１」になる（ステップＳ５０４）。
【００３２】
ステップＳ５０４の後、障害検出手段２２は、第二の領域３２の値から第二の領域３１の値を引いた差分の値を求める。差分は０であり、閾値である１を超えていないため、障害検出手段２２は、障害が発生していないと判定する（ステップＳ５０５）。
【００３３】
ステップＳ５０３およびＳ５０４が終了すると、カウントアップ手段１１およびカウントアップ手段２１は、１０秒の周期が経過するまで待機する。１０秒の周期が経過すると、カウントアップ手段１１およびカウントアップ手段２１は、第一の領域３１および第二の領域３２の値を「２」に書き換える（ステップＳ５０６，Ｓ５０７）。
【００３４】
ステップＳ５０７の後、障害検出手段２２は、第二の領域３２の値から第二の領域３１の値を引いた差分の値を求める。差分は０であり、閾値である１を超えていないため、障害検出手段２２は、障害が発生していないと判定する（ステップＳ５０８）。
【００３５】
ここで現用系サーバ１に障害が発生し、カウントアップ手段１１は、以降の第一の領域３１の書き換えができなくなる（ステップＳ５０９）。カウントアップ手段２１は、ステップＳ５０８の終了後１０秒の周期が経過すると、第二の領域３２の値を「３」に書き換える（ステップＳ５１０）。
【００３６】
ステップＳ５１０の後、障害検出手段２２は、第二の領域３２の値から第二の領域３１の値を引いた差分の値を求める。差分は１であり、閾値である１を超えていない（等しい）ため、障害検出手段２２は、障害が発生していないと判定する（ステップＳ５１１）。
【００３７】
カウントアップ手段２１は、ステップＳ５１１の終了後１０秒の周期が経過すると、第二の領域３２の値を「４」に書き換える（ステップＳ５１２）。
【００３８】
ステップＳ５１２の後、障害検出手段２２は、第二の領域３２の値から第二の領域３１の値を引いた差分の値を求める。差分は２であり、閾値である１を超えているため、障害検出手段２２は、現用系サーバ１に障害が発生したものと判定する（ステップＳ５１３）。
【００３９】
図６は、第２の実施形態における、図２の現用系サーバ１と待機系サーバ２の処理動作および共有記憶装置３の状態遷移の他の例を説明するシーケンス図である。以下、第２の実施形態における現用系サーバ１と待機系サーバ２が連携して行う処理動作の他の例について、図６を参照して説明する。なお、第一の領域３１および第二の領域３２の初期値、増分値、書き換えの周期、および障害判定の閾値は先の例と同じであるとする。
【００４０】
先の例と同様に、処理の開始時において、カウントアップ手段１１とカウントアップ手段２１が第一の領域３１と第二の領域３２に初期値「０」を書き込む（ステップＳ６０１，Ｓ６０２）。
【００４１】
２つの領域の初期化が終了した後１０秒の周期が経過すると、カウントアップ手段１１は、第一の領域３１の値に増分値「１」を加算し、その加算した値で第一の領域３１を書き換える。同様に、カウントアップ手段２１もまた、第二の領域３２を書き換える。書き換えが終了後、第一の領域３１と第二の領域３２の値は「１」になる（ステップＳ６０３，Ｓ６０４）。
【００４２】
ステップＳ６０４の後、障害検出手段２２は、第二の領域３２の値から第二の領域３１の値を引いた差分の値を求める。差分は０であり、閾値である１を超えていないため、障害検出手段２２は、障害が発生していないと判定する（ステップＳ６０５）。
【００４３】
ステップＳ６０３およびＳ６０４が終了した後１０秒の周期が経過すると、カウントアップ手段１１およびカウントアップ手段２１は、第一の領域３１および第二の領域３２の値を「２」に書き換える（ステップＳ６０６，Ｓ６０７）。
【００４４】
ステップＳ６０７の後、障害検出手段２２は、第二の領域３２の値から第二の領域３１の値を引いた差分の値を求める。差分は０であり、閾値である１を超えていないため、障害検出手段２２は、障害が発生していないと判定する（ステップＳ６０８）。
【００４５】
ステップＳ６０６が終了した後１０秒の周期が経過すると、カウントアップ手段１１は、第一の領域３１の値を「３」に書き換える（ステップＳ６０９）。一方、ここで待機系サーバ２のカウントアップ手段２１に障害が発生し、以降の第一の領域３２の書き換えができなくなる（ステップＳ６１０）。ただし、障害検出手段２２は通常通り動作するものとする。
【００４６】
ステップＳ６１０の後、障害検出手段２２は、第二の領域３２の値から第二の領域３１の値を引いた差分の値を求める。差分は−１であり、閾値である１を超えていないため、障害検出手段２２は、障害が発生していないと判定する（ステップＳ６１１）。
【００４７】
ステップＳ６０９が終了した後１０秒の周期が経過すると、カウントアップ手段１１は、第一の領域３１の値を「４」に書き換える（ステップＳ６１２）。一方、障害のため、待機系サーバ２のカウントアップ手段２１は第一の領域３２の書き換えができない（ステップＳ６１３）。
【００４８】
ステップＳ６１３の後、障害検出手段２２は、第二の領域３２の値から第二の領域３１の値を引いた差分の値を求める。差分は−２であり、閾値である１を超えていないため、障害検出手段２２は、障害が発生していないと判定する（ステップＳ６１４）。以降、処理を継続しても、差分は閾値を超えない。すなわち、以上の例においては、障害検出手段２２は、現用系サーバ１に障害が発生したものとは判定しない。
【００４９】
第一の領域３１および第二の領域３２の初期値は「０」でなくともよい。また、増分値は「１」でなくともよい。
【００５０】
第一の領域３１および第二の領域３２の書き換えの周期は１０秒でなくともよい。書き換えの周期を短くすることにより、現用系サーバ１の障害の発生から障害検出までの時間を短縮することができる。また、書き換えの周期を長くすることにより、現用系サーバ１、待機系サーバ２および共有記憶装置３の処理の負荷を軽減することが出来る。
【００５１】
障害判定の閾値は「１」でなくともよい。閾値を大きくすることにより、例えば、カウントアップ手段１１の書き換え処理が一時的に停止した場合などの軽微な障害を無視することができる。また、閾値を小さく（例えば「０」）することにより、同様の軽微な障害を検出することができる。
【００５２】
第二の領域３２の値から第一の領域３１の値を引いた差分が所定の閾値（例えば「−１」）を下回ったかどうかを判定することにより、待機系サーバ２の障害を検出してもよい。
【００５３】
このように、第二の実施形態に係る多重化サーバシステムは、現用系サーバ１の障害発生を正確に検出することを可能にする。なぜならば、現用系サーバ１に障害が発生したために第一の領域３１の値の書き換えが停止することによって、第二の領域３２の値から第一の領域３１の値を引いた差分が増大するからである。この差分が所定の閾値を超えているかどうかを判定することにより、現用系サーバ１の障害発生が検出できる。また、待機系サーバ２のカウントアップ手段２２に障害が発生した場合においては、この差分は所定の閾値より小さくなるため、現用系サーバ１の障害発生と区別することができるからである。
【００５４】
上記の各実施形態のとおり、現用系サーバ、待機系サーバ、および共有記憶装置を備える多重化サーバシステムを例に本発明の実施形態が説明された。しかしながら、本発明の実施形態に係る多重化サーバシステムは、他の構成要素を備えていてもよい。例えば、待機系サーバ２は障害検出処理を行わず、代わりに、障害検出手段を備える他のサーバなどの情報処理装置が障害検出処理を行ってもよい。
【００５５】
また、現用系サーバおよび待機系サーバは、複数存在していてもよい。例えば、待機系サーバは、自身が書き換えた値と複数の現用系サーバが書き換えた値全てを比較することにより、障害の検出を行ってもよい。また、このような処理を行う待機系サーバが複数存在してもよい。
【００５６】
本発明の実施形態に係る多重化サーバシステムは、現用系サーバの障害を検出するだけでなく、現用系サーバの性能低下を検出することも可能である。なぜならば、現用系サーバの書き換え処理が遅延することにより、現用系サーバが書き換えた値と待機系サーバが書き換えた値に差が発生するからである。
【００５７】
本発明の実施形態に係る多重化サーバシステムは、負荷分散サーバシステムに適用することも可能である。すなわち、複数存在するサーバへの処理割り当てなどを、各サーバが書き換えた値を比較した結果に基づいて行ってもよい。
【００５８】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００５９】
１    現用系サーバ
２    待機系サーバ
３    共有記憶装置
１１，２１    カウントアップ手段
２２    障害検出手段
【図１】
2011013878.tif 000003
【図２】
2011013878.tif 000004
【図３】
2011013878.tif 000005
【図４】
2011013878.tif 000006
【図５】
2011013878.tif 000007
【図６】
2011013878.tif 000008