(57)【要約】【課題】仮想サーバの起動指示が出されてからサービスの提供が可能になるまでの間の資源の不足を解消する。【解決手段】仮想サーバ１３の稼動状況を監視して、仮想サーバ１３におけるサービスの提供の開始日時及び終了日時を収集する稼動状況情報収集部２３と、仮想サーバ１３の起動時間を記憶する仮想サーバ情報記憶部４５と、仮想サーバ１３におけるサービスの平均処理時間及び仮想サーバ１３の平均起動時間に基づいて、現時点から仮想サーバ１３の平均起動時間経過後に受け付けると予測されるリクエスト数のサービスを、予め設定されている保証期間内に終了させるのに必要な仮想サーバ１３の数を算出する算出部４２と、現在起動中の仮想サーバ１３の数が算出部４２による算出結果に満たない場合に仮想サーバ１３を起動する仮想サーバ起動部４３と、を有する。【選択図】図１
2012198843.tif 000002
【特許請求の範囲】
【請求項１】
要求側プロセスにサービスを提供するプログラムであるサービス提供プログラムを実行する仮想サーバが複数起動される物理サーバと、
要求側プロセスからのサービスの提供要求を受け付け、受け付けた提供要求に応じて該提供要求に対応するサービス提供プログラムをいずれかの前記仮想サーバに実行させてサービス提供プロセスを生成する受付手段と、
前記仮想サーバの起動に要した時間を含む稼動サーバ情報を記憶する記憶手段と、
現在起動されている前記仮想サーバの利用の状況に関する利用状況情報を収集する収集手段と、
前記利用状況情報から得られる前記仮想サーバにおけるサービス提供プロセスの処理時間の平均値及び前記稼動サーバ情報から得られる前記仮想サーバの起動時間の平均値に基づいて、現時点から前記仮想サーバの平均起動時間経過後に受け付けると予測される提供要求数のサービス提供プロセスを、予め設定されている保証期間内に終了させるのに必要な前記仮想サーバの数を算出する算出手段と、
前記算出手段における算出結果に基づき前記仮想サーバを起動する起動手段と、
を有することを特徴とする仮想サーバ調整システム。
【請求項２】
前記算出手段は、前記利用状況情報から得られる一定期間内に受け付けたサービスの提供要求数の遷移に基づき、平均起動時間経過後におけるサービスの予測される提供要求数を算出することを特徴とする請求項１に記載の仮想サーバ調整システム。
【請求項３】
前記算出手段は、現在受け付けて処理が終了していないサービスの提供要求数、前記仮想サーバの起動時間の平均値及び受け付けたサービスの提供要求数の遷移に基づいて、前記仮想サーバの平均起動時間経過後に受け付けると予測されるサービスの提供要求数を算出することを特徴とする請求項１に記載の仮想サーバ調整システム。
【請求項４】
要求側プロセスにサービスを提供するプログラムであるサービス提供プログラムを実行する仮想サーバが複数起動される物理サーバと、要求側プロセスからのサービスの提供要求を受け付け、受け付けた提供要求に応じて該提供要求に対応するサービス提供プログラムをいずれかの前記仮想サーバに実行させてサービス提供プログラムを生成する受付手段と、前記仮想サーバの起動に要した時間を含む稼動サーバ情報を記憶する記憶手段と、現在起動されている前記仮想サーバの利用の状況に関する利用状況情報を収集する収集手段と、を有する仮想サーバ調整システムにおける仮想サーバ制御装置において、
前記利用状況情報から得られる前記仮想サーバにおけるサービス提供プロセスの処理時間の平均値及び前記稼動サーバ情報から得られる前記仮想サーバの起動時間の平均値に基づいて、前記仮想サーバの平均起動時間経過後に受け付けると予測される提供要求数のサービス提供プロセスを、予め設定されている保証期間内に終了させるのに必要な前記仮想サーバの数を算出する算出手段と、
前記算出手段における算出結果に基づき前記仮想サーバを起動する起動手段と、
を有することを特徴とする仮想サーバ制御装置。
【請求項５】
要求側プロセスにサービスを提供するプログラムであるサービス提供プログラムを実行する仮想サーバが複数起動される物理サーバと、要求側プロセスからのサービスの提供要求を受け付け、受け付けた提供要求に応じて該提供要求に対応するサービス提供プログラムをいずれかの前記仮想サーバに実行させてサービス提供プロセスを生成する受付手段と、前記仮想サーバの起動に要した時間を含む稼動サーバ情報を記憶する記憶手段と、現在起動されている前記仮想サーバの利用の状況に関する利用状況情報を収集する収集手段と、を有する仮想サーバ調整システムに含まれるコンピュータを、
前記利用状況情報から得られる前記仮想サーバにおけるサービス提供プロセスの処理時間の平均値及び前記稼動サーバ情報から得られる前記仮想サーバの起動時間の平均値に基づいて、前記仮想サーバの平均起動時間経過後に受け付けると予測される提供要求数のサービスプロセスを、予め設定されている保証期間内に終了させるのに必要な前記仮想サーバの数を算出する算出手段、
前記算出手段における算出結果に基づき前記仮想サーバを起動する起動手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想サーバ調整システム、仮想サーバ制御装置及びプログラムに関する。
【背景技術】
【０００２】
コンピュータの資源（リソース）の効率的利用を図るために、物理的に１台の物理サーバを仮想的な複数台のサーバとして使用する場合がある。この仮想的なサーバは、仮想サーバあるいは仮想マシンと呼ばれ、要求側プロセスからの要求に応じてサービスを提供するためのサービス提供プログラムを実行してサービス提供プロセスを生成する。このような仮想サーバを複数利用してサービスを提供するシステムでは、システムのリソース不足を検出すると、仮想サーバに配分するリソースを追加するスケールアップや、仮想サーバを動作させる物理サーバの台数を増やすスケールアウトを行う。たとえば特許文献１では、起動中の仮想サーバのリソースの消費状況、すなわち仮想サーバにかかる負荷を常時監視し、負荷が管理者が予め設定した閾値を超えるなどしてシステムのリソースの不足を検出すると、仮想サーバのリソース配分方式に応じてスケールアップまたはスケールアウトを行う技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−３３２９２号公報
【特許文献２】特開２００８−３３８５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、仮想サーバの起動指示が出されてからサービスの提供が可能になるまでの間の資源の不足を解消することを目的とする。
【課題を解決するための手段】
【０００５】
本発明に係る仮想サーバ調整システムは、要求側プロセスにサービスを提供するプログラムであるサービス提供プログラムを実行する仮想サーバが複数起動される物理サーバと、要求側プロセスからのサービスの提供要求を受け付け、受け付けた提供要求に応じて該提供要求に対応するサービス提供プログラムをいずれかの前記仮想サーバに実行させてサービス提供プロセスを生成する受付手段と、前記仮想サーバの起動に要した時間を含む稼動サーバ情報を記憶する記憶手段と、現在起動されている前記仮想サーバの利用の状況に関する利用状況情報を収集する収集手段と、前記利用状況情報から得られる前記仮想サーバにおけるサービス提供プロセスの処理時間の平均値及び前記稼動サーバ情報から得られる前記仮想サーバの起動時間の平均値に基づいて、現時点から前記仮想サーバの平均起動時間経過後に受け付けると予測される提供要求数のサービス提供プロセスを、予め設定されている保証期間内に終了させるのに必要な前記仮想サーバの数を算出する算出手段と、前記算出手段における算出結果に基づき前記仮想サーバを起動する起動手段と、を有することを特徴とする。
【０００６】
また、前記算出手段は、前記利用状況情報から得られる一定期間内に受け付けたサービスの提供要求数の遷移に基づき、平均起動時間経過後におけるサービスの予測される提供要求数を算出することを特徴とする。
【０００７】
また、前記算出手段は、現在受け付けて処理が終了していないサービスの提供要求数、前記仮想サーバの起動時間の平均値及び受け付けたサービスの提供要求数の遷移に基づいて、前記仮想サーバの平均起動時間経過後に受け付けると予測されるサービスの提供要求数を算出することを特徴とする。
【０００８】
本発明に係る仮想サーバ制御装置は、要求側プロセスにサービスを提供するプログラムであるサービス提供プログラムを実行する仮想サーバが複数起動される物理サーバと、要求側プロセスからのサービスの提供要求を受け付け、受け付けた提供要求に応じて該提供要求に対応するサービス提供プログラムをいずれかの前記仮想サーバに実行させてサービス提供プログラムを生成する受付手段と、前記仮想サーバの起動に要した時間を含む稼動サーバ情報を記憶する記憶手段と、現在起動されている前記仮想サーバの利用の状況に関する利用状況情報を収集する収集手段と、を有する仮想サーバ調整システムにおける仮想サーバ制御装置において、前記利用状況情報から得られる前記仮想サーバにおけるサービス提供プロセスの処理時間の平均値及び前記稼動サーバ情報から得られる前記仮想サーバの起動時間の平均値に基づいて、前記仮想サーバの平均起動時間経過後に受け付けると予測される提供要求数のサービス提供プロセスを、予め設定されている保証期間内に終了させるのに必要な前記仮想サーバの数を算出する算出手段と、前記算出手段における算出結果に基づき前記仮想サーバを起動する起動手段と、を有することを特徴とする。
【０００９】
本発明に係るプログラムは、要求側プロセスにサービスを提供するプログラムであるサービス提供プログラムを実行する仮想サーバが複数起動される物理サーバと、要求側プロセスからのサービスの提供要求を受け付け、受け付けた提供要求に応じて該提供要求に対応するサービス提供プログラムをいずれかの前記仮想サーバに実行させてサービス提供プロセスを生成する受付手段と、前記仮想サーバの起動に要した時間を含む稼動サーバ情報を記憶する記憶手段と、現在起動されている前記仮想サーバの利用の状況に関する利用状況情報を収集する収集手段と、を有する仮想サーバ調整システムに含まれるコンピュータを、前記利用状況情報から得られる前記仮想サーバにおけるサービス提供プロセスの処理時間の平均値及び前記稼動サーバ情報から得られる前記仮想サーバの起動時間の平均値に基づいて、前記仮想サーバの平均起動時間経過後に受け付けると予測される提供要求数のサービスプロセスを、予め設定されている保証期間内に終了させるのに必要な前記仮想サーバの数を算出する算出手段、前記算出手段における算出結果に基づき前記仮想サーバを起動する起動手段、として機能させるためのものである。
【発明の効果】
【００１０】
請求項１記載の発明によれば、仮想サーバの起動指示が出されてからサービスの提供が可能になるまでの間の資源の不足を解消することができる。
【００１１】
請求項２記載の発明によれば、サービスの提供要求数の遷移にという過去の実績に基づいて平均起動時間経過後におけるサービスの予測される提供要求数を算出することができる。
【００１２】
請求項３記載の発明によれば、仮想サーバの平均起動時間経過後に受け付けると予測されるサービスの提供要求数を算出することができる。
【００１３】
請求項４記載の発明によれば、仮想サーバの起動指示が出されてからサービスの提供が可能になるまでの間の資源の不足を解消することができる。
【００１４】
請求項５記載の発明によれば、仮想サーバの起動指示が出されてからサービスの提供が可能になるまでの間の資源の不足を解消することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明に係る仮想サーバ調整システムの一実施の形態を示したブロック構成図である。
【図２】本実施の形態における監視サーバを形成するサーバコンピュータのハードウェア構成図である。
【図３】本実施の形態におけるリソース最適化処理を示したフローチャートである。
【発明を実施するための形態】
【００１６】
以下、図面に基づいて、本発明の好適な実施の形態について説明する。
【００１７】
図１は、本発明に係る仮想サーバ調整システムの一実施の形態を示したブロック構成図である。図１には、クラウド基盤１２と、クライアント１４と、ロードバランサ２０と、監視サーバ３０と、コントローラ４０と、が示されている。クラウド基盤１２には、仮想サーバ１３が複数起動される物理サーバが複数台含まれている。仮想サーバ１３は、物理的なサーバの全部又は一部の資源（リソース）で構成される仮想的な１台のサーバコンピュータであり、要求側プロセスにサービスを提供するサービス提供プログラムが実行される。クライアント１４は、要求側プロセスが動作するコンピュータである。なお、本システムは、複数台のクライアントによって利用可能であるが、各クライアントは同様の構成でよいので、図１には１台のクライアント１４のみ図示した。
【００１８】
ロードバランサ２０は、常時稼動しており、要求側プロセスからのサービスの提供要求を受け付け、受け付けたサービスをいずれかの仮想サーバ１３に実行させる受付手段である。図１では、ロードバランサ２０をクラウド基盤１２の外部に設けたが、内部に設けてもよい。本実施の形態におけるロードバランサ２０は、要求受付部２１、サービス実行制御部２２、稼動状況情報収集部２３、稼動状況情報提供部２４、仮想サーバ情報取得部２５、稼動状況情報記憶部２６及び仮想サーバ情報記憶部２７を有する。要求受付部２１は、クライアント１４の要求側プロセスから送られてくるサービスの提供要求を受け付ける。サービス実行制御部２２は、受け付けたサービスを提供するサービス提供プログラムを、各記憶部２６，２７に記憶されている情報を参照して選択したいずれかの仮想サーバ１３に実行させてサービス提供プロセスを生成する。稼動状況情報収集部２３は、各仮想サーバ１３の稼動状況を監視し、その監視により各仮想サーバ１３における稼動状況に関する稼動状況情報を収集し、稼動状況情報記憶部２６に登録する。稼働状況情報の詳細は後述する。稼動状況情報提供部２４は、収集された稼動状況情報を監視サーバ３０へ送信することで提供する。仮想サーバ情報取得部２５はコントローラ４０から送られてくる仮想サーバ情報を受信することで取得し、仮想サーバ情報記憶部２７に保存する。
【００１９】
監視サーバ３０は、常時稼動し、本システム全体を監視する。監視サーバ３０は、稼動状況情報取得部３１、実績情報提供部３２及び稼動状況情報記憶部３３を有する。稼動状況情報取得部３１は、ロードバランサ２０から送られてくる稼動状況情報を受信することで取得すると、稼動状況情報記憶部３３に保存する。実績情報提供部３２は、稼動状況情報に基づきコントローラ４０が起動する仮想サーバ１３の数を算出する際に用いるデータを必要により計算し、仮想サーバ１３の稼動状況に関する実績情報としてコントローラ４０に送信することで提供する。
【００２０】
コントローラ４０は、常時稼動し、起動されている仮想サーバ１３の稼動状況に関する実績を参照に、仮想サーバ１３の起動及び停止を行うことで、サービスの提供に必要な仮想サーバ１３の最適化を図る仮想サーバ制御装置である。コントローラ４０は、実績情報取得部４１、算出部４２、仮想サーバ起動部４３、仮想サーバ情報提供部４４及び仮想サーバ情報記憶部４５を有する。実績情報取得部４１は、監視サーバ３０から送られてくる実績情報を受信することで取得する。算出部４２は、仮想サーバ１３の平均起動時間経過後に受け付けると予測される提供要求数のサービスを、予め設定されている保証期間内に終了させるのに必要な仮想サーバ１３の数を算出する算出手段である。仮想サーバ起動部４３は、仮想サーバ１３を起動する。起動には、仮想サーバ１３の新規起動と、既存の仮想サーバ１３の機能や仕様の変更に伴う仮想サーバ１３の再起動が含まれる。また、仮想サーバ１３を起動するというものの、正確には、仮想サーバ１３の起動指示をクラウド基盤１２に含まれる管理サーバ（図示せず）へ送信することによって、管理サーバに、指示したリソースで仮想サーバ１３を起動させるが、本実施の形態では、便宜的に仮想サーバ起動部４３が仮想サーバ１３を起動すると表現する場合もある。本実施の形態における仮想サーバ起動部４３は、現在起動されている仮想サーバ１３の数が算出部４２により算出された数に達していない場合に、その数に達するように仮想サーバ１３を起動する。仮想サーバ情報提供部４４は、現在起動されている稼動サーバに関する稼動サーバ情報をロードバランサ２０に送信することで提供する。仮想サーバ情報記憶部４５には、起動された仮想サーバ１３に関する稼動サーバ情報が記憶される。
【００２１】
図２は、本実施の形態における監視サーバ３０を形成するサーバコンピュータのハードウェア構成図である。本実施の形態において監視サーバ３０を形成するサーバコンピュータは、従前から存在する汎用的なハードウェア構成で実現できる。すなわち、コンピュータは、図２に示したようにＣＰＵ１、ＲＯＭ２、ＲＡＭ３、ハードディスクドライブ（ＨＤＤ）４を接続したＨＤＤコントローラ５、入力手段として設けられたマウス６とキーボード７、及び表示装置として設けられたディスプレイ８をそれぞれ接続する入出力コントローラ９、通信手段として設けられたネットワークコントローラ１０を内部バス１１に接続して構成される。
【００２２】
また、コントローラ４０及びクライアント１４も同じコンピュータであることから、そのハードウェアは、図２に示したように構成してもよい。また、ロードバランサ２０は、入力手段を設けなくてもよいかもしれないが、同じコンピュータであることから、そのハードウェアは、図２に示したように構成してもよい。
【００２３】
ロードバランサ２０における各構成要素２１〜２５は、ロードバランサ２０を形成するコンピュータと、コンピュータに搭載されたＣＰＵ１で動作するプログラムとの協調動作により実現される。また、各記憶部２６，２７は、ロードバランサ２０に搭載されたＨＤＤ４又はＲＡＭ３で実現してよい。あるいは、各記憶部２６，２７を別の装置に設け、その別の装置にアクセスするように構成してもよい。
【００２４】
監視サーバ３０における各構成要素３１〜３２は、監視サーバ３０を形成するコンピュータと、コンピュータに搭載されたＣＰＵ１で動作するプログラムとの協調動作により実現される。また、稼動状況情報記憶部３３は、監視サーバ３０に搭載されたＨＤＤ４又はＲＡＭ３で実現してよい。あるいは、稼動状況情報記憶部３３を別の装置に設け、その別の装置にアクセスするように構成してもよい。
【００２５】
コントローラ４０における各構成要素４１〜４４は、コントローラ４０を形成するコンピュータと、コンピュータに搭載されたＣＰＵ１で動作するプログラムとの協調動作により実現される。また、仮想サーバ情報記憶部４５は、コントローラ４０に搭載されたＨＤＤ４又はＲＡＭ３で実現してよい。あるいは、仮想サーバ情報記憶部４５を別の装置に設け、その別の装置にアクセスするように構成してもよい。
【００２６】
また、本実施の形態で用いるプログラムは、通信手段により提供することはもちろん、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体に格納して提供することも可能である。通信手段や記録媒体から提供されたプログラムはコンピュータにインストールされ、コンピュータのＣＰＵがインストールプログラムを順次実行することで各種処理が実現される。
【００２７】
次に、本実施の形態における動作について説明する。本実施の形態は、コントローラ４０が必要な仮想サーバ１３の数を決定することを特徴とするが、最初に、仮想サーバ１３によりサービスが提供される通常のシステム運用時における動作について説明する。
【００２８】
クラウド基盤１２が提供しているサービスを利用したいクライアント１４の要求側プロセスは、サービスの提供要求をロードバランサ２０へ送信する。ロードバランサ２０における要求受付部２１は、クライアント１４の要求側プロセスから送信されてきた提供要求を受け付けると、仮想サーバ情報記憶部２７に登録されている仮想サーバ情報及び稼動状況情報記憶部２６に記憶されている稼動状況情報を参照に、要求されたサービスを提供する仮想サーバ１３を決定し、その仮想サーバ１３にサービスの提供を指示する。
【００２９】
仮想サーバ情報には、現在起動されている各仮想サーバ１３のＣＰＵの種類、コア数、メモリ、ハードディスクの容量等の構成、つまり各仮想サーバ１３に割り当てられたハードウェア資源、また実行可能なサービス提供プログラム等のソフトウェア資源等各仮想サーバ１３の資源（リソース）に関する情報が含まれている。また、仮想サーバ情報には、コントローラ４０が仮想サーバ１３を新規に起動する要求をしてから、クライアント１４の要求側プロセスがその仮想サーバ１３を利用可能となるまでに要した時間（起動時間）が含まれている。仮想サーバ情報取得部２５は、コントローラ４０が仮想サーバ１３を新たに起動する度に、また既存の仮想サーバ１３の資源を変更して再起動する度に仮想サーバ情報提供部４４から送られてくる最新の仮想サーバ情報を取得し、この情報で仮想サーバ情報記憶部２７を更新する。
【００３０】
また、稼動状況情報には、例えばＣＰＵの使用率、メモリの使用率、ハードディスクの使用量、実行しているサービス提供プロセスの種類、数など起動されている仮想サーバ１３の現在におけるリソースの利用状況が含まれている。また、稼動状況情報には、受け付けたサービスの提供要求（以下、「リクエスト」とも称する）の実行状態に関する情報も含まれており、具体的には、リクエストに割り振られた仮想サーバ１３と、リクエストに応じて当該仮想サーバ１３においてサービス提供プロセスの実行が開始された日時情報及びサービス提供プロセスの実行が終了した日時情報が含まれる。なお、仮想サーバ１３が割り振られていないリクエスト、あるいは仮想サーバ１３は割り振られたものの実行開始日時情報が設定されていないリソースは待機中（受付中）という状態にあり、仮想サーバ１３は割り振られ、実行開始日時情報が設定されているが、実行終了日時情報が設定されていないリソースは現在処理中という状態にあることがわかる。稼動状況情報収集部２３は、各仮想サーバ１３の稼動状況を常時収集しており、稼動状況情報記憶部２６に登録されている各仮想サーバ１３の稼動状況情報を逐次更新している。
【００３１】
要求受付部２１は、これらの情報を参照して、仮想サーバ１３にかかる負荷が均等になるように、クラウド基盤１２の環境下にある仮想サーバ１３の中からそのサービスの提供に最適な少なくとも１台の仮想サーバ１３を選出し、その仮想サーバ１３にサービスの提供を指示する。その指示を受けた仮想サーバ１３は、要求側プロセスにより要求されたサービスに対応するサービス提供プログラムを実行してサービス提供プロセスを生成する。このようにして、要求側プロセスにサービスを提供する。
【００３２】
また、稼動状況情報提供部２４は、収集された稼動状況情報を監視サーバ３０へその都度送信することで提供する。もちろん、周期的な処理により、例えば１分という一定期間内に収集された稼動状況情報をまとめて送信するようにしてもよい。監視サーバ３０における稼動状況情報取得部３１は、このようにして稼動状況情報提供部２４から提供される稼動状況情報で稼動状況情報記憶部３３を更新することで、稼動状況情報を最新の状態にする。
【００３３】
以上のようにして、クラウド基盤１２の環境下において起動されている仮想サーバ１３は、クライアント１４の要求側プロセスから送られてくるリクエストに応じてサービスを提供する。
【００３４】
続いて、本実施の形態におけるリソース最適化処理について説明する。ここでいうリソース最適化処理というのは、クライアント１４の要求側プロセスからのリクエストに対応するために起動中の仮想サーバ１３の数を最適な数とするための処理である。具体的には、リソースが不足していることを検出した場合に仮想サーバ１３を起動することで、リソース不足を解消する。本実施の形態は、このリソース最適化処理において仮想サーバ１３の平均起動時間経過後に受け付けると予測される提供要求数のサービスを、予め設定されている保証期間内に終了させるのに必要な仮想サーバ１３の数を算出することを特徴としている。このリソース最適化処理について図３に示したフローチャートを用いて説明する。この処理は、コントローラ４０により定期的、例えば１分間隔で繰り返し実行される。
【００３５】
まず、実績情報取得部４１は、監視サーバ３０から平均処理時間及びリクエスト数を取得する（ステップ１１０）。平均処理時間というのは、仮想サーバ１３におけるサービスの処理時間の平均値のことをいう。サービスの処理時間というのは、より正確には、仮想サーバ１３がサービスを提供するために、ロードバランサ２０からの指示を受けてからサービス提供プログラムを起動、実行し、その実行結果を返すまでに要した時間である。稼動状況情報に含まれているサービス提供プログラムの実行開始日時情報及び実行終了日時情報からサービスの実行に要した処理時間が得られるので、実績情報提供部３２は、稼動状況情報を参照して、ある一定期間内、例えば１分間に提供されたサービスの処理時間の平均値を算出し、この算出した平均処理時間を実績情報としてコントローラ４０に提供する。なお、実績情報提供部３２は、稼動状況情報を実績情報として提供し、コントローラ４０側で平均処理時間を算出してもよい。また、リクエスト数というのは、ロードバランサ２０が受け付けたリクエストのうち処理が終了していない現時点におけるリクエストの数である。これは、稼動状況情報を参照し、ある一定期間内、例えば１分間において待機中及び処理中の状態にあるリクエストを積算することで得られる。このリクエスト数は、平均処理時間と同様に実績情報としてコントローラ４０に提供される。
【００３６】
ここで、クライアント１４の要求側プロセスから送られてくる各リクエストを予め設定されている保証期間内に終了させるためには、次の式（１）を満たす必要がある。
【００３７】
【数１】
2012198843.tif 000003
【００３８】
ここで、ｒｅｑ′は、前述した現時点におけるリクエスト数であり、Ｓｅは前述した平均処理時間である。ｌｔは、リクエスト受け付けてから、システム管理者がこの時間までにリクエストに応じたいという時間を示す保証期間である。つまり、保証期間が満たされると、ユーザ要求側プロセスは、リクエストしてから遅くとも保証期間が経過するまでにはサービスが受けられるということである。この保証期間は、システム管理者等によって予め設定される。そして、ＶＭ′は、現時点で起動されている仮想サーバ１３の数である。これは、仮想サーバ情報記憶部４５を参照することで得られる。
【００３９】
左辺の第１項では、現在の一定期間内において１台の仮想サーバ１３当たり処理しなければならないリクエスト数に平均処理時間を乗算している。つまり、現在到着していてサービスの提供がまだ終了していないリクエストの処理に要する１台当たりの時間である。次の一定期間では、この残りの分のリクエストを処理することになる。左辺の第２項は、次の一定期間内において受け付けるリクエストの処理に要する１台当たりの時間である。これは、この処理時間には、平均処理時間をそのまま利用する。つまり、１台の仮想サーバ１３が次の一定期間内において保証期間を保証するためには、式（１）を満たす必要がある。
【００４０】
続いて、算出部４２は、平均起動時間を算出する（ステップ１２０）。平均起動時間というのは、仮想サーバ１３の起動に要した時間の平均値のことをいう。平均起動時間は、過去に起動された全起動時間から算出してもよいし、ある一定期間内に起動された仮想サーバ１３の起動時間から算出してもよい。起動時間は、仮想サーバ情報記憶部４５を参照することで得られる。また、算出部４２は、リクエスト増加率を取得する（ステップ１３０）。リクエスト増加率というのは、ある一定期間内に受け付けたリクエストの数が、その直前の一定期間内に受け付けたリクエストの数に対してどれだけ増加したか、という増加傾向を表す指標値である。リクエスト増加率が１であれば増減無し、１より大きい値となれば増加していることを示している。監視サーバ３０における実績情報提供部３２は、稼動状況情報から一定期間内に受け付けたリクエストの数の遷移を把握できるので、この遷移が示すリクエストの増加率を算出し、この算出したリクエスト増加率を実績情報としてコントローラ４０に提供する。なお、実績情報提供部３２は、稼動状況情報を実績情報として提供し、コントローラ４０側でリクエスト増加率を算出してもよい。そして、現時点において仮想サーバを起動した場合に、その仮想サーバの起動が終了した時点（平均起動時間経過後）において到着しているリクエストの予測数を式（２）を用いて算出する（ステップ１４０）。
【００４１】
【数２】
2012198843.tif 000004
【００４２】
ここで、ｒｅｑ″は、仮想サーバ起動終了時点におけるリクエストの予測数である。仮想サーバの起動が終了した時点というのは、現在から平均起動時間経過後の時点で表している。ｒｅｑは、式（１）のｒｅｑ′に相当し、現時点におけるリクエスト数である。従って、ｒｅｑは、ステップ１１０においてすでに取得している。Ｓｔは平均起動時間であり、ステップ１２０で算出している。ｒａｔｅは、リクエスト増加率であり、ステップ１３０で取得している。このようにして、仮想サーバ１３が処理すべきリクエストの数の変化、換言すると仮想サーバ１３にかかる負荷の変化を予測する。
【００４３】
ところで、式（２）における算出結果は、ＣＰＵコアを１つ持つ仮想サーバ１３における負荷である。ＣＰＵコアを複数持つと、それだけ並列処理が可能となる。従って、式（２）における算出結果をみかけの仮想サーバ数に換算する。これを式（３）にて表す。
【００４４】
【数３】
2012198843.tif 000005
【００４５】
ここで、ＶＭ′は、見かけ上の仮想サーバ数であり、式（１）におけるＶＭ′に相当する。ＶＭは、起動される仮想サーバの数である。ｃｏｒｅは、仮想サーバ１台当たりに搭載されているＣＰＵコアの数である。ｃｏｒｅは、システム管理者によって指定される。そして、以上の式（１）〜（３）を統合することによって式（４）を得る。
【００４６】
【数４】
2012198843.tif 000006
【００４７】
式（４）において、左辺のＶＭは、平均起動時間経過後に受け付けると予測されるリクエストの数のサービスを、保証期間ｌｔ内に終了させるのに必要な仮想サーバ１３の数である。算出部４２は、式（４）に示したように、平均処理時間及び平均起動時間という仮想サーバ１３の稼動状況の実績に用いて平均起動時間経過後に必要な仮想サーバ１３の数を算出する（ステップ１５０）。
【００４８】
右辺の値が例えば３．２だとすると、この式（４）から必要な数は４以上ということになる。ここで、現在起動されている仮想サーバ１３の数が１〜３台であれば、平均起動時間経過後に必要な仮想サーバ１３の数に達していないので（ステップ１６０でＮ）、仮想サーバ起動部４３は、起動されている仮想サーバ１３の数を４台にするために、３〜１台の仮想サーバ１３を起動する（ステップ１７０）。本実施の形態では、このように平均起動時間経過後に必要な仮想サーバ１３の数を予測し、その予測した数の仮想サーバ１３を確保するために現時点で仮想サーバ１３の起動を実行する。一方、平均起動時間経過後に必要な仮想サーバ１３の数をすでに起動していれば（ステップ１６０でＹ）、仮想サーバ１３を新たに起動する必要はない。もし、５台以上の仮想サーバ１３を起動しているのであれば、４台に減らすために仮想サーバ１３を停止させてもよい。本実施の形態では、このようにして仮想サーバ１３の数の最適化を図っている。
【符号の説明】
【００４９】
１  ＣＰＵ、２  ＲＯＭ、３  ＲＡＭ、４  ハードディスクドライブ（ＨＤＤ）、５  ＨＤＤコントローラ、６  マウス、７  キーボード、８  ディスプレイ、９  入出力コントローラ、１０  ネットワークコントローラ、１１  内部バス、１２  クラウド基盤、１３  仮想サーバ、１４  クライアント、２０  ロードバランサ、２１  要求受付部、２２  サービス実行制御部、２３  稼動状況情報収集部、２４  稼動状況情報提供部、２５  仮想サーバ情報取得部、２６  稼動状況情報記憶部、２７  仮想サーバ情報記憶部、３０  監視サーバ、３１  稼動状況情報取得部、３２  実績情報提供部、３３  稼動状況情報記憶部、４０  コントローラ、４１  実績情報取得部、４２  算出部、４３  仮想サーバ起動部、４４  仮想サーバ情報提供部、４５  仮想サーバ情報記憶部。
【図１】
2012198843.tif 000007
【図２】
2012198843.tif 000008
【図３】
2012198843.tif 000009