(57)【要約】【課題】クライアント装置側に異常の発生を意識させることなく、ごく短時間でフェイルオーバー処理を行うことを可能とするクラスタシステム等を提供する。【解決手段】ノード装置１０は、予め複数の記憶領域に区切られた不揮発性メモリ１２と、各クライアント装置のＩＰアドレスと記憶領域との間の対応関係を予め記憶しているＩＰアドレステーブル記憶手段１５と、アプリケーションソフトの処理データをクライアント装置のＩＰアドレスに対応する記憶領域上に記憶させるアプリケーションソフト実行部１０１と、記憶された処理データを他のノード装置の対応する記憶領域に記憶させるミラーリング処理部１０５と、他のノード装置の対応する記憶領域に記憶させられた後の処理データを共有ストレージ３０に書き込むストレージ記憶部１０６とを有する。【選択図】図１
2014089506.tif 000002
【特許請求の範囲】
【請求項１】
同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、前記他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置であって、
予め複数の記憶領域に区切られた不揮発性メモリと、
接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき前記不揮発性メモリの前記記憶領域との間の対応関係を予め記憶しているＩＰアドレステーブル記憶手段と、
前記クライアント装置からの要求に基づいて予め装備されたアプリケーションソフトを実行して処理を行い、これによって得られる処理データを処理依頼元の前記クライアント装置のＩＰアドレスに対応する前記記憶領域上に記憶させるアプリケーションソフト実行部と、
記憶された前記処理データを前記他のノード装置の対応する記憶領域に記憶させるミラーリング処理部と、
前記他のノード装置の対応する記憶領域に記憶させられた後の前記処理データを前記共有ストレージに書き込むストレージ記憶部と
を有することを特徴とするノード装置。
【請求項２】
前記ミラーリング処理部が、前記処理データを前記他のノード装置の対応する記憶領域に記憶させる処理の完了後、処理要求元の前記クライアント装置に書き込み終了通知を返信する機能を有することを特徴とする、請求項１に記載のノード装置。
【請求項３】
前記他のノード装置の不揮発性メモリに前記処理データが残った状態で当該他のノード装置に異常が発生した場合に、前記ＩＰアドレステーブル記憶手段に記憶された対応関係を変更して当該他のノード装置による処理を引き継ぐフェイルオーバー処理部
を有することを特徴とする、請求項１または請求項２に記載のノード装置。
【請求項４】
同一の構成を有する第１および第２のノード装置と、前記第１および第２のノード装置の間で共有される同一の外部記憶装置である共有ストレージとが相互に接続されて構築されたクラスタシステムであって、
前記第１および第２のノード装置が、請求項１ないし請求項３のうちいずれか１項に記載のノード装置であることを特徴とするクラスタシステム。
【請求項５】
同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、前記他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置にあって、
予め備えられた不揮発性メモリは複数の記憶領域に区切られており、
接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき前記不揮発性メモリの前記記憶領域との間の対応関係が予め備えられたＩＰアドレステーブル記憶手段に記憶されたものであると共に、
前記アプリケーションソフトをアプリケーションソフト実行部が実行し、
前記アプリケーションソフトによって得られた前記処理データを前記不揮発性メモリ上の前記クライアント装置のＩＰアドレスに対応する前記記憶領域上に前記アプリケーションソフト実行部が一時的に保存し、
記憶された前記処理データをミラーリング処理部が前記他のノード装置の対応する記憶領域に記憶させ、
前記他のノード装置の対応する記憶領域に記憶させられた後の前記処理データをストレージ記憶部が前記共有ストレージに書き込む
ことを特徴とするフェイルオーバー方法。
【請求項６】
前記他のノード装置の不揮発性メモリに前記処理データが残った状態で当該他のノード装置に異常が発生した場合に、前記ＩＰアドレステーブル記憶手段に記憶された対応関係をフェイルオーバー処理部が変更して当該他のノード装置による処理を引き継ぐ
ことを特徴とする、請求項５に記載のフェイルオーバー方法。
【請求項７】
同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、前記他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置にあって、
予め備えられた不揮発性メモリは複数の記憶領域に区切られており、
接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき前記不揮発性メモリの前記記憶領域との間の対応関係が予め備えられたＩＰアドレステーブル記憶手段に記憶されたものであると共に、
前記ノード装置が備えるプロセッサに、
前記アプリケーションソフトを実行する手順、
前記アプリケーションソフトによって得られた前記処理データを前記不揮発性メモリ上の前記クライアント装置のＩＰアドレスに対応する前記記憶領域上に一時的に保存する手順、
記憶された前記処理データを前記他のノード装置の対応する記憶領域に記憶させる手順、
および前記他のノード装置の対応する記憶領域に記憶させられた後の前記処理データを前記共有ストレージに書き込む手順
を実行させることを特徴とするフェイルオーバープログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はノード装置、クラスタシステム、フェイルオーバー方法およびプログラムに関し、特に異常発生時に短時間にフェイルオーバー処理を可能とするノード装置等に関する。
【背景技術】
【０００２】
企業などで利用されるコンピュータシステムにおいては、短時間の停止であっても、その間に発生した業務の停止によって巨額の損失が発生することがある。そのため、そのようなコンピュータシステムにおいては「高可用性（High Availability）」、より具体的には「稼働率９９．９９％以上（年間停止時間５２分以下）」が求められている。そのようなコンピュータシステムでは、サーバクラスタと呼ばれる構成が多く利用されている。
【０００３】
サーバクラスタは、同一のＮＡＳ（Network Attached Storage、ネットワーク接続ストレージ）を参照する複数台のサーバコンピュータが１台の仮想サーバとして動作するように構成したものである。サーバクラスタは、このＮＡＳの利用形態により、「アクティブ−アクティブ構成」と「アクティブ−パッシブ構成」の２種類に分類される。
【０００４】
アクティブ−アクティブ構成のサーバクラスタは、当該サーバクラスタを構成する各サーバがいずれも稼働系サーバとして動作して処理を行う。このため、オフロード（off-load、負荷分散）も兼ねることができ、システム全体でのパフォーマンスを向上させることも可能である。
【０００５】
図１０は、特許文献１に記載されている、既存のクラスタシステム９０１の構成について示す説明図である。クラスタシステム９０１は、第一ノード９１０および第二ノード９２０という各々のコンピュータ装置（サーバ）と、その他多数のクライアント装置９４０とが、ネットワーク９４１を介して相互に接続されて構成されている。
【０００６】
第一ノード９１０および第二ノード９２０は、共有の外部記憶装置である共有ストレージ９３０と接続されている。そして、第一ノード９１０および第二ノード９２０は、処理にかかる負荷を相互に分散しつつ、記憶されているデータを互いにミラーリングして、どちらか一方に故障が発生した場合にその故障した方の装置で行われていた処理を残る一方が引き継いで続行する（これをフェイルオーバーという）ことができる構成となっている。
【０００７】
第一ノード９１０は、コンピュータプログラムを実行する主体であるプロセッサ９１１と、処理中のデータを一時的に記憶する不揮発性の主記憶装置であるＮＶＲＡＭ（Non-Volatile RAM）９１２と、処理されたデータを共有ストレージ９３０に固定的に記憶する外部ストレージ接続手段９１３と、ネットワーク９４１を介して第二ノード９２０や各クライアント装置９４０との間で通信を行う通信手段９１４とが備えられている。
【０００８】
プロセッサ９１１は、クライアント装置９４０からの依頼に基づく処理を行うアプリケーションソフトを実行してそのデータをＮＶＲＡＭ９１２に書き込むアプリケーション実行部９５１と、ＮＶＲＡＭ９１２との間のデータ交換を仲介するデバイスドライバを動作させるＮＶＲＡＭドライバ実行部９５２と、外部ストレージ接続手段９１３を経由して共有ストレージ９３０との間のデータ交換を仲介するデバイスドライバを動作させるストレージ装置ドライバ実行部９５３と、通信手段１４との間のデータ交換を仲介するデバイスドライバを動作させる外部通信ドライバ９５４として機能する。
【０００９】
ＮＶＲＡＭ９１２は、第一ノード９１０で行われる処理についてデータを一時的に書き込む第一ノード用領域９１２ａと、第二ノード９２０で行われる処理で後述のＮＶＲＡＭ９２２に書き込まれたデータをミラーリングする第二ノード用領域９１２ｂとに分かれている。第一ノード９１０では、クライアント装置９４０からの依頼に応じて第一ノード用領域９１２ａに対してデータ処理を行い、その内容を第二ノード９２０側の第一ノード用領域９２２ａにもコピーして反映させる。
【００１０】
プロセッサ９１１はさらに、各々のプログラムの動作により、アプリケーション実行部９５１がクライアント装置９４０からの依頼に応じて第一ノード用領域９１２ａに書き込んだデータを第二ノード９２０の第一ノード用領域９２２ａにコピーして反映させるミラーリング処理部９５５と、そのデータを共有ストレージ９３０に記憶するストレージ記憶部９５６と、第二ノード９２０で異常が発生した場合にその処理を引き継ぐフェイルオーバー処理部９５７としても機能する。
【００１１】
第二ノード９２０は、ハードウェア的にもソフトウェア的にも、次に説明する点を除いては第一ノード９１０と同一の構成を有するので、呼称は全て同一とし、参照番号は各々＋１０ずつしていう。即ち、ハードウェアとしてはプロセッサ９２１、ＮＶＲＡＭ９２２…などのようにいい、ソフトウェアとしてはアプリケーション実行部９６１、ＮＶＲＡＭドライバ実行部９６２…などのようにいう。
【００１２】
第二ノード９２０の、第一ノード９１０と比べての唯一の相違点について説明する。ＮＶＲＡＭ９２２は、第一ノード９１０で行われる処理でＮＶＲＡＭ９１２に書き込まれたデータをミラーリングする第一ノード用領域９２２ａと、第二ノード９２０で行われる処理についてデータを一時的に書き込む第二ノード用領域９２２ｂとに分かれている。第二ノード９２０では、クライアント装置９４０からの依頼に応じて第二ノード用領域９２２ｂに対してデータ処理を行い、その内容を第一ノード９１０側の第二ノード用領域９１２ｂにもコピーして反映させる。
【００１３】
第一ノード９１０のアプリケーション実行部９５１がデータをＮＶＲＡＭ９１２の第一ノード用領域９１２ａに書き込む際には、既にファイルシステムに書き込み可能な状態で記憶させる。第二ノード９２０のアプリケーション実行部９６１がデータをＮＶＲＡＭ９２２の第二ノード用領域９２２ｂに書き込む際も同様である。この状態のデータに対して、第一ノード９１０および第二ノード９２０は互いにミラーリング処理部９５５および９６５によってＮＶＲＡＭ９１２および９２２のデータを相互にミラーリングし、そしてストレージ記憶部９５６もしくは９６６によって共有ストレージ９３０に記憶させる。
【００１４】
ここで、たとえば第一ノード９１０で、ＮＶＲＡＭ９１２上に共有ストレージ９３０に未反映のデータが残った状態で異常が発生した場合には、第二ノード９２０側でフェイルオーバー処理部９６７が、第一ノード用領域９２２ａ上のデータに対してリカバリ処理、即ち共有ストレージ９３０に記憶させる処理を行った後で、各クライアント装置９４０からのアクセス受付を再開させる。第二ノード９２０で同様の異常が発生した場合には、第一ノード９１０がこれと同様の動作を行う。
【００１５】
このように構成することで、第一ノード９１０と第二ノード９２０とで各クライアント装置９４０からのアクセスにかかる処理の負荷を分散しつつ、一方で異常が発生した時には残る一方ですぐに処理を再開することが可能となる。この構造は、自ノード用の領域を使用する限りにおいては、シングルシステムと同様の構造で動作することができる。このため、クラスタ構成として特別な改造が必要なく、通常運用での構造変更を必要としないでクラスタシステムの構築が可能となる。
【００１６】
他にこれに関連する技術文献として、たとえば次の各文献がある。その中でも特許文献２には、ＮＶＲＡＭを複数ブロックに分割して各ブロックごとにリード／ライトプロテクトすることが可能であるというディスク制御装置について記載されている。特許文献３には、遠隔地に設置されたリモートサイトにデータをミラーリングするシステムについて記載されている。非特許文献１および２には、ＮＡＳクラスタモデルの基本的な構成について記載されている。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】特開２００７−３２８７７８号公報
【特許文献２】特開２００８−２１７８１１号公報
【特許文献３】特表２００６−５２７８７５号公報
【非特許文献】
【００１８】
【非特許文献１】デジタルアドバンテージ「第２０回  ファイル共有プロトコルＳＭＢ／ＣＩＦＳ（その１）（基礎から学ぶＷｉｎｄｏｗｓネットワーク―Ｗｉｎｄｏｗｓネットワーク管理者への道―より）」、平成１６年１０月２９日、アイティメディア株式会社、［平成２４年５月２１日検索］、インターネット＜URL：http://www.atmarkit.co.jp/fwin2k/network/baswinlan020/baswinlan020_01.html＞
【非特許文献２】高橋郷「Ｗｉｎｄｏｗｓクラスタリング入門  第１回  ＭＳＣＳ導入の準備〜サーバ・クラスタの基礎知識〜」、平成２０年１２月３日、アイティメディア株式会社、［平成２３年１２月２１日検索］、インターネット＜URL：http://www.atmarkit.co.jp/fwin2k/operation/mscluster01/mscluster01_01.html＞
【発明の概要】
【発明が解決しようとする課題】
【００１９】
図１０で説明した特許文献１記載の既存のクラスタシステム９０１は、前述したように、通常動作時には負荷を分散しつつ、異常発生時にもすぐに処理を再開することが可能である。
【００２０】
しかしながらこの構成では、ＮＶＲＡＭ９１２または９２２上のデータを共有ストレージ９３０に反映を完了させないと、データの整合性を保つことができない。この処理の途中で異常が発生した場合、共有ストレージ９３０に途中まで書き込んでいたデータの整合性は失われてしまう。
【００２１】
前述の第一ノード９１０で異常が発生した場合の例でいえば、第二ノード９２０側で第一ノード用領域９２２ａ上のデータに対するリカバリ処理、即ち当該データを共有ストレージ９３０に記憶させる処理が、第二ノード９２０が第一ノード９１０の動作を引き継ぐためには必要である。第二ノード９２０で異常が発生した場合も同様である。
【００２２】
従って、そのリカバリ処理を行うための時間が必要であり、クライアント装置９４０に異常の発生を報告する必要が生じることともなる。この問題を解決しうる技術は、残る特許文献２〜３および非特許文献１〜２にも記載されていない。
【００２３】
本発明の目的は、クライアント装置側に異常の発生を意識させることなく、ごく短時間でフェイルオーバー処理を行うことを可能とするクラスタシステム、ノード、フェイルオーバー方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００２４】
上記目的を達成するため、本発明に係るノード装置は、同一の構成を有する他のノード装置と相互に接続されると共に、他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてクラスタシステムを構築するノード装置であって、同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置であって、予め複数の記憶領域に区切られた不揮発性メモリと、接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき不揮発性メモリの記憶領域との間の対応関係を予め記憶しているＩＰアドレステーブル記憶手段と、クライアント装置からの要求に基づいて予め装備されたアプリケーションソフトを実行して処理を行い、これによって得られる処理データを処理依頼元のクライアント装置のＩＰアドレスに対応する記憶領域上に記憶させるアプリケーションソフト実行部と、記憶された処理データを他のノード装置の対応する記憶領域に記憶させるミラーリング処理部と、他のノード装置の対応する記憶領域に記憶させられた後の処理データを共有ストレージに書き込むストレージ記憶部とを有することを特徴とする。
【００２５】
上記目的を達成するため、本発明に係るクラスタシステムは、同一の構成を有する第１および第２のノード装置と、第１および第２のノード装置の間で共有される同一の外部記憶装置である共有ストレージとが相互に接続されて構築されたクラスタシステムであって、第１および第２のノード装置が、請求項１ないし請求項３のうちいずれか１項に記載のノード装置であることを特徴とする。
【００２６】
上記目的を達成するため、本発明に係るフェイルオーバー方法は、同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置にあって、予め備えられた不揮発性メモリは複数の記憶領域に区切られており、接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき不揮発性メモリの記憶領域との間の対応関係が予め備えられたＩＰアドレステーブル記憶手段に記憶されたものであると共に、アプリケーションソフトをアプリケーションソフト実行部が実行し、アプリケーションソフトによって得られた処理データを不揮発性メモリ上のクライアント装置のＩＰアドレスに対応する記憶領域上にアプリケーションソフト実行部が一時的に保存し、記憶された処理データをミラーリング処理部が他のノード装置の対応する記憶領域に記憶させ、他のノード装置の対応する記憶領域に記憶させられた後の処理データをストレージ記憶部が共有ストレージに書き込むことを特徴とする。
【００２７】
上記目的を達成するため、本発明に係るフェイルオーバープログラムは、同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置にあって、予め備えられた不揮発性メモリは複数の記憶領域に区切られており、接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき不揮発性メモリの記憶領域との間の対応関係が予め備えられたＩＰアドレステーブル記憶手段に記憶されたものであると共に、ノード装置が備えるプロセッサに、アプリケーションソフトを実行する手順、アプリケーションソフトによって得られた処理データを不揮発性メモリ上のクライアント装置のＩＰアドレスに対応する記憶領域上に一時的に保存する手順、記憶された処理データを他のノード装置の対応する記憶領域に記憶させる手順、および他のノード装置の対応する記憶領域に記憶させられた後の処理データを共有ストレージに書き込む手順を実行させることを特徴とする。
【発明の効果】
【００２８】
本発明は、上記したように、各クライアント装置のＩＰアドレスに対応して不揮発性メモリの記憶領域を区切って、ミラーリング処理を行ってから共有ストレージに書き込むように構成したので、一方のノード装置で異常が発生しても不揮発性メモリに記憶されたデータの整合性は保たれる。これによってクライアント装置側に異常の発生を意識させることなく、ごく短時間でフェイルオーバー処理を行うことが可能であるという、優れた特徴を持つクラスタシステム、ノード、フェイルオーバー方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施形態に係るクラスタシステムの構成について示す説明図である。
【図２】図１に示した第一ノードに備えられるＩＰアドレステーブル記憶手段の記憶内容について示す説明図である。
【図３】図１に示したクラスタシステムで、第一ノードおよび第二ノードの正常動作時の処理の分担について示す説明図である。
【図４】図１に示したクラスタシステムで、第一ノードおよび第二ノードの異常発生時の処理の分担について示す説明図である。
【図５】図１に示したクラスタシステムの正常時の動作について示す説明図である。
【図６】図１に示したクラスタシステムの正常時の動作について示すフローチャートである。
【図７】図６の続きである。
【図８】図１に示したクラスタシステムの異常発生時の動作について示す説明図である。
【図９】図１に示したクラスタシステムの異常発生時の動作について示すフローチャートである。
【図１０】特許文献１に記載されている、既存のクラスタシステムの構成について示す説明図である。
【発明を実施するための形態】
【００３０】
（実施形態）
以下、本発明の実施形態の構成について添付図１に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係るノード装置（第一ノード１０および第二ノード２０）は、同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置である。このノード装置（第一ノード１０）は、予め複数の記憶領域に区切られた不揮発性メモリ（ＮＶＲＡＭ１２）と、接続された各クライアント装置４０のＩＰアドレスと当該クライアント装置が使用すべき不揮発性メモリの記憶領域との間の対応関係を予め記憶しているＩＰアドレステーブル記憶手段１５と、クライアント装置からの要求に基づいて予め装備されたアプリケーションソフトを実行して処理を行い、これによって得られる処理データを処理依頼元のクライアント装置のＩＰアドレスに対応する記憶領域上に記憶させるアプリケーションソフト実行部１０１と、記憶された処理データを他のノード装置の対応する記憶領域に記憶させるミラーリング処理部１０５と、他のノード装置の対応する記憶領域に記憶させられた後の処理データを共有ストレージに書き込むストレージ記憶部１０６とを有する。
【００３１】
ここで、ミラーリング処理部１０５は、処理データを他のノード装置の対応する記憶領域に記憶させる処理の完了後、処理要求元のクライアント装置４０に書き込み終了通知を返信する機能を有する。さらに、他のノード装置の不揮発性メモリに処理データが残った状態で当該他のノード装置に異常が発生した場合に、ＩＰアドレステーブル記憶手段に記憶された対応関係を変更して当該他のノード装置による処理を引き継ぐフェイルオーバー処理部１０７も備える。
【００３２】
以上の構成を備えることにより、ノード装置（第一ノード１０）は、クライアント装置側に異常の発生を意識させることなく、ごく短時間でフェイルオーバー処理を行うことが可能となる。
以下、これをより詳細に説明する。
【００３３】
図１は、本発明の実施形態に係るクラスタシステム１の構成について示す説明図である。クラスタシステム１は、第一ノード１０および第二ノード２０という各々のコンピュータ装置（サーバ）と、その他多数のクライアント装置４０とが、ネットワーク４１を介して相互に接続されて構成されている。
【００３４】
第一ノード１０および第二ノード２０は、単にクライアント装置４０から受信したデータを保存するファイルサーバでもよいし、また受信したデータに対して何らかの処理を行ってから保存するデータベースシステム、ウェブサーバ、業務システムなどでもよい。
【００３５】
またここで、第一ノード１０および第二ノード２０とクライアント装置４０との間で利用される通信方式は、クライアント装置４０のＯＳ（Operating System: 基本ソフト）がたとえばウィンドウズ（登録商標）であればＣＩＦＳ（Common Internet File System）を利用することができるし、ＵＮＩＸ（登録商標）であればＮＩＳ（Network File System）を利用することができる。これら以外にも、利用可能な通信方式であれば任意のものを使用することができる。
【００３６】
ここでサーバクラスタを構成している第一ノード１０および第二ノード２０は、共有の外部記憶装置である共有ストレージ３０と接続されている。そして、第一ノード１０および第二ノード２０は、処理にかかる負荷を相互に分散しつつ、記憶されているデータを互いにミラーリングして、どちらか一方に故障が発生した場合にその故障した方の装置で行われていた処理を残る一方が引き継いで続行する（これをフェイルオーバーという）ことができる構成となっている。
【００３７】
第一ノード１０は、コンピュータプログラムを実行する主体であるプロセッサ１１と、処理中のデータを一時的に記憶する不揮発性の主記憶装置であるＮＶＲＡＭ１２と、処理されたデータを共有ストレージ３０に固定的に記憶する外部ストレージ接続手段１３と、ネットワーク４１を介して第二ノード２０や各クライアント装置４０との間で通信を行う通信手段１４と、後述のＩＰアドレステーブル記憶手段１５とが備えられている。
【００３８】
ＮＶＲＡＭ１２は、ＩＣＡ（InterConnectAccess）カードとして第一ノード１０内に実装されている。この方式によって接続されることにより、ＮＶＲＡＭ１２はプロセッサ１１上で動作するオペレーティングシステムを経由することなく、ＲＤＭＡ（Remote Direct Memory Access）プロトコルによってデータを第二ノード２０に転送することが可能となるであるというメリットがある。他にも、ＮＶＲＡＭ１２を実装する上では、任意の接続方式を利用することができる。
【００３９】
プロセッサ１１は、クライアント装置４０からの依頼に基づく処理を行うアプリケーションソフトを実行してそのデータをＮＶＲＡＭ１２に書き込むアプリケーション実行部１０１と、ＮＶＲＡＭ１２との間のデータ交換を仲介するデバイスドライバを動作させるＮＶＲＡＭドライバ実行部１０２と、外部ストレージ接続手段１３を経由して共有ストレージ３０との間のデータ交換を仲介するデバイスドライバを動作させるストレージ装置ドライバ実行部１０３と、通信手段１４との間のデータ交換を仲介するデバイスドライバを動作させる外部通信ドライバ実行部１０４として機能する。
【００４０】
ＮＶＲＡＭ１２には、第一ノード１０および第二ノード２０で各々行われる処理について、後述するようにクライアント装置４０のＩＰアドレスのグループに応じてグループ０用領域１２ａおよびグループ１用領域１２ｂとに分かれている。第一ノード１０では、「グループ０」に属するクライアント装置４０からの依頼に応じてグループ０用領域１２ａに対してデータ処理を行い、その内容を第二ノード２０側の同領域にもコピーして反映する。
【００４１】
プロセッサ１１はさらに、各々のプログラムの動作により、アプリケーション実行部１０１が「グループ０」に属するクライアント装置４０からの依頼に応じてグループ０用領域１２ａに書き込んだデータを第二ノード２０のグループ０用領域２２ａにコピーして反映させるミラーリング処理部１０５と、そのデータを共有ストレージ３０に記憶するストレージ記憶部１０６と、第二ノード２０で異常が発生した場合にその処理を引き継ぐようＩＰアドレステーブル記憶手段１５の記憶内容を変更するフェイルオーバー処理部１０７としても機能する。
【００４２】
第二ノード２０は、第一ノード１０と、ハードウェア的にもソフトウェア的にも同一の構成を有している。従って、第二ノード２０の各機能部については、第一ノード１０と呼称を全て同一とし、参照番号は最上位の「１」を「２」に代えた以外は全て第一ノード１０と同一とする。即ち、ハードウェア的にはプロセッサ２１、ＮＶＲＡＭ２２…などのようにいい、ソフトウェア的にはアプリケーション実行部２０１、ＮＶＲＡＭドライバ実行部２０２…などのようにいう。
【００４３】
図２は、図１に示した第一ノード１０に備えられるＩＰアドレステーブル記憶手段１５の記憶内容について示す説明図である。クライアント装置４０は、各々のＩＰアドレスのグループに応じて「グループ０」および「グループ１」の２グループに分かれる。ＩＰアドレステーブル記憶手段１５には、各クライアント装置４０のＩＰアドレスと、それに該当するクライアント装置４０が「グループ０」および「グループ１」のうちのいずれに属するかについて記憶されている。第二ノード２０にも、これと同一の内容を記憶するＩＰアドレステーブル記憶手段２５が存在する。
【００４４】
ここでいう「グループ０」および「グループ１」の分け方については、たとえばＩＰアドレスの範囲によって分けてもよいし、１個ごとのＩＰアドレスについて「グループ０」もしくは「グループ１」を指定してもよい。また、ＩＰアドレスではなくホスト名で「グループ０」もしくは「グループ１」に分類してもよい。
【００４５】
図３は、図１に示したクラスタシステム１で、第一ノード１０および第二ノード２０の正常動作時の処理の分担について示す説明図である。第一ノード１０のＮＶＲＡＭ１２は前述のようにグループ０用領域１２ａおよびグループ１用領域１２ｂとに分かれ、第二ノード２０のＮＶＲＡＭ２２も同様にグループ０用領域２２ａおよびグループ１用領域２２ｂとに分かれる。
【００４６】
ＩＰアドレステーブル記憶手段１５（２５）に記憶された各クライアント装置４０の「グループ０」および「グループ１」の区分について、第一ノード１０のアプリケーション実行部１０１は、「グループ０」に属するクライアント装置４０からの依頼に応じて処理を行い、その処理結果をＮＶＲＡＭ１２のグループ０用領域１２ａに書き込む。第二ノード２０のアプリケーション実行部２０１は、「グループ１」に属するクライアント装置４０からの依頼に応じて処理を行い、その処理結果をＮＶＲＡＭ２２のグループ１用領域２２ｂに書き込む。
【００４７】
そして、「グループ０」に属するクライアント装置４０からの依頼に応じた処理の場合、第一ノード１０のアプリケーション実行部１０１がデータ処理を行った後で第一ノード１０および第二ノード２０のミラーリング処理部１０５および２０５は、ＮＶＲＡＭ１２および２２の相互の内容をコピーしあい、そして第一ノード１０のストレージ記憶部１０６がそのデータをストレージ装置ドライバ実行部１０３および外部ストレージ接続手段１３を介して共有ストレージ３０にそのデータを記憶する。
【００４８】
「グループ１」に属するクライアント装置４０からの依頼に応じた処理の場合は、第二ノード２０のアプリケーション実行部２０１が先に処理を行う点以外は、「グループ０」の場合と同一である。
【００４９】
図４は、図１に示したクラスタシステム１で、第一ノード１０および第二ノード２０の異常発生時の処理の分担について示す説明図である。第一ノード１０の側で、共有ストレージ３０への書き込みの済んでいないデータがＮＶＲＡＭ１２に残っている状態で第一ノード１０が異常を起こして停止した場合、ミラーリング処理部１０５によって、ＮＶＲＡＭ２２のグループ０用領域２２ａにその未反映データがコピーされている。
【００５０】
そこで、第二ノード２０が「グループ０」に属するクライアント装置４０からの依頼によるその処理を引き継ぎ、クライアント装置４０からの依頼に応じた処理によるデータを、ＮＶＲＡＭ２２のグループ０用領域２２ａにコピーされた分のデータに続いて書き込んで、これを共有ストレージ３０に記憶する。
【００５１】
図５は、図１に示したクラスタシステム１の正常時の動作について示す説明図である。図６〜７（図面の錯綜回避のため２枚に分ける）は、図１に示したクラスタシステム１の正常時の動作について示すフローチャートである。より詳しくは、図５では、「グループ０」に属するクライアント装置４０からの処理依頼に応じての動作を示している。
【００５２】
クライアント装置４０からデータ処理依頼がなされた場合、第一ノード１０および第二ノード２０のアプリケーション実行部１０１および２０１はそれぞれ、各々のＩＰアドレステーブル記憶手段１５および２５を参照して、「グループ０」および「グループ１」のどちらに属するクライアント装置４０からの処理依頼かを判断する（ステップＳ３０１および３５１）。
【００５３】
「グループ０」に属するクライアント装置４０からの処理依頼だった場合、第一ノード１０のアプリケーション実行部１０１がその依頼に対応する処理を行い、その処理結果をＮＶＲＡＭ１２のグループ０用領域１２ａに書き込む（ステップＳ３０２）。そしてミラーリング処理部１０５がそのデータを第二ノード２０のミラーリング処理部２０５に渡して記憶させる（ステップＳ３０３）。これを受けた第二ノード２０のミラーリング処理部２０５は、そのデータをＮＶＲＡＭ２２のグループ０用領域２２ａに書き込む（ステップＳ３０７）。
【００５４】
そして、ミラーリング処理部１０５が依頼元のクライアント装置４０に書き込み終了通知を返し（ステップＳ３０４）、ストレージ記憶部１０６がクライアント装置４０に対して書き込み終了を通知するタイミングでそのデータをストレージ装置ドライバ実行部１０３および外部ストレージ接続手段１３を介して共有ストレージ３０にそのデータを記憶する（ステップＳ３０５）。共有ストレージ３０への書き込みが終了したら、ミラーリング処理部１０５はそのデータをＮＶＲＡＭ１２のグループ０用領域１２ａから削除する（ステップＳ３０６）。
【００５５】
「グループ１」に属するクライアント装置４０からの処理依頼だった場合、第二ノード２０のアプリケーション実行部２０１がその依頼に対応する処理を行い、その処理結果をＮＶＲＡＭ２２のグループ１用領域２２ｂに書き込む（ステップＳ３５２）。そしてミラーリング処理部２０５がそのデータを第一ノード１０のミラーリング処理部１０５に渡して記憶させる（ステップＳ３５３）。これを受けた第一ノード１０のミラーリング処理部１０５は、そのデータをＮＶＲＡＭ１２のグループ１用領域１２ｂに書き込む（ステップＳ３５７）。
【００５６】
そして、ミラーリング処理部２０５が依頼元のクライアント装置４０に書き込み終了通知を返し（ステップＳ３５４）、ストレージ記憶部２０６がそのデータをストレージ装置ドライバ実行部２０３および外部ストレージ接続手段２３を介して共有ストレージ３０にそのデータを記憶する（ステップＳ３５５）。共有ストレージ３０への書き込みが終了したら、ミラーリング処理部２０５はそのデータをＮＶＲＡＭ２２のグループ１用領域２２ａから削除する（ステップＳ３５６）。
【００５７】
図８は、図１に示したクラスタシステム１の異常発生時の動作について示す説明図である。図９は、図１に示したクラスタシステム１の異常発生時の動作について示すフローチャートである。より詳しくは、「グループ０」に属するクライアント装置４０からの処理依頼に応じて第一ノード１０が図５・ステップＳ３０５に示した共有ストレージ３０への書き込み処理を行っている間に、この第一ノード１０に故障が発生して、ＮＶＲＡＭ１２のグループ０用領域１２ａに共有ストレージ３０へ未反映のデータが残ってしまった場合について、図８〜９では示している。
【００５８】
この段階であれば、ミラーリング処理部１０５によって、ＮＶＲＡＭ２２のグループ０用領域２２ａにその未反映データがコピーされている。そこで、異常発生を検出したフェイルオーバー処理部２０７は（ステップＳ４０１）、第二ノード２０のＩＰアドレステーブル記憶手段２５で、「グループ０」に属するクライアント装置４０の処理を第二ノード２０が引き継ぐように設定し直す（ステップＳ４０２）。
【００５９】
ここで、第一ノード１０および第二ノード２０では、互いが正常に動作していることを確認するために、常時周期的にハートビート通信を行っている。本実施形態で「ＮＶＲＡＭに未反映データが残ったままの状態で、一方のノードで異常が発生した」ことを検出して上記ステップＳ４０１からの動作開始は、このハートビート通信に対する返答が一定時間ないことを検出した場合をその契機とすることができる。
【００６０】
これによって、ＮＶＲＡＭ２２のグループ０用領域２２ａに残っている未反映データの続きの処理をアプリケーション実行部２０１が行ってそのデータをＮＶＲＡＭ２２のグループ０用領域２２ａに書き込み（ステップＳ４０３）、ミラーリング処理部２０５が依頼元のクライアント装置４０に書き込み終了通知を返し（ステップＳ４０４）、ストレージ記憶部２０６がそのデータをストレージ装置ドライバ実行部２０３および外部ストレージ接続手段２３を介して共有ストレージ３０にそのデータを記憶する（ステップＳ４０５）。
【００６１】
共有ストレージ３０への書き込みが終了したら、ミラーリング処理部２０５はそのデータをＮＶＲＡＭ２２のグループ１用領域２２ａから削除する（ステップＳ４０６）。以上の処理によって、順序性をシビアに要求される処理であっても、データのリカバリ処理を行うことなく処理を継続することが可能となる。即ち、ごく短時間でサービスを復旧させることが可能となるので、クライアント装置４０の側に故障の発生を意識させること自体が必要ない。
【００６２】
（実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。
本実施形態に係るフェイルオーバー方法は、同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置（第一ノード１０）にあって、予め備えられた不揮発性メモリは複数の記憶領域に区切られており、接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき不揮発性メモリの記憶領域との間の対応関係が予め備えられたＩＰアドレステーブル記憶手段に記憶されたものであると共に、アプリケーションソフトをアプリケーションソフト実行部が実行し、アプリケーションソフトによって得られた処理データを不揮発性メモリ上のクライアント装置のＩＰアドレスに対応する記憶領域上にアプリケーションソフト実行部が一時的に保存し（図６・ステップＳ３０２または３５２）、記憶された処理データをミラーリング処理部が他のノード装置の対応する記憶領域に記憶させ（図６・ステップＳ３０３または３５３）、他のノード装置の対応する記憶領域に記憶させられた後の処理データをストレージ記憶部が共有ストレージに書き込む（図６・ステップＳ３０５または３５５）。
【００６３】
そして、他のノード装置（第二ノード２０）の不揮発性メモリに処理データが残った状態で当該他のノード装置に異常が発生した場合に、ＩＰアドレステーブル記憶手段に記憶された対応関係をフェイルオーバー処理部が変更して当該他のノード装置による処理を引き継ぐ（図９・ステップＳ４０２〜４０３）。
【００６４】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行するノード装置（第一ノード１０）のプロセッサ１１に実行させるようにしてもよい。本プログラムは、非一時的な記録媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリ等に記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
この動作により、本実施形態は以下のような効果を奏する。
【００６５】
本実施形態によれば、第一ノード１０もしくは第二ノード２０のうちのいずれかに異常が発生して停止した場合でも、残る一方のノードが備えるＮＶＲＡＭ１２または２２に対応する記憶領域が存在しており、その領域に共有ストレージ３０にすぐ書き込める状態のデータが、ミラーリング処理によって整合性が取れた状態で記憶されている。
【００６６】
従って、ＩＰアドレステーブル記憶手段１５または２５に記憶された各クライアント装置に属する記憶領域に応じて、データの書き込みを行う領域を切り替えれば、データのリカバリ処理を行う必要は無く、すぐに残る一方のノードで処理を引き継いで続行させることが可能となる。これによって、クライアント装置の側に故障の発生を意識させることなく、ごく短時間でサービスを復旧させることが可能となる。
【００６７】
（実施形態の拡張）
上記実施形態は、以上で説明した本発明の趣旨を改変しない範囲で、様々な拡張が可能である。以下、これについて説明する。
【００６８】
まず、上記実施形態は第一ノード１０および第二ノード２０という２台のサーバコンピュータによる構成例を示したが、これが３台以上になってももちろんよい。その場合、各クライアント装置をサーバコンピュータの台数分のグループに予め分けたＩＰアドレステーブルを、各々のＩＰアドレステーブル記憶手段に記憶させた上で、上記と同様の動作を行うこととなる。
【００６９】
さらに、各サーバコンピュータが、物理的に複数台のコンピュータによって構成されてもよい。そして、各サーバコンピュータが、同一の処理をクライアント装置のグループ毎に分担してもよいし、また別々の処理を並行して行うものとしてもよい。
【００７０】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【００７１】
上述した実施形態について、その新規な技術内容の要点をまとめると、以下のようになる。なお、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【００７２】
（付記１）  同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、前記他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置であって、
予め複数の記憶領域に区切られた不揮発性メモリと、
接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき前記不揮発性メモリの前記記憶領域との間の対応関係を予め記憶しているＩＰアドレステーブル記憶手段と、
前記クライアント装置からの要求に基づいて予め装備されたアプリケーションソフトを実行して処理を行い、これによって得られる処理データを処理依頼元の前記クライアント装置のＩＰアドレスに対応する前記記憶領域上に記憶させるアプリケーションソフト実行部と、
記憶された前記処理データを前記他のノード装置の対応する記憶領域に記憶させるミラーリング処理部と、
前記他のノード装置の対応する記憶領域に記憶させられた後の前記処理データを前記共有ストレージに書き込むストレージ記憶部と
を有することを特徴とするノード装置。
【００７３】
（付記２）  前記ミラーリング処理部が、前記処理データを前記他のノード装置の対応する記憶領域に記憶させる処理の完了後、処理要求元の前記クライアント装置に書き込み終了通知を返信する機能を有することを特徴とする、付記１に記載のノード装置。
【００７４】
（付記３）  前記他のノード装置の不揮発性メモリに前記処理データが残った状態で当該他のノード装置に異常が発生した場合に、前記ＩＰアドレステーブル記憶手段に記憶された対応関係を変更して当該他のノード装置による処理を引き継ぐフェイルオーバー処理部
を有することを特徴とする、付記１または付記２に記載のノード装置。
【００７５】
（付記４）  同一の構成を有する第１および第２のノード装置と、前記第１および第２のノード装置の間で共有される同一の外部記憶装置である共有ストレージとが相互に接続されて構築されたクラスタシステムであって、
前記第１および第２のノード装置が、付記１ないし付記３のうちいずれか１項に記載のノード装置であることを特徴とするクラスタシステム。
【００７６】
（付記５）  同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、前記他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置にあって、
予め備えられた不揮発性メモリは複数の記憶領域に区切られており、
接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき前記不揮発性メモリの前記記憶領域との間の対応関係が予め備えられたＩＰアドレステーブル記憶手段に記憶されたものであると共に、
前記アプリケーションソフトをアプリケーションソフト実行部が実行し、
前記アプリケーションソフトによって得られた前記処理データを前記不揮発性メモリ上の前記クライアント装置のＩＰアドレスに対応する前記記憶領域上に前記アプリケーションソフト実行部が一時的に保存し、
記憶された前記処理データをミラーリング処理部が前記他のノード装置の対応する記憶領域に記憶させ、
前記他のノード装置の対応する記憶領域に記憶させられた後の前記処理データをストレージ記憶部が前記共有ストレージに書き込む
ことを特徴とするフェイルオーバー方法。
【００７７】
（付記６）  前記他のノード装置の不揮発性メモリに前記処理データが残った状態で当該他のノード装置に異常が発生した場合に、前記ＩＰアドレステーブル記憶手段に記憶された対応関係をフェイルオーバー処理部が変更して当該他のノード装置による処理を引き継ぐ
ことを特徴とする、付記５に記載のフェイルオーバー方法。
【００７８】
（付記７）  同一の構成を有する他のノード装置と相互に接続されてクラスタシステムを構成すると共に、前記他のノード装置との間で共有される同一の外部記憶装置である共有ストレージに接続されてなるノード装置にあって、
予め備えられた不揮発性メモリは複数の記憶領域に区切られており、
接続された各クライアント装置のＩＰアドレスと当該クライアント装置が使用すべき前記不揮発性メモリの前記記憶領域との間の対応関係が予め備えられたＩＰアドレステーブル記憶手段に記憶されたものであると共に、
前記ノード装置が備えるプロセッサに、
前記アプリケーションソフトを実行する手順、
前記アプリケーションソフトによって得られた前記処理データを前記不揮発性メモリ上の前記クライアント装置のＩＰアドレスに対応する前記記憶領域上に一時的に保存する手順、
記憶された前記処理データを前記他のノード装置の対応する記憶領域に記憶させる手順、
および前記他のノード装置の対応する記憶領域に記憶させられた後の前記処理データを前記共有ストレージに書き込む手順
を実行させることを特徴とするフェイルオーバープログラム。
【産業上の利用可能性】
【００７９】
本発明は、コンピュータにおいてデータの整合性や順序性が要求される用途のクラスタシステムにおいて適用可能である。より具体的には、ファイルサーバ、データベースシステム、ウェブサーバ、業務システムなどに適用可能である。
【符号の説明】
【００８０】
１  クラスタシステム
１０  第一ノード
１１，２１  プロセッサ
１２，２２  ＮＶＲＡＭ
１２ａ，２２ａ  グループ０用領域
１２ｂ，２２ｂ  グループ１用領域１
１３，２３  外部ストレージ接続手段
１４，２４  通信手段
１５，２５  ＩＰアドレステーブル記憶手段
２０  第二ノード
３０  共有ストレージ
４０  クライアント装置
４１  ネットワーク
１０１，２０１  アプリケーション実行部
１０２，２０２  ＮＶＲＡＭドライバ実行部
１０３，２０３  ストレージ装置ドライバ実行部
１０４，２０４  外部通信ドライバ実行部
１０５，２０５  ミラーリング処理部
１０６，２０６  ストレージ記憶部
１０７，２０７  フェイルオーバー処理部
【図１】
2014089506.tif 000003
【図２】
2014089506.tif 000004
【図３】
2014089506.tif 000005
【図４】
2014089506.tif 000006
【図５】
2014089506.tif 000007
【図６】
2014089506.tif 000008
【図７】
2014089506.tif 000009
【図８】
2014089506.tif 000010
【図９】
2014089506.tif 000011
【図１０】
2014089506.tif 000012