(57)【要約】【課題】サスペンドまたは一時停止中の仮想マシンへのアクセスについてタイムアウトが発生することを抑制する。【解決手段】コンピュータに、仮想マシンのアイドル状態が検知された場合、仮想マシンをサスペンドまたは一時停止することを依頼し、仮想マシンをサスペンドまたは一時停止するときに、端末装置と仮想マシンとの間の通信を制御する通信制御装置の設定情報を、端末装置からサスペンドまたは一時停止される仮想マシンに対するアクセスをコンピュータに転送するように変更し、サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、サスペンドまたは一時停止された仮想マシンによる端末装置に対する通信応答に関する通信応答設定情報に基づいて、端末装置に対する応答を送信し、アクセスの転送に応答して、サスペンドまたは一時停止された仮想マシンをレジュームすることを依頼する、ことを有する処理を実行させる代理応答プログラム。【選択図】図５
2017033331.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
仮想マシンのアイドル状態が検知された場合、前記仮想マシンをサスペンドまたは一時停止することを依頼し、
前記仮想マシンをサスペンドまたは一時停止するときに、端末装置と前記仮想マシンとの間の通信を制御する通信制御装置の設定情報を、前記端末装置からの前記サスペンドまたは一時停止される仮想マシンに対するアクセスを前記コンピュータに転送するように変更し、
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、前記サスペンドまたは一時停止された仮想マシンによる前記端末装置に対する通信応答に関する通信応答設定情報に基づいて、前記端末装置に対する応答を送信し、
前記アクセスの転送に応答して、前記サスペンドまたは一時停止された仮想マシンをレジュームすることを依頼する、
ことを有する処理を実行させる代理応答プログラム。
【請求項２】
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、さらに、前記通信応答設定情報に基づいて、前記転送されたアクセスを許可できるか否かを確認し、前記転送されたアクセスの送信元及び送信先情報を有するコネクションデータを記録する、
ことを前記コンピュータに実行させる、請求項１に記載の代理応答プログラム。
【請求項３】
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、さらに、前記通信応答設定情報に基づいて、前記転送されたアクセスに対する応答内容を識別し、前記転送されたアクセスの受信データと前記受信データ対応する前記端末装置に対する応答データとを記録する、ことを前記コンピュータに実行させる、請求項２に記載の代理応答プログラム。
【請求項４】
前記仮想マシンのレジュームが完了した際に、
前記通信制御装置の設定情報を前記変更前の状態に戻し、
記録した前記コネクションデータと前記受信データと前記応答データとを、前記レジュームが完了した仮想マシンに送信する、ことを前記コンピュータに実行させる、請求項３に記載の代理応答プログラム。
【請求項５】
前記仮想マシンをサスペンドまたは一時停止する際に、前記端末装置から前記通信応答設定情報を取得する、ことを前記コンピュータに実行させる、請求項１に記載の代理応答プログラム。
【請求項６】
前記仮想マシンのサスペンドまたは一時停止は、前記仮想マシンのゲストオペレーティングシステムを前記仮想マシンが構築されている物理マシンのメモリから退避させて前記仮想マシンに割り当てられていたメモリとプロセッサとを開放することを含む、請求項１に記載の代理応答プログラム。
【請求項７】
前記仮想マシンと前記端末装置は、同じ企業体または組織体に属する、請求項１に記載の代理応答プログラム。
【請求項８】
仮想マシンのアイドル状態が検知された場合、前記仮想マシンをサスペンドまたは一時停止することを依頼し、
前記仮想マシンをサスペンドまたは一時停止するときに、端末装置と前記仮想マシンとの間の通信を制御する通信制御装置の設定情報を、前記端末装置から前記サスペンドまたは一時停止される仮想マシンに対するアクセスを自身に転送するように変更し、
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、前記サスペンドまたは一時停止された仮想マシンによる前記端末装置に対する通信応答に関する通信応答設定情報に基づいて、前記端末装置に対する応答を送信し、
前記アクセスの転送に応答して、前記サスペンドまたは一時停止された仮想マシンをレジュームすることを依頼する、
処理を有する代理応答方法。
【請求項９】
プロセッサと、
仮想マシンのアイドル状態が検知された場合、前記仮想マシンをサスペンドまたは一時停止することを依頼し、
前記仮想マシンをサスペンドまたは一時停止するときに、端末装置と前記仮想マシンとの間の通信を制御する通信制御装置の設定情報を、前記端末装置から前記サスペンドまたは一時停止される仮想マシンに対するアクセスを自身に転送するように変更し、
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、前記サスペンドまたは一時停止された仮想マシンによる前記端末装置に対する通信応答に関する通信応答設定情報に基づいて、前記端末装置に対する応答を送信し、
前記アクセスの転送に応答して、前記サスペンドまたは一時停止された仮想マシンをレジュームすることを依頼する、
処理を前記プロセッサに実行させる代理応答プログラムと、を有する代理応答装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、代理応答プログラム、代理応答装置及び代理応答方法に関する。
【背景技術】
【０００２】
クラウドコンピューティングは、データセンタ内の物理マシン（情報処理装置）上に仮想化基盤（以下ハイパーバイザ）により複数の仮想マシンを配備し、配備された仮想マシンでサービスシステムを構築する。そして、サービスシステムを利用する利用者の端末装置は、ネットワークを介して仮想マシンにアクセスしサービスシステムを利用する。利用者は、物理マシン上に必要な仮想マシンを配備することで所望のサービスシステムを構築することができ、物理マシンのハードウエアリソースを有効に活用しながら、所望のサービスシステムを柔軟に構築できる。
【０００３】
クラウドコンピューティングでは、物理マシン上に特定の仮想マシンを集約するなどにより、物理マシンであるハードウエアを効率的に利用することができ、省エネ、省資源化を図ることができる。例えば、ハイパーバイザは、CPU資源を複数の仮想マシンで共用させ、またCPUを使用していない仮想マシンからCPUを必要とする仮想マシンにCPUの割当を変更するなどを行う。また、メモリ資源についても、ハイパーバイザは、メモリ内の不要不急のデータを外部のストレージ装置に移動するなどしてメモリを解放し、メモリを必要とする仮想マシンに割当を変更する制御を行う。
【０００４】
近年、物理マシンの限られたハードウエアリソースを有効に利用するために、アイドル状態の仮想マシンをサスペンドまたは一時停止（ポーズ）することでCPUやメモリなどのリソースを動的に開放することが提案されている。この場合、ハイパーバイザは、開放したCPUやメモリをアクティブ状態の別の仮想マシンに割り当てる。そして、利用者が仮想マシンの使用を再開する際、サスペンドまたは一時停止した仮想マシンをレジューム（解除）して、開放したリソースを元に戻し、仮想マシンを通常稼働状態に復帰させることが求められる。以下の特許文献１には仮想マシンのサスペンドとレジュームが記載されている。
【０００５】
ここで、仮想マシンのサスペンドは、アプリケーションやOSレベルの動的サスペンドのようにCPUやメモリが解放されないものとは異なり、CPUやメモリの開放を伴う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−２２４９１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、仮想マシンでWebサービスシステムを構築する場合、クライアント端末からWebサービスシステムのAPI(Application Program Interface)にアクセスする事例が増えている。WebサービスのAPIは非同期処理が主流であり、Webサービスから通信応答がない場合のタイムアウト時間が非常に短く（たとえば３秒程度）、サスペンドされた仮想マシンのWebサービスに送信されてくるアクセス要求に適切に応答することが困難になっている。非同期処理では、クライアント端末からWebサービスのAPIに対して何らかの要求を送信してきた場合、Webサービスは、短時間で受信応答をクライアント端末に返信し、バックグランドで要求に対する処理を実行する。
【０００８】
しかしながら、Webサービスシステムを構築する仮想マシンを、それがアイドル状態の場合サスペンドして物理マシンのハードウエアのリソースを有効活用しようとした場合、クライアント端末からのAPIへの要求を受信してから仮想マシンをレジュームしたのでは、上記の短いタイムアウト時間内に応答することができない場合がある。
【０００９】
そこで、第１の側面では、仮想マシンをサスペンドした場合に、クライアント端末からのサスペンドまたは一時停止中の仮想マシン宛てに送信されるアクセスに適切なタイミングで応答する代理応答プログラム、代理応答装置及び代理応答方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
一つの開示は、コンピュータに、仮想マシンのアイドル状態が検知された場合、前記仮想マシンをサスペンドまたは一時停止することを依頼し、前記仮想マシンをサスペンドまたは一時停止するときに、端末装置と前記仮想マシンとの間の通信を制御する通信制御装置の設定情報を、前記端末装置から前記サスペンドまたは一時停止される仮想マシンに対するアクセスを前記コンピュータに転送するように変更し、前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、前記サスペンドまたは一時停止された仮想マシンによる前記端末装置に対する通信応答に関する通信応答設定情報に基づいて、前記端末装置に対する応答を送信し、前記アクセスの転送に応答して、前記サスペンドまたは一時停止された仮想マシンをレジュームすることを依頼する、ことを有する処理を実行させる代理応答プログラムである。
【発明の効果】
【００１１】
一つの側面によれば、仮想マシンをサスペンドまたは一時停止した場合、代理応答プログラムにより、クライアント端末からのアクセスに適切なタイミングで応答する。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態における代理応答装置と仮想マシン群を有するクラウドコンピューティングシステムの概略を示す図である。
【図２】仮想マシンＶＭ０３の構成例を示す図である。
【図３】代理応答装置２４の構成例を示す図である。
【図４】仮想マシンＶＭ０３のＷｅｂサービスの非同期処理を示すフローチャート図である。
【図５】本実施の形態における全体の動作の概略を示すシーケンス図である。
【図６】図５の処理Ｓ１のより詳細なシーケンス図である。
【図７】図５の処理Ｓ２の詳細なシーケンス図である。
【図８】代理応答装置２４が保持するサスペンド仮想マシンテーブルの一例を示す図である。
【図９】代理応答装置２４が採取した通信応答設定情報を登録した通信応答設定管理テーブルＴＢＬ４の具体例を示す図である。
【図１０】代理応答装置の通信設定の変更例を示す図である。
【図１１】クライアント端末から送信されたアクセスのパケットの一例を示す図である。
【図１２】クライアント端末からのアクセスに対する代理応答装置の処理を示すフローチャート図である。
【図１３】コネクション情報管理テーブルと代理受信データ管理テーブルの具体例を示す図である。
【発明を実施するための形態】
【００１３】
仮想マシンをサスペンドするとは、ゲストOSで開いていた書類や起動していたアプリケーションなどをそっくりそのままの状態でディスクに保存して停止する動作であり、電源を落として再起動しても元の状態に戻すことができる。また、仮想マシンを一時停止（ポーズ）するとは、ゲストOSで開いていた書類や起動していたアプリケーションなどをメモリに保存して停止するので、一時停止に要する時間は短いが、電源を落とすと再起動しても元の状態に戻すことはできない。但し、サスペンドも一時停止もメモリ領域やCPU負荷を開放するのは同じである。また、サスペンドも一時停止もそれを解除することで元の状態で仮想マシンが動作を再開する。
【００１４】
以下の実施の形態では、サスペンドと一時停止を合わせてサスペンドと称して説明する。
【００１５】
図１は、本実施の形態における代理応答装置と仮想マシン群を有するクラウドコンピューティングシステムの概略を示す図である。クラウドコンピューティングシステムのサーバ施設ＳＦには、物理マシンである情報処理装置ＰＭ１上にハイパーバイザＨＶ１によって生成された複数の仮想マシンＶＭ０３，ＶＭ０４，ＶＭ０５を有する。これらの仮想マシンにより利用者が希望するサービスシステムが構築される。
【００１６】
例えば、図１の例では、仮想マシン１４（ＶＭ０３）によりＷｅｂサービスシステムが構築されている。物理マシンＰＭ１は、図示されないが、複数の物理マシンを有し、それぞれの物理マシンＰＭ１上に複数の仮想マシンが生成される。
【００１７】
また、サーバ施設ＳＦには、物理マシンＰＭ１上に生成する仮想マシンを管理する仮想マシン管理サーバ２０と、仮想マシンがアイドル状態か否かを監視するアイドル監視装置２２と、サスペンドされた仮想マシンに代わって代理応答する代理応答装置２４とが、ハイパーバイザＨＶ０により物理マシンＰＭ０上に仮想マシンとして生成される。仮想マシン管理サーバ、アイドル監視装置、代理応答装置は、必ずしも仮想マシンである必要はなく、物理マシンでもよい。
【００１８】
物理マシンＰＭ１上に生成された仮想マシンＶＭ０３，ＶＭ０４，ＶＭ０５らは、仮想マシンのネットワークＮＷ＿ＶＭ（以下第１のネットワークと称する。）を介して、通信制御装置１２に接続される。第１のネットワークは、例えばＬＡＮまたはＶＬＡＮである。図中、３つの仮想マシンそれぞれのＩＰアドレスの例（ＩＰ０３，ＩＰ０４，ＩＰ０５）が示されている。さらに、代理応答装置２４は、第１のネットワークＮＷ＿ＶＭにも接続され、そのＩＰアドレスの例はＩＰ１４である。
【００１９】
一方、物理マシンＰＭ０上に生成された仮想マシンである仮想マシン管理サーバ２０、アイドル監視装置２２、代理応答装置２４は、管理用ネットワークＮＷ＿ＡＤＭ（以下第２のネットワークと称する。）を介して通信制御装置１２に接続される。第２ネットワークには、物理マシンＰＭ０，ＰＭ１にも接続される。第２のネットワークも、例えばＬＡＮまたはＶＬＡＮである。図中、３つの仮想マシンそれぞれのＩＰアドレスの例（ＩＰ１０，ＩＰ１２，ＩＰ１３）が示されている。
【００２０】
通信制御装置１２は、例えばネットワークスイッチであり、第１、第２のネットワークそれぞれについて、ネットワークに接続されている仮想マシンなどのＩＰアドレスとＭＡＣアドレスの対応を有するＡＲＰ（Address Resolution Protocol、アープ）テーブルを有する。ＡＲＰテーブルは、通信制御装置が受信したアクセスのパケットを第１、第２のネットワーク内のどの仮想マシンに転送するかを規定する通信設定情報の一つである。
【００２１】
通信制御装置１２は、インターネット（例えばＶＰＮ（Virtual Private Network））やイントラネットなどのネットワークＮＥＴを介して、例えば、クライアント端末１０＿１，１０＿２に接続された別の通信制御装置１１に接続される。
【００２２】
全体の概略的な動作について、具体例を示しながら説明する。例えばクライアント端末１０＿１が仮想マシン管理サーバ２０にアクセスして、希望する仮想マシンの起動を要求すると、仮想マシン管理サーバ２０は、第２のネットワークＮＷ＿ＡＤＭを介して物理マシンＰＭ１のハイパーバイザＨＶ１に希望する仮想マシンの起動を依頼し、例えば仮想マシンＶＭ０３を起動させる。この仮想マシンＶＭ０３は、Ｗｅｂサービスシステムを構築し、自動ビルドＷｅｂサービスのプログラム（例jenkins）が動作している。そして、仮想マシンＶＭ０３によるＷｅｂサービスシステムは、クライアント端末からの、仮想マシンＶＭ０３のＩＰアドレス（ＩＰ０３）を含むＵＲＬを有するアクセス要求を、受け付けるように設定されている。
【００２３】
一方、クライアント端末１０＿２には、例えば、ソースコード管理プログラム（例git）が動作し、あるプログラムのソースコードが更新された場合、自動ビルドWebサービスのジョブ実行用WebAPI（Jenkins）を呼び出すように設定されている。そこで、クライアント端末１０＿２が、仮想マシンＶＭ０３のＵＲＬを有するアクセスで、自動ビルドWebサービスのジョブ実行用WebAPIを呼び出すアクセスを、仮想マシンＶＭ０３に向けて送信すると、通信制御装置１１，ネットワークＮＥＴ、通信制御装置１２を経由して、そのアクセスが仮想マシンＶＭ０３に届く。このアクセスに応答して、仮想マシンＶＭ０３のＷｅｂサービスプログラムがビルドジョブを実行する。
【００２４】
仮想マシン管理サーバ２０は、第２のネットワークＮＷ＿ＡＤＭを介して、物理マシンＰＭ１のハイパーバイザＨＶ１から、仮想マシン群ＶＭ０３−ＶＭ０６の動作情報などの監視情報を受信する。また、アイドル監視装置２２は、仮想マシン管理サーバ２０が収集した仮想マシンの監視情報などに基づいて、どの仮想マシンがアイドル状態か否かを判定する。
【００２５】
仮想マシン管理サーバ２０は、必要に応じて、監視中の仮想マシンについてサスペンド処理を、ハイパーバイザＨＶ１に要求する。逆に、仮想マシン管理サーバ２０は、サスペンド中の仮想マシンのレジューム処理を、ハイパーバイザＨＶ１に要求する。これらの要求に応じて、ハイパーバイザＨＶ１は、対象の仮想マシンを起動状態からサスペンド状態に制御し、逆にサスペンド状態の仮想マシンをレジュームする。
【００２６】
ハイパーバイザＨＶ１は、ある仮想マシンのサスペンド要求を受信すると、対象の仮想マシンのゲストＯＳのメモリ内のデータとＣＰＵ内のコンテキスト（レジスタ値）をスワップファイルとして大容量のストレージに退避し、その仮想マシンに割り当てられていた物理マシンＰＭ１のＣＰＵ及びメモリ領域を開放し、他の仮想マシンへ割当可能な状態にする。その結果、サスペンド対象の仮想マシンの動作が停止する。この仮想マシンのサスペンドは、ＣＰＵやメモリの開放を伴い、他の仮想マシンに割り当て可能な状態を生みだし、仮想マシンの起動状態を維持しながら行われる仮想マシンのゲストＯＳのサスペンドとは異なる。
【００２７】
また、ハイパーバイザＨＶ１は、指定されたサスペンド中の仮想マシンのレジューム要求を受信すると、対象の仮想マシンを起動し、物理マシンＰＭ１のＣＰＵ及びメモリ領域を確保し、ストレージに退避していたスワップファイルを確保したメモリ領域にロードし、ＣＰＵ内のレジスタに設定する。
【００２８】
図１のクラウドコンピューティングシステムは、プライベートクラウド環境で構築されている。すなわち、クライアント端末との間のネットワークＮＥＴがプライベートなネットワークであり、クライアント端末１０は、サーバ施設ＳＦと同じ企業や行政組織などに属している。そのため、クライアント端末から攻撃されるおそれがなく、低コスト化の要請から、クライアント端末からサービスシステムを構築する仮想マシン群ＶＭ０３−ＶＭ０５に対し、ＮＡＴ（Network Address Translation）装置などのセキュリティ機能を有する装置を介することなく、仮想マシンのＩＰアドレスで直接アクセス可能である。
【００２９】
上記のように、仮想マシンが直接外部のネットワークＮＥＴに接続されるプライベートクラウド環境化では、クライアント端末から送信されるアクセスは、仮想マシンＶＭ０３−ＶＭ０５のＩＰアドレスに向けて送信されるので、仮想マシンをサスペンドすると、通信経路途中の通信制御装置１２は、仮想マシンとの通信が不可能と判断しそのアクセスを破棄するおそれがある。
【００３０】
また、仮想マシンのレジューム処理時間を短くすることが考えられるが、レジューム処理では、ハイパーバイザＨＶ１は、アクティブ状態の仮想マシンに割り当てられているＣＰＵやメモリ領域を開放して、レジューム対象の仮想マシンに再割当する処理などを実行する。その場合、物理マシンＰＭ１上で起動中の仮想マシンの動作状態に応じて、ハイパーバイザの動作負荷が動的に変化するので、このレジューム処理に要する時間は予測困難であり想定以上に長くなる場合がある。特に、サスペンドにより多くのリソースを開放できる仮想マシンは、逆にレジューム処理も長い時間を要することが予測される。
【００３１】
さらに、前述のとおり、Ｗｅｂサービスにおいて、クライアント端末からＡＰＩを指定するアクセスに応答して、仮想マシンは非同期で処理し、通信応答がない場合のタイムアウト時間は短い。したがって、サスペンド中の仮想マシン宛てのアクセスが発生すると、レジューム処理に要する時間がタイムアウト時間を超えて長くなる場合、アクセスに対して最初の応答をタイムアウト時間内に返信することができない。
【００３２】
そこで、本実施の形態では、代理応答装置２４を設ける。代理応答装置２４は、第２のネットワークＮＷ＿ＡＤＭを介して仮想マシン管理サーバにアイドル状態の仮想マシンのサスペンドを依頼し、通信制御装置１２のネットワーク設定を変更してサスペンドする仮想マシン宛てのアクセスが代理応答装置に届くようにする。そして、代理応答装置は、クライアント端末が送信したサスペンド中の仮想マシン宛てのアクセスを第１のネットワークＮＷ＿ＶＭを経由して受信し、そのアクセスに対して代理応答し、代理応答と並行してサスペンド中の仮想マシンのレジュームを仮想マシン管理サーバに依頼する。そして、代理応答装置は、通信制御装置のネットワーク設定を元に戻し、代理応答した接続履歴や応答履歴のデータをレジューム後の仮想マシンに転送して、仮想マシンにＷｅｂサービスを引き継がせる。これらの動作は後で詳述する。なお、上述した仮想マシンのサスペンド以外に、例えば、仮想マシンの一時停止が行なわれる場合も本実施の形態が適用可能である。
【００３３】
図２は、仮想マシンＶＭ０３の構成例を示す図である。本実施の形態では、仮想マシンＶＭ０３は、Ｗｅｂサービスシステムを構築する。仮想マシンＶＭ０３は、ハイパーバイザＨＶ１によって割り当てられたＣＰＵ１４１、メモリ１４２、ネットワークインターフェース（ＮＩＣ）１４３、補助記憶装置であるストレージ１４４を有する。ＮＩＣ１４３は、ＩＰアドレスがＩＰ０３であり、第１のネットワークＮＷ＿ＶＭに接続されている。そして、ストレージ１４４内には、ＷｅｂサービスプログラムＷＥＢ＿ＰＲＧ、ゲストＯＳ（Ｇ−ＯＳ１）、種々の通信応答設定情報ＴＢＬ１４１、コネクションログＬＯＧ１、受信ログＬＯＧ２などが格納されている。
【００３４】
通信応答設定情報ＴＢＬ１４１は、通信プロトコルがＴＣＰ／ＩＰ、ＨＴＴＰの場合であれば、アクセスが許可されている送信元ＩＰアドレスや開放している送信先ポート番号などを含むファイアウオール設定、アクセスが許可されるＵＲＬを含むＷｅｂサーバ設定、アクセスが許可される認証情報、そして、アプリケーションの応答設定（アクセス内のメソッド（一種のコマンド）に対する応答内容）などが含まれる。
【００３５】
コネクションログＬＯＧ１は、例えば、仮想マシンＶＭ０３への全てのアクセスのログを有し、受信ログＬＯＧ２は、例えば、アクセスに含まれている要求内容と応答内容を有する。
【００３６】
図３は、代理応答装置２４の構成例を示す図である。代理応答装置２４は、例えばハイパーバイザＨＶ１によって割り当てられたＣＰＵ２４１、メモリ２４２、ネットワークインターフェース（ＮＩＣ）２４３、ストレージ２４４を有する。ＮＩＣ２４３には、第１のネットワークＮＷ＿ＶＭと、第２のネットワークＮＷ＿ＡＤＭの両方が接続され、それぞれのＩＰアドレスはＩＰ１３，ＩＰ１４である。そして、ストレージ２４４内には、代理応答プログラムＲＲＥＳ＿ＰＲＧ、ゲストＯＳ（Ｇ−ＯＳ２）、サスペンド仮想マシン管理テーブルＴＢＬ３、通信応答設定管理テーブルＴＢＬ４、コネクション管理テーブルＴＢＬ５、代理受信データ管理テーブルＴＢＬ５などが格納されている。
【００３７】
代理応答プログラムは、代理応答装置がサスペンド中の仮想マシン宛てのアクセスに代理応答する基本的な動作を規定する。サスペンド仮想マシン管理テーブルＴＢＬ３は、サスペンド中の仮想マシンを特定する情報（仮想マシンＩＤやＩＰアドレスなど）を格納する。通信応答設定管理テーブルＴＢＬ４は、代理応答装置がサスペンドされる仮想マシンから採取した通信応答設定情報ＴＢＬ１４１の情報を格納する。コネクション管理テーブルＴＢＬ５は、例えば、代理応答装置が受信した全てのアクセスのログを有し、代理受信データ管理テーブルＴＢＬ６は、例えば、アクセスに含まれている要求内容と応答内容を有する。
【００３８】
図４は、仮想マシンＶＭ０３のＷｅｂサービスの非同期処理を示すフローチャート図である。非同期処理は、仮想マシンＶＭ０３内のＷｅｂサービスプログラムＷＥＢ＿ＰＲＧの機能の一つである。仮想マシンは、ＷｅｂサービスのＡＰＩ用のＵＲＬへの処理要求を有するアクセスを受信すると（Ｓ１０のＹＥＳ）、アクセス元のクライアント端末に応答メッセージを返信する（Ｓ１１）。この応答メッセージは、要求されている処理が完了する前にタイムアウト時間内で返信する。そして、仮想マシンはＡＰＩを実行する（Ｓ１２）。
【００３９】
ＡＰＩを実行中に、アクセス元のクライアント端末から処理状態確認ＡＰＩ宛てのアクセスを受信すると（Ｓ１３のＹＥＳ）、仮想マシンＶＭ０３は、現在の処理状態を返信する（Ｓ１４）。そして、ＡＰＩ処理が終了しない間は（Ｓ１５のＮＯ）、処理Ｓ１３，Ｓ１４を繰り返す。
【００４０】
ＡＰＩ処理が終了すれば（Ｓ１５のＹＥＳ）、仮想マシンＶＭ０３は、処理結果をアクセス元のクライアント端末に返信する（Ｓ１６）。
【００４１】
後述するとおり、仮想マシンは、Ｗｅｂサービスの別のＵＲＬへの処理要求（例えばトップページの表示要求）を有するアクセスを受信した場合も、同様に、短時間で応答メッセージを返信した後、処理要求に対応する応答を返信する。
【００４２】
［本実施の形態における全体の動作］
図５は、本実施の形態における全体の動作の概略を示すシーケンス図である。図５には、アイドル状態検知装置２２が仮想マシン１４のアイドル状態を検知してから代理応答装置２４がアイドル状態の仮想マシン１４をサスペンドして代理応答状態になるまでの処理Ｓ１と、サスペンドされた仮想マシン１４宛てのアクセスを開始してから代理応答装置２４が代理応答し仮想マシン１４のレジュームが完了するまでの処理Ｓ２とが示される。
【００４３】
［サスペンドし代理応答状態までの処理Ｓ１］
図６は、図５の処理Ｓ１のより詳細なシーケンス図である。また、図７は、図５の処理Ｓ２の詳細なシーケンス図である。以下、図５，図６を参照して、処理Ｓ１について説明する。
【００４４】
処理Ｓ１では、アイドル状態検知装置２２が、仮想マシン管理サーバ２０が収集した仮想マシンの状態情報などに基づいて、アイドル状態の仮想マシンを検知する（Ｓ２０）。各仮想マシンＶＭ０３−ＶＭ０５がアイドル状態か否かの判断方法の一例は、例えば特開２０１４−１９１３６８号公報に記載され、その記載を引用により本明細書の開示に含める。これによれば、処理を実行しないモニタ用仮想マシンを同じ物理マシンＰＭ１上に起動し、モニタ用仮想マシンの動作状態（例えば、ＣＰＵ使用量、メモリ使用量、データＩ／Ｏ量、データ転送量）を収集し、モニタ用仮想マシンの動作状態と相関する仮想マシンはアイドル状態にあると判断する。
【００４５】
アイドル状態検知装置２２は、仮想マシン１４がアイドル状態であることを検知すると、代理応答装置２４にその旨を通知する（Ｓ２１）。この通知には、アイドル状態の仮想マシンのＩＤやＩＰアドレスなど、その仮想マシンを一意に識別できる情報が含まれる。これに応答して、代理応答装置２４は、第１のネットワークＮＷ＿ＶＭ経由で、仮想マシン１４内のエージェントプログラム（図示せず）を介して仮想マシンの通信応答設定情報を採取する（Ｓ２２）。
【００４６】
そして、代理応答装置２４は、アイドル状態と通知された仮想マシンのＩＤ情報を、図３に示したサスペンド仮想マシンテーブルＴＢＬ３に追加する（Ｓ２２＿１）さらに、採取した通信応答設定情報を、図３に示した通信応答設定管理テーブルＴＢＬ４に新たなサスペンド中仮想マシンのレコードとして追加する（Ｓ２２＿２）。
【００４７】
図８は、代理応答装置２４が保持するサスペンド仮想マシンテーブルの一例を示す図である。図８には、仮想マシン管理テーブルＴＢＬ１と、アクティブ仮想マシン管理テーブルＴＢＬ２と、サスペンド仮想マシン管理テーブルＴＢＬ３とが示される。仮想マシン管理テーブルＴＢＬ１は、例えば、仮想マシン管理サーバ２０が保持する。このテーブルには、仮想マシンのＩＤ（ＶＭ＿ＩＤ）と、それぞれのＩＰアドレスと、それぞれの状態（アクティブかサスペンドか）が格納される。
【００４８】
アクティブ仮想マシン管理テーブルＴＢＬ２には、アクティブ状態の仮想マシンについて、アクティブ仮想マシンＩＤ（アクティブＶＭ＿ＩＤ）と、仮想マシンのＩＤ（ＶＭ＿ＩＤ）と、それぞれのＩＰアドレスと、それぞれの状態（アクティブかサスペンドか）が格納される。図８の例では、仮想マシンＶＭ０４，ＶＭ０５がアクティブ状態の仮想マシンとして登録されている。アクティブ管理マシン管理テーブルＴＢＬ２は、例えば、仮想マシン管理サーバ２０が保持する。
【００４９】
そして、サスペンド仮想マシン管理テーブルＴＢＬ３には、サスペンド状態の仮想マシンについて、サスペンド仮想マシンＩＤ（サスペンドＶＭ＿ＩＤ）と、仮想マシンのＩＤ（ＶＭ＿ＩＤ）と、それぞれのＩＰアドレスと、それぞれの状態（アクティブかサスペンドか）が格納される。図８の例では、仮想マシンＶＭ０３、ＶＭ０６がサスペンド状態の仮想マシンとして登録されている。サスペンド仮想マシン管理テーブルＴＢＬ３は、例えば、仮想マシン管理サーバ２０と、アイドル状態検知装置２２と、代理応答装置２４が、共に保持し、アイドル状態検知装置２２からのアイドル状態の通知に基づいて更新される。
【００５０】
代理応答装置が仮想マシンから採取する仮想マシンの通信応答設定情報の例は、例えば以下のとおりである。この例は、仮想マシン１４（ＶＭ０３）へのアクセスが、ＴＣＰ／ＩＰとＨＴＴＰの通信プロトコルで行われると仮定する。
【００５１】
採取する通信応答設定情報は、以下を含む。
（１）ファイアアウォール設定(例えば、Linux（登録商標）の/etc/sysconfi/iptablesの情報)に含まれる、アクセスが許可される送信元IPアドレスや解放している送信先ポート番号
（２）Webサーバ設定（例えば、Linuxの/etc/httpd/confの情報）に含まれる、アクセスが許可されるURL
（３）認証設定 (例えば、Linuxの/etc/httpd/htpasswdの情報)に含まれる、アクセスが許可されるアカウント情報（ＩＤとパスワードなどの認証情報）
（４）アプリケーション応答設定(例えば、プログラムjenkinsの/etc/jenkins/comfing.xmlの情報)
【００５２】
上記の通信応答設定は、仮想マシン１４（ＶＭ０３）のＷｅｂサービスへのアクセスを許可するための情報である、接続先ＩＰアドレス（ＩＰプロトコル）、ポート番号（ＴＣＰプロトコル）、ＵＲＬとアカウント情報（ＨＴＴＰプロトコル）を有し、さらに、アプリケーションレベルの通信応答設定の情報を含む。採用されるプロトコルの種類に応じて、上記の通信応答設定の情報は異なる。例えば、sshプロトコルによるアクセスの場合、通信応答設定情報には接続元として許可するサーバ鍵情報なども含まれる。
【００５３】
図６に戻り、代理応答装置２４は、サスペンド仮想マシン管理テーブルのサスペンド仮想マシンと関連付けて、採取した通信応答設定情報を、自身が保持する通信応答設定管理テーブルに、新たなサスペンド中仮想マシンのレコードとして追加する（Ｓ２２＿２）。通信応答設定管理テーブルの具体例は、以下のとおりである。
【００５４】
図９は、代理応答装置２４が採取した通信応答設定情報を登録した通信応答設定管理テーブルＴＢＬ４の具体例を示す図である。図９には、サスペンドＶＭ＿ＩＤが「Ｓ００００３」の仮想マシンＶＭ０３から採取した通信応答設定情報の具体例が示される。
【００５５】
まず、テーブルＴＢＬ４には、仮想マシン１４（ＶＭ０３）のＩＤ「ＶＭ０３」（またはＩＰアドレス「ＩＰ０３」（図示せず））と、アクセスが許可されている送信元ＩＰアドレス「ＩＰ００１」「ＩＰ００２」と、ＭＡＣアドレス「ＭＡＣ０３」が登録される。ＭＡＣアドレスは、仮想マシン１４のＮＩＣに設定されているＭＡＣアドレスである。また、ＩＰアドレスは、ＩＰプロトコルのヘッダに含まれるアクセス元ＩＰ情報である。
【００５６】
さらに、テーブルＴＢＬ４には、ＴＣＰアクセス設定として、開放されているポート番号「８０８０」が記憶される。テーブル内のＴＣＰアクセス設定によれば、アクセスのＴＣＰヘッダ内のポート番号が「８０８０」の場合はアクセスを許可され、それ以外のポート番号「＊」の場合は拒否される。
【００５７】
また、テーブルＴＢＬ４には、ＨＴＴＰアクセス設定が２つ記憶される。第１の設定は、アクセスのＵＲＬが「ＵＲＬ１」の場合、認証されることはなく（Auth=None）、ＨＴＴＰコマンドの一種である接続メソッドが「ＧＥＴ」であればアクセスを許可され、例えば初期画面のＨＴＭＬファイルをクライアント端末に返信する設定である。第２の設定は、アクセスのＵＲＬが「ＵＲＬ２」で要求するＡＰＩが「Jenkins」の場合、認証がＢＡＳＩＣ認証で行われ、その際のアカウント情報（認証情報）はUserＩＤが「admin」、パスワードが「*****」であり、接続メソッドが「ＰＯＳＴ」であればアクセスを許可され、その接続メソッド「ＰＯＳＴ」のデータＤＡＴＡ２に応じた処理が実行されるという設定である。
【００５８】
テーブル内のアプリケーション設定によれば、ＨＴＴＰアクセス設定の第１の設定の場合、ＵＲＬと接続メソッドが一致すれば認証情報による認証を省略して、レスポンスコード「200 OK」を返信することが設定されている。また、第２の設定の場合、ＵＲＬと接続メソッドが一致し、認証情報による認証もパスすれば、レスポンスコード「202 Accepted」を返信することが設定されている。さらに、第２の設定の場合、アプリケーションは、接続メソッド「ＰＯＳＴ」のデータＤＡＴＡ２が「name=job001」の場合は「ＰＯＳＴ」の要求に対しイネーブルになり、「name=job002」の場合はディセーブルになることが設定されている。
【００５９】
図５，６に戻り、代理応答装置２４は、通信制御装置１２の通信設定を、仮想マシン１４宛てのアクセスを代理応答装置２４に転送するよう変更する（Ｓ２３）。具体的には、通信制御装置１２が保持するＡＲＰテーブルやルーティングテーブルを変更する。
【００６０】
図１、図３に示したとおり、代理応答装置２４のＮＩＣは、仮想マシン１４（ＶＭ０３）のＬＡＮ、ＮＥＴ＿ＶＭにも接続されている。そこで、具体例として、通信制御装置のＡＲＰテーブルを次のように変更する。
【００６１】
図１０は、代理応答装置の通信設定の変更例を示す図である。図１０には、変更前のＡＲＰテーブルＴＢＬ１０と変更後のＡＲＰテーブル１１の例が示されている。変更前のＡＲＰテーブルＴＢＬ１０では、仮想マシン１４（ＶＭ０３）のＩＰアドレス「ＩＰ０３」に対して、仮想マシン１４（ＶＭ０３）のＭＡＣアドレス「ＭＡＣ０３」が設定されている。これにより、通信制御装置１２は、仮想マシン１４（ＶＭ０３）のＩＰアドレス「ＩＰ０３」をアクセス先とするＩＰパケットに、仮想マシン１４（ＶＭ０３）のＭＡＣアドレス「ＭＡＣ０３」を送信先ＭＡＣアドレスとして付加して、第１のネットワークＮＥＴ＿ＶＭ内の仮想マシン１４（ＶＭ０３）に転送する。または、通信制御装置１２は、ＭＡＣアドレス「ＭＡＣ０３」に対応するポートからＩＰパケットを出力する。
【００６２】
変更後のＡＲＰテーブルＴＢＬ１１では、仮想マシン１４（ＶＭ０３）のＩＰアドレス「ＩＰ０３」に対して、代理応答装置２４のＭＡＣアドレス「ＭＡＣ０５」が設定されている。これにより、変更後、通信制御装置１２は、仮想マシン１４（ＶＭ０３）のＩＰアドレス「ＩＰ０３」をアクセス先とするＩＰパケットに、代理応答装置２４のＭＡＣアドレス「ＭＡＣ０５」を送信先ＭＡＣアドレスとして付加して、第１のネットワークＮＥＴ＿ＶＭ内の代理応答装置２４に転送することになる。または、通信制御装置１２は、ＭＡＣアドレス「ＭＡＣ０５」に対応するポートからＩＰパケットを出力することになる。
【００６３】
図５，図６に戻り、代理応答装置２４は、アイドル状態の通知Ｓ２１で通知されたアイドル状態の仮想マシンＩＤ（またはＩＰアドレス）に対応する仮想マシンをサスペンドするよう、仮想マシン管理サーバ２０に依頼する（Ｓ２４）。これに応答して、仮想マシン管理サーバ２０は、仮想マシン管理テーブルＴＢＬ１を参照して、対象の仮想マシン１４（ＶＭ０３）をサスペンドするよう、仮想マシン１４（ＶＭ０３）を生成するハイパーバイザＨＶ１に要求する（Ｓ２５）。そして、サスペンド後、代理応答装置２４は、サスペンド完了通知を受信する（Ｓ２６）。サスペンド処理は前述したとおりである。
【００６４】
以上により、代理応答装置２４は、仮想マシン１４（ＶＭ０３）宛てのアクセスに対して代理応答可能な状態になる（Ｓ２７）。
【００６５】
［代理応答し仮想マシンのレジュームが完了するまでの処理Ｓ２］
図５，図７を参照して、代理応答装置による代理応答処理と、仮想マシン１４をレジュームするまでの処理について説明する。
【００６６】
図１１は、クライアント端末から送信されたアクセスのパケットの一例を示す図である。パケットＰＫ１は、ＩＰプロトコルについて送信元ＩＰアドレス「ＩＰ００２」と送信先ＩＰアドレス「ＩＰ０３」を、ＴＣＰプロトコルについて送信元ポート番号「６７８８３」と送信先ポート番号「８０８０」を有する。さらに、パケットＰＫ１は、ＨＴＴＰプロトコルについて、送信先ＵＲＬ「ＵＲＬ１」と接続メソッド「ＧＥＴ」を有する。これらは、それぞれのプロトコルのヘッダ（ＩＰヘッダ、ＴＣＰヘッダ、ＨＴＴＰヘッダ）に格納される。したがって、パケットＰＫ１は、図９の通信応答設定管理テーブルＴＢＬ４のＨＴＴＰアクセス設定に含まれる、第１のアクセス設定に対応するパケットである。
【００６７】
パケットＰＫ２は、ＩＰプロトコル、ＴＣＰプロトコルについての情報は、パケットＰＫ１と同じであり、ＨＴＴＰプロトコルについて、送信先ＵＲＬ「ＵＲＬ２／Jenkins」、認証種類「ＢＡＳＩＣ」、認証情報（アカウント情報）「Ｕｓｅｒ＝Ａｄｍｉｎ、ＰＷ＝＊＊＊＊＊」、接続メソッド「ＰＯＳＴ」を有する。さらに、接続メソッド「ＰＯＳＴ」に添付されるデータ「ＤＡＴＡ２（job001）」を有する。パケットＰＫ２は、図９の通信応答設定管理テーブルＴＢＬ４のＨＴＴＰアクセス設定に含まれる、第２のアクセス設定に対応するパケットである。
【００６８】
図５，図６に戻り、クライアント端末１０が、仮想マシン１４（ＶＭ０３）のＷｅｂサービス宛てのアクセスを開始する（Ｓ３０）。このアクセスは、例えば、図１１に示したパケットである。通信制御装置１２は、このアクセスのパケットの送信先ＩＰアドレスが「ＩＰ０３」であるので、自身が保有するＡＲＰテーブルＴＢＬ１１を参照し、ＩＰアドレス「ＩＰ０３」に対応して登録されているＭＡＣアドレス「ＭＡＣ０５」に、第１のネットワークＮＷ＿ＶＭを介してパケットを転送する。
【００６９】
代理応答装置１４は、受信したアクセスが接続を許可するか否かの判定と、許可できる場合にどのような応答メッセージを返信すべきかの判断を行う。
【００７０】
図１２は、クライアント端末からのアクセスに対する代理応答装置の処理を示すフローチャート図である。図１２の各工程番号は、図７内の工程Ｓ４０，Ｓ４２，Ｓ４３に対応する処理であることを示す。
【００７１】
代理応答装置２４は、クライアント端末から送信されたアクセスのパケットの受信に応答して、図８のサスペンド仮想マシン管理テーブルＴＢＬ３を参照し、パケット内の送信先ＩＰアドレス「ＩＰ０３」に基づいて、ＩＰアドレス「ＩＰ０３」に対応する仮想マシンがサスペンド中の仮想マシンとして登録されているか確認する（Ｓ４０）。存在しない場合（Ｓ４０のＮＯ）は、そのアクセス開始要求を破棄する。登録されている場合、サスペンド状態の仮想マシン１４（ＶＭ０３）宛てのアクセスであることを確認する。
【００７２】
次に、代理応答装置２４は、自身が保持する通信応答設定管理テーブルＴＢＬ４を参照する（Ｓ４１）。さらに、代理応答装置２４は、通信応答設定管理テーブルＴＢＬ４に基づいて、代理受信したアクセスの通信を許可するか否かを判定する（Ｓ４２）。具体的には、図１２に示されるとおり、受信パケット内の送信元ＩＰアドレスが、通信応答設定管理テーブルＴＢＬ４内のアクセスを許可されているＩＰアドレス（図９中はＩＰ００１，ＩＰ００２）と一致するか否か判定する（Ｓ４２＿１）。一致すれば接続先ＩＰアドレスが正しいことが確認される。
【００７３】
さらに、図１２に示されるとおり、受信パケット内の接続先ポート番号が、通信応答設定管理テーブルＴＢＬ４内のＴＣＰアクセス設定内のポート番号「８０８０」と一致するか否か判定する（Ｓ４２＿２）。一致すれば接続先ポート番号が正しいことが確認される。いずれかが一致しない場合、そのアクセス要求は正しくないので、例えば、アクセス要求のパケットを破棄し、何も応答しない。ここまではＴＣＰ／ＩＰプロトコルに基づいてアクセス要求を許可するか否かの判定である。
【００７４】
代理応答装置２４は、代理受信したアクセス要求を許可すると判定したら（Ｓ４２）、次に、通信応答設定テーブルＴＢＬ４に基づいて、アクセス要求に対してどのような応答メッセージを返信すべきかの判断を行う（Ｓ４３）。この応答内容の判断Ｓ４３は、ＨＴＴＰプロトコルに基づいて行われる。
【００７５】
具体的には、図１２に示されるとおり、代理応答装置２４は、受信パケットのＨＴＴＰヘッダ内の接続先ＵＲＬと、通信応答設定管理テーブルＴＢＬ４のＨＴＴＰアクセス設定内の接続先ＵＲＬとが一致するか否か判定する（Ｓ４３＿１）。一致すれば接続先ＵＲＬが正しいことを確認する（Ｓ４３＿１のＹＥＳ）。不一致であれば、接続先ＵＲＬが正しくないことを確認する（Ｓ４３＿１のＮＯ）。この場合、レスポンスコード「404 Not Found」が応答内容であると判断され、その応答が返信される。
【００７６】
さらに、代理応答装置２４は、受信パケットのＨＴＴＰヘッダ内の接続メソッドと、通信応答設定管理テーブルＴＢＬ３のＨＴＴＰアクセス設定内の、接続先ＵＲＬに対応する接続メソッドとが一致するか否か判定する（Ｓ４３＿２）。例えば、図１１の受信パケットＰＫ１の場合は、ＵＲＬが「ＵＲＬ１」で接続メソッドが「ＧＥＴ」であり、通信応答設定管理テーブルＴＢＬ４内の第１の設定における「ＵＲＬ１」に対応する接続メソッドも「ＧＥＴ」であるので、接続メソッドは一致すると判定される。図１１の受信パケットＰＫ２の場合も、同様の判断が行われる。不一致の場合（Ｓ４３＿２のＮＯ）、レスポンスコード「405 Method Not Allowed」が応答内容であると判断され、その応答が返信される。
【００７７】
また、代理応答装置２４は、認証情報が正しいか否かを判定する（Ｓ４３＿３）。例えば、図１１の受信パケットＰＫ２の場合は、認証種類「ＢＡＳＩＣ」とその認証情報「User=Admin, PW=*****」が、通信応答設定管理テーブルＴＢＬ３のＨＴＴＰアクセス設定内の第２の設定における認証種類「ＢＡＳＩＣ」とその認証情報「User=Admin, PW=*****」と一致すると判定される。一方、受信パケットＰＫ１の場合は、認証種類と認証情報が含まれていないが、管理テーブルＴＢＬ３のＨＴＴＰアクセス設定内の第１の設定には認証設定がないので、一致すると判定される。不一致の場合（Ｓ４３＿３のＮＯ）、レスポンスコード「401 Unauthorized」が応答内容であると判断され、その応答が返信される。
【００７８】
認証情報も正しい場合（Ｓ４３＿３のＹＥＳ）、代理応答装置２４は、通信応答設定管理テーブルＴＢＬ４内のアプリケーション設定に示されているレスポンスコード「200 OK」または「202 Accepted」のいずれかを、アクセス要求のＵＲＬに対応するレスポンスコードを応答内容と判断し、その応答を返信する。
【００７９】
上記のアクセス要求が正しくない場合の３つのレスポンスコードは、それぞれ、ＨＴＴＰステータスコードで定義されている、パケットが要求するＵＲＬのリソースがない場合の「404 Not Found」、許可されてないメソッドの場合の「405 Method Not Allowed」、認証が正しくない場合の「401 Unauthorized」に対応する。したがって、代理応答装置２４は、管理テーブルＴＢＬ３を参照することなくどのリスポンスコードで応答すべきか判断することができる。
【００８０】
一方、アクセス要求が正しい場合の２つのレスポンスコードについては、ＨＴＴＰアクセス設定の第１の設定の場合の「200 OK」、第２の設定の場合の「202 Accepted」それぞれを、受信応答設定管理テーブルＴＢＬ４の設定に基づいて判断する。第１の設定は、接続先ＵＲＬが「ＵＲＬ１」とのみ設定されＡＰＩ宛てではない。一方、第２の設定は、接続先ＵＲＬが「ＵＲＬ２／Jenkins」でありＡＰＩ宛てである。第１の設定のようにＡＰＩ宛てでなくても、非同期処理してレスポンスコードを短時間で応答することがある。
【００８１】
代理応答装置２４は、通信応答設定管理テーブルＴＢＬ４を参照して、受信パケットの内容と照合するだけであり、これらのレスポンスコードを短いタイムアウト時間内に返信することができる。これらのレスポンスコードは、代理応答装置が返信する最初の応答である。代理応答装置２４は、仮に、応答内容を判断できない場合は、再送要求（リトライ要求）などを返信するようにしてもよい。
【００８２】
図７に戻り、代理応答装置２４は、アクセス要求が適切であると判断して、レスポンスコード「200 OK」または「202 Accepted」を応答した場合、アクセスが要求している処理を行って必要な応答を行う必要がある。ただし、代理応答装置２４は、アクセスが要求している処理を行うことはできない。
【００８３】
そこで、サスペンド中の仮想マシンをレジュームして代理応答を終了するために、代理応答装置２４は、アクセス先のサスペンド中の仮想マシン１４（ＶＭ０３）のレジューム依頼を仮想マシン管理サーバ２０に送信する（Ｓ３１）。これに応答して、仮想マシン管理サーバ２０は、仮想マシン１４（ＶＭ０３）のレジューム処理を物理マシンＰＭ１のハイパーバイザＨＶ１に依頼する（Ｓ３２）。
【００８４】
そして、代理応答装置２４は、自身が保持するコネクション情報管理テーブルにアクセス要求による接続を登録する（Ｓ４４）。コネクション情報管理テーブルは、代理応答装置がサスペンド中の仮想マシンに代わって代理受信した全てのコネクションのログを格納する。また、代理応答装置２４は、自身が保持する代理受信データ管理テーブルに代理受信内容と応答内容を含む代理受信ログを登録する（Ｓ４５）。
【００８５】
図７の例では、代理応答装置２４が決定した応答内容で代理応答を、クライアント端末宛てに返信している（Ｓ３３）。さらに、クライアント端末から継続してアクセスが発生すると、代理応答装置２４は、そのアクセスに対応する応答を決定し、代理受信データ管理テーブルにその代理受信内容を登録し（Ｓ４４，Ｓ４５）、再度代理応答を返信する（Ｓ３３）。
【００８６】
そのうち、仮想マシン管理サーバ２０が、仮想マシン１４（ＶＭ０３）のレジュームが完了したことをハイパーバイザＨＶ１から受信すると（Ｓ３４）、代理応答装置２４にレジューム完了検知を送信する（Ｓ３５）。これに応答して、代理応答装置２４は、通信制御装置１２に通信設定変更を要求する（Ｓ３６）。通信制御装置１２は、ＡＲＰテーブル内のＩＰアドレス「ＩＰ０３」に対応するＭＡＣアドレスを代理応答装置の「ＭＡＣ０５」から仮想マシン１４（ＶＭ０３）の「ＭＡＣ０３」に書き換えて、図１０のＡＲＰテーブルＴＢＬ１１からＴＢＬ１０に変更する。さらに、代理応答装置２４は、コネクション情報管理テーブルＴＢＬ５と代理受信データ管理テーブルＴＢＬ６の情報を、レジュームした仮想マシン１４（ＶＭ０３）に転送し（Ｓ３７）、仮想マシンはその情報を記憶する。
【００８７】
この結果、通信制御装置は、以降のＩＰアドレス「ＩＰ０３」宛てのアクセス要求を、レジュームされた仮想マシン１４（ＶＭ０３）に転送する。また、仮想マシン１４（ＶＭ０３）は、コネクション情報と代理受信データを参照し、保留になっているアクセス要求に対する処理を実行し、処理結果をアクセス要求元のクライアント端末に返信する（Ｓ３８）。例えば、仮想マシン１４は、ＨＴＴＰアクセス設定の第１の設定のＵＲＬ１宛てのアクセス要求に対しては、初期画像のＨＴＭＬファイルを返信し、第２の設定のＵＲＬ２／Jenkins宛てのアクセス要求に対しては、ＡＰＩのJenkinsを実行し、実行結果を応答する。
【００８８】
代理応答装置２４は、アクセスを受信した際、サスペンド仮想マシン管理テーブルを参照して、アクセス先の仮想マシンがサスペンド中であることを確認した時点で（Ｓ４０）、その仮想マシンのレジューム依頼を仮想マシン管理サーバ２０に送信してもよい。それにより、いち早く仮想マシンのレジューム処理を開始することができる。
【００８９】
図１３は、コネクション情報管理テーブルと代理受信データ管理テーブルの具体例を示す図である。コネクション情報管理テーブルＴＢＬ５の例では、コネクションＩＤ（例えばセッションＩＤ）毎に、宛先の仮想マシンＩＤ、送信元ＩＰアドレス、送信先ＩＰアドレス、送信元ポート番号、送信先ポート番号、トランスポート層のプロトコルの種類、接続状態（切断または受信中）、応答状態（応答済み、未応答）などのコネクションログが記録される。この応答状態に応じて、仮想マシン１４は、どのコネクションが未応答であるかを検出し、アクセスに対する応答内容を決定して応答する。
【００９０】
代理受信データ管理テーブルＴＢＬ６の例では、コネクションＩＤ毎に、受信データＩＤと、宛先の仮想マシンＩＤ、受信時刻、アプリケーション層のプロトコルの種類、ＵＲＬ、認証データ、受信データ、応答データなどの代理受信データとそれに対する応答内容のログが記録される。この応答データに応じて、仮想マシン１４は、アクセス要求のどの処理を再開し、処理結果を応答すべきかを決定し、処理を再開することができる。
【００９１】
以上のとおり、本実施の形態によれば、物理マシン上に複数の仮想マシンを起動し、仮想マシンによるサービスシステムを構築するクラウドコンピューティングにおいて、複数のクライアント端末からアクセス要求を受けるサービスシステムの仮想マシンがアイドル状態の場合、その仮想マシンをサスペンドして仮想マシンのＣＰＵやメモリのリソースを開放する。サスペンド中に発生するアクセス要求に対しては、代理応答装置がアクセス要求を受付、非同期処理して短時間で最初の応答を返信する。したがって、アクセス要求に対してタイムアウトが発生することが抑制され、レジューム後に仮想マシンがアクセス要求のＡＰＩを実行しても、クライアント端末側によって通常の応答動作と区別されることはない。
【００９２】
以上の実施の形態をまとめると、次の付記のとおりである。
【００９３】
（付記１）
コンピュータに、
仮想マシンのアイドル状態が検知された場合、前記仮想マシンをサスペンドまたは一時停止することを依頼し、
前記仮想マシンをサスペンドまたは一時停止するときに、端末装置と前記仮想マシンとの間の通信を制御する通信制御装置の設定情報を、前記端末装置から前記サスペンドまたは一時停止される仮想マシンに対するアクセスを前記コンピュータに転送するように変更し、
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、前記サスペンドまたは一時停止された仮想マシンによる前記端末装置に対する通信応答に関する通信応答設定情報に基づいて、前記端末装置に対する応答を送信し、
前記アクセスの転送に応答して、前記サスペンドまたは一時停止された仮想マシンをレジュームすることを依頼する、
ことを有する処理を実行させる代理応答プログラム。
【００９４】
（付記２）
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、さらに、前記通信応答設定情報に基づいて、前記転送されたアクセスを許可できるか否かを確認し、前記転送されたアクセスの送信元及び送信先情報を有するコネクションデータを記録する、
ことを前記コンピュータに実行させる、付記１に記載の代理応答プログラム。
【００９５】
（付記３）
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、さらに、前記通信応答設定情報に基づいて、前記転送されたアクセスに対する応答内容を識別し、前記転送されたアクセスの受信データと前記受信データ対応する前記端末装置に対する応答データとを記録する、ことを前記コンピュータに実行させる、付記２に記載の代理応答プログラム。
【００９６】
（付記４）
前記仮想マシンのレジュームが完了した際に、
前記通信制御装置の設定情報を前記変更前の状態に戻し、
記録した前記コネクションデータと前記受信データと前記応答データとを、前記レジュームが完了した仮想マシンに送信する、ことを前記コンピュータに実行させる、付記３に記載の代理応答プログラム。
【００９７】
（付記５）
前記仮想マシンをサスペンドまたは一時停止する際に、前記端末装置から前記通信応答設定情報を取得する、ことを前記コンピュータに実行させる、付記１に記載の代理応答プログラム。
【００９８】
（付記６）
前記通信制御装置の設定情報を変更することは、前記通信制御装置内の前記仮想マシンの第１のＭＡＣアドレスと前記仮想マシンの第１のＩＰアドレスの対応情報を、前記コンピュータの第２のＭＡＣアドレスと前記仮想マシンの第１のＩＰアドレスの対応情報に変更することを含む、付記１に記載の代理応答プログラム。
【００９９】
（付記７）
前記仮想マシンのサスペンドまたは一時停止は、前記仮想マシンのゲストオペレーティングシステムを前記仮想マシンが構築されている物理マシンのメモリから退避させて前記仮想マシンに割り当てられていたメモリとプロセッサとを開放することを含む、付記１に記載の代理応答プログラム。
【０１００】
（付記８）
前記仮想マシンと前記端末装置は、同じ企業体または組織体に属する、付記１に記載の代理応答プログラム。
【０１０１】
（付記９）
前記端末装置に対する応答の送信を、非同期処理で前記コンピュータに実行させる、付記１に記載の代理応答プログラム。
【０１０２】
（付記１０）
仮想マシンのアイドル状態が検知された場合、前記仮想マシンをサスペンドまたは一時停止することを依頼し、
前記仮想マシンをサスペンドまたは一時停止するときに、端末装置と前記仮想マシンとの間の通信を制御する通信制御装置の設定情報を、前記端末装置から前記サスペンドまたは一時停止される仮想マシンに対するアクセスを自身に転送するように変更し、
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、前記サスペンドまたは一時停止された仮想マシンによる前記端末装置に対する通信応答に関する通信応答設定情報に基づいて、前記端末装置に対する応答を送信し、
前記アクセスの転送に応答して、前記サスペンドまたは一時停止された仮想マシンをレジュームすることを依頼する、
処理を有する代理応答方法。
【０１０３】
（付記１１）
プロセッサと、
仮想マシンのアイドル状態が検知された場合、前記仮想マシンをサスペンドまたは一時停止することを依頼し、
前記仮想マシンをサスペンドまたは一時停止するときに、端末装置と前記仮想マシンとの間の通信を制御する通信制御装置の設定情報を、前記端末装置から前記サスペンドまたは一時停止される仮想マシンに対するアクセスを自身に転送するように変更し、
前記サスペンドまたは一時停止された仮想マシンに対するアクセスが転送された場合、前記サスペンドまたは一時停止された仮想マシンによる前記端末装置に対する通信応答に関する通信応答設定情報に基づいて、前記端末装置に対する応答を送信し、
前記アクセスの転送に応答して、前記サスペンドまたは一時停止された仮想マシンをレジュームすることを依頼する、
処理を前記プロセッサに実行させる代理応答プログラムと、を有する代理応答装置。
【符号の説明】
【０１０４】
ＳＦ：サーバ施設
ＰＭ０，ＰＭ１：物理マシン、情報処理装置
ＶＭ０３−ＶＭ０５：仮想マシン
１０：クライアント端末
１２：通信制御装置、Ｌ３スイッチ
２０：仮想マシン管理サーバ
２２：アイドル監視装置
２４：代理応答装置
【図１】
2017033331.tif 000003
【図２】
2017033331.tif 000004
【図３】
2017033331.tif 000005
【図４】
2017033331.tif 000006
【図５】
2017033331.tif 000007
【図６】
2017033331.tif 000008
【図７】
2017033331.tif 000009
【図８】
2017033331.tif 000010
【図９】
2017033331.tif 000011
【図１０】
2017033331.tif 000012
【図１１】
2017033331.tif 000013
【図１２】
2017033331.tif 000014
【図１３】
2017033331.tif 000015