(57)【要約】  この発明の一実施例は、遠隔サーバノードからローカルサーバノードへの自動化されたフェールオーバーを行なうための方法であって、遠隔サーバノードおよびローカルサーバノードは、地理的に分散配置されたサーバノード（３１０、３４０）のクラスタ内にある。ローカルサーバノードは、ローカルストレージシステム（３７２）と、ローカルストレージシステムの外部のローカル複製モジュール（３７４）とに結合されている。遠隔サーバノードは、ストレージシステムとに結合されている。ローカル複製モジュールと遠隔複製モジュールとは、ローカルストレージシステムと遠隔ストレージシステムとの間でデータ複製を行なうために互いに長距離通信（３９０）する。ローカルサーバノードで制御クラスタリソース（３２７）がオンラインにされ、制御クラスタリソースは、クラスタグループ内の従属クラスタリソース（３２４）の従属元である。ローカルサーバノードでクラスタグループ内の従属クラスタリソースがオンラインになるのを遅らせるために、制御クラスタリソースの状態はオンライン保留に設定される。前記制御クラスタリソースの設定情報が次に検証される。
2008511924.tif 000002
【特許請求の範囲】
【請求項１】
クラスタサービスソフトウェアを用いて、第１のサーバノードを第２のサーバノードからのフェールオーバーの受け手となるよう選択するステップを備える方法であって、前記第１および第２のサーバノードは前記クラスタサービスソフトウェアによってプログラムで接続されており、前記第１のサーバノードは、第１のストレージシステムと前記第１のストレージシステムの外部の第１の複製モジュールとに結合されており、前記第２のサーバノードは、第２のストレージシステムと前記第２のストレージシステムの外部の第２の複製モジュールとに結合されており、前記第１および第２の複製モジュールは、前記第１および第２のストレージシステム間でデータ複製を行なうために長距離通信リンクを介して互いに通信し、前記方法はさらに、
前記第１のサーバノードで制御クラスタリソースをオンラインにするステップを備え、前記制御クラスタリソースは、クラスタグループ内の従属クラスタリソースの従属元であり、前記方法はさらに、
前記制御クラスタリソースの状態をオンライン保留に設定するステップと、
前記制御クラスタリソースの設定情報を検証するステップと、
前記設定情報が正しい場合、
前記第１のサーバノードの名前を決定するステップと、
データのフェールオーバーを開始するために、前記制御クラスタリソースから前記第１の複製モジュールに第１のコマンドを送信するステップと、
データのフェールオーバーの完了についてチェックするために、前記制御クラスタリソースから前記ローカル複製モジュールに第２のコマンドを送信するステップとを備える、方法。
【請求項２】
前記設定情報が正しい場合、
データの前記フェールオーバーが首尾よく完了した場合には、
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースがオンラインになるよう、前記制御クラスタリソースの状態をオンライン状態に設定するステップと、
その他の場合には、
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースがオンラインにならないよう、前記制御クラスタリソースの状態を障害状態に設定するステップとをさらに備える、請求項１に記載の方法。
【請求項３】
前記設定情報が正しくない場合、
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースがオンラインにならないよう、前記制御クラスタリソースの状態を障害状態に設定するステップをさらに備える、請求項１に記載の方法。
【請求項４】
前記制御クラスタリソースの設定情報を検証するステップは、第１および第２の複製モジュールのＩＰアドレス、一貫性グループの識別情報、ならびに前記第１および第２のサーバノードの各々に配置されたクラスタノードのリストを検証するステップを備える、請求項１に記載の方法。
【請求項５】
前記クラスタグループ内の前記従属クラスタリソースは、アプリケーションクラスタリソースと物理的ストレージディスククラスタリソースとを備える、請求項１に記載の方法。
【請求項６】
前記制御クラスタリソースは、管理ネットワーク上のセキュアシェルプロトコルを介して前記第１の複製モジュールと通信する、請求項１に記載の方法。
【請求項７】
前記第１の複製モジュールは、ファイバチャネルスイッチを介して前記第１のサーバノードと通信する、請求項１に記載の方法。
【請求項８】
前記第１および第２の複製モジュールは互いに非同期通信する、請求項１に記載の方法。
【請求項９】
クラスタグループ内に制御クラスタリソースと従属クラスタリソースとを含む第１のサーバノードを備えるシステムであって、前記制御クラスタリソースは前記クラスタグループ内の前記従属クラスタリソースの従属元であり、前記システムはさらに、
前記第１のサーバノードに結合された第１のストレージシステムと、
前記第１のサーバノードに結合された第１の複製モジュールとを備え、前記第１の複製モジュールは前記第１のストレージシステムの外部にあり、前記システムはさらに、
前記クラスタグループ内に前記制御クラスタリソースのコピーと前記クラスタリソースのコピーとを含む第２のサーバノードと、
前記第２のサーバノードに結合された第２のストレージシステムと、
前記第２のサーバノードに結合された第２の複製モジュールとを備え、前記第２の複製モジュールは前記第２のストレージシステムの外部にあり、
前記第１および第２のサーバノードはクラスタサービスソフトウェアによってプログラムで接続され、前記第１のサーバノードは、前記第２のサーバノードからのフェールオーバーの受け手となるよう、前記クラスタサービスソフトウェアによって選択され、前記第１および第２の複製モジュールは、前記第１および第２のストレージシステム間でデータ複製を行なうために長距離通信リンクを介して互いに通信し、前記制御クラスタリソースは前記フェールオーバーを制御する、システム。
【請求項１０】
前記制御クラスタリソースは、前記フェールオーバーを制御するために、管理ネットワークを介して前記第１の複製モジュールと通信する、請求項９に記載のシステム。
【請求項１１】
前記制御クラスタリソースは、データのフェールオーバーを開始するために、前記第１の複製モジュールに第１のコマンドを送信する、請求項１０に記載のシステム。
【請求項１２】
前記制御クラスタリソースは、データのフェールオーバーの完了についてチェックするために、前記第１の複製モジュールに第２のコマンドを送信する、請求項１１に記載のシステム。
【請求項１３】
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースを保留状態に保つよう、前記制御クラスタリソースの状態はオンライン保留状態に設定される、請求項９に記載のシステム。
【請求項１４】
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースがオンラインになるよう、前記制御クラスタリソースの状態はオンライン状態に設定される、請求項９に記載のシステム。
【請求項１５】
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースがオンラインにならないよう、前記制御クラスタリソースの状態は障害状態に設定される、請求項９に記載のシステム。
【請求項１６】
前記クラスタグループ内の前記従属クラスタリソースは、アプリケーションクラスタリソースと物理的ストレージディスククラスタリソースとを備える、請求項９に記載のシステム。
【請求項１７】
マシンによってアクセスされると前記マシンに以下の動作を行なわせるデータを含むマシンアクセス可能媒体を備える製造品であって、前記以下の動作は、
第１のサーバノードを第２のサーバノードからのフェールオーバーの受け手となるよう選択するステップを備え、前記第１および第２のサーバノードはクラスタサービスソフトウェアによってプログラムで接続されており、前記第１のサーバノードは、第１のストレージシステムと前記第１のストレージシステムの外部の第１の複製モジュールとに結合されており、前記第２のサーバノードは、第２のストレージシステムと前記第２のストレージシステムの外部の第２の複製モジュールとに結合されており、前記第１および第２の複製モジュールは、前記第１および第２のストレージシステム間でデータ複製を行なうために長距離通信リンクを介して互いに通信し、前記以下の動作はさらに、
前記第１のサーバノードで制御クラスタリソースをオンラインにするステップを備え、前記制御クラスタリソースは、クラスタグループ内の従属クラスタリソースの従属元であり、前記以下の動作はさらに、
前記制御クラスタリソースの状態をオンライン保留に設定するステップと、
前記制御クラスタリソースの設定情報を検証するステップと、
前記設定情報が正しい場合、
前記第１のサーバノードの名前を決定するステップと、
データのフェールオーバーを開始するために、前記制御クラスタリソースから前記第１の複製モジュールに第１のコマンドを送信するステップと、
データのフェールオーバーの完了についてチェックするために、前記制御クラスタリソースから前記ローカル複製モジュールに第２のコマンドを送信するステップとを備える、製造品。
【請求項１８】
前記設定情報が正しい場合、前記データは、前記マシンによってアクセスされると前記マシンに以下の動作を行なわせるデータをさらに備え、前記以下の動作は、
データの前記フェールオーバーが首尾よく完了した場合には、
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースがオンラインになるよう、前記制御クラスタリソースの状態をオンライン状態に設定するステップと、
その他の場合には、
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースがオンラインにならないよう、前記制御クラスタリソースの状態を障害状態に設定するステップとを備える、請求項１７に記載の製造品。
【請求項１９】
前記設定情報が正しくない場合、前記データは、前記マシンによってアクセスされると前記マシンに以下の動作を行なわせるデータをさらに備え、前記以下の動作は、
前記第１のサーバノードで前記クラスタグループ内の前記従属クラスタリソースがオンラインにならないよう、前記制御クラスタリソースの状態を障害状態に設定するステップを備える、請求項１７に記載の製造品。
【請求項２０】
前記マシンに前記制御クラスタリソースの設定情報を検証する動作を行なわせる前記データは、前記マシンによってアクセスされると前記マシンに以下の動作を行なわせるデータを備え、前記以下の動作は、
第１および第２の複製モジュールのＩＰアドレス、一貫性グループの識別情報、ならびに前記第１および第２のサーバノードの各々に配置されたクラスタノードのリストを検証するステップを備える、請求項１７に記載の製造品。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
発明の分野
この発明の実施例はクラスタ化されたコンピュータシステムの分野にあり、より特定的には、３００キロメートルよりも長い距離離れて配置され得る地理的に分散配置されたコンピュータノードのクラスタを提供する方法に関する。
【背景技術】
【０００２】
関連技術の説明
クラスタとは、共通の１組のアプリケーションを実行するために一体となって働き、クライアントおよびアプリケーションには単一のシステムのように見える、コンピュータのグループである。伝統的なクラスタでは、コンピュータはケーブルによって物理的に接続され、クラスタソフトウェアによってプログラムで接続されている。これらの接続により、コンピュータはフェールオーバーおよび負荷平衡化を使用できるようになるが、このことはスタンドアロンのコンピュータでは不可能である。
【０００３】
マイクロソフト社（Microsoft Corporation）のマイクロソフトクラスタサーバ（Microsoft Cluster Server：ＭＳＣＳ）といったクラスタソフトウェアによって提供されるクラスタ化は、データベース、メッセージングシステム、ファイルサービスおよび印刷サービスといった基幹（mission-critical）アプリケーションに高可用性を提供する。高可用性とは、クラスタが単一障害点を回避するように設計されていることを意味する。アプリケーションは２つ以上のコンピュータ（ノードとも呼ばれる）に分配可能であり、並行度および障害回復を達成し、より高い可用性を提供する。クラスタ内の多数のノードは絶えず通信状態を保っている。障害または保守の結果、クラスタ内のノードのうちの１つが利用できなくなると、クラスタソフトウェアによって別のノードが選択され、障害が起こったノードの作業負荷を引継ぎ、サービスの提供を開始する。このプロセスはフェールオーバーとして公知である。非常に高い可用性により、サービスにアクセスしていたユーザは引続きサービスにアクセスでき、サービスが短時間中断されたこと、今は異なるノードによってサービスが提供されていることに気づかないであろう。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
クラスタ化の利点は、コンピュータをグループ化してクラスタとして稼働させることを非常に望ましくする。しかしながら、現在、一体にグループ化してクラスタとして稼働できるのは、地理的に分散配置されていないコンピュータのみである。
【０００５】
現在、３００キロメートル以上離れているかもしれないコンピュータ同士が長距離通信リンク上で互いに通信し、コンピュータの各々が他方で作成中のデータをそれ自体の記憶用に複製することができるシステムが存在する。そのようなシステムでは、コンピュータ同士は実際にはクラスタを形成していない。なぜなら、上述の利点をすべて備えるプログラム的クラスタ化を提供するクラスタソフトウェアがないためである。そのような地理的に分散配置されたシステムでは、１つのノードから別のノードへのアプリケーションの手動のフェールオーバーが人間の管理者によって実行可能であるが、非常に時間がかかり、大量のアプリケーションダウンタイムをもたらす。
【０００６】
このため、自動化されたフェールオーバーの能力を有する、３００キロメートル以上離
れているかもしれない地理的に分散配置されたコンピュータノードのクラスタを提供するための手法を有することが望ましい。
【課題を解決するための手段】
【０００７】
発明の概要
この発明の一実施例は、遠隔サーバノードからローカルサーバノードへの自動化されたフェールオーバーを行なうための方法であって、遠隔サーバノードおよびローカルサーバノードは、地理的に分散配置されたサーバノードのクラスタ内にある。ローカルサーバノードは、遠隔サーバノードからのフェールオーバーの受け手となるよう、クラスタサービスソフトウェアによって選択される。ローカルサーバノードは、ローカルストレージシステムと、ローカルストレージシステムの外部のローカル複製モジュールとに結合されている。遠隔サーバノードは、遠隔ストレージシステムと、遠隔ストレージシステムの外部の遠隔複製モジュールとに結合されている。ローカル複製モジュールと遠隔複製モジュールとは、ローカルストレージシステムと遠隔ストレージシステムとの間でデータ複製を行なうために互いに長距離通信する。ローカルサーバノードで制御クラスタリソースがオンラインにされ、制御クラスタリソースは、クラスタグループ内の従属クラスタリソースの従属元である。ローカルサーバノードでクラスタグループ内の従属クラスタリソースがオンラインになるのを遅らせるために、制御クラスタリソースの状態はオンライン保留に設定される。制御クラスタリソースの設定情報が次に検証される。
【発明を実施するための最良の形態】
【０００８】
この発明は、この発明の実施例を示すために使用される以下の説明および添付図面を参照することによって、最良に理解され得る。
【０００９】
説明
この発明の一実施例は、遠隔サーバノードからローカルサーバノードへの自動化されたフェールオーバーを行なうための方法であって、遠隔サーバノードおよびローカルサーバノードは、地理的に分散配置されたサーバノードのクラスタ内にある。ローカルサーバノードは、遠隔サーバノードからのフェールオーバーの受け手となるよう、クラスタサービスソフトウェアによって選択される。ローカルサーバノードは、ローカルストレージシステムと、ローカルストレージシステムの外部のローカル複製モジュールとに結合されている。遠隔サーバノードは、遠隔ストレージシステムと、遠隔ストレージシステムの外部の遠隔複製モジュールとに結合されている。ローカル複製モジュールと遠隔複製モジュールとは、ローカルストレージシステムと遠隔ストレージシステムとの間でデータ複製を行なうために互いに長距離通信する。ローカルサーバノードで制御クラスタリソースがオンラインにされ、制御クラスタリソースは、クラスタグループ内の従属クラスタリソースの従属元である。ローカルサーバノードでクラスタグループ内の従属クラスタリソースがオンラインになるのを遅らせるために、制御クラスタリソースの状態はオンライン保留に設定される。制御クラスタリソースの設定情報が次に検証される。
【００１０】
設定情報が正しい場合、ローカルサーバノードの名前が決定され、次に、データのフェールオーバーを開始するために、第１のコマンドが制御クラスタリソースからローカル複製モジュールに送信され、次に、データのフェールオーバーの完了についてチェックするために、第２のコマンドが制御クラスタリソースからローカル複製モジュールに送信される。データのフェールオーバーが首尾よく完了した場合には、ローカルサーバノードでクラスタグループ内の従属クラスタリソースがオンラインになるよう、制御クラスタリソースの状態はオンライン状態に設定される。データのフェールオーバーが首尾よく完了しなかった場合には、ローカルサーバノードでクラスタグループ内の従属クラスタリソースがオフラインになるよう、制御クラスタリソースの状態は障害状態に設定される。
【００１１】
設定情報が正しくない場合、ローカルサーバノードでクラスタグループ内の従属クラスタリソースがオフラインになるよう、制御クラスタリソースの状態は障害状態に設定される。
【００１２】
以下の説明では、多数の特定の詳細が述べられる。しかしながら、この発明の実施例はこれらの特定の詳細なしで実践されてもよいことが理解される。他の点では、この説明の理解を不明瞭にしないよう、周知の回路、構造および手法は示されていない。
【００１３】
この発明の一実施例の要素は、ハードウェア、ファームウェア、ソフトウェアまたはそれらのあらゆる組合せによって実現されてもよい。ソフトウェアまたはファームウェアで実現される場合、この発明の一実施例の要素は、本質的には、必要なタスクを行なうコードセグメントである。ソフトウェア／ファームウェアは、この発明の一実施例において説明される動作を実行する実際のコードか、もしくは動作をエミュレートまたはシミュレートするコードを含んでいてもよい。プログラムまたはコードセグメントは、プロセッサまたはマシンアクセス可能媒体に格納可能であり、または、搬送波に具体化されたコンピュータデータ信号によって、もしくは伝送媒体上の搬送波により変調された信号によって伝送可能である。「プロセッサ読み取り可能またはアクセス可能媒体」もしくは「マシン読み取り可能またはアクセス可能媒体」は、情報を格納、伝送、または転送可能なあらゆる媒体を含んでいてもよい。プロセッサ読み取り可能またはマシンアクセス可能媒体の例は、電子回路、半導体記憶装置、読出し専用メモリ（ＲＯＭ）、フラッシュメモリ、消去可能ＲＯＭ（ＥＲＯＭ）、フロッピー（登録商標）ディスケット、コンパクトディスク（ＣＤ）ＲＯＭ、光ディスク、ハードディスク、光ファイバ媒体、無線（radio frequency：ＲＦ）リンクなどを含む。コンピュータデータ信号は、電子ネットワークチャネル、光ファイバ、空気、電磁リンク、ＲＦリンクといった伝送媒体上で伝搬可能なあらゆる信号を含んでいてもよい。コードセグメントは、インターネット、イントラネットといったコンピュータネットワークを介してダウンロードされてもよい。マシンアクセス可能媒体は製造品に具体化されてもよい。マシンアクセス可能媒体は、マシンによってアクセスされるとマシンに上述の動作を行なわせるデータを含んでいてもよい。マシンアクセス可能媒体はまた、それに組込まれたプログラムコードを含んでいてもよい。プログラムコードは、上述の動作を行なうマシン読み取り可能コードを含んでいてもよい。「データ」という用語は、ここでは、マシン読み取り可能な目的のために符号化されたあらゆるタイプの情報を意味する。したがって、それはプログラム、コード、データ、ファイルなどを含んでいてもよい。
【００１４】
この発明の一実施例はプロセスとして説明されてもよく、それは通常、フローチャート、フロー図、構造図、またはブロック図として図示される。フローチャートは動作を順次プロセスとして説明するかもしれないが、動作の多くは並行して、または同時に実行可能である。フローチャートにおけるループまたは反復は、単一の反復によって説明されてもよい。ループインデックスまたはカウンタは、関連するカウンタまたはポインタを更新するよう保たれていることが理解される。加えて、動作の順序は再構成されてもよい。プロセスは、その動作が完了すると終了する。プロセスは方法、プログラム、手順などに対応していてもよい。
【００１５】
図１は、典型的なクラスタを含む先行技術のシステム１００を示す図である。システム１００は、クライアント１８０とインターフェイス接続するクラスタ１０４を含む。
【００１６】
クライアント１８０は通信ネットワークを介してクラスタ１０４と通信する。クライアントはサーバシステム上で実行中のアプリケーションに、そのアプリケーションの仮想インターネットプロトコル（Internet Protocol：ＩＰ）を用いてアクセス可能である。
【００１７】
クラスタ１０４は、ノード１１０と、ノード１１４と、共通ストレージデバイス１７０とを含む。
【００１８】
ノード１１０、１４０の各々はコンピュータシステムである。ノード１１０は、メモリ１２０と、プロセッサユニット１３０と、入力／出力ユニット１３２とを備える。同様に、ノード１４０は、メモリ１５０と、プロセッサユニット１６０と、入力／出力ユニット１６２とを備える。各プロセッサユニットは、データ待ち行列、算術論理ユニット、メモリ読出しレジスタ、メモリ書込みレジスタなどといったいくつかの要素を含んでいてもよい。
【００１９】
マイクロソフトクラスタサービス（ＭＳＣＳ）などのクラスタソフトウェアは、クラスタにクラスタ化サービスを提供する。システム１０６がクラスタとして動作するには、ノード１１０、１４０の各々においてクラスタソフトウェアの同一のコピーが実行中である必要がある。クラスタソフトウェアのコピー１２２は、ノード１１０のメモリ１２０内にある。クラスタソフトウェアのコピー１５２は、ノード１４０のメモリ１５０内にある。
【００２０】
クラスタレベルの情報を含むクラスタフォルダは、クラスタの各ノードのメモリに含まれている。クラスタレベルの情報は、クラスタにおいて実行中のアプリケーションの動的リンクライブラリ（Dynamic Link Library：ＤＬＬ）ファイルを含む。クラスタフォルダ１２８は、ノード１１０のメモリ１２０に含まれている。クラスタフォルダ１５８は、ノード１４０のメモリ１５０に含まれている。
【００２１】
クラスタ認識アプリケーションのグループ１２４は、ノード１１０のメモリ１２０に格納されている。これらのアプリケーションの同一のコピー１５４は、ノード１４０のメモリ１５０に格納されている。たとえば、アプリケーションＸ１２６の同一のコピー１５６は、ノード１４０のメモリ１５０に格納されている。
【００２２】
コンピュータノード１１０および１４０は共通ストレージ１７０にアクセスする。共通ストレージ１７０は、クラスタ内のノードによって共有されている情報を含む。この情報は、クラスタ内で実行中のアプリケーションのデータを含む。通常、一度に１つのコンピュータノードしか共通ストレージにアクセスできない。
【００２３】
以下に、典型的なフェールオーバーシーケンスを説明する。典型的なフェールオーバーシーケンスは、図１に示すクラスタ１０４といった典型的なクラスタにおいて起こるであろう。ノード１１０上で実行中のアプリケーション１２６といったアプリケーションの状態が悪化する。この状態の悪化により、このアプリケーションの１つ以上の構成要素が終了し、アプリケーション障害を引起す。ノード１１０上のアプリケーション１２６が障害を起こした後で、クラスタソフトウェアはＡｐｐ１２６の実行を引継ぐためにノード１４０を選択する。ノード１４０は、ノード１４０上で実行中のクラスタソフトウェア１５２のサービスを介してアプリケーション障害を感知する。ノード１４０は、ノード１１０からのアプリケーション１２６の引継ぎを開始する。障害が起こったアプリケーション１２６用のデータが共通ストレージデバイス１７０から復元される。アプリケーションデータが復元された後で、アプリケーション１２６はノード１４０にフェールオーバーされる。つまり、このアプリケーションの継続した実行がこの時点でノード１４０上でアプリケーション１５６の実行として開始される。実行中の障害点によっては、障害が起こったアプリケーションはちょうど障害点から再度開始されないかもしれない。アプリケーション中断の期間、すなわちアプリケーションダウンタイムは、アプリケーションの或る構成要素の終了から、ノード１４０上でのアプリケーションの継続した実行の開始までである。
【００２４】
図２は、長距離通信リンク上で第１のサーバノードから第２のサーバノードにデータを
複製するための先行技術のシステム２００を示す図である。この先行技術のシステムでは、２つのサーバノードは共通クラスタソフトウェアによってプログラムで接続されてはいない。このため、２つのサーバノード間でのデータ複製はあるものの、ごくわずかなアプリケーションダウンタイムで一方のサーバノードが他方のサーバノードの機能を引継ぐことを可能にする自動フェールオーバーはない。
【００２５】
先行技術のシステム２００は、ローカルネットワークを介してストレージシステム２７２および複製モジュール２７４に結合されたサーバノード２１０と、異なるローカルネットワークを介してストレージシステム２８２および複製モジュール２８４に結合された遠隔サーバノード２４０とを備える。ノード２１０、２４０の各々はコンピュータシステムである。ノード２１０は、メモリ２２０と、プロセッサユニット２３０と、入力／出力ユニット２３２とを備える。同様に、ノード２４０は、メモリ２５０と、プロセッサユニット２６０と、入力／出力ユニット２６２とを備える。各プロセッサユニットは、データ待ち行列、算術論理ユニット、メモリ読出しレジスタ、メモリ書込みレジスタなどといったいくつかの要素を含んでいてもよい。
【００２６】
コンピュータノード上で実行中のアプリケーションの情報を含むシステムフォルダは、コンピュータメモリに格納されている。システムフォルダ２２８は、ノード２１０のメモリ２２０に格納されている。システムフォルダ２５８は、ノード２４０のメモリ２５０に格納されている。
【００２７】
アプリケーションのグループ２２４は、ノード２１０のメモリ２２０に格納されている。これらのアプリケーションの同一のコピー２５４は、ノード２４０のメモリ２５０に格納されている。たとえば、アプリケーションＸ２２６の同一のコピー２５６は、ノード１４０のメモリ２５０に格納されている。
【００２８】
２つのコンピュータノード２１０、２４０間でのデータ複製を容易にするためのエージェントは、コンピュータメモリに格納されている。エージェント２２９は、コンピュータノード２１０のメモリ２２０に格納されている。エージェント２５９は、コンピュータノード２４０のメモリ２５０に格納されている。エージェントの機能は後述する。
【００２９】
複製モジュール２７４は、広域ネットワーク、都市域ネットワーク、または専用通信回線といった長距離通信リンク２９０を介して複製モジュール２８４と通信する。この長距離通信は非同期式であっても同期式であってもよい。ストレージシステム２７２に書込まれるべきアプリケーションデータは、サーバノード２１０からストレージシステム２７２および複製モジュール２７４の双方に転送される。複製モジュール２７４は、長距離通信リンク２９０を介してデータを複製モジュール２８４に送信する前にデータを圧縮して帯域幅を節約する圧縮モジュールを含んでいてもよい。複製モジュール２８４は、長距離通信リンク２９０上で受信したデータをストレージシステム２８２に書込むために、サーバノード２４０およびストレージシステム２８２と通信する。
【００３０】
複製モジュール２７４、２８４およびソフトウェアエージェント２２９、２５９は、地理的に離れたサイトにある２つの異なるストレージシステム２７２、２８２間でのデータの複製を可能にする複製解決策を形成する。ソフトウェアエージェント２２９はサーバ２１０上で実行され、ファイバチャネルスイッチ２７６を介してすべての書込みコマンドをストレージシステム２７２と複製モジュール２７４とに分割する。複製モジュール２７４は、長距離リンク２９０上でこのデータを複製モジュール２８４に送信する。複製モジュール２８４は受信したデータを記憶用にストレージシステム２８２に送信し、こうしてストレージシステム２７２上に格納されているデータを複製する。同様に、ソフトウェアエージェント２５９はサーバ２４０上で実行され、ファイバチャネルスイッチ２８６を介し
てすべての書込みコマンドをストレージシステム２８２と複製モジュール２８４とに分割する。複製モジュール２８４は、長距離リンク２９０上でこのデータを複製モジュール２７４に送信する。複製モジュール２７４は受信したデータを記憶用にストレージシステム２７２に送信し、こうしてストレージシステム２８２上に格納されているデータを複製する。この複製解決策は、破損が起こった場合の手動のアプリケーション復元を可能にする。アプリケーションは各サイトのサーバ上で実行し、同じデータを使用することができる。なぜなら、データはサイト間で常に複製されているからである。この複製解決策は同期式および非同期式複製を双方ともサポートし得る。同期式複製モードは、データがサイト間で一貫していることを保証するが、長距離ではゆっくりと動作する。非同期式複製は長距離でより良好な性能を提供する。一方のサイトで障害が起こると、ユーザは、他方のサイトのサーバ上でアプリケーションを手動で開始することができる。これは、アプリケーションが少々のアプリケーションダウンタイムでアクセスのために利用できるようにし、人間の介入を必要とする。
【００３１】
上述の複製解決策の一例は、カーシャ社（Kashya Inc.）のカーシャＫＢＸ４０００データ保護機器である。
【００３２】
一貫性グループとは、複製モジュールによって複製中のディスクのグループである。複製されたグループはどの時点においても互いに一貫している必要がある。一般に、環境における各アプリケーションにつき１つの一貫性グループが作成され、そのアプリケーションによって使用されるすべてのディスクを含んでいる。
【００３３】
図３は、この発明のシステムの一実施例３００を示すブロック図である。システム３００は、ローカルネットワークを介してストレージシステム３７２および複製モジュール３７４に結合されたサーバノード３１０と、異なるローカルネットワークを介してストレージシステム３８２および複製モジュール３８４に結合されたサーバノード３４０とを備える。複製モジュール３７４は、広域ネットワーク、都市域ネットワーク、または専用通信回線といった長距離通信リンク３９０を介して複製モジュール３８４と通信する。この長距離通信は非同期式であっても同期式であってもよい。ストレージシステム３７２に書込まれるべきアプリケーションデータは、サーバノード３１０からストレージシステム３７２および複製モジュール３７４の双方に転送される。複製モジュール３７４は、長距離通信リンク３９０を介してデータを複製モジュール３８４に送信する前にデータを圧縮して帯域幅を節約する圧縮モジュールを含んでいてもよい。複製モジュール３８４は、長距離通信リンク３９０上で受信したデータをストレージシステム３８２に書込むために、サーバノード３４０およびストレージシステム３８２と通信する。
【００３４】
サーバノード３１０、３４０の各々はコンピュータシステムである。ノード３１０は、メモリ３２０と、プロセッサユニット３３０と、入力／出力ユニット３３２とを備える。同様に、ノード３４０は、メモリ３５０と、プロセッサユニット３６０と、入力／出力ユニット３６２とを備える。各プロセッサユニットは、データ待ち行列、算術論理ユニット、メモリ読出しレジスタ、メモリ書込みレジスタなどといったいくつかの要素を含んでいてもよい。各プロセッサユニット３３０、３６０は、組込プロセッサ、モバイルプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、スーパースカラコンピュータ、ベクトルプロセッサ、単一命令多重データ（single instruction multiple data：ＳＩＭＤ）コンピュータ、複合命令セットコンピュータ（complex instruction set computers：ＣＩＳＣ）、縮小命令セットコンピュータ（reduced instruction set computers：ＲＩＳＣ）、超長命令語（very long instruction word：ＶＬＩＷ）、またはハイブリッドアーキテクチャといったあらゆるタイプのアーキテクチャの中央処理装置を表わす。各メモリ３２０、３５０は通常、ダイナミックランダムアクセスメモリ（dynamic random access memory：ＤＲＡＭ）またはスタティックランダムアクセスメモリ（static random acce
ss memory：ＳＲＡＭ）で実現される。
【００３５】
マイクロソフトクラスタサービス（ＭＳＣＳ）などのクラスタソフトウェアは、サーバノード３１０および３４０を含むクラスタにクラスタ化サービスを提供する。システム３００がクラスタとして動作するために、ノード３１０、３４０の各々においてクラスタソフトウェアの同一のコピーが実行中である。クラスタソフトウェアのコピー３２２は、ノード３１０のメモリ３２０内にある。クラスタソフトウェアのコピー３５２は、ノード３４０のメモリ３５０内にある。
【００３６】
クラスタレベルの情報を含むクラスタフォルダは、クラスタの各ノードのメモリに含まれている。クラスタレベルの情報は、クラスタにおいて実行中のアプリケーションの動的リンクライブラリ（ＤＬＬ）ファイルを含む。クラスタフォルダ３２８は、ノード３１０のメモリ３２０に含まれている。クラスタフォルダ３５８は、ノード３４０のメモリ３５０に含まれている。クラスタフォルダは、この発明の制御クラスタリソースＤＬＬに対応するカスタムリソースタイプを表わすＤＤＬファイルも含む。
【００３７】
クラスタ認識アプリケーションのグループ３２４は、ノード３１０のメモリ３２０に格納されている。これらのアプリケーションの同一のコピー３５４は、ノード３４０のメモリ３５０に格納されている。特に、ノード３１０に格納されているアプリケーション３２６の同一のコピー３５６は、ノード３４０に格納されている。ノード３１０上のアプリケーションＸ３２６は、この発明の制御クラスタリソース３２７も含む。また、ノード３４０上のアプリケーションＸ３５６は、この発明の制御クラスタリソース３５７を含む。
【００３８】
２つのコンピュータノード３１０、３４０間でのデータ複製を容易にするためのエージェントは、コンピュータメモリに格納されている。エージェント３２９は、コンピュータノード３１０のメモリ３２０に格納されている。エージェント３５９は、コンピュータノード３４０のメモリ３５０に格納されている。
【００３９】
複製モジュール３７４は、広域ネットワーク、都市域ネットワーク、または専用通信回線といった長距離通信リンク３９０を介して複製モジュール３８４と通信する。この長距離通信は非同期式であっても同期式であってもよい。ストレージシステム３７２に書込まれるべきアプリケーションデータは、サーバノード３１０からストレージシステム３７２および複製モジュール３７４の双方に転送される。複製モジュール３７４は、長距離通信リンク３９０を介してデータを複製モジュール３８４に送信する前にデータを圧縮して帯域幅を節約する圧縮モジュールを含んでいてもよい。複製モジュール３８４は、長距離通信リンク３９０上で受信したデータをストレージシステム３８２に書込むために、サーバノード３４０およびストレージシステム３８２と通信する。
【００４０】
複製モジュール３７４、３８４およびソフトウェアエージェント３２９、３５９は、地理的に離れたサイトにある２つの異なるストレージシステム３７２、３８２間でのデータの複製を可能にする複製解決策を形成する。ソフトウェアエージェント３２９はサーバ３１０上で実行され、ファイバチャネルスイッチ３７６を介してすべての書込みコマンドをストレージシステム３７２と複製モジュール３７４とに分割する。複製モジュール３７４は、長距離リンク３９０上でこのデータを複製モジュール３８４に送信する。複製モジュール３８４は受信したデータを記憶用にストレージシステム３８２に送信し、こうしてストレージシステム３７２上に格納されているデータを複製する。同様に、ソフトウェアエージェント３５９はサーバ３４０上で実行され、ファイバチャネルスイッチ３８６を介してすべての書込みコマンドをストレージシステム３８２と複製モジュール３８４とに分割する。複製モジュール３８４は、長距離リンク３９０上でこのデータを複製モジュール３７４に送信する。複製モジュール３７４は受信したデータを記憶用にストレージシステム
３７２に送信し、こうしてストレージシステム３８２上に格納されているデータを複製する。これにより、サイト間でのデータの複製が可能になる。この複製解決策は同期式および非同期式複製を双方ともサポートし得る。同期式複製モードは、データがサイト間で一貫していることを保証するが、長距離ではゆっくりと動作する。非同期式複製は長距離でより良好な性能を提供する。
【００４１】
わかりやすくするため、図３の残りは図４からの情報とともに説明する。
図４は、この発明の一実施例におけるノード３１０（またはノード３４０）上にあるアプリケーション３２６（または３５６、図３）を形成する情報を示している。アプリケーション３２６を形成する情報は、アプリケーションＸのバイナリ４０２と、基本クラスタリソース４０４と、この発明の制御クラスタリソース３２７とを備えている。
【００４２】
アプリケーションＸのバイナリは、クラスタの各参加ノード上のアプリケーションＸに格納されており、一方、アプリケーションＸのデータファイルはストレージシステム３７２、３８２（図３）の各々に格納されている。
【００４３】
アプリケーションＸがノード３１０上で実行されている場合、アプリケーションＸ３２６はまた、アプリケーションＸ用の基本クラスタリソース４０４と、この発明のカスタムリソースタイプＤＬＬのインスタンスである制御クラスタリソース３２７とを備える。基本クラスタリソース４０４とカスタムリソースタイプのインスタンス３２７とは、（ＤＬＬファイルから）クラスタによりクラスタレベルで作成された論理オブジェクトである。
【００４４】
基本クラスタリソース４０４は、ストレージ３７２を識別するストレージクラスタリソースと、アプリケーションクラスタリソースとを含み、アプリケーションクラスタリソースは、アプリケーションＸのインターネットプロトコル（ＩＰ）アドレスを識別するアプリケーションＩＰアドレスリソースと、アプリケーションＸのネットワーク名を識別するネットワーク名リソースとを含んでいる。アプリケーションクラスタリソースはストレージクラスタリソースに従属しており、それは次に制御クラスタリソース３２７に従属している。このため、制御クラスタリソース３２７は、基本クラスタリソースの従属元（base
dependency）である。この従属は、アプリケーションがクラスタのサーバノード３１０上で実行される場合、対応するクラスタリソースグループ内の制御クラスタリソース３２７が、クラスタサービスソフトウェア３２２によって最初にオンラインにされることを意味する。
【００４５】
この発明のカスタムリソースタイプ用のＤＬＬファイル３２７は、制御クラスタリソースＤＬＬファイルと、クラスタ管理者拡張ＤＬＬファイルとを含む。これらのＤＬＬファイルは、ノード３１０のクラスタフォルダ３２８（図３）に格納されている。
【００４６】
制御クラスタリソースＤＬＬは、制御される必要がある一貫性グループと、複製モジュールのＩＰアドレスと、各サイトに配置されたクラスタノードのリストとで設定されている。これは、制御クラスタリソースＤＬＬの設定情報に含まれている。
【００４７】
なお、アプリケーションＸがノード３１０上で実行されている場合（すなわちアプリケーションＸがその時点でノード３１０によって所有されている場合）、これらのＤＬＬファイルによって規定されているようなカスタムリソースタイプのインスタンスはクラスタレベルで作成され、アプリケーションＸ３２６に格納される。
【００４８】
カスタムリソースタイプとは、実現されたリソースタイプが、ＩＰアドレスリソースまたはＷＩＮＳサービスリソースといった標準の、または買って来てすぐそのまま使えるマイクロソフトクラスタリソースとは異なっていることを意味する。複製モジュールの動作
が分析される。この動作の分析に基づいて、制御クラスタリソース用のカスタムリソースタイプに対応し、それを規定するＤＬＬファイルが作成される（ブロック３０４）。これらのＤＬＬファイルは、複製モジュールの動作を制御するための複製モジュールにコマンドを送信するために、使用される。
【００４９】
この発明の一実施例では、これらのカスタムリソースＤＬＬファイルは、マイクロソフトビジュアルＣ＋＋（Microsoft Visual C++：登録商標）開発システムを用いて作成される。マイクロソフト社は、マイクロソフトクラスタサーバ（ＭＳＣＳ）リソースＤＬＬを書くための技術論文を多数発表している。これらの論文は、リソースＤＬＬを開発するためにマイクロソフトビジュアルＣ＋＋（登録商標）開発システムをどのように使用するかを詳細に説明している。リソースＤＬＬは、開発者の仕事場内でマイクロソフト社の「リソースタイプＡｐｐウイザード」（Resource Type AppWizard）を実行することによって作成される。これは、骨格リソースＤＬＬおよび／またはクラスタ管理者拡張ＤＬＬを構築する。骨格リソースＤＬＬは最も基本的な能力のみを提供する。複製モジュールの動作、および図３に示すようなシステムにおいて自動化されたフェールオーバーを提供する必要性に基づいて、骨格リソースＤＬＬは制御クラスタリソースＤＬＬを作成するためにカスタマイズされる。
【００５０】
（３００キロメートル以上の距離隔てられ得る）２つの異なる地理的サイトにある２つのサーバノード間でアプリケーションのフェールオーバーが起こる場合、クラスタサービスソフトウェアは、アプリケーション用のクラスタリソースに、フェールオーバーの受け手として選択されたサーバノードでオンラインになるように要求する。たとえば、サーバノード３４０からのアプリケーションＸ３５６のフェールオーバーの受け手として、サーバノード３１０が選択される。アプリケーションＸ３２６のクラスタリソースグループ内の制御クラスタリソース３２７は基本クラスタリソースの従属元であるため、制御クラスタリソース３２７は、クラスタサービスソフトウェア３２２によって最初にオンラインにされる。制御クラスタリソース３２７は、ノード３４０からノード３１０へのアプリケーションＸの自動化されたフェールオーバーを起動して制御するために、管理ネットワーク３７８上でセキュアシェル（ＳＳＨ：Secure Shell）プロトコルを用いて複製モジュール３７４と通信する。
【００５１】
同様に、ノード３４０が別のノードからのアプリケーションＸのフェールオーバーの受け手として選択される場合、ノード３４０上の制御クラスタリソース３５７は、自動化されたフェールオーバーを起動して制御するために、管理ネットワーク３８８を介して複製モジュール３８４と通信可能である。
【００５２】
なお、異なる実施例では、複製モジュール３７４はサーバノード３１０に設置されてもよい。スマートストレージシステム３７２を有する一実施例では、エージェント３２９は複製解決策の一部として必要とされなくてもよい。
【００５３】
図５は、この発明の一実施例に従った、遠隔サイトのサーバノード３４０からローカルサイトのサーバノード３１０（図３）へのアプリケーションの自動化されたフェールオーバーを行なうプロセスを示すフローチャートである。
【００５４】
開始時、プロセス５００は、ローカルサーバノード３１０で、アプリケーションの制御クラスタリソース３２７をオンラインにする（ブロック５０２）。プロセス５００は、制御クラスタリソースに従属する基本クラスタリソース４０４（図４）を保留状態に保つよう、制御クラスタリソース３２７の状態を「オンライン保留」に設定する（ブロック５０４）。
【００５５】
制御クラスタリソース３２７を用いて、プロセス５００は制御クラスタリソース３２７の設定情報を複製モジュール３７４の設定の情報と照合し、クラスタリソースがオンラインになることを妨げる設定問題がないことを確実にする。プロセス５００は、同じ一貫性グループを制御している他の制御クラスタリソースがないことを検証する。プロセス５００は次に、制御クラスタリソース３２７から複製モジュール３７４にコマンド「get_system_settings」（システム設定取得）、「get_group_settings」（グループ設定取得）、および「get_host_settings」（ホスト設定取得）を送信する。戻ってきた出力が解析されて以下を検証する。
【００５６】
・遠隔複製モジュールの設定されたＩＰアドレスが正しい；
・設定された一貫性グループが存在する；
・設定された一貫性グループの「ストレッチクラスタ」値が「ＹＥＳ（はい）」に設定されている；
・設定された一貫性グループの「フェールオーバーモード」値が「自動（データ）」に設定されている；
・サイトノードリストが正しい。
【００５７】
上述の検証から、プロセス５００は、制御クラスタリソース３２７の設定情報が正しいかどうかを判断する（ブロック５０８）。制御クラスタリソース３２７の設定情報が正しくない場合、プロセス５００は、従属する基本クラスタリソース４０４（図４）がサーバノード３１０（図３）でオンラインにならないよう、制御クラスタリソース３２７の状態を「障害」状態に設定する。
【００５８】
制御クラスタリソース３２７の設定情報が正しい場合、プロセス５００は、フェールオーバーを受けるローカルサイトサーバノードの名前を決定する（ブロック５１０）。これは、ローカルコンピュータの名前を、制御クラスタリソース用のサイトノードリストにある名前と比較することによって行なわれる。ある特定のサイトノードリストにコンピュータの名前が見つかった場合、そのサイトは、遠隔サーバノードからの一貫性グループのフェールオーバーの受け手となる。なお、ローカルサイトの名前の決定が必要となるのは、制御クラスタリソースが最初にオンラインにされる際にそのような情報を持っていないためである。プロセス５００は、ローカルサイト名の決定が成功したかどうかをチェックする（ブロック５１２）。ローカルサイト名のこの決定が成功しなかった場合、プロセス５００は、従属する基本クラスタリソース４０４（図４）がサーバノード３１０（図３）でオンラインにならないよう、制御クラスタリソース３２７の状態を「障害」状態に設定する（ブロック５２２）。
【００５９】
ローカルサイト名の決定が成功した場合、プロセス５００は、制御クラスタリソース３２７からローカル複製モジュール３７４（図３）に、設定された一貫性グループの名前および一貫性グループが利用可能となるべきサイトの名前とともに、「initiate_failover」（フェールオーバー開始）コマンドを発行する（ブロック５１４）。このコマンドにより、遠隔サイドのストレージデバイス３８２上の一貫性グループからのアプリケーションデータは、長距離リンク３９０（図３）上でのローカル複製モジュール３７４と遠隔複製モジュール３８４との通信を介して、ローカルサイトのストレージデバイス３７２にフェールオーバーされるようになる。
【００６０】
プロセス５００は、制御クラスタリソース３２７からローカル複製モジュール３７４に、設定された一貫性グループの名前およびローカルサイト名とともに、「verify_failover」（フェールオーバー検証）コマンドを発行する（ブロック５１６）。このコマンドは、一貫性グループ用の複製が完了したこと、およびディスクからのデータがローカルサイトのストレージ３７２上で利用可能であることを検証する。プロセス５００は、アプリケ
ーションデータのフェールオーバーが完了したか、進行中か、失敗したかを判断する（ブロック５１８）。アプリケーションデータのフェールオーバーが進行中である場合、プロセス５００は、別の「verify_failover」コマンドをローカル複製モジュール３７４に発行するために、ブロック５１６に戻る。一実施例では、このコマンドは、このコマンドが成功または失敗を返すまで、もしくはクラスタリソースタイムアウトに達するまで、６０秒ごとに再送される。
【００６１】
アプリケーションデータのフェールオーバーが首尾よく完了した場合、プロセス５００は、従属する基本クラスタリソース４０４（図４）がオンラインになるよう、制御クラスタリソースの状態を「オンライン」に設定し（ブロック５２０）、それからプロセス５００は終了する。
【００６２】
アプリケーションデータのフェールオーバーが失敗した場合、プロセス５００は、従属する基本クラスタリソース４０４（図４）がサーバノード３１０（図３）でオンラインにならないよう、制御クラスタリソース３２７の状態を「障害」状態に設定し（ブロック５２２）、それからプロセス５００は終了する。
【００６３】
この発明をいくつかの実施例に関して説明してきたが、当業者であれば、この発明が説明された実施例に限定されず、特許請求の範囲および精神内の修正および変更を有して実践可能であることを認識するであろう。この説明はしたがって、限定的であるというよりも例示的であるとみなされるべきである。
【図面の簡単な説明】
【００６４】
【図１】典型的なクラスタを含む先行技術のシステム１００を示す図である。
【図２】長距離通信リンク上で第１のサーバノードから第２のサーバノードにデータを複製するための先行技術のシステム２００を示す図である。
【図３】この発明のシステムの一実施例３００を示すブロック図である。
【図４】この発明の一実施例におけるノード３１０（またはノード３４０）上にあるアプリケーション３２６（または３５６、図３）を形成する情報を示す図である。
【図５】この発明の一実施例に従った、遠隔サイトのサーバノード３４０からローカルサイトのサーバノード３１０（図３）へのアプリケーションの自動化されたフェールオーバーを行なうプロセスを示すフローチャートである。
【図１】
2008511924.tif 000003
【図２】
2008511924.tif 000004
【図３】
2008511924.tif 000005
【図４】
2008511924.tif 000006
【図５】
2008511924.tif 000007
【国際調査報告】
2008511924.tif 000008
2008511924.tif 000009