(57)【特許請求の範囲】
【請求項１】
クライアントから通信ネットワークを介してサービスを提供するためのアクセスデータを受け付ける複数の高可用サーバ同士が、通信線を介して接続され冗長化される高可用サーバシステムであって、
前記高可用サーバは、
前記通信ネットワークを介してクライアントとの間で情報の送受信を行う通信手段と、自己の高可用サーバである第１の高可用サーバ以外の他の高可用サーバである第２の高可用サーバとの間で情報の入出力を行う入出力手段と、前記クライアントから受信した前記アクセスデータの処理状態を示す情報である状態情報およびその状態情報が更新される毎に記憶される時刻である更新時刻が格納される状態管理領域を備えるメモリと、前記メモリを仮想化するためのハイパーバイザー並びに仮想化された前記高可用サーバを制御するためのＯＳおよび前記クライアントへのサービスを提供するサービス処理部を備える制御手段と、を備え、
前記第１の高可用サーバが、障害の発生により冗長性の復旧処理を行う障害発生サーバであり、前記第２の高可用サーバが、前記第１の高可用サーバの障害発生後に前記クライアントに対する処理を引き継いだ引継サーバである場合に、
前記第１の高可用サーバの前記制御手段は、
前記サービス処理部に含まれ、前記第１の高可用サーバの障害の復旧処理時に、自身の前記状態管理領域から障害発生前の最終の前記更新時刻の取得を要請する第１の状態管理部と、
前記ＯＳに含まれ、前記第１の状態管理部からの前記最終の更新時刻の取得要請を受け取り、前記ハイパーバイザーに引き渡す第１の状態アクセスハイパーコール制御部と、
前記ハイパーバイザーに含まれ、前記第１の状態アクセスハイパーコール制御部から前記最終の更新時刻の取得要請を受け取り、自身の前記状態管理領域から前記最終の更新時刻を取得する第１の状態アクセス制御部と、
前記サービス処理部に含まれ、前記第１の状態管理部の指示により、前記最終の更新時刻を含む更新状態情報要求メッセージを生成し、前記入出力手段を介して、前記第２の高可用サーバに送信する第１の同期制御部と、を備え、
前記第１の状態アクセス制御部が、前記最終の更新時刻を取得し、前記第１の状態アクセスハイパーコール制御部に引き渡し、
さらに、前記第１の状態アクセスハイパーコール制御部から前記最終の更新時刻を前記第１の状態管理部が取得して前記第２の高可用サーバに送信する指示を出し、
前記第１の同期制御部が、前記第２の高可用サーバに前記更新状態情報要求メッセージを送信し、
前記第２の高可用サーバの前記制御手段は、
前記サービス処理部に含まれ、前記第１の高可用サーバから前記更新状態情報要求メッセージを受信する第２の同期制御部と、
前記サービス処理部に含まれ、前記第２の同期制御部から前記更新状態情報要求メッセージを受け取り、前記更新状態情報要求メッセージに含まれる前記最終の更新時刻を用いて、前記最終の更新時刻以降に更新された状態情報を、前記第２の高可用サーバの前記状態管理領域から取得するように指示を出す第２の状態管理部と、
前記ＯＳに含まれ、前記最終の更新時刻以降に更新された状態情報の取得指示を前記ハイパーバイザーに引き渡す第２の状態アクセスハイパーコール制御部と、
前記ハイパーバイザーに含まれ、前記第２の状態アクセスハイパーコール制御部からの前記最終の更新時刻以降に更新された状態情報の取得指示を受け付け、前記第２の高可用サーバの状態管理領域から、前記最終の更新時刻以降に更新された状態情報を取得する第２の状態アクセス制御部とを備え、
前記第２の状態アクセス制御部が、前記最終の更新時刻以降に更新された状態情報を取得し、前記第２の状態アクセスハイパーコール制御部に引き渡し、
さらに、前記第２の状態アクセスハイパーコール制御部から前記最終の更新時刻以降に更新された状態情報を前記第２の状態管理部が取得して、
前記第２の同期制御部を介して、前記第１の高可用サーバへ送信し、
前記第１の高可用サーバの前記制御手段は、
前記第２の高可用サーバから受信した前記最終の更新時刻以降に更新された状態情報を用いて、自身の前記状態管理領域に記憶された状態情報を更新すること
を特徴とする高可用サーバシステム。
【請求項２】
クライアントから通信ネットワークを介してサービスを提供するためのアクセスデータを受け付ける複数の高可用サーバ同士が、通信線を介して接続され冗長化される高可用サーバシステムの障害時復旧方法であって、
前記高可用サーバは、
前記通信ネットワークを介してクライアントとの間で情報の送受信を行う通信手段と、自己の高可用サーバである第１の高可用サーバ以外の他の高可用サーバである第２の高可用サーバとの間で情報の入出力を行う入出力手段と、前記クライアントから受信した前記アクセスデータの処理状態を示す情報である状態情報およびその状態情報が更新される毎に記憶される時刻である更新時刻が格納される状態管理領域を備えるメモリと、前記メモリを仮想化するためのハイパーバイザー並びに仮想化された前記高可用サーバを制御するためのＯＳおよび前記クライアントへのサービスを提供するサービス処理部を備える制御手段と、を備え、
前記第１の高可用サーバが、障害の発生により冗長性の復旧処理を行う障害発生サーバであり、前記第２の高可用サーバが、前記第１の高可用サーバの障害発生後に前記クライアントに対する処理を引き継いだ引継サーバである場合に、
前記第１の高可用サーバの前記制御手段は、第１の前記ハイパーバイザー、第１の前記ＯＳおよび第１の前記サービス処理部を備え、
前記第１のサービス処理部が、前記第１の高可用サーバの障害の復旧処理時に、自身の前記状態管理領域から障害発生前の最終の前記更新時刻の取得を前記第１のＯＳに要請し、
前記第１のＯＳが、前記最終の更新時刻の取得要請を受け取り、前記第１のハイパーバイザーに引き渡し、
前記第１のハイパーバイザーが、前記最終の更新時刻の取得要請を受け取り、自身の前記状態管理領域から前記最終の更新時刻を取得して、前記第１のＯＳに引き渡し、
前記第１のサービス処理部が、前記第１のＯＳから前記最終の更新時刻を取得して、前記最終の更新時刻を含む更新状態情報要求メッセージを生成し、前記入出力手段を介して、前記第２の高可用サーバに送信し、
前記第２の高可用サーバの前記制御手段は、第２の前記ハイパーバイザー、第２の前記ＯＳおよび第２の前記サービス処理部を備え、
前記第２のサービス処理部が、前記第１の高可用サーバから前記更新状態情報要求メッセージを受信し、前記更新状態情報要求メッセージに含まれる前記最終の更新時刻を用いて、前記最終の更新時刻以降に更新された状態情報を、前記第２の高可用サーバの前記状態管理領域から取得するように前記第２のＯＳに指示を出し、
前記第２のＯＳが、前記最終の更新時刻以降に更新された状態情報の取得指示を前記第２のハイパーバイザーに引き渡し、
前記第２のハイパーバイザーが、前記最終の更新時刻以降に更新された状態情報の取得指示を受け付け、前記第２の高可用サーバの状態管理領域から、前記最終の更新時刻以降に更新された状態情報を取得して、前記第２のＯＳに引き渡し、
前記第２のサービス処理部が、前記最終の更新時刻以降に更新された状態情報を、前記第２のＯＳから取得して、前記第１の高可用サーバへ送信し、
前記第１の高可用サーバの前記制御手段は、
前記第２の高可用サーバから受信した前記最終の更新時刻以降に更新された状態情報を用いて、自身の前記状態管理領域に記憶された状態情報を更新すること
を特徴とする高可用サーバシステムの障害時復旧方法。
【請求項３】
請求項１に記載の高可用サーバシステムに用いられる前記高可用サーバであって、
前記高可用サーバの記憶手段に、前記高可用サーバが前記クライアントから受信した前記アクセスデータが、前記状態管理領域にアクセスする必要のある情報か否かを識別するための判別ポリシーが記憶され、
前記ハイパーバイザーは、前記状態管理部から前記ＯＳを介して前記アクセスデータを受け取ると、前記判別ポリシーに基づき、前記アクセスデータを前記状態情報として前記状態管理領域に格納すべきか否かを判定するアクセス判別処理部を備え、
前記アクセス判別処理部が、前記アクセスデータを前記状態情報として格納すべきと判定した場合に、前記状態アクセス制御部に当該アクセスデータを引き渡し、前記状態アクセス制御部は、前記アクセスデータを用いて、前記状態管理領域にアクセスすること
を特徴とする高可用サーバ。
【請求項４】
前記状態管理部および前記同期制御部を、ミドルウェアとして機能させること
を特徴とする請求項１または請求項３に記載の高可用サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高可用サーバシステム、高可用サーバシステムの障害時復旧方法、および高可用サーバに関する。
【背景技術】
【０００２】
通信サービス等のライフラインサービスを提供するような、極めて高い高可用性が求められるサーバは、長期間無停止であることが望まれる。従来から、そのような高可用サーバを冗長構成とすることにより、あるサーバにおいて障害が発生した時にも、データの処理状態が同期されている他のサーバに処理を引き継ぐことにより、サービスを継続する。
【０００３】
また、従来通信網を構成する交換機における二重化構成では、現用系と待機系のデータの処理状態が専用ハードウェアによって常に同期されていたが、ＩＰ通信網における汎用サーバを用いた交換サーバは、ミドルウェアにより系間の状態同期、系切替を行うのが一般的である。
【０００４】
近年は、特にインターネットのサーバにおいて、ハードウェアリソース使用率向上の観点から、現用系・待機系の二重構成（ＡＣＴ−ＳＢＹ構成）ではなく、複数の現用系が並列に動作するＮ−ＡＣＴ構成が注目されている。Ｎ−ＡＣＴ構成では、ある現用系サーバＡが持つデータの処理状態が他の現用系サーバＢに冗長化、同期されており、現用系サーバＡにおいて障害が発生した際には、現用系サーバＢが処理を引き継ぐ（非特許文献１参照）。例えば、ＩＰ電話におけるデータ通信の各セッションの情報を、障害発生時には、他の現用系サーバに引き継ぎサービスを継続する。
【０００５】
そして、各冗長構成において、あるサーバＡで障害が発生して処理がサーバＢに引き継がれた後、さらにサーバＢに障害が発生した場合（二重障害）、データの処理状態の冗長化がなされていないため、サービスを継続することができない。そこで、サーバＡは復旧後にサーバＢが保持しているデータの処理状態に関する情報（状態情報）を取得することにより冗長性を再び確保する。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Trivedi, K., et al., “Availability Modeling of SIP Protocol on IBM WebSphere”, 14th IEEE Pacific Rim International Symposium on Dependable Computing (PRDC '08), Dec, 2008
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前記した通り、あるサーバ（障害発生サーバ）で障害が発生して処理が他のサーバ（引継サーバ）に引き継がれた後、障害発生サーバは再起動後に引継サーバから状態情報を取得する。しかし、引継サーバは処理中であり、引継サーバの処理に影響を与えないように、状態同期処理は低優先度で実行されるため低速である。二重障害発生の確率を下げるためには、高速に状態の冗長性を確保する必要があり、この状態同期処理をより短時間で行う必要がある。
【０００８】
前記した課題を解決するために本発明がなされたのであり、本発明は、状態同期処理にかかる時間を短縮し、二重障害の確率を低減することができる、高可用サーバシステム、高可用サーバシステムの障害時復旧方法、および高可用サーバを提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記した課題を解決するため、請求項１に記載の発明は、クライアントから通信ネットワークを介してサービスを提供するためのアクセスデータを受け付ける複数の高可用サーバ同士が、通信線を介して接続され冗長化される高可用サーバシステムであって、前記高可用サーバが、前記通信ネットワークを介してクライアントとの間で情報の送受信を行う通信手段と、自己の高可用サーバである第１の高可用サーバ以外の他の高可用サーバである第２の高可用サーバとの間で情報の入出力を行う入出力手段と、前記クライアントから受信した前記アクセスデータの処理状態を示す情報である状態情報およびその状態情報が更新される毎に記憶される時刻である更新時刻が格納される状態管理領域を備えるメモリと、前記メモリを仮想化するためのハイパーバイザー並びに仮想化された前記高可用サーバを制御するためのＯＳおよび前記クライアントへのサービスを提供するサービス処理部を備える制御手段と、を備え、前記第１の高可用サーバが、障害の発生により冗長性の復旧処理を行う障害発生サーバであり、前記第２の高可用サーバが、前記第１の高可用サーバの障害発生後に前記クライアントに対する処理を引き継いだ引継サーバである場合に、前記第１の高可用サーバの前記制御手段が、前記サービス処理部に含まれ、前記第１の高可用サーバの障害の復旧処理時に、自身の前記状態管理領域から障害発生前の最終の前記更新時刻の取得を要請する第１の状態管理部と、前記ＯＳに含まれ、前記第１の状態管理部からの前記最終の更新時刻の取得要請を受け取り、前記ハイパーバイザーに引き渡す第１の状態アクセスハイパーコール制御部と、前記ハイパーバイザーに含まれ、前記第１の状態アクセスハイパーコール制御部から前記最終の更新時刻の取得要請を受け取り、自身の前記状態管理領域から前記最終の更新時刻を取得する第１の状態アクセス制御部と、前記サービス処理部に含まれ、前記第１の状態管理部の指示により、前記最終の更新時刻を含む更新状態情報要求メッセージを生成し、前記入出力手段を介して、前記第２の高可用サーバに送信する第１の同期制御部と、を備え、前記第１の状態アクセス制御部が、前記最終の更新時刻を取得し、前記第１の状態アクセスハイパーコール制御部に引き渡し、さらに、前記第１の状態アクセスハイパーコール制御部から前記最終の更新時刻を前記第１の状態管理部が取得して前記第２の高可用サーバに送信する指示を出し、前記第１の同期制御部が、前記第２の高可用サーバに前記更新状態情報要求メッセージを送信し、前記第２の高可用サーバの前記制御手段が、前記サービス処理部に含まれ、前記第１の高可用サーバから前記更新状態情報要求メッセージを受信する第２の同期制御部と、前記サービス処理部に含まれ、前記第２の同期制御部から前記更新状態情報要求メッセージを受け取り、前記更新状態情報要求メッセージに含まれる前記最終の更新時刻を用いて、前記最終の更新時刻以降に更新された状態情報を、前記第２の高可用サーバの前記状態管理領域から取得するように指示を出す第２の状態管理部と、前記ＯＳに含まれ、前記最終の更新時刻以降に更新された状態情報の取得指示を前記ハイパーバイザーに引き渡す第２の状態アクセスハイパーコール制御部と、前記ハイパーバイザーに含まれ、前記第２の状態アクセスハイパーコール制御部からの前記最終の更新時刻以降に更新された状態情報の取得指示を受け付け、前記第２の高可用サーバの状態管理領域から、前記最終の更新時刻以降に更新された状態情報を取得する第２の状態アクセス制御部とを備え、前記第２の状態アクセス制御部が、前記最終の更新時刻以降に更新された状態情報を取得し、前記第２の状態アクセスハイパーコール制御部に引き渡し、さらに、前記第２の状態アクセスハイパーコール制御部から前記最終の更新時刻以降に更新された状態情報を前記第２の状態管理部が取得して、前記第２の同期制御部を介して、前記第１の高可用サーバへ送信し、前記第１の高可用サーバの前記制御手段が、前記第２の高可用サーバから受信した前記最終の更新時刻以降に更新された状態情報を用いて、自身の前記状態管理領域に記憶された状態情報を更新することを特徴とする高可用サーバシステムとした。
【００１０】
また、請求項２に記載の発明は、クライアントから通信ネットワークを介してサービスを提供するためのアクセスデータを受け付ける複数の高可用サーバ同士が、通信線を介して接続され冗長化される高可用サーバシステムの障害時復旧方法であって、前記高可用サーバが、前記通信ネットワークを介してクライアントとの間で情報の送受信を行う通信手段と、自己の高可用サーバである第１の高可用サーバ以外の他の高可用サーバである第２の高可用サーバとの間で情報の入出力を行う入出力手段と、前記クライアントから受信した前記アクセスデータの処理状態を示す情報である状態情報およびその状態情報が更新される毎に記憶される時刻である更新時刻が格納される状態管理領域を備えるメモリと、前記メモリを仮想化するためのハイパーバイザー並びに仮想化された前記高可用サーバを制御するためのＯＳおよび前記クライアントへのサービスを提供するサービス処理部を備える制御手段と、を備え、前記第１の高可用サーバが、障害の発生により冗長性の復旧処理を行う障害発生サーバであり、前記第２の高可用サーバが、前記第１の高可用サーバの障害発生後に前記クライアントに対する処理を引き継いだ引継サーバである場合に、前記第１の高可用サーバの前記制御手段が、第１の前記ハイパーバイザー、第１の前記ＯＳおよび第１の前記サービス処理部を備え、前記第１のサービス処理部が、前記第１の高可用サーバの障害の復旧処理時に、自身の前記状態管理領域から障害発生前の最終の前記更新時刻の取得を前記第１のＯＳに要請し、前記第１のＯＳが、前記最終の更新時刻の取得要請を受け取り、前記第１のハイパーバイザーに引き渡し、前記第１のハイパーバイザーが、前記最終の更新時刻の取得要請を受け取り、自身の前記状態管理領域から前記最終の更新時刻を取得して、前記第１のＯＳに引き渡し、前記第１のサービス処理部が、前記第１のＯＳから前記最終の更新時刻を取得して、前記最終の更新時刻を含む更新状態情報要求メッセージを生成し、前記入出力手段を介して、前記第２の高可用サーバに送信し、前記第２の高可用サーバの前記制御手段が、第２の前記ハイパーバイザー、第２の前記ＯＳおよび第２の前記サービス処理部を備え、前記第２のサービス処理部が、前記第１の高可用サーバから前記更新状態情報要求メッセージを受信し、前記更新状態情報要求メッセージに含まれる前記最終の更新時刻を用いて、前記最終の更新時刻以降に更新された状態情報を、前記第２の高可用サーバの前記状態管理領域から取得するように前記第２のＯＳに指示を出し、前記第２のＯＳが、前記最終の更新時刻以降に更新された状態情報の取得指示を前記第２のハイパーバイザーに引き渡し、前記第２のハイパーバイザーが、前記最終の更新時刻以降に更新された状態情報の取得指示を受け付け、前記第２の高可用サーバの状態管理領域から、前記最終の更新時刻以降に更新された状態情報を取得して、前記第２のＯＳに引き渡し、前記第２のサービス処理部が、前記最終の更新時刻以降に更新された状態情報を、前記第２のＯＳから取得して、前記第１の高可用サーバへ送信し、前記第１の高可用サーバの前記制御手段が、前記第２の高可用サーバから受信した前記最終の更新時刻以降に更新された状態情報を用いて、自身の前記状態管理領域に記憶された状態情報を更新することを特徴とする高可用サーバシステムの障害時復旧方法とした。
【００１１】
このようにすることで、障害が発生した第１の高可用サーバは、再起動を行い復旧処理を開始すると、ハイパーバイザーにより仮想化された自身のメモリ内の状態管理領域から障害発生前の状態情報の最終更新時刻を取得し、その最終更新時刻の情報を、引継サーバである第２の高可用サーバに送信する。第２の高可用サーバは、最終更新時刻以降に更新した状態情報を、第１の高可用サーバに送信する。第１の高可用サーバは、障害発生後に更新された状態情報を自身の状態管理領域に記憶させて状態情報を更新する。
【００１２】
よって、本発明によれば、障害が発生した高可用サーバは、障害が発生した後に更新された状態情報だけを、引継サーバである他の高可用サーバの状態管理領域から取得することができる。そのため、同期処理を再開させて、状態の冗長性を確保するまでの時間を短縮することができ、その結果、二重障害の確率を低減することができる。
【００１４】
また、このようにすることで、第１の高可用サーバの状態管理部は、ＯＳに設けられた状態アクセスハイパーコール制御部を介して、ハイパーバイザーの状態アクセス制御部により、状態管理領域にアクセスして、障害発生前の最終の更新時刻を取得する。そして、状態管理部は、同期制御部に指示を出し、最終の更新時刻を第２の高可用サーバに送信することが可能となる。そして、第２の高可用サーバの状態管理部は、状態アクセスハイパーコール制御部を介して、ハイパーバイザーの状態アクセス制御部により、最終の更新時刻以降に更新された状態情報を取得し、同期制御部を介して、第１の高可用サーバに更新された状態情報を送信することが可能となる。
【００１５】
請求項３に記載の発明は、請求項１に記載の高可用サーバシステムに用いられる前記高可用サーバであって、前記高可用サーバの記憶手段に、前記高可用サーバが前記クライアントから受信した前記アクセスデータが、前記状態管理領域にアクセスする必要のある情報か否かを識別するための判別ポリシーが記憶され、前記ハイパーバイザーが、前記状態管理部から前記ＯＳを介して前記アクセスデータを受け取ると、前記判別ポリシーに基づき、前記アクセスデータを前記状態情報として前記状態管理領域に格納すべきか否かを判定するアクセス判別処理部を備え、前記アクセス判別処理部が、前記アクセスデータを前記状態情報として格納すべきと判定した場合に、前記状態アクセス制御部に当該アクセスデータを引き渡し、前記状態アクセス制御部は、前記アクセスデータを用いて、前記状態管理領域にアクセスすることを特徴とする高可用サーバとした。
【００１６】
このように、ハイパーバイザーがアクセス判別処理部を備えることにより、状態管理部では受け取ったアクセスデータを状態情報として状態管理領域に格納すべきか判断する必要がない。よって、状態管理部やＯＳを、本システム専用に改良する必要をなくすことができる。また、判別ポリシーを、高可用サーバのサービスの追加や変更等に応じて容易に修正することが可能となる。
【００１７】
請求項４に記載の発明は、前記状態管理部および前記同期制御部を、ミドルウェアとして機能させることを特徴とする請求項１または請求項３に記載の高可用サーバとした。
【００１８】
このようにすることで、クライアントからのアクセスデータを、ミドルウェアに設けられた状態管理部および同期制御部において処理することが可能となる。よって、クライアントにサービスを提供する処理については変更を加えることなく、本システムを実行することが可能となる。
【発明の効果】
【００１９】
本発明によれば、状態同期処理にかかる時間を短縮し、二重障害の確率を低減することができる、高可用サーバシステム、高可用サーバシステムの障害時復旧方法、および高可用サーバを提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施形態に係る高可用サーバシステムの構成例を示す機能ブロック図である。
【図２】本実施形態に係る状態管理領域に記憶される状態情報の一例を示す図である。
【図３】本実施形態に係る高可用サーバシステムにおける同期準備処理の流れを示すフローチャートである。
【図４】本実施形態に係る高可用サーバシステムにおける平常時の状態情報の同期処理の流れを示すフローチャートである。
【図５】本実施形態に係る高可用サーバシステムにおける障害発生後の状態同期処理の流れを示すフローチャートである。
【図６】本実施形態の変形例１に係る高可用サーバを含む高可用サーバシステムの構成例を示す機能ブロック図である。
【図７】本実施形態の変形例２に係る高可用サーバを含む高可用サーバシステムの構成例を示す機能ブロック図である。
【発明を実施するための形態】
【００２１】
次に、本発明を実施するための形態（「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
【００２２】
＜実施形態＞
図１は、本実施形態に係る高可用サーバシステム１００の構成例を示す機能ブロック図である。
【００２３】
高可用サーバシステム１００は、サーバに対しサービスの提供を要求するアクセスを行うクライアント６と、クライアント６に対しサービスを提供する仮想化された複数の高可用サーバ１（１ａ，１ｂ）とが、ネットワーク５を介して接続されて構成される。この複数の高可用サーバ１（１ａ，１ｂ）同士は、専用回線やネットワーク５等の通信線で結ばれ、情報の送受信を行うことができる。また、ネットワーク５は、例えばＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）等の通信ネットワークである。
【００２４】
本実施形態に係る高可用サーバシステム１００が実行する障害時復旧方法の概要を簡単に説明する。まず、高可用サーバ１（１ａ）に障害が発生すると、冗長化されている高可用サーバ１（１ｂ）が、高可用サーバ１（１ａ）に代わって、クライアント６からの処理を引き継ぐ。そして、障害が発生した高可用サーバ１（１ａ）は、再起動を行い、仮想化された自身のメモリ部内の状態管理領域から障害発生前の状態情報の最終更新時刻を取得し、その最終更新時刻の情報を、引継サーバである高可用サーバ１（１ｂ）に送信する。高可用サーバ１（１ｂ）は、最終更新時刻以降に更新した状態情報を、自身のメモリ部内の状態管理領域から取得し、障害発生サーバである高可用サーバ１（１ａ）に送信する。高可用サーバ１（１ａ）は、障害発生後に更新された状態情報を自身の状態管理領域に記憶することで、状態の冗長性を再び確保する。
【００２５】
次に、本実施形態に係る高可用サーバシステム１００の構成について、図１を参照して、具体的に説明する。
高可用サーバ１（１ａ，１ｂ）は、コンピュータ装置であり、コンピュータ全体の処理を制御する制御手段、ハードディスク等の記憶手段、通信インタフェースを備える通信手段、入力インタフェースを備える入力手段および出力インタフェースを備える出力手段を含んで構成される（不図示）。この制御手段は、ＣＰＵ（Central Processing Unit）とメモリによって構成され、記憶手段に記憶されたプログラムをＣＰＵがメモリに展開することで実現される。この高可用サーバ１が備える各機能を機能ブロックとして図１に示している。この高可用サーバ１（１ａ）と高可用サーバ１（１ｂ）とは、同一の構成（機能ブロック）を備えるものである。さらに、高可用サーバ１は、２つの筐体に限定されず、２以上の高可用サーバ１が通信線で接続されていてもよい。
【００２６】
高可用サーバ１は、ゲストＶＭ（Virtual Machine）１０と、ハイパーバイザー２０と、ハードウェア３０とを含んで構成される。このような構成により、後記において詳細に説明するように、高可用サーバ１は、ハードウェア３０をハイパーバイザー２０が仮想化して、ゲストＶＭ１０を動作させている。
【００２７】
ハードウェア３０は、高可用サーバ１を構成するメモリ部３１と不図示のその他のデバイス（例えば、ＣＰＵ、ハードディスク等）とを含んで構成される。そして、本実施形態に係るメモリ部３１は、例えばＲＡＭ（Random Access Memory）等の揮発性の記憶手段からなり、状態管理領域３１１と通常領域３１２とを備える。
【００２８】
状態管理領域３１１は、後記するサービス処理部１１において冗長化が必要とされる状態情報を、メモリ部３１上に生成や更新して保存しておく記憶領域である。ここで、状態情報とは、例えば、ＩＰ電話における音声データ等の通信において、各通信のセッションの状態を状態情報として記憶した情報である。
【００２９】
図２は、本実施形態に係る状態管理領域３１１に記憶される状態情報の一例を示す図である。図２に示す状態情報は、ＩＰ電話を用いた音声データ等の通信における、各通信のセッション状態情報を格納したテーブルである。この例の場合、状態情報には、各セッションを一意に識別する「セッションＩＤ」をキーとし、「状態」、「開始時刻」、「参加者ＩＤ」等のセッション固有の情報が記憶されるほか、その状態情報が最後に更新された時刻である「更新時刻」が記憶される。本状態情報は、クライアントによる電話発呼要求によって生成され、サービス提供中に失われると、転送・切断等の確立中のセッションに対する操作を行うことができなくなるだけでなく、時間課金も行うことが不可となるため、冗長化が必要である。
【００３０】
図１に戻り、通常領域３１２は、メモリ部３１に記憶される情報のうち、冗長化が必要でない情報（例えば、ＣＰＵへのアクセスやプログラムの制御に関する一時的に保存が必要な情報等）を保存しておく領域である。
【００３１】
本実施形態に係る高可用サーバ１は、このように、冗長化が必要な状態情報が記憶される状態管理領域３１１と、冗長化が必要でない情報が記憶される通常領域３１２と、を分けて管理することにより、障害復旧時に必要な状態情報を他の高可用サーバ１の状態管理領域３１１から取得することが可能となる（詳細は、後記する図５参照）。
【００３２】
次に、ゲストＶＭ１０は、高可用サーバ１の全体の制御を司り、システムの基本動作を司るＯＳ（オペレーティングシステム）１２と、クライアント６へのサービスを提供するサービス処理部１１とを備える。
【００３３】
そして、このサービス処理部１１は、サービス提供部１１１、状態管理部１１２、および同期制御部１１３を含んで構成される。
【００３４】
サービス提供部１１１は、クライアント６からのアクセスを受け付け、高可用サーバ１が備える不図示の記憶手段等に記憶された情報を用いてサービスを提供する。
【００３５】
状態管理部１１２は、冗長化が必要な状態情報の生成や管理等を行う。
具体的には、状態管理部１１２は、サービス提供部１１１がクライアント６からサービスを受け付けると、ＯＳ１２に対して、状態管理領域３１１における記憶領域の確保依頼や、状態管理領域３１１へのアクセス依頼を行う。また、状態管理部１１２は、他の高可用サーバ１と同期させるため、同期制御部１１３に指示を出し、同期に関する情報を、他の高可用サーバ１に送信させる。また、状態管理部１１２は、ゲストＶＭ１０に障害が発生し、高可用サーバ１（１ａ）が再起動されたときに、自身の高可用サーバ１（１ａ）の障害発生時点の状態管理領域３１１の最終更新時刻を取得し、同期制御部１１３を介して、他の高可用サーバ１（１ｂ）へ送信し、最終更新時刻以降に更新された状態情報を、他の高可用サーバ１（１ｂ）から取得する。
【００３６】
同期制御部１１３は、状態管理部１１２からの指示に基づき、他の高可用サーバ１（１ｂ）と通信線を介して通信を行い、状態情報を同期させることにより、状態情報の冗長性を確保する。
具体的には、同期制御部１１３は、状態管理部１１２から、同期指示を受けると、他の高可用サーバ１（１ｂ）の状態管理領域３１１の記憶領域の確保を要求する同期要求メッセージを生成し、他の高可用サーバ１（１ｂ）へ送信する。また、同期制御部１１３は、状態管理部１１２を介して取得した状態情報を他の高可用サーバ１（１ｂ）に送信し、同期処理を実行させる。さらに、同期制御部１１３は、障害発生をした再起動後に、状態管理部１１２から、状態情報の最終更新時刻の情報を受け取ると、その最終更新時刻を含んだ更新状態情報要求メッセージを生成し、他の高可用サーバ１（１ｂ）に送信する。そして、同期制御部１１３は、他の高可用サーバ１（１ｂ）から更新された状態情報を受信し、状態管理部１１２へ引き渡す。
【００３７】
次に、ＯＳ１２は、高可用サーバ１全体の処理の制御を司り、状態アクセスハイパーコール制御部１２１、および通常ハイパーコール制御部１２２を含んで構成される。
【００３８】
状態アクセスハイパーコール制御部１２１は、状態管理部１１２から、ＯＳ１２に対し、メモリ部３１内の状態管理領域３１１へのアクセスの依頼を受け取ると、状態管理領域３１１へアクセスするためのハイパーバイザーコール（以下、「状態アクセスハイパーコール」とよぶ）を実行し、ハイパーバイザー２０へ指示を出す。
【００３９】
通常ハイパーコール制御部１２２は、状態管理部１１２から、ＯＳ１２に対し、通常領域３１２へのアクセスの依頼を受け取ると、通常領域３１２へアクセスするための通常のハイパーコールを実行し、ハイパーバイザー２０へ指示を出す。なお、ここで通常のハイパーコールとは、状態管理領域３１１以外にアクセスする情報についてのハイパーコールを意味する。
【００４０】
次に、ハイパーバイザー２０は、ＯＳ１２からの指示を受け、ＯＳ１２の代わりに、ハードウェア３０に対する処理を実行する。そして、このハイパーバイザー２０は、状態アクセス制御部２１および仮想化制御部２２を含んで構成される。
【００４１】
状態アクセス制御部２１は、状態アクセスハイパーコール制御部１２１から状態アクセスハイパーコールを受け取ると、メモリ部３１内の状態管理領域３１１にアクセスし、状態管理領域３１１に記憶された状態情報を取得する。また、状態アクセス制御部２１は、自身が状態情報を取得した時点の時刻を更新時刻として、状態管理領域３１１に記憶する。また、障害の発生した他の高可用サーバ１から、最終更新時刻の情報を含んだ更新状態情報要求メッセージを受け取ると、その最終更新時刻以降に更新された状態情報を状態管理領域３１１から取得し、ＯＳ１２の状態アクセス制御部２１へ引き渡す。
【００４２】
仮想化制御部２２は、冗長化が必要な状態管理領域３１１に記憶される状態情報以外の情報について、通常ハイパーコール制御部１２２から通常のハイパーコールを受け取り、メモリ部３１の通常領域３１２へのアクセスを行う。また、仮想化制御部２２は、ハードウェア３０内のメモリ部３１以外のＣＰＵやハードディスク等へのアクセス処理を行う。
【００４３】
このように、ハードウェア３０をハイパーバイザー２０により仮想化することで、ゲストＶＭ１０に障害が発生した場合でも、メモリ部３１内の状態管理領域３１１に記憶された状態情報を保持したまま、サービス処理部１１およびＯＳ１２を再起動させることができる。
【００４４】
＜高可用サーバシステムの障害時復旧方法＞
次に、本実施形態に係る高可用サーバシステム１００の障害時復旧方法について、図１を参照しつつ、図３〜図５を用いて詳細に説明する。なお、本実施形態に係る高可用サーバシステム１００においては、高可用サーバ１（１ａ）が障害の発生した障害発生サーバであり、高可用サーバ１（１ｂ）が障害発生後に処理を引き継いだ引継サーバであるとして説明する。また、引継サーバである高可用サーバ１（１ｂ）の各機能部については、高可用サーバ１（１ａ）の各機能部と区別するため符号「ｂ」を付して説明する。
【００４５】
＜平常時の状態情報保存処理＞
まず、本実施形態に係る高可用サーバシステム１００の平常時の状態情報保存処理について、図１を参照しつつ、図３および図４を用いて詳細に説明する。
【００４６】
＜同期準備処理＞
図３は、本実施形態に係る高可用サーバシステム１００における同期準備処理の流れを示すフローチャートである。高可用サーバ１（１ａ，１ｂ）は、クライアント６からサービスの提供のためのアクセスを受け付けると、まず、状態情報の同期処理を行う準備として、状態管理領域３１１に記憶領域の確保を行う。
【００４７】
図３に示すように、高可用サーバ１（１ａ）のサービス提供部１１１は、ネットワーク５経由で、クライアント６からのサービスを提供するためのアクセスを受け付ける（ステップＳ１０１）。
【００４８】
次に、状態管理部１１２は、サービス提供部１１１にクライアント６からのアクセスがあったことを契機として、そのアクセスがメモリ部３１の状態管理領域３１１へのアクセスであると判定した場合に、ＯＳ１２に対して、メモリ部３１の状態管理領域３１１に記憶領域の確保依頼を行う（ステップＳ１０２）。
【００４９】
ここで、ＯＳ１２が、メモリ部３１にアクセスしようとすると、仮想化されているため、ハイパーバイザー２０がその処理を代行する。よって、ＯＳ１２は、ハイパーバイザー２０に対して、状態管理領域３１１に記憶領域の確保依頼を行う（ステップＳ１０３）。そして、確保依頼を受けたハイパーバイザー２０が、メモリ部３１の状態管理領域３１１において記憶領域の確保を行う（ステップＳ１０４）。
【００５０】
具体的には、状態管理部１１２から記憶領域の確保依頼を受け付けたＯＳ１２の状態アクセスハイパーコール制御部１２１が、状態管理領域３１１へアクセスするためのハイパーバイザーコール（状態アクセスハイパーコール）を実行することで、ハイパーバイザー２０に状態管理領域３１１へのアクセスを依頼する。そして、状態アクセスハイパーコールを受け付けたハイパーバイザー２０の状態アクセス制御部２１は、メモリ部３１内の状態管理領域３１１に記憶領域を確保する。
【００５１】
そして、ハイパーバイザー２０は、メモリ部３１内の状態管理領域３１１に記憶領域を確保したことを、ＯＳ１２を介して、状態管理部１１２に通知する（ステップＳ１０５）。具体的には、ハイパーバイザー２０の状態アクセス制御部２１が、状態管理領域３１１に記憶領域を確保したことを、ＯＳ１２の状態アクセスハイパーコール制御部１２１経由で、状態管理部１１２に通知する。
【００５２】
次に、状態管理部１１２は、同期制御部１１３に対し、確保された記憶領域の状態を、他の高可用サーバ１（１ｂ）が同期するように指示を出す（ステップＳ１０６）。
【００５３】
続いて、同期制御部１１３は、状態管理部１１２の指示に基づき、同期要求メッセージを生成し、不図示の出力手段または通信手段を介して、他の高可用サーバ１（１ｂ）に同期要求メッセージを送信する（ステップＳ１０７）。
【００５４】
そして、他の高可用サーバ１（１ｂ）の同期制御部１１３ｂは、同期要求メッセージを、不図示の入力手段または通信手段を介して受信し（ステップＳ１０８）、自己の状態管理部１１２ｂに引き渡す。
【００５５】
次に、他の高可用サーバ１（１ｂ）の状態管理部１１２ｂは、受け取った同期要求メッセージに基づき、同期要求処理を実行する（ステップＳ１０９）。
具体的には、他の高可用サーバ１（１ｂ）の状態管理部１１２ｂは、高可用サーバ１（１ａ）が行ったステップＳ１０２〜Ｓ１０４と同様の処理手順で、ＯＳ１２ｂを介して、ハイパーバイザー２０ｂに状態管理領域３１１ｂの記録領域の確保を依頼する。そして、ハイパーバイザー２０ｂの状態アクセス制御部２１ｂが、メモリ部３１ｂ内の状態管理領域３１１ｂに記憶領域を確保する。
【００５６】
そして、高可用サーバ１（１ｂ）の状態管理部１１２ｂは、ハイパーバイザー２０ｂから、状態管理領域３１１ｂに記憶領域が確保されたことの通知を受けると、同期要求処理が完了したこと示す同期応答メッセージを生成して、高可用サーバ１（１ａ）に送信する（ステップＳ１１０）。
【００５７】
続いて、高可用サーバ１（１ａ）の状態管理部１１２が、同期制御部１１３を介して、高可用サーバ１（１ｂ）から同期応答メッセージを受信することで（ステップＳ１１１）、高可用サーバ１（１ａ）と高可用サーバ１（１ｂ）とを同期させる準備を終える。
【００５８】
＜平常時の状態情報の同期処理＞
次に、平常時の状態情報の同期処理について説明する。
図４は、本実施形態に係る高可用サーバシステム１００における平常時の状態情報の同期処理の流れを示すフローチャートである。
【００５９】
まず、クライアント６が、高可用サーバ１（１ａ）のサービス提供部１１１に、サービスを要求すると（ステップＳ２０１）、サービス提供部１１１は、そのサービスを提供することにより変更される新たな状態（状態情報）を状態管理部１１２に問い合わせる（ステップＳ２０２）。
【００６０】
そして、状態管理部１１２は、前記した図３のステップＳ１０３の処理と同様に、ＯＳ１２（状態アクセスハイパーコール制御部１２１）に対して、メモリ部３１内の状態管理領域３１１へのアクセス要求を行う（ステップＳ２０３）。このＯＳ１２の状態管理領域３１１へのアクセス要求は、ハイパーバイザー２０によって代行されるため、ＯＳ１２（状態アクセスハイパーコール制御部１２１）は、ハイパーバイザー２０の状態アクセス制御部２１に対して、状態管理領域３１１へのアクセス要求を行う（ステップＳ２０４）。
【００６１】
続いて、ハイパーバイザー２０の状態アクセス制御部２１は、状態管理領域３１１から該当するサービスで特定される新たな状態情報を取得する（ステップＳ２０５）。このとき、ハイパーバイザー２０の状態アクセス制御部２１は、新たな状態情報を取得した時刻（状態情報の更新時刻）を、状態管理領域３１１内に記憶しておく（ステップＳ２０６）。
【００６２】
次に、ハイパーバイザー２０の状態アクセス制御部２１は、取得した新たな状態情報を、ＯＳ１２（状態アクセスハイパーコール制御部１２１）を介して、状態管理部１１２に引き渡す（ステップＳ２０７）。そして、状態管理領域３１１からの新たな状態情報を受け取った状態管理部１１２は、同期制御部１１３を介して、新たな状態情報を他の高可用サーバ１（１ｂ）に送信する（ステップＳ２０８）。
【００６３】
そして、他の高可用サーバ１（１ｂ）の同期制御部１１３ｂは、新たな状態情報を受信し（ステップＳ２０９）、状態管理部１１２ｂに引き渡す。
【００６４】
続いて、他の高可用サーバ１（１ｂ）の状態管理部１１２ｂは、受け取った新たな状態情報に基づき、同期処理を実行する（ステップＳ２１０）。
具体的には、他の高可用サーバ１（１ｂ）の状態管理部１１２ｂは、ＯＳ１２ｂ（状態アクセスハイパーコール制御部１２１ｂ）を介して、ハイパーバイザー２０ｂ（状態アクセス制御部２１ｂ）へ新たな状態情報を送る。そして、ハイパーバイザー２０ｂの状態アクセス制御部２１ｂが、メモリ部３１ｂ内の状態管理領域３１１ｂを新たな状態情報に基づき更新する。次に、ハイパーバイザー２０ｂの状態アクセス制御部２１ｂは、状態管理領域３１１ｂが新たな状態情報に基づき更新されたことを、ＯＳ１２ｂ（状態アクセスハイパーコール制御部１２１ｂ）を介して、状態管理部１１２ｂへ通知する。
【００６５】
次に、高可用サーバ１（１ｂ）の状態管理部１１２ｂが、ハイパーバイザー２０ｂから、状態管理領域３１１ｂの状態情報が更新されたことの通知を受けると、同期制御部１１３ｂが、同期処理完了メッセージを生成して、高可用サーバ１（１ａ）に送信する（ステップＳ２１１）。
【００６６】
そして、高可用サーバ１（１ａ）の状態管理部１１２が、同期制御部１１３を介して、高可用サーバ１（１ｂ）から同期処理完了メッセージを受信し（ステップＳ２１２）、平常時の状態情報の同期処理を終える。なお、高可用サーバ１（１ａ）のサービス提供部１１１は、この同期処理を実行した後に、クライアント６に対して、サービスの提供を行う。
【００６７】
このような処理を常時行うことによって、ある時点で高可用サーバ１（１ａ）のゲストＶＭ１０が障害によって停止した場合でも、メモリ部３１の状態管理領域３１１の状態情報が高可用サーバ１（１ｂ）に同期されているため冗長性が確保され、クライアント６は高可用サーバ１（１ａ）ではなく、状態を引き継いだ高可用サーバ１（１ｂ）に接続することでサービスを継続して利用することができる。
【００６８】
＜障害発生後の状態同期処理＞
次に、高可用サーバシステム１００が備える高可用サーバ１（１ａ）に障害が発生した後の、状態同期処理について説明する。ここでは、高可用サーバ１（１ａ）のゲストＶＭ１０において、障害が発生したものとして説明する。
図５は、本実施形態に係る高可用サーバシステム１００における障害発生後の状態同期処理の流れを示すフローチャートである。
【００６９】
まず、高可用サーバ１（１ａ）のゲストＶＭ１０は、障害発生後にシステムの復旧させるため、ＯＳ１２とサービス処理部１１とを再起動する（ステップＳ３０１）。
【００７０】
次に、状態管理部１１２は、再起動後、自サーバが管理している状態情報を把握するため、ＯＳ１２（状態アクセスハイパーコール制御部１２１）に対して、メモリ部３１内の状態管理領域３１１へのアクセスを依頼する（ステップＳ３０２）。このＯＳ１２の状態管理領域３１１へのアクセスは、ハイパーバイザー２０によって代行されるため、ＯＳ１２（状態アクセスハイパーコール制御部１２１）は、ハイパーバイザー２０の状態アクセス制御部２１に対して、状態管理領域３１１へのアクセスを依頼する（ステップＳ３０３）。
【００７１】
続いて、ハイパーバイザー２０の状態アクセス制御部２１は、状態管理領域３１１にアクセスし、状態情報の最終更新時刻の情報を取得する（ステップＳ３０４）。
【００７２】
そして、ハイパーバイザー２０の状態アクセス制御部２１は、取得した状態情報の最終更新時刻の情報を、ＯＳ１２（状態アクセスハイパーコール制御部１２１）を介して、状態管理部１１２へ引き渡す（ステップＳ３０５）。
【００７３】
次に、状態管理部１１２は、状態情報の最終更新時刻の情報を同期制御部１１３に引き渡し、同期制御部１１３は、その最終更新時刻の情報を含んだ更新状態情報要求メッセージを生成し、他の高可用サーバ１（１ｂ）に送信する（ステップＳ３０６）。
【００７４】
他の高可用サーバ１（１ｂ）の同期制御部１１３ｂは、更新状態情報要求メッセージを受信し（ステップＳ３０７）、状態管理部１１２ｂに引き渡す。
【００７５】
続いて、他の高可用サーバ１（１ｂ）の状態管理部１１２ｂは、受け取った更新状態情報要求メッセージを用いて、更新状態情報取得処理を実行する（ステップＳ３０８）。
具体的には、他の高可用サーバ１（１ｂ）の状態管理部１１２ｂは、ＯＳ１２ｂ（状態アクセスハイパーコール制御部１２１ｂ）を介して、ハイパーバイザー２０ｂに状態情報の最終更新時刻の情報を渡す。そして、ハイパーバイザー２０ｂの状態アクセス制御部２１ｂが、状態情報の最終更新時刻以降に、更新された状態情報（更新状態情報）を、状態管理領域３１１ｂにアクセスすることにより取得する。そして、ハイパーバイザー２０ｂの状態アクセス制御部２１ｂは、取得した更新状態情報を、ＯＳ１２ｂ（状態アクセスハイパーコール制御部１２１ｂ）を介して、状態管理部１１２ｂへ渡す。
【００７６】
そして、状態管理部１１２ｂは、受け取った更新状態情報を、同期制御部１１３ｂを介して、高可用サーバ１（１ｂ）に送信する（ステップＳ３０９）。
【００７７】
次に、高可用サーバ１（１ａ）の状態管理部１１２が、同期制御部１１３を介して、更新状態情報を受信する（ステップＳ３１０）。そして、状態管理部１１２が、その更新状態情報を用いて、ＯＳ１２およびハイパーバイザー２０を介して、状態管理領域３１１を更新する（ステップＳ３１１）。
【００７８】
このような状態同期処理を行うことにより、高可用サーバ１（１ａ）は、自身で障害が発生した後に更新された状態情報だけを、引継サーバである高可用サーバ１（１ｂ）の状態管理領域３１１ｂから取得することができる。そのため、同期処理を再開させて、状態の冗長性を確保するまでの時間を短縮することができ、その結果、二重障害の確率を低減することができる。
【００７９】
＜高可用サーバ１の変形例１＞
次に、本実施形態に係る高可用サーバ１の変形例である高可用サーバ２について説明する。本実施形態に係る高可用サーバ１（図１参照）においては、メモリ部３１内の状態管理領域３１１または通常領域３１２のどちらにアクセスするかの振り分けを、状態管理部１１２が行っていた。それに対して、本実施形態の変形例１に係る高可用サーバ２においては、ハイパーバイザー２０が、状態管理領域３１１へのアクセスか、通常領域３１２へのアクセスかの振り分けを行うことを特徴とする。
【００８０】
図６は、本実施形態の変形例１に係る高可用サーバ２を含む高可用サーバシステム１００の構成例を示す機能ブロック図である。
【００８１】
図６に示すように、本実施形態の変形例１に係る高可用サーバ２は、図１に示した高可用サーバ１に比べて、ＯＳ１２内に状態アクセスハイパーコール制御部１２１および通常ハイパーコール制御部１２２が設けられていない。一方、本実施形態の変形例１に係る高可用サーバ２は、ハイパーバイザー２０内に、新たにアクセス判別処理部２３が設けられ、不図示の記憶手段内に判別ポリシーが記憶される。
【００８２】
この判別ポリシーには、ＯＳ１２を介して取得した情報（アクセスデータ）について、状態管理領域３１１にアクセスさせて状態情報として記憶すべき情報か否かを判別するための条件が設定される。例えば、ＩＰ電話等の回線制御のサービスにおいては、セッションデータだと判別すると、状態管理領域３１１へアクセスし記憶や更新がなされるように、セッションデータを判別するポリシーが記載される。この判別ポリシーは、サービス処理部１１の内容に応じて書き換えることが可能である。
【００８３】
また、アクセス判別処理部２３は、状態管理部１１２からＯＳ１２を介して、データのアクセスを受け付けると、判別ポリシーに記憶された判別条件に基づいて、そのデータアクセスが、冗長化が必要な状態管理領域３１１の状態情報にアクセスすべきデータなのか、冗長化が必要ない通常領域３１２に関するデータなのかを判別する。
【００８４】
このように、ハイパーバイザー２０内に、アクセス判別処理部２３を備えることで、高可用サーバ２は、状態管理部１１２からＯＳ１２を介して、データアクセスを受け付けると、アクセス判別処理部２３が判別ポリシーに記載された判別条件に基づき、そのデータのアクセス先を状態管理領域３１１にするか通常領域３１２にするかを判別する。そして、アクセス判別処理部２３が、状態管理領域３１１にアクセスすべきと判別した場合は、そのデータを状態アクセス制御部２１に渡し、状態管理領域３１１での処理を実行する。一方、アクセス判別処理部２３が、通常領域３１２にアクセスすべきと判別した場合には、そのデータを仮想化制御部２２に渡し、通常領域３１２での処理を実行する。
【００８５】
なお、本実施形態の変形例１に係る高可用サーバ２を含む高可用サーバシステム１００の障害時復旧方法の全体の処理の流れは、状態管理部１１２による状態管理領域３１１へのアクセス方法が変更される以外は、図３〜図５に示した各処理の流れと同じものである。
【００８６】
このようにすることにより、本実施形態に係る高可用サーバ１に比べ、本実施形態の変形例１に係る高可用サーバ２は、ＯＳ１２やサービス処理部１１を、本システム専用に改良する必要がない。また、判別ポリシーを該当するサービス処理部１１の追加や変更等に応じて容易に修正することが可能となる。
【００８７】
＜高可用サーバ１の変形例２＞
次に、本実施形態に係る高可用サーバ１の変形例２である高可用サーバ３について説明する。本実施形態の変形例２に係る高可用サーバ３は、サービス処理部１１とＯＳ１２との間に、ミドルウェア１３を備えることを特徴とする。
【００８８】
図７は、本実施形態の変形例２に係る高可用サーバ３を含む高可用サーバシステム１００の構成例を示す機能ブロック図である。
【００８９】
本実施形態に係る高可用サーバ１においては、サービス処理部１１内に状態管理部１１２および同期制御部１１３を備える構成とした（図１参照）。それに対して、本実施形態の変形例２に係る高可用サーバ３においては、図７に示すように、サービス処理部１１とＯＳ１２との間に、ミドルウェア１３を設け、そのミドルウェア１３の中に、状態管理部１１２、同期制御部１１３、および状態管理標準ＡＰＩ（Application Program Interface）１３１を備える構成とした。ここで、状態管理標準ＡＰＩ１３１は、サービス提供部１１１が受け付けたデータアクセスをミドルウェア１３に設けられた、状態管理部１１２および同期制御部１１３へと引き渡すためのプログラムインタフェースである。
【００９０】
このようにすることで、サービス処理部１１のサービス提供部１１１へのクライアント６からのアクセスを、ミドルウェア１３の状態管理標準ＡＰＩ１３１を経由して状態管理部１１２へ渡し、状態管理部１１２が、ＯＳ１２およびハイパーバイザー２０を介して、状態管理領域３１１へアクセスすることができる。
【００９１】
本実施形態の変形例２に係る高可用サーバ３によれば、サービス処理部１１に改変を加えることなく、本実施形態にかかる高可用サーバシステム１００上で動作させることが可能となる。
【００９２】
なお、本実施形態の変形例２に係る高可用サーバ３を含む高可用サーバシステム１００の障害時復旧方法の全体の処理の流れは、状態管理部１１２による状態管理領域３１１へのアクセス方法が変更される以外は、図３〜図５に示した各処理の流れと同じものである。
【００９３】
また、本実施形態に係る変形例２に係る高可用サーバ３のミドルウェア１３を、本実施形態の変形例１に係る高可用サーバ２（図６参照）に適用して、サービス処理部１１とＯＳ１２との間にミドルウェア１３を設けて、データの処理をさせるようにしてもよい。
【符号の説明】
【００９４】
１，２，３  高可用サーバ
５      ネットワーク
６      クライアント
１０    ゲストＶＭ
１１    サービス処理部
１２    ＯＳ
１３    ミドルウェア
２０    ハイパーバイザー
２１    状態アクセス制御部
２２    仮想化制御部
２３    アクセス判別処理部
３０    ハードウェア
３１    メモリ部
１００  高可用サーバシステム
１１１  サービス提供部
１１２  状態管理部
１１３  同期制御部
１２１  状態アクセスハイパーコール制御部
１２２  通常ハイパーコール制御部
１３１  状態管理標準ＡＰＩ
３１１  状態管理領域
３１２  通常領域
【図１】
0005544516.tif 000002
【図２】
0005544516.tif 000003
【図３】
0005544516.tif 000004
【図４】
0005544516.tif 000005
【図５】
0005544516.tif 000006
【図６】
0005544516.tif 000007
【図７】
0005544516.tif 000008