(57)【要約】【課題】サービス提供サーバを効率よく稼働させる。【解決手段】本願が開示する技術の一態様にかかるサーバ制御装置は、サーバ装置上で動作し、ネットワークを介してクライアント端末へサービスを提供する仮想マシンの状態の履歴を記憶する。サーバ制御装置は、仮想マシンを利用してサービスを提供するサービス提供者ごとの仮想マシンの識別情報に対応付けて、仮想マシンの利用にかかる契約情報を予め記憶する。サーバ制御装置は、仮想マシン状態履歴記憶部に記憶される履歴から求まる仮想マシンの利用料金が、記憶される契約情報を満たすように、仮想マシンを起動または停止させるかを判定する。サーバ制御装置は、判定した結果に応じて仮想マシンを起動または停止させる制御をおこなう。【選択図】図３Ａ
2013257789.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置上で動作し、ネットワークを介してクライアント端末へサービスを提供する仮想マシンの状態の履歴を記憶する仮想マシン状態履歴記憶部と、
前記仮想マシンを利用して前記サービスを提供するサービス提供者ごとの前記仮想マシンの識別情報に対応付けて、前記仮想マシンの利用にかかる契約情報を予め記憶する契約情報記憶部と、
前記仮想マシン状態履歴記憶部に記憶される前記履歴から求まる前記仮想マシンの利用料金が、前記契約情報記憶部に記憶される前記契約情報を満たすように、前記仮想マシンを起動または停止させるかを判定する判定部と、
前記判定部により判定された結果に応じて前記仮想マシンを起動または停止させる制御をおこなう仮想マシン制御部と
を備えることを特徴とするサーバ制御装置。
【請求項２】
前記仮想マシン状態履歴記憶部は、前記識別情報と、前記仮想マシンの起動および停止を含むイベントと、前記イベントの発生日時とを対応付けて記憶し、
前記契約情報記憶部は、前記識別情報に対応付けて、前記サービス提供者が前記仮想マシンを利用する際の所定利用時間あたりの利用料金、当該サービス提供者が前記仮想マシンを利用する際に許容される所定期間あたりの利用料金の上限を記憶し、
前記判定部は、前記仮想マシンの起動および停止を含むイベントおよび当該イベントの発生日時から前記仮想マシンの利用時間の累計を求め、当該仮想マシンの利用時間の累計に前記所定利用時間あたりの利用料金を乗じた利用料金の累計を算出し、当該利用料金の累計が、前記利用料金の上限に達している場合には、起動中の前記仮想マシンを停止すると判定し、または、当該利用料金の累計が、前記利用料金の上限に達していない場合には、停止中の前記仮想マシンを起動すると判定する
ことを特徴とする請求項１に記載のサーバ制御装置。
【請求項３】
前記仮想マシン状態履歴記憶部は、さらに、一のサービス提供者にかかる複数の仮想マシンの前記識別情報と、複数の仮想マシンごとの起動および停止を含むイベントと、当該イベントの発生日時とを対応付けて記憶し、
前記契約情報記憶部は、さらに、前記複数の仮想マシンの識別情報に対応付けて、当該一のサービス提供者によって前記複数の仮想マシンがそれぞれ利用される際の当該仮想マシンごとの所定利用時間あたりの利用料金、当該一のサービス提供者によって前記複数の仮想マシンが利用される際に許容される所定期間あたりの利用料金の合計の上限を記憶し、
前記判定部は、前記複数の仮想マシンの起動および停止を含むイベントおよび前記イベントの発生日時から当該仮想マシンごとの利用時間の累計を求め、当該仮想マシンの利用時間の累計に前記所定利用時間あたりの利用料金を乗じた利用料金の累計を当該仮想マシンごとに算出し、当該仮想マシンの利用料金の累計から当該複数の仮想マシンの利用料金の累計の合計を算出し、算出した合計が前記契約情報記憶部に記憶された上限に達している場合には、起動中の前記複数の仮想マシンを停止すると判定し、または、当該算出した合計が当該上限に達していない場合には、停止中の前記複数の仮想マシンを起動すると判定する
ことを特徴とする請求項１または２に記載のサーバ制御装置。
【請求項４】
前記契約情報記憶部は、さらに、複数の前記仮想サーバによって一つのサービスが提供されている場合における複数の前記仮想サーバの停止順序または起動順序を記憶し、
前記仮想マシン制御部は、さらに、複数の前記仮想サーバによって一つのサービスが提供されている場合には、前記契約情報記憶部に記憶される前記停止順序または前記起動順序に基づいて、複数の前記仮想サーバを順に停止または起動させる制御をおこなう
ことを特徴とする請求項１、２または３に記載のサーバ制御装置。
【請求項５】
前記クライアント端末から受信した前記サービスの利用にかかるリクエストを解析するリクエスト解析部と、
前記リクエスト解析部により解析されたリクエストから求まる前記クライアント端末による前記仮想マシンへの接続数を記憶する利用状況記憶部と、
前記クライアント端末から受信したリクエストを、当該仮想マシンへ送信するリクエスト送信部と、
前記クライアント端末に表示させる情報を含むレスポンスを生成するレスポンス生成部と、
前記レスポンス生成部により生成されたレスポンスを前記クライアント端末へ送信するレスポンス送信部と
をさらに備え、
前記契約情報記憶部は、さらに、前記識別情報に対応付けて、前記仮想マシンが前記クライアント端末から接続される接続数の上限を記憶し、
前記判定部は、さらに、前記仮想マシンへの接続数が前記接続数の上限に達していない場合には、新たなリクエストによる前記クライアント端末と前記仮想マシンとの接続を許可させると判定し、前記仮想マシンが前記接続数の上限に達している場合には、新たなリクエストによる前記クライアント端末と前記仮想サーバとの接続を拒否させると判定し、
前記リクエスト送信部は、前記判定部により前記クライアント端末と前記仮想マシンとの接続を許可させると判定された場合に、当該クライアント端末から受信したリクエストを当該仮想マシンへ送信し、
前記レスポンス生成部は、前記判定部により前記クライアント端末と前記仮想マシンとの接続を拒否させると判定された場合に、当該接続が拒否された旨を表示する情報を含むレスポンスを生成し、
前記レスポンス送信部は、前記レスポンス生成部により生成された、前記接続が拒否された旨を表示する情報を含むレスポンスを前記クライアント端末へ送信する
ことを特徴とする請求項１〜４のいずれか一つに記載のサーバ制御装置。
【請求項６】
前記判定部は、さらに、前記仮想マシンへの接続数と前記接続数の上限とに基づいて前記仮想マシンに割り当てるリソースをスケースアップまたはスケールダウンさせるか否かを判定し、
前記仮想マシン制御部は、さらに、前記判定部による判定結果に応じて前記仮想マシンのリソースをスケールアップまたはスケールダウンさせる制御をおこなう
ことを特徴とする請求項１〜５のいずれか一つに記載のサーバ制御装置。
【請求項７】
前記レスポンス生成部は、さらに、前記クライアント端末から前記リクエストを受信した際に、前記仮想マシンが起動中または停止中の場合には、当該仮想マシンが起動中または停止中である旨を表示する情報を含むレスポンスを生成する
前記レスポンス送信部は、前記レスポンス生成部により生成された、前記仮想マシンが起動中または停止中である旨を表示する情報を含むレスポンスを前記クライアント端末へ送信する
ことを特徴とする請求項５に記載のサーバ制御装置。
【請求項８】
前記クライアント端末から受信したリクエストに対応するレスポンスを前記サーバ装置から受信した際に、当該仮想マシンの利用状況に基づいて決定される停止予定時刻を表示する情報を前記レスポンスに含める修正をおこなうレスポンス修正部
をさらに備え、
前記レスポンス送信部は、前記レスポンス修正部により修正されたレスポンスを前記クライアント端末へ送信する
ことを特徴とする請求項１〜７のいずれか一つに記載のサーバ制御装置。
【請求項９】
コンピュータに、
サーバ装置上で動作し、ネットワークを介してクライアント端末へサービスを提供する仮想マシンの状態の履歴を仮想マシン状態履歴記憶部に記憶させ、
前記仮想マシンを利用して前記サービスを提供するサービス提供者ごとの前記仮想マシンの識別情報に対応付けて、前記仮想マシンの利用にかかる契約情報を予め契約情報記憶部に記憶させ、
前記仮想マシン状態履歴記憶部に記憶される前記履歴から求まる前記仮想マシンの利用料金が、前記契約情報記憶部に記憶される前記契約情報を満たすように、前記仮想マシンを起動または停止させるかを判定し、
判定された結果に応じて前記仮想マシンを起動または停止させる制御をおこなう
各処理を実行させることを特徴とするサーバ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サーバ制御装置およびサーバ制御プログラムに関する。
【背景技術】
【０００２】
近年、アプリケーションソフトウェアやミドルウェアなどによるサービスを、ネットワークを介して、サービスを提供するサービス提供サーバの所在をアクセスユーザに意識させることなく提供するクラウドシステムが普及している。クラウドシステムでは、アクセスユーザは、クライアント端末からネットワークを介してサービス提供サーバへサービス提供のリクエストを送信する。そして、サービス提供サーバは、クライアント端末から受信したリクエストに応じた処理を実行した結果をレスポンスとしてクライアント端末へ送信することによりサービスを提供する。
【０００３】
クラウドシステムにおけるサービスプラットフォームの提供形態は、ＳａａＳ（Software  as  a  Service）型、ＰａａＳ（Platform  as  a  Service）型、ＩａａＳ（Infrastructure  as  a  Service）型などがある。ＳａａＳ型は、サービス提供サーバ上で動作するアプリケーションソフトウェアの処理によるサービスプラットフォームを、サービス事業者である利用者に提供する。また、ＰａａＳ型およびＩａａＳ型は、サービス提供サーバのミドルウェアやアプリケーションソフトウェアの実行環境を利用者に提供する。そして、利用者は、提供されたサービス提供サーバのミドルウェアやアプリケーションソフトウェアの実行環境に構築された利用者個別のアプリケーションソフトウェアを実行させることにより、アクセスユーザに対してサービスを提供する。
【０００４】
かかるクラウドシステムのサービスでは、利用者は、サービス提供サーバの利用状況に応じて課金が発生する従量課金制により利用料金を徴収されることが一般的である。利用料金は、例えば、サービス提供サーバへの接続数、サービス提供サーバへの接続時間、サービス提供サーバの利用時間、サービス提供サーバのリソースの使用量などに応じて加算される。よって、利用者は、利用料金をできるだけ抑えるために、サービス提供サーバを効率的に利用することが求められる。
【０００５】
例えば、クライアント端末からアプリケーションサーバへの接続要求があった場合に、サービス提供の可否を判断するセッション管理サーバが知られている。また、サービス利用者のクライアント端末とサーバとの接続の状態を監視し、切断条件に該当すると、接続を切断する通信システムが知られている。また、所定期間内の接続回数および接続時間に上限値を設け、接続回数または接続時間が上限値に達した場合に、クライアント端末とサーバとの接続を切断する通信システムが知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−２８４７５３号公報
【特許文献２】特開２００２−１５８７０７号公報
【特許文献３】特開２００４−２４０６４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の従来技術は、例えば、クラウドシステムにおける従量課金という課金形態が考慮されていないため、サービスが利用されていなくても、サービス提供サーバが稼働している場合には課金が発生する。すなわち、上述の従来技術は、課金形態を考慮してサービス提供サーバを制御するものではないため、サービス提供サーバを効率よく稼働できないという問題がある。
【０００８】
本願が開示する技術の一態様は、上述の従来技術を鑑み、サービス提供サーバを効率よく稼働させることができるサーバ制御装置およびサーバ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願が開示する技術の一態様にかかるサーバ制御装置は、サーバ装置上で動作し、ネットワークを介してクライアント端末へサービスを提供する仮想マシンの状態の履歴を記憶する。サーバ制御装置は、仮想マシンを利用してサービスを提供するサービス提供者ごとの仮想マシンの識別情報に対応付けて、仮想マシンの利用にかかる契約情報を予め記憶する。サーバ制御装置は、仮想マシン状態履歴記憶部に記憶される履歴から求まる仮想マシンの利用料金が、記憶される契約情報を満たすように、仮想マシンを起動または停止させるかを判定する。サーバ制御装置は、判定した結果に応じて仮想マシンを起動または停止させる制御をおこなう。
【発明の効果】
【００１０】
本願が開示する技術の一態様によれば、サービス提供サーバを効率よく稼働させることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施の形態にかかるクラウドシステムの構成の概要の一例を示すブロック図である。
【図２】図２は、サーバ装置の構成の一例を示すブロック図である。
【図３Ａ】図３Ａは、サーバ制御装置の構成の一例を示すブロック図である。
【図３Ｂ】図３Ｂは、サーバ制御装置のリクエスト制御部の構成の一例を示すブロック図である。
【図３Ｃ】図３Ｃは、サーバ制御装置のレスポンス制御部の構成の一例を示すブロック図である。
【図４】図４は、接続情報記憶テーブルの構成の一例を示す図である。
【図５】図５は、仮想マシン状態履歴記憶テーブルの構成の一例を示す図である。
【図６Ａ】図６Ａは、仮想マシン状態記憶テーブルの構成の一例を示す図である。
【図６Ｂ】図６Ｂは、サービスグループテーブルの構成の一例を示す図である。
【図７Ａ】図７Ａは、リソース情報記憶テーブルの構成の一例を示す図である。
【図７Ｂ】図７Ｂは、契約情報記憶テーブルの構成の一例を示す図である。
【図８Ａ】図８Ａは、データ要求のリクエストの構成の一例を示す図である。
【図８Ｂ】図８Ｂは、仮想サーバ状態確認のリクエストの構成の一例を示す図である。
【図８Ｃ】図８Ｃは、レスポンス修正によるレスポンスへのスクリプトの追加の一例を示す図である。
【図８Ｄ】図８Ｄは、レスポンス修正によるレスポンスへのスクリプトの追加の一例を示す図である。
【図８Ｅ】図８Ｅは、レスポンス修正によりスクリプトが追加されたレスポンスの画面表示の一例を示す図である。
【図９Ａ】図９Ａは、サーバ制御装置による仮想マシンの起動の概要の一例を示すシーケンス図である。
【図９Ｂ】図９Ｂは、サーバ制御装置による仮想マシンの停止の概要の一例を示すシーケンス図である。
【図９Ｃ】図９Ｃは、サーバ制御装置による仮想マシンの動作制御の概要の一例を示すシーケンス図である。
【図１０Ａ】図１０Ａは、クライアント端末におけるデータ要求にかかる処理の一例を示すフローチャートである。
【図１０Ｂ】図１０Ｂは、クライアント端末におけるサーバ状態確認にかかる処理の一例を示すフローチャートである。
【図１１】図１１は、サーバ制御装置における全体処理の一例を示すフローチャートである。
【図１２】図１２は、サーバ制御装置における接続可否判定処理の一例を示すフローチャートである。
【図１３】図１３は、サーバ制御装置における停止判定処理の一例を示すフローチャートである。
【図１４】図１４は、サーバ制御装置における仮想マシン停止処理の一例を示すフローチャートである。
【図１５】図１５は、サーバ制御装置における仮想マシンのスケールアップ／スケールダウン処理の一例を示すフローチャートである。
【図１６】図１６は、サーバ制御装置における起動判定処理の一例を示すフローチャートである。
【図１７】図１７は、サーバ制御装置における仮想マシン起動処理の一例を示すフローチャートである。
【図１８】図１８は、サーバ制御装置が複数の仮想マシンを制御する場合における契約情報記憶テーブルの構成の一例を示す図である。
【図１９】図１９は、レスポンス解析による仮想マシンの再起動制御の一例を示す図である。
【図２０】図２０は、レスポンス解析による仮想マシンの再起動制御の際に、サーバ装置から送信されるレスポンスの一例を示す図である。
【図２１】図２１は、サーバ制御装置における全体処理の一例を示すフローチャートである。
【図２２】図２２は、サーバ制御プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本願が開示する技術の実施の形態について説明する。なお、以下の実施の形態は、一例を示すに過ぎず、本願が開示する技術を限定するものではない。また、以下の実施の形態は、矛盾しない範囲で適宜組合せてもよい。
【００１３】
以下の実施の形態では、ネットワークを介して接続されるクライアント端末およびサーバ装置において、アクセスユーザが、サーバ装置で提供されるクラウドサービス（以下、「サービス」と呼ぶ）をクライアント端末で利用する場合を説明する。以下の実施の形態における「利用者」は、テナントとしてサーバ装置で提供される「サービスプラットフォーム」を利用することで、クライアント端末からの「アクセスユーザ」に「サービス」を提供するサービス事業者である。また、「提供者」は、サーバ装置のハードウェアまたはソフトウェアのリソースを「サービスプラットフォーム」として「利用者」に有料で提供し、「サービス」の提供をおこなわせるサーバ装置の設置者である。
【００１４】
［実施の形態］
（クラウドシステムの構成の概要）
図１は、実施の形態にかかるクラウドシステムの構成の概要の一例を示すブロック図である。クラウドシステム１は、サーバ装置１０ａ〜１０ｃ、サーバ制御装置１００、クライアント端末２０ａ〜２０ｃを含む。サーバ制御装置１００と、クライアント端末２０ａ〜２０ｃとは、ネットワーク２を介して接続される。また、サーバ制御装置１００と、サーバ装置１０ａ〜１０ｃとは、ネットワーク３を介して接続される。なお、ネットワーク２および３は、有線または無線による閉域網または公衆網などの任意の通信網である。また、図１に示すクラウドシステム１が含むサーバ装置１０およびクライアント端末２０の数は、一例であり、任意の数でもよい。
【００１５】
サーバ装置１０ａ〜１０ｃは、クラウドシステム１において、クライアント端末２０ａ〜２０ｃからのリクエストに応じてサービスを提供するサーバ装置である。なお、以下では、サーバ装置１０ａ〜１０ｃを総称して「サーバ装置１０」と呼ぶ。また、クライアント端末２０ａ〜２０ｃを総称して「クライアント端末２０」と呼ぶ。
【００１６】
サーバ装置１０は、ＳａａＳ（Software  as  a  Service）型、ＰａａＳ（Platform  as  a  Service）型、ＩａａＳ（Infrastructure  as  a  Service）型などのサービスプラットフォームを提供する、一または複数の提供者によって設置される。なお、利用者がサーバ装置１０のサービスプラットフォームを利用してクライアント端末のアクセスユーザにアクセスさせるサービスは、グループウェア、販売管理業務システム、アンケートシステムなどである。
【００１７】
クライアント端末２０は、サーバ装置１０において動作するソフトウェアにより実現されるサービスにアクセスするアクセスユーザの端末装置である。クライアント端末２０は、サービスにアクセスするためのソフトウェアが予めインストールされたパーソナルコンピュータや携帯端末機器などの電子機器である。
【００１８】
クライアント端末２０は、図示しない入力部および出力部を備え、アクセスユーザにより入力されたリクエストを、アクセスユーザがアクセスするサービスを提供するサーバ装置１０へ送信する。リクエストは、アクセスユーザがアクセスするサービスの提供をサーバ装置１０へ要求するためのデータを含む。また、クライアント端末２０は、サーバ装置１０から送信された、クライアント端末２０から受信したリクエストに応じたレスポンスを受信する。レスポンスは、クライアント端末２０から受信したリクエストに対応するサービスをサーバ装置が提供するためのデータを含む。
【００１９】
サーバ制御装置１００は、サーバ装置１０と、クライアント端末２０との伝送経路上に配置され、クライアント端末２０からサーバ装置１０への全てのリクエストを受信し、受信したリクエストをサーバ装置１０へ送信する、例えばリバースプロキシサーバである。また、サーバ制御装置１００は、クライアント端末２０からサーバ装置１０へのリクエストを解析し、解析結果を蓄積する。また、サーバ制御装置１００は、蓄積したリクエストの解析結果に基づいて、サーバ装置１０の動作を制御する。
【００２０】
また、サーバ制御装置１００は、クライアント端末２０からのリクエストに応じてサーバ装置１０から送信されたレスポンスを受信する。そして、サーバ制御装置１００は、受信したレスポンスを、リクエストを送信したクライアント端末２０へ送信する。また、サーバ制御装置１００は、起動または停止、ハードウェアまたはソフトウェアのリソース、負荷状況などのサーバ装置１０の仮想マシンの状態を記憶する。そして、サーバ制御装置１００は、サーバ装置１０の仮想マシンの状態に基づいて、サーバ装置１０の仮想マシンの動作を制御する。
【００２１】
サーバ装置１０で提供されるサービスプラットフォームは、従量課金制により利用料金が発生する。すなわち、サーバ装置１０をサービスプラットフォームとして用いたサービスの提供は、サーバ装置１０への接続数、接続時間、利用時間、リソース使用量などの利用状況に応じて課金が発生する。なお、サーバ制御装置１００は、利用者、提供者、利用者および提供者と異なる第三者のいずれによって設置されてもよい。
【００２２】
（サーバ装置の構成）
図２は、サーバ装置の構成の一例を示すブロック図である。サーバ装置１０は、サーバ装置１０とサーバ制御装置１００との通信を制御する通信制御部１１、仮想マシン実行部１２、１つ以上の仮想マシン処理部１３を有する。仮想マシン実行部１２は、仮想マシン処理部１３の起動や停止などの制御をおこなうサーバ装置１０のホストＯＳ（Operating  System）の動作により実現される。
【００２３】
仮想マシン処理部１３は、サーバ装置１０の物理的な計算機資源を論理的に分割または統合して構築される仮想マシンである。仮想マシン処理部１３は、仮想マシン実行部１２で動作するホストＯＳ上で、仮想マシン処理部１３ごとのゲストＯＳにより制御される。そして、仮想マシン処理部１３は、ゲストＯＳ上で所定のソフトウェアを実行することにより、様々なサービスをクライアント端末２０へ提供する。なお、以下では、仮想マシンおよび仮想マシン処理部１３をＶＭ（Virtual  Machine）と呼ぶ場合がある。
【００２４】
サーバ装置１０は、クライアント端末２０から送信されたリクエストを、サーバ制御装置１００を介して受信する。クライアント端末２０からサーバ装置１０へのリクエストは、例えば、サーバ装置１０の仮想マシン処理部１３で実行されるソフトウェアによるサービスの提供の要求である。サーバ装置１０は、通信制御部１１によりサーバ制御装置１００を介して受信したクライアント端末２０からのリクエストを、仮想マシン実行部１２により、対応するサービスを提供する仮想マシン処理部１３へ送信する。
【００２５】
そして、リクエストを受信した仮想マシン処理部１３は、リクエストに応じたレスポンスを生成し、生成したレスポンスを仮想マシン実行部１２により通信制御部１１からサーバ制御装置１００を介してクライアント端末２０へ送信する。サーバ装置１０からクライアント端末２０へのレスポンスは、例えば、サーバ装置１０の仮想マシン処理部１３で実行されるソフトウェアによるサービスの提供の可否や、提供するサービスにかかるデータである。
【００２６】
（サーバ制御装置の構成）
図３Ａは、サーバ制御装置の構成の一例を示すブロック図である。また、図３Ｂは、サーバ制御装置のリクエスト制御部の構成の一例を示すブロック図である。また、図３Ｃは、サーバ制御装置のレスポンス制御部の構成の一例を示すブロック図である。
【００２７】
図３Ａに示すように、サーバ制御装置１００は、利用状況記憶部１０１、仮想マシン状態履歴記憶部１０２、仮想マシン状態記憶部１０３、契約情報記憶部１０４、リクエスト受信部１０５、リクエスト制御部１０６、リクエスト送信部１０７、仮想マシン制御部１０８、レスポンス受信部１０９、レスポンス制御部１１０、レスポンス送信部１１１を含む。
【００２８】
サーバ制御装置１００は、クライアント端末２０からのリクエストを、リクエスト受信部１０５を介して受信する。リクエスト受信部１０５は、受信したリクエストをリクエスト制御部１０６へ送信する。そして、リクエスト制御部１０６は、リクエストを、リクエスト送信部１０７を介してサーバ装置１０へ送信する。
【００２９】
また、サーバ制御装置１００は、サーバ装置１０からのリクエストに対するレスポンスを、レスポンス受信部１０９を介して受信する。レスポンス受信部１０９は、受信したレスポンスをレスポンス制御部１１０へ送信する。そして、レスポンス制御部１１０は、レスポンスを、レスポンス送信部１１１を介してクライアント端末２０へ送信する。クライアント端末２０、サーバ制御装置１００、サーバ装置１０間のリクエストおよびレスポンスの送受信の詳細は、後述する。
【００３０】
また、図３Ｂに示すように、サーバ制御装置１００のリクエスト制御部１０６は、リクエスト解析部１０６ａ、判定部１０６ｂを含む。また、図３Ｃに示すように、サーバ制御装置１００のレスポンス制御部１１０は、レスポンス生成部１１０ａ、レスポンス修正部１１０ｂを含む。リクエスト解析部１０６ａ、判定部１０６ｂ、レスポンス生成部１１０ａ、レスポンス修正部１１０ｂの詳細は、後述する。
【００３１】
（利用状況記憶部）
利用状況記憶部１０１は、クライアント端末２０のアクセスユーザによる、サーバ装置１０で提供するサービスの利用状況を記憶する。利用状況記憶部１０１は、接続情報記憶テーブル１０１ａを含む。接続情報記憶テーブル１０１ａは、サーバ装置１０におけるサービスプラットフォームとしての仮想マシンへの接続を使用状況として、アクセスユーザごと、仮想マシンごと、接続ごとに蓄積して記憶する。
【００３２】
（利用状況記憶部の利用者接続情報記憶テーブル）
図４は、接続情報記憶テーブルの構成の一例を示す図である。図４に示すように、接続情報記憶テーブル１０１ａは、「アクセスユーザＩＤ」、「ＶＭＩＤ」、「接続ＩＤ」、「接続時刻」、「切断時刻」、「接続状態」を対応付けて記憶する。接続情報記憶テーブル１０１ａは、クライアント端末２０を利用するアクセスユーザが、サービスを利用するために仮想マシン処理部１３にアクセスするごとにレコードが生成される。
【００３３】
「アクセスユーザＩＤ」は、クライアント端末２０からリクエストを送信したアクセスユーザの識別情報である。また、「ＶＭＩＤ」は、「アクセスユーザＩＤ」で特定されるアクセスユーザのクライアント端末２０からリクエストに対応するサービスの提供をおこなうサーバ装置１０の仮想マシン処理部１３の識別情報である。また、「接続ＩＤ」は、クライアント端末２０と、仮想マシン処理部１３との接続をアクセスユーザごとに識別する識別情報である。
【００３４】
「接続時刻」は、「アクセスユーザＩＤ」で特定されるアクセスユーザがサービスの提供を受けるために、「接続ＩＤ」で特定される接続において、クライアント端末２０と、「ＶＭＩＤ」で特定される仮想マシン処理部１３との接続が開始された時刻である。「切断時刻」は、「接続ＩＤ」で特定される接続において、「アクセスユーザＩＤ」で特定されるアクセスユーザがサービスの利用を終了し、クライアント端末２０と、「ＶＭＩＤ」で特定される仮想マシン処理部１３との接続が切断された時刻である。また、「接続状態」は、「接続ＩＤ」で特定される接続において、クライアント端末２０と、「ＶＭＩＤ」で特定される仮想マシン処理部１３との接続の開始後、接続が切断されたか継続しているかの区別を示す。
【００３５】
図４に示すように、接続情報記憶テーブル１０１ａは、例えば、「アクセスユーザＩＤ」“ＵＳＥＲ０１”、「ＶＭＩＤ」“ＶＭ１”、「接続ＩＤ」“ＣＯＮＮＥＣＴＩＤ１”、「接続時刻」“１０：００”、「切断時刻」“−”、「接続状態」“接続中”を対応付けて記憶する。すなわち、接続情報記憶テーブル１０１ａは、例えば、「アクセスユーザＩＤ」“ＵＳＥＲ０１”のアクセスユーザにより“ＶＭ１”へ“１０時００分”から「接続ＩＤ」“ＣＯＮＮＥＣＴＩＤ１”の接続が開始され、「接続状態」“接続中”であることを記憶する。
【００３６】
（仮想マシン状態履歴記憶部）
仮想マシン状態履歴記憶部１０２は、サーバ装置１０で動作する仮想マシン処理部１３の動作の制御履歴を記憶する。仮想マシン状態履歴記憶部１０２は、仮想マシン状態履歴記憶テーブル１０２ａを含む。仮想マシン状態履歴記憶テーブル１０２ａは、サーバ装置１０における仮想マシン処理部１３の制御イベントを蓄積して記憶する。
【００３７】
（仮想マシン状態履歴記憶部の仮想マシン状態履歴記憶テーブル）
図５は、仮想マシン状態履歴記憶テーブルの構成の一例を示す図である。図５に示すように、仮想マシン状態履歴記憶テーブル１０２ａは、「ＶＭＩＤ」、「イベント」、「発生時刻」を対応付けて記憶する。「ＶＭＩＤ」は、サーバ装置１０で動作する仮想マシン処理部１３の識別情報である。「イベント」は、サーバ装置１０で動作する仮想マシン処理部１３を制御した制御イベントである。「発生時刻」は、「イベント」が発生した時刻である。
【００３８】
図５に示すように、仮想マシン状態履歴記憶テーブル１０２ａは、例えば、「ＶＭＩＤ」“ＶＭ１”、「イベント」“ＶＭ起動”、「発生時刻」“２０１１／１２／１０  １０：００”を対応付けて記憶する。すなわち、仮想マシン状態履歴記憶テーブル１０２ａは、例えば、「ＶＭＩＤ」“ＶＭ１”の仮想マシンが“２０１１年１２月１０日１０時００分”に“起動”されたことを記憶する。なお、仮想マシン状態履歴記憶テーブル１０２ａのレコードは、仮想マシン制御部１０８により仮想マシン処理部１３の動作が制御されるごとにレコードが生成される。
【００３９】
（仮想マシン状態記憶部）
仮想マシン状態記憶部１０３は、サーバ制御装置１００によるサーバ装置１０における各仮想マシン処理部１３の状態に関する情報を記憶する。仮想マシン状態記憶部１０３は、仮想マシン状態記憶テーブル１０３ａ、サービスグループテーブル１０３ｂを含む。
【００４０】
仮想マシン状態記憶テーブル１０３ａは、サーバ装置１０における仮想マシン処理部１３の状態を記憶する。また、サービスグループテーブル１０３ｂは、サービスごとに使用する仮想マシン処理部１３、仮想マシン処理部１３上で動作するサーバ名および仮想マシン処理部１３の起動、停止の制御順序を記憶する。なお、サービスグループテーブル１０３ｂにおけるサーバ名は、アプリケーションサーバとしてのサーバ名である。
【００４１】
（仮想マシン状態記憶部の仮想マシン状態記憶テーブル）
図６Ａは、仮想マシン状態記憶テーブルの構成の一例を示す図である。図６Ａに示すように、仮想マシン状態記憶テーブル１０３ａは、「ＶＭＩＤ」、「状態」、「ＣＰＵスケール状態」、「メモリスケール状態」、「同時接続数」、「レスポンスタイム」、「月内累計使用時間」、「課金額」を対応付けて記憶する。
【００４２】
「ＶＭＩＤ」は、仮想マシン処理部１３の識別情報である。「状態」は、「ＶＭＩＤ」で特定される仮想マシン処理部１３が、現在において起動中であるか停止中であるかの区分である。「ＣＰＵスケール状態」は、「ＶＭＩＤ」で特定される仮想マシン処理部１３に、現在において割り当てられているＣＰＵの数および駆動周波数である。「メモリスケール状態」は、「ＶＭＩＤ」で特定される仮想マシン処理部１３に、現在において割り当てられているメモリの容量である。
【００４３】
「同時接続数」は、「ＶＭＩＤ」で特定される仮想マシン処理部１３に現在において同時に接続しているアクセスユーザ数である。「レスポンスタイム」は、「ＶＭＩＤ」で特定される仮想マシン処理部１３へのリクエスト送信から対応するレスポンス受信までの時間（例えばミリ秒単位）である。「月内累計使用時間」は、「ＶＭＩＤ」で特定される仮想マシン処理部１３が月初から同月の現在までの間に使用された累計時間（例えば１時間単位）である。「課金額」は、「ＶＭＩＤ」で特定される仮想マシン処理部１３の使用に際して発生した料金の累計額であり、例えば、月初から同月の現在までの間に課金された累計額である。
【００４４】
図６Ａに示すように、仮想マシン状態記憶テーブル１０３ａは、例えば、「ＶＭＩＤ」“ＶＭ１”、「状態」“起動中”、「ＣＰＵスケール状態」“２ｖＣＰＵ（３ＧＨｚ）”、「メモリスケール状態」“２ＧＢ”、「同時接続数」“１００”、「レスポンスタイム」“１００”、「月内累計使用時間」“１００”、「課金額」“１６８００円”を対応付けて記憶する。すなわち、仮想マシン状態記憶テーブル１０３ａは、「ＶＭＩＤ」“ＶＭ１”の仮想マシン処理部１３が“起動中”であり、「ＣＰＵスケール状態」“２ｖＣＰＵ（３ＧＨｚ）”、「メモリスケール状態」“２ＧＢ”、「同時接続数」“１００”、「レスポンスタイム」“１００”、「月内累計使用時間」“１００”、「課金額」“１６８００円”であることを記憶する。
【００４５】
なお、仮想マシン状態記憶テーブル１０３ａが記憶する、「ＶＭＩＤ」、「状態」、「ＣＰＵスケール状態」、「メモリスケール状態」、「同時接続数」、「レスポンスタイム」、「課金額」の取得または算出方法については、後述する。「同時接続数」、「レスポンスタイム」は、サーバ制御装置１００がリバースプロキシサーバである場合には、リクエストおよびレスポンスを中継する過程で取得する。
【００４６】
また、図６Ａには図示しないが、「ＶＭＩＤ」で特定される仮想マシンの現在の「ＣＰＵ使用率」、「メモリ使用量（もしくはメモリ使用率）」、「ディスク使用量」を取得し、仮想マシン状態記憶テーブル１０３ａに含めて記憶させてもよい。この場合、ＳＮＭＰ（Simple  Network  Management  Protocol）やＪＭＸ（Java  Management  Extensions、登録商標）を用いてサーバ装置１０から「ＣＰＵ使用率」、「メモリ使用量（もしくはメモリ使用率）」、「ディスク使用量」などを取得する。
【００４７】
（仮想マシン状態記憶部のサービスグループテーブル）
図６Ｂは、サービスグループテーブルの構成の一例を示す図である。図６Ｂに示すように、サービスグループテーブル１０３ｂは、「サービス名」、「ＶＭＩＤ」、「サーバ名」、「起動順」、「停止順」を対応付けて記憶する。「サービス名」は、サーバ装置１０で動作する仮想マシン処理部１３により提供されるサービスの名称である。「サーバ名」は、サービスを提供するアプリケーションサーバとしてのサーバ名である。「起動順」は、サービスを提供するために複数の仮想マシン処理部１３を動作させる場合に、各仮想マシン処理部１３を起動する順序である。「停止順」は、サービスを提供するために複数の仮想マシン処理部１３を動作させる場合に、各仮想マシン処理部１３を停止する順序である。
【００４８】
図６Ｂに示すように、サービスグループテーブル１０３ｂは、例えば、「サービス名」“グループウェア”、「ＶＭＩＤ」“ＶＭ１”、「サーバ名」“ｗｅｂＡ．ｓｅｒｖｅｒ．ｃｏｍ”、「起動順」“１”、「停止順」“３”を対応付けて記憶する。すなわち、サービスグループテーブル１０３ｂは、例えば、「サービス名」“グループウェア”の機能を実現する仮想マシン処理部１３が「ＶＭＩＤ」“ＶＭ１”、“ＶＭ２”、“ＶＭ３”であり、グループウェアを起動する際に“ＶＭ１”、“ＶＭ２”、“ＶＭ３”の順序で各仮想マシン処理部１３を起動することを記憶する。また、サービスグループテーブル１０３ｂは、例えば、グループウェアを停止する際に“ＶＭ３”、“ＶＭ２”、“ＶＭ１”の順序で各仮想マシン処理部１３を停止することを記憶する。
【００４９】
（契約情報記憶部）
契約情報記憶部１０４は、利用者による、サーバ装置１０で提供されるサービスプラットフォームの利用にかかるサーバ装置１０のハードウェアリソースの利用条件および契約情報を記憶する。契約情報記憶部１０４は、リソース情報記憶テーブル１０４ａ、契約情報記憶テーブル１０４ｂを含む。リソース情報記憶テーブル１０４ａは、利用者によるサービスプラットフォームの利用にかかるサーバ装置１０のハードウェアリソースの利用条件を記憶する。契約情報記憶テーブル１０４ｂは、利用者による、サーバ装置１０で提供されるサービスプラットフォームの利用にかかるサーバ装置１０のハーウェアリソースの契約情報を記憶する。なお、リソース情報記憶テーブル１０４ａおよび契約情報記憶テーブル１０４ｂに記憶される情報は、サーバ装置１０を設置するサービスの提供者により予め登録される。
【００５０】
（契約情報記憶部のリソース情報記憶テーブル）
図７Ａは、リソース情報記憶テーブルの構成の一例を示す図である。リソース情報記憶テーブル１０４ａに記憶される情報は、サーバ装置１０によりサービスプラットフォームを提供する提供者により予め登録される。図７Ａに示すように、リソース情報記憶テーブル１０４ａは、「対象」、「スペック」、「料金倍率」を対応付けて記憶する。「対象」は、サーバ装置１０により提供されるサービスプラットフォームを利用する際に利用者に提供されるサーバ装置１０の物理的計算資源（ハードウェアリソース）である。
【００５１】
ここで、「対象」は、例えば、“ＣＰＵ”、“メモリ”などのサーバ装置１０のハードウェアである。また、「スペック」は、「対象」の物理的性能（スペック）である。「料金倍率」は、「対象」となるハードウェアリソースを利用した場合のハードウェアスペックごとの利用にかかる料金の料金倍率である。図７Ａに示すように、例えば、「対象」“ＣＰＵ”、「スペック」“１ｖＣＰＵ（３ＧＨｚ）”の場合、「料金倍率」“基本（１倍）”となる。すなわち、利用者は、サービスプラットフォームを利用する際にサーバ装置１０の駆動周波数３ＧＨｚのＣＰＵを１つ使用する場合、ＣＰＵの利用料金として、所定の基本料金の１倍、すなわち基本料金が課金される。「スペック」“１ｖＣＰＵ（３ＧＨｚ）”の“１ｖ”は、１つの“ＣＰＵ（３ＧＨｚ）”であることを示す。
【００５２】
また、図７Ａに示すように、例えば、「対象」“ＣＰＵ”、「スペック」“２ｖＣＰＵ（３ＧＨｚ）”の場合、「料金倍率」“１．３倍”となる。すなわち、利用者は、サービスプラットフォームを利用する際にサーバ装置１０の駆動周波数３ＧＨｚのＣＰＵを２つ使用する場合、ＣＰＵの利用料金として、所定の基本料金の１．３倍が課金される。
【００５３】
また、図７Ａに示すように、例えば、「対象」“メモリ”、「スペック」“１ＧＢ”の場合、「料金倍率」“基本（１倍）”となる。すなわち、サービスの利用者は、サービスを利用する際にサーバ装置１０の１ＧＢｙｔｅのメモリを使用する場合に、メモリの利用料金として、所定の基本料金の１倍、すなわち基本料金が課金される。
【００５４】
（契約情報記憶部の契約情報記憶テーブル）
図７Ｂは、契約情報記憶テーブルの構成の一例を示す図である。契約情報記憶テーブル１０４ｂに記憶される情報は、サーバ装置１０で提供されるサービスプラットフォームの提供者または利用者により予め登録される。図７Ｂに示すように、契約情報記憶テーブル１０４ｂは、「ＶＭＩＤ」、「ＩＰアドレス」、「ＣＰＵ」、「メモリ」、「ディスク」、「許容接続数」、「起動時従量課金」、「停止時従量課金」、「ＯＳ」、「月最大利用時間」、「オートスケール」、「月最大許容使用料金」、「利用可能時間帯」を対応付けて記憶する。
【００５５】
ここで、「ＶＭＩＤ」は、利用者ごとに割り当てられるサーバ装置１０の仮想マシン処理部１３の識別情報である。「ＩＰアドレス」は、契約に従って利用者に割り当てられている仮想マシン処理部１３のＩＰアドレスである。「ＣＰＵ」は、契約に従って利用者に割り当てられている仮想マシン処理部１３のＣＰＵのスペックである。「メモリ」は、契約に従って利用者に割り当てられている仮想マシン処理部１３の内部記憶装置としてのメモリのサイズである。「ディスク」は、契約に従って利用者に割り当てられている仮想マシン処理部１３の外部記憶装置の記憶容量である。
【００５６】
また、「許容接続数」は、各仮想マシン処理部１３に対して許容される接続数の上限値である。「起動時従量課金」は、各仮想マシン処理部１３が起動している間に課金される時間当たりの料金である。「停止時従量課金」は、各仮想マシン処理部１３が停止している間に課金される時間当たりの料金である。
【００５７】
また、「ＯＳ」は、契約に従って利用者に割り当てられている仮想マシン処理部１３のＯＳである。また、「月最大利用時間」は、契約により利用者に割り当てられている仮想マシン処理部１３に許容される１ヶ月あたりの利用時間である。「オートスケール」は、各仮想マシン処理部１３の利用状況に基づいて当該の仮想マシン処理部１３のスケールアップやスケールダウンを行う機能を利用するか否かを示す情報である。「月最大許容使用料金」は、各仮想マシン処理部１３が許容される１ヶ月あたりの使用料金である。「利用可能時間帯」は、利用者が各仮想マシン処理部１３を利用可能な時間帯の制限の有無および制限時間帯である。
【００５８】
図７Ｂに示すように、契約情報記憶テーブル１０４ｂは、例えば、「ＶＭＩＤ」“ＶＭ１”、「ＩＰアドレス」“１９２．１６８．０．１００”、「ＣＰＵ」“１ｖＣＰＵ（３ＧＨｚ）”、「メモリ」“１ＧＢ”、「ディスク」“６０ＧＢ”、「許容接続数」“”１５０、「起動時従量課金」“５００円／時間”、「停止時従量課金」“１０円／時間”、ＯＳ“ＳｅｒｖｅｒＯＳ１”、「月最大利用時間」“１２０時間”、「オートスケール」“あり”、「月最大許容使用料金」“１０００００円”、「利用可能時間帯」“制限なし”を対応付けて記憶する。
【００５９】
（リクエスト制御部のリクエスト解析部）
図３Ｂを参照して、リクエスト制御部１０６の詳細について説明する。リクエスト制御部１０６のリクエスト解析部１０６ａは、クライアント端末２０から送信され、リクエスト受信部１０５により受信されたリクエストを解析する。例えば、リクエスト解析部１０５ａは、仮想マシン処理部１３への接続もしくは切断を要求するリクエストをクライアント端末２０から受信した場合、「アクセスユーザＩＤ」、「ＶＭＩＤ」、「接続ＩＤ」をリクエストから抽出する。
【００６０】
そして、リクエスト解析部１０６ａは、抽出した「アクセスユーザＩＤ」、「ＶＭＩＤ」、「接続ＩＤ」を、接続情報記憶テーブル１０１ａの「アクセスユーザＩＤ」、「ＶＭＩＤ」、「接続ＩＤ」にそれぞれ記憶させる。また、リクエスト解析部１０６ａは、仮想マシン処理部１３への接続もしくは切断を要求するリクエストを受信した時刻を、接続情報記憶テーブル１０１ａの「接続時刻」もしくは「切断時刻」にそれぞれ記憶させる。
【００６１】
また、リクエスト解析部１０６ａは、「ＶＭＩＤ」に対応する「切断時刻」が記憶されている接続情報記憶テーブル１０１ａのレコードの「接続状態」に“切断”を記憶させる。また、リクエスト解析部１０６ａは、「ＶＭＩＤ」に対応する「切断時刻」が記憶されていない接続情報記憶テーブル１０１ａのレコードの「接続状態」に“接続中”を記憶させる。そして、リクエスト解析部１０６ａは、リクエスト受信部１０５からリクエストを受信した受信日時とともに、受信したリクエストを判定部１０６ｂへ送信する。
【００６２】
（リクエスト制御部の判定部）
リクエスト制御部１０６の判定部１０６ｂは、接続情報記憶テーブル１０１ａに記憶される「接続状態」“接続中”であるレコード数を「ＶＭＩＤ」ごとに集計することで、仮想マシン処理部１３ごとの「同時接続数」を算出する。そして、判定部１０６ｂは、算出した「ＶＭＩＤ」ごとの「同時接続数」を仮想マシン状態記憶テーブル１０３ａに記憶させる。
【００６３】
また、判定部１０６ｂは、仮想マシン状態履歴記憶テーブル１０２ａに記憶される「イベント」を「ＶＭＩＤ」ごとに「発生時刻」の時系列で走査する。そして、判定部１０６ｂは、「ＶＭＩＤ」ごとに、各「イベント」による各「ＶＭＩＤ」の仮想マシン処理部１３の状態の遷移を「発生時刻」の昇順でトレースすることで、各「ＶＭＩＤ」の仮想マシン処理部１３の現在の状態を判定する。
【００６４】
よって、判定部１０６ｂは、仮想マシン状態履歴記憶テーブル１０２ａの記憶内容に基づき、現在における各「ＶＭＩＤ」の仮想マシン処理部１３の“停止中”または“起動中”を示す「状態」、「ＣＰＵスケール状態」、「メモリスケール状態」を判定することができる。そして、判定部１０６ｂは、判定した「状態」、「ＣＰＵスケール状態」、「メモリスケール状態」を、仮想マシン状態記憶テーブル１０３ａにおける対応する各「ＶＭＩＤ」のレコードに記憶させる。
【００６５】
また、判定部１０６ｂは、仮想マシン処理部１３の利用にかかる「課金額」を算出する。判定部１０６ｂは、仮想マシン状態履歴記憶テーブル１０２ａに記憶される各「ＶＭＩＤ」に対応する仮想マシン処理部１３の“状態”が変化する各「イベント」間の時間と、リソース情報記憶テーブル１０４ａおよび契約情報記憶テーブル１０４ｂに記憶される各リソースの利用料金の単価とに基づき「課金額」を算出する。なお、ここでの“状態”は、仮想マシン状態記憶テーブル１０３ａにおける「状態」、「ＣＰＵスケール状態」、「メモリスケール状態」を含む。
【００６６】
例えば、判定部１０６ｂは、「ＶＭＩＤ」“ＶＭ１”の仮想マシン処理部１３が、「状態」“起動中”である時間が“２時間”であるとすると、“２時間”に、契約情報記憶テーブル１０４ｂの「起動時従量課金」“５００円／時間”を乗じることで、「課金額」“１０００円”を算出する。同様に、判定部１０６ｂは、仮想マシン状態履歴記憶テーブル１０２ａに記憶される各「ＶＭＩＤ」に対応する「イベント」に基づき、契約情報記憶テーブル１０４ｂの「ＣＰＵ」〜「停止時従量課金」の項目ごとに、所定期間にわたる「課金額」を算出する。そして、判定部１０６ｂは、算出した「ＣＰＵ」〜「停止時従量課金」の項目ごと算出した「課金額」の合計金額を、仮想マシン状態記憶テーブル１０３ａの「課金額」に記憶させる。
【００６７】
また、判定部１０６ｂは、リクエスト解析部１０６ａから、受信日時とともにリクエストを受信する。そして、判定部１０６ｂは、サーバ装置１０の仮想マシン処理部１３から送信され、レスポンス受信部１０９を介して受信した当該のリクエストに対応するレスポンスの受信日時を、レスポンス制御部１１０から受信する。そして、判定部１０６ｂは、当該のリクエスト受信日時および対応するレスポンスの受信日時から、当該の仮想マシン処理部１３のレスポンスタイムを算出する。そして、判定部１０６ｂは、算出したレスポンスタイムを、仮想マシン状態記憶テーブル１０３ａにおける当該の仮想マシン処理部１３に対応する「ＶＭＩＤ」のレコードの「レスポンスタイム」に記憶させる。
【００６８】
なお、レスポンスタイムは、各仮想マシン処理部１３に対するリクエストおよび対応するレスポンスが発生するごとに変化する。よって、判定部１０６ｂは、仮想マシン状態記憶テーブル１０３ａに記憶させる「レスポンスタイム」を、各仮想マシン処理部１３に対するリクエストおよび対応するレスポンスが発生するごとに更新してもよいし、所定周期ごとに更新してもよい。
【００６９】
また、判定部１０６ｂは、リクエストを受信してから所定時間内に、当該のリクエストに対応するレスポンスが受信されない場合には、当該のリクエストの送信先である仮想マシン処理部１３が停止中であると判定する。そして、判定部１０６ｂは、判定結果に応じて、当該の仮想マシン処理部１３を起動させるよう仮想マシン制御部１０８に指示する。仮想マシン制御部１０８は、判定部１０６ｂからの指示に応じて、当該の仮想マシン処理部１３を起動させる制御をおこなう。
【００７０】
また、判定部１０６ｂは、仮想マシン処理部１３の死活チェックを行う。例えば、判定部１０６ｂは、仮想マシン処理部１３が起動しているか停止しているかを確認するためのリクエストを生成する。判定部１０６ｂは、生成したリクエストを、リクエスト送信部１０７を介して仮想マシン処理部１３へ送信する。判定部１０６ｂは、送信したリクエストに対応するレスポンスがレスポンス受信部１０９で受信された場合に、仮想マシン処理部１３が起動しているものと判定する。一方、判定部１０６ｂは、送信したリクエストに対応するレスポンスがレスポンス受信部１０９に一定時間受信されない場合に、仮想マシン処理部１３が停止しているものと判定する。
【００７１】
また、判定部１０６ｂは、仮想マシン処理部１３の利用にかかる「月内累計使用時間」を算出する。判定部１０６ｂは、仮想マシン状態履歴記憶テーブル１０２ａに記憶される各「ＶＭＩＤ」に対応する仮想マシン処理部１３の「イベント」“起動”および「イベント」“停止”間の時間から「月内累計使用時間」を算出する。そして、判定部１０６ｂは、算出した「月内累計使用時間」を、仮想マシン状態記憶テーブル１０３ａにおいて、対応する「ＶＭＩＤ」の「月内累計使用時間」に記憶させる。
【００７２】
なお、判定部１０６ｂは、「ＶＭＩＤ」ごとの「状態」、「ＣＰＵスケール状態」、「メモリスケール状態」、「同時接続数」、「レスポンスタイム」「月内累計使用時間」、「課金額」の取得または算出は、リクエスト解析部１０６ａからリクエストを受信するごとに、または、所定周期でおこなってもよい。
【００７３】
また、判定部１０６ｂは、「ＶＭＩＤ」ごとに、仮想マシン状態記憶テーブル１０３ａの「課金額」が、契約情報記憶テーブル１０４ｂ記憶される「月最大許容使用料金」を満たすか否かを判定する。そして、判定部１０６ｂは、「課金額」が、「月最大許容使用料金」を満たさない場合、当該「ＶＭＩＤ」に対応する仮想マシン処理部１３へのリクエストを拒否すると判定する。または、判定部１０６ｂは、「課金額」が、「月最大許容使用料金」を満たさない場合、当該「ＶＭＩＤ」に対応する仮想マシン処理部１３への接続を切断すると判定する。
【００７４】
判定部１０６ｂは、「月最大許容使用料金」に基づく「課金額」の判定結果に応じて、リクエスト送信部１０７に、当該のリクエストのサーバ装置１０への送信をキャンセルするよう指示する。リクエスト送信部１０７は、判定部１０６ｂからの指示に応じて、当該のリクエストのサーバ装置１０への送信をキャンセルする制御をおこなう。また、判定部１０６ｂは、「月最大許容使用料金」に基づく「課金額」の判定結果を、レスポンス制御部１１０へ送信する。そして、レスポンス制御部１１０は、リクエストがキャンセルされたことを通知するレスポンスを生成し、レスポンス送信部１１１を介してクライアント端末２０へ送信する。
【００７５】
そして、判定部１０６ｂは、「月最大許容使用料金」に基づく「課金額」の判定結果に応じて、仮想マシン制御部１０８に、当該の仮想マシン処理部１３を停止させるよう指示する。仮想マシン制御部１０８は、判定部１０６ｂからの指示に応じて、当該の仮想マシン処理部１３を停止させる制御をおこなう。
【００７６】
なお、判定部１０６ｂは、「同時接続数」、「月内累計使用時間」についても、「課金額」と同様に、契約情報記憶テーブル１０４ｂの「許容接続数」、「月最大利用時間」に基づいて判定してもよい。また、判定部１０６ｂは、「ＶＭＩＤ」ごとに、「課金額」が「月最大許容使用料金」を満たすか否かを判定の判定を、リクエスト解析部１０６ａからリクエストを受信するごとに、または、所定周期でおこなってもよい。
【００７７】
なお、判定部１０６ｂが仮想マシン処理部１３を停止させるか否かを判定する方法は、例えば、判定部１０６ｂが、契約情報記憶テーブル１０４ｂの「利用可能時間帯」を参照し、現在時刻が「利用可能時間帯」に含まれない場合に、仮想マシン処理部１３を停止させると判定してもよい。
【００７８】
また、判定部１０６ｂは、仮想マシン処理部１３を起動させるか否かを判定する起動判定処理をおこなう。一例としては、判定部１０６ｂは、利用状況と契約情報とを比較することで、仮想マシン処理部１３を起動させるか否かを判定する。判定部１０６ｂは、判定結果を仮想マシン制御部１０８およびレスポンス制御部１１０へ送信する。
【００７９】
例えば、判定部１０６ｂは、契約情報記憶テーブル１０４ｂを参照し、「課金額」が「月最大許容使用料金」を超えていない場合や、現在時刻が「利用可能時間帯」に含まれる場合に、仮想マシン処理部１３を起動させると判定する。
【００８０】
また、判定部１０６ｂは、契約情報記憶テーブル１０４ｂにおいて「オートスケール」“あり”の「ＶＭＩＤ」に対応する仮想マシン処理部１３のスケールアップおよびスケールダウンの要否を判定する。仮想マシンのスケールアップとは、物理計算機上に論理的に構築された仮想マシン処理部１３に割り当てるハードウェアの処理能力や記憶領域の容量を増加させる制御をいう。また。仮想マシン処理部１３のスケールダウンは、物理計算機上に論理的に構築された仮想マシン処理部１３に割り当てるハードウェアの処理能力や記憶領域の容量を減少させる制御をいう。
【００８１】
例えば、「オートスケール」“あり”の「ＶＭＩＤ」に対応する仮想マシン状態記憶テーブル１０３ａの「同時接続数」が、契約情報記憶テーブル１０４ｂの「許容接続数」に対して第１の割合（例えば８０％）になったとする。この場合に、判定部１０６ｂは、当該の仮想マシン処理部１３に割り当てる「ＣＰＵ」、「メモリ」、「ディスク」のうちの一または複数のハードウェアリソースを、所定量だけ増加させるよう仮想マシン制御部１０８に指示する。仮想マシン制御部１０８は、判定部１０６ｂの指示に応じて、当該の仮想マシン処理部１３に割り当てる「ＣＰＵ」、「メモリ」、「ディスク」のうちの一または複数のハードウェアリソースを、所定量だけ増加させる制御をおこなう。
【００８２】
また、例えば、「オートスケール」“あり”の「ＶＭＩＤ」に対応する仮想マシン状態記憶テーブル１０３ａの「同時接続数」が、契約情報記憶テーブル１０４ｂの「許容接続数」に対して第２の割合（例えば２０％）になったとする。この場合に、判定部１０６ｂは、当該の仮想マシン処理部１３に割り当てる「ＣＰＵ」、「メモリ」、「ディスク」のうちの一または複数のハードウェアリソースを、所定量だけ減少させるよう仮想マシン制御部１０８に指示する。仮想マシン制御部１０８は、判定部１０６ｂの指示に応じて、当該の仮想マシン処理部１３に割り当てる「ＣＰＵ」、「メモリ」、「ディスク」のうちの一または複数のハードウェアリソースを、所定量だけ減少させる制御をおこなう。
【００８３】
なお、判定部１０６ｂは、「ＶＭＩＤ」ごとに、オートスケールの要否の判定を、リクエスト解析部１０６ａからリクエストを受信するごとに、または、所定周期でおこなってもよい。
【００８４】
また、判定部１０６ｂは、仮想マシン状態記憶テーブル１０３ａを参照し、リクエスト解析部１０６ａから受信したリクエストの送信先の仮想マシン処理部１３が停止中であれば、仮想マシン制御部１０８に、当該の仮想マシン処理部１３を起動するよう指示する。仮想マシン制御部１０８は、判定部１０６ｂの指示に応じて、当該の仮想マシン処理部１３を起動する制御をおこなう。
【００８５】
また、判定部１０６ｂは、リクエスト解析部１０６ａから受信したリクエストから「ＶＭＩＤ」を取得する。そして、判定部１０６ｂは、サービスグループテーブル１０３ｂから、リクエストの対象であるサーバ名を含むサービス名を取得し、当該サービスに対応する「ＶＭＩＤ」の一覧を取得する。そして、判定部１０６ｂは、リクエスト解析部１０６ａから受信したリクエストがデータ要求リクエスト（例えば図８Ａ参照）であるかサーバ状態確認リクエスト（例えば図８Ｂ参照）であるかを判定する。
【００８６】
そして、判定部１０６ｂは、リクエスト解析部１０６ａから受信したリクエストがデータ要求リクエストである場合には、取得した「ＶＭＩＤ」の一覧から一つの「ＶＭＩＤ」を選択する。そして、判定部１０６ｂは、選択した「ＶＭＩＤ」に対応する仮想マシン処理部１３への当該のリクエストの接続可否判定処理を実行する。
【００８７】
ここで、接続可否判定処理について説明する。判定部１０６ｂは、選択した「ＶＭＩＤ」と同一の「ＶＭＩＤ」を有するレコードを接続情報記憶テーブル１０１ａから取得し、「ＶＭＩＤ」ごとに集計する。また、判定部１０６ｂは、契約情報記憶テーブル１０４ｂから、当該の「ＶＭＩＤ」と同一の「ＶＭＩＤ」取得する。
【００８８】
例えば、判定部１０６ｂは、「アクセスユーザＩＤ」“ＵＳＥＲ０１”のリクエストを受信した場合に、接続情報記憶テーブル１０１ａから「同時接続数」“１００”を取得する。判定部１０６ｂは、「アクセスユーザＩＤ」“ＵＳＥＲ０１”のアクセスユーザが接続する仮想マシン処理部１３の「許容接続数」“１５０”を、契約情報記憶テーブル１０４ｂから取得する。判定部１０６ｂは、「接続数」が「許容接続数」を超えないので、接続可能と判定する。
【００８９】
なお、判定部１０６ｂが「接続数」を用いて接続可否を判定する場合を説明したが、これに限定されるものではない。例えば、「リソース使用量」を用いて接続可否を判定してもよい。この場合、判定部１０６ｂは、同一の仮想マシン処理部１３に接続しているアクセスユーザが利用しているリソース使用量を集計し、集計結果と契約情報とを比較することで、接続可否を判定する。
【００９０】
一方、判定部１０６ｂは、リクエスト解析部１０６ａから受信したリクエストがサーバ状態確認リクエストである場合には、取得した全ての「ＶＭＩＤ」に対応する仮想マシン処理部１３の「状態」を仮想マシン状態記憶テーブル１０３ａから取得する。そして、判定部１０６ｂは、取得した仮想マシン処理部１３の「状態」をレスポンス制御部１１０へ出力する。
【００９１】
上述のように、判定部１０６ｂは、リクエスト送信部１０７へ種々の判定結果を送信するとともに、判定結果に応じて判定部１０６ｂ、リクエスト送信部１０７または仮想マシン制御部１０８がおこなう各種制御の内容をレスポンス制御部１１０へ通知してもよい。そして、レスポンス制御部１１０は、判定部１０６ｂから通知された各種制御の内容を含むレスポンスを生成する、または、レスポンスに各種制御の内容を含める修正をおこなってもよい。このようにして生成または修正されたレスポンスは、レスポンス送信部１１１を介してクライアント端末２０へ送信される。
【００９２】
なお、判定部１０６ｂは、仮想マシン処理部１３の停止時刻、起動時間、スケールアップ時刻およびスケールダウン時刻をそれぞれ算出する。一例としては、判定部１０６ｂは、過去一週間の間に仮想マシン処理部１３が停止した日時を仮想マシン状態履歴記憶テーブル１０２ａから取得する。判定部１０６ｂは、取得した日時について周期性を解析し、仮想マシン処理部１３の停止予定時刻とする。
【００９３】
具体的には、判定部１０６ｂは、「月曜日の１６時００分」、「火曜日の１６時３０分」、「水曜日の１７時００分」、「木曜日の１７時３０分」、「金曜日の１８時００分」、「土曜日の１２時００分」、「日曜日の２０時００分」という一週間分の日時から、停止時刻「平日の１７時００分」を算出する。そして、判定部１０６ｂは、算出した停止予定時刻を仮想マシン制御部１０８へ送信する。
【００９４】
（仮想マシン制御部）
仮想マシン制御部１０８は、判定部１０６ｂによる指示に応じてサーバ装置１０の仮想マシン処理部１３の動作を制御する。また、仮想マシン制御部１０８は、判定部１０６ｂによる指示に応じてサーバ装置１０の仮想マシン処理部１３の動作を制御した履歴を、仮想マシン状態履歴記憶部１０２の仮想マシン状態履歴記憶テーブル１０２ａに記憶させる。
【００９５】
例えば、仮想マシン制御部１０８は、判定部１０６ｂからの指示に応じて、仮想マシン処理部１３の起動、スケールアップ、スケールダウン、停止をおこなったとする。この場合に、仮想マシン制御部１０８は、当該の仮想マシン処理部１３の「ＶＭＩＤ」、「イベント」、「発生時刻」を対応付けて仮想マシン状態履歴記憶テーブル１０２ａに記憶させる。
【００９６】
なお、仮想マシン制御部１０８は、判定部１０６ｂにより仮想マシン処理部１３を起動または停止させると指示された場合に、サービスグループテーブル１０３ｂに記憶される起動順または停止順に従って各仮想マシン処理部１３を起動または停止させる。
【００９７】
例えば、仮想マシン制御部１０８は、サービスを停止する場合に、サービスグループテーブル１０３ｂを参照し、停止するサービスに対応付けられる仮想マシン処理部１３を停止順に停止させる。この際、仮想マシン制御部１０８は、停止する仮想マシン処理部１３が他のサービスでも利用されているか否かを判定する。仮想マシン制御部１０８は、停止する仮想マシン処理部１３が他のサービスで現在利用されていない場合、当該の仮想マシン処理部１３を停止させる。なお、停止させる仮想マシン処理部１３が他のサービスで現在利用されている場合には、仮想マシン制御部１０８は、当該の仮想マシン処理部１３を停止させない。
【００９８】
また、例えば、仮想マシン制御部１０８は、サービスを起動する場合に、サービスグループテーブル１０３ｂを参照し、起動するサービスに対応付けられる仮想マシン処理部１３を起動順に起動させる。この際、仮想マシン制御部１０８は、起動する仮想マシン処理部１３が既に起動中である場合、当該の仮想マシン処理部１３を起動する処理をおこなわない。
【００９９】
（レスポンス制御部のレスポンス生成部）
レスポンス生成部１１０ａは、リクエスト制御部１０６から受信した判定結果に応じて、レスポンスを生成する。例えば、レスポンス生成部１１０ａは、仮想マシン処理部１３の状態を取得した場合に、仮想マシン処理部１３の状態を表示するためのレスポンスを生成する。また、レスポンス生成部１１０ａは、仮想マシン処理部１３を停止させる旨の判定結果を受け付けた場合に、仮想マシン処理部１３を停止処理中である旨の情報を表示するためのレスポンスを生成する。
【０１００】
また、レスポンス生成部１１０ａは、仮想マシン処理部１３を起動させる旨の判定結果を受け付けた場合に、仮想マシン処理部１３を起動処理中である旨の情報を表示するためのレスポンスを生成する。また、レスポンス生成部１１０ａは、仮想マシン処理部１３を起動させない旨の判定結果を受け付けた場合に、仮想マシン処理部１３を停止中である旨の情報を表示するためのレスポンスを生成する。また、レスポンス生成部１１０ａは、仮想マシン処理部１３を停止させない旨の判定結果を受け付けた場合に、仮想マシン処理部１３が起動中である旨の情報を表示するためのレスポンスを生成する。
【０１０１】
そして、レスポンス生成部１１０ａは、生成したレスポンスを、レスポンス送信部１１１へ送信する。レスポンス送信部１１１は、受信したレスポンスをクライアント端末２０へ送信する。クライアント端末２０は、レスポンス送信部１１１からレスポンスを受信すると、生成されたレスポンスに対応する表示を表示画面に表示する。
【０１０２】
（レスポンス制御部のレスポンス修正部）
レスポンス修正部１１０ｂは、レスポンス受信部１０９から受信したレスポンスを修正する。図８Ｃおよび図８Ｄは、レスポンス修正によるレスポンスへのスクリプトの追加の一例を示す図である。例えば、図８Ｃおよび図８Ｄに示すように、レスポンス修正部１１０ｂは、サーバの停止予定時刻が近づいた場合に、レスポンス受信部１０９から受信したＨＴＭＬ（HyperText  Markup  Language）レスポンスを、図８Ｃまたは図８Ｄに示すようなＪａｖａＳｃｒｉｐｔ（登録商標、以下同様）などによるスクリプト１２ａまたは１２ｂを追加して修正する。
【０１０３】
そして、レスポンス修正部１１０ｂは、修正したレスポンスを、レスポンス送信部１１１へ送信する。レスポンス送信部１１１は、受信したレスポンスをクライアント端末２０へ送信する。
【０１０４】
図８Ｅは、レスポンス修正によりスクリプトが追加されたレスポンスの画面表示の一例を示す図である。クライアント端末２０は、レスポンス送信部１１１からレスポンスを受信すると、図８Ｅに示すように、ＪａｖａＳｃｒｉｐｔなどのスクリプトによるメッセージ１２ｃが追加されたレスポンスを表示画面に表示する。なお、メッセージの領域１３ａの位置は、クライアント端末２０の表示画面において、利用者が容易に視認できる箇所であれば、いずれの位置であってもよい。
【０１０５】
（サーバ制御装置による仮想マシン処理部の起動の概要）
図９Ａは、サーバ制御装置による仮想マシンの起動の概要の一例を示すシーケンス図である。ここでは、仮想マシン処理部１３が起動されていない状態（ＶＭ停止中）であるものとして説明する。
【０１０６】
図９Ａに示すように、クライアント端末２０は、サーバ装置１０へ、仮想マシン処理部１３が提供するサービスへアクセスするためのリクエストを送信する（ステップＳ１１）。そして、サーバ制御装置１００のリクエスト受信部１０５は、サービスへのアクセスを開始するリクエストをクライアント端末２０から受信する。そして、サーバ制御装置１００のリクエスト送信部１０７は、受信したリクエストをサーバ装置１０へ転送する（ステップＳ１２）。
【０１０７】
このとき、サーバ装置１０において、仮想マシン処理部１３は起動されていない状態であるので、サーバ制御装置１００の判定部１０６ｂは、サービスを提供する仮想マシン処理部１３が停止中である旨を、ネットワークエラーとして検知する。
【０１０８】
そして、サーバ制御装置１００の仮想マシン制御部１０８は、サービスの提供者により提供されるＡＰＩ（Application  Program  Interface）やＷＯＬ（Wake  On  LAN）などを用いて、サーバ装置１０において、仮想マシン処理部１３の起動を開始させる制御をおこなう（ステップＳ１３）。そして、サーバ制御装置１００のレスポンス送信部１１１は、仮想マシン処理部１３を起動中である旨の情報を含む画面を表示させるレスポンスを、クライアント端末２０へ送信する（ステップＳ１４）。一例としては、サーバ制御装置１００のレスポンス送信部１１１は、「サーバを起動しています。しばらくお待ち下さい」というメッセージを含む画面を表示させるレスポンスを、クライアント端末２０へ送信する。
【０１０９】
そして、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３の起動が完了するまで、定期的に死活チェックを行う（ステップＳ１５）。サーバ制御装置１００のレスポンス受信部１０９は、死活チェックに対する応答を受信する（ステップＳ１６）。これにより、サーバ制御装置１００は、仮想マシン処理部１３の起動を確認する。
【０１１０】
また、サーバ制御装置１００のリクエスト受信部１０５がクライアント端末２０からリクエストを受信すると（ステップＳ１７）、サーバ制御装置１００のリクエスト送信部１０７は、受信したリクエストをサーバ装置１０の仮想マシン処理部１３へ転送する（ステップＳ１８）。このとき、サーバ制御装置１００のリクエスト解析部１０６ａは、リクエストを受信した日時を記録する。そして、サーバ制御装置１００のレスポンス受信部１０９は、リクエストに対応するレスポンスをサーバ装置１０の仮想マシン処理部１３から受信する（ステップＳ１９）。
【０１１１】
そして、サーバ制御装置１００のレスポンス送信部１１１は、受信したレスポンスをクライアント端末２０へ転送する（ステップＳ２０）。このように、サーバ制御装置１００は、クライアント端末２０からのリクエストを受信することで、仮想マシン処理部１３を起動させることができる。
【０１１２】
（サーバ制御装置による仮想マシン処理部の停止の概要）
図９Ｂは、サーバ制御装置による仮想マシンの停止の概要の一例を示すシーケンス図である。ここでは、仮想マシン処理部１３が起動中であるものとして説明する。
【０１１３】
図９Ｂに示すように、サーバ制御装置１００のリクエスト受信部１０５がクライアント端末２０からリクエストを受信すると（ステップＳ２１）、サーバ制御装置１００のリクエスト送信部１０７は、受信したリクエストをサーバ装置１０へ転送する（ステップＳ２２）。サーバ制御装置１００のレスポンス受信部１０９は、リクエストに対するレスポンスを、仮想マシン処理部１３から受信し（ステップＳ２３）、サーバ制御装置１００の判定部１０６ｂは、レスポンスを受信した日時を記録する（ステップＳ２４）。
【０１１４】
一例としては、サーバ制御装置１００の判定部１０６ｂは、レスポンスを受信した日時と、レスポンスの送信元の仮想マシン処理部１３を識別する情報を対応付けて記録する。そして、サーバ制御装置１００のレスポンス送信部１１１は、受信したレスポンスをクライアント端末２０端末へ転送する（ステップＳ２５）。
【０１１５】
また、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３へのリクエストを最後に受信した日時を確認する最終アクセスチェックを内部で定期的に実行し（ステップＳ２６）、仮想マシン処理部１３を停止させるか否かを判定する（ステップＳ２７）。一例としては、サーバ制御装置１００の判定部１０６ｂは、起動中の仮想マシン処理部１３について記録された日時を参照し、記録した日時と現在時刻との間に所定時間の差がある場合に、当該の仮想マシン処理部１３を停止させると判定する。
【０１１６】
なお、起動中の仮想マシン処理部１３について記録された日時が複数存在する場合には、最新の日時を用いて判定する。そして、サーバ制御装置１００の仮想マシン制御部１０８は、停止させると判定した仮想マシン処理部１３の停止を開始させる（ステップＳ２８）。そして、サーバ制御装置１００の判定部１０６ｂは、死活チェックを行うことで（ステップＳ２９）、仮想マシン処理部１３の停止を確認する（ステップＳ３０）。
【０１１７】
（サーバ制御装置による仮想マシン処理部の稼働制御の概要）
図９Ｃは、サーバ制御装置による仮想マシンの動作制御の概要の一例を示すシーケンス図である。ここでは、仮想マシン処理部１３が停止中であるものとして説明する。また、サーバ制御装置１００の仮想マシン状態履歴記憶部１０２は、例えば、仮想マシン処理部１３が起動した日時、停止した日時、スケールアップを実行した日時およびスケールダウンを実行した日時を含む稼働状況の履歴を記憶するものとする。
【０１１８】
図９Ｃに示すように、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３の起動判定に関する利用状況の集計を、内部スレッドで定期的に実行し（ステップＳ３１）、仮想マシン処理部１３を起動させるか否かを判定する（ステップＳ３２）。一例としては、サーバ制御装置１００の判定部１０６ｂは、過去一週間の間に仮想マシン処理部１３が起動した日時を稼働状況の履歴から取得する。
【０１１９】
そして、サーバ制御装置１００の判定部１０６ｂは、取得した日時について周期性を解析し、仮想マシン処理部１３の起動時刻として、例えば、「平日の９時００分」を算出する。そして、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３の起動時刻を経過していれば、仮想マシン処理部１３を起動させると判定する。そして、サーバ制御装置１００の仮想マシン制御部１０８は、仮想マシン処理部１３の起動を開始させる（ステップＳ３３）。
【０１２０】
また、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３のスケールアップおよび／またはスケールダウン判定に関する利用状況の集計を、内部スレッドで定期的に実行し（ステップＳ３４）、仮想マシン処理部１３をスケールアップまたはスケールダウンさせるか否かを判定する（ステップＳ３５）。
【０１２１】
一例としては、サーバ制御装置１００の判定部１０６ｂは、過去一週間の間に仮想マシン処理部１３がスケールアップまたはスケールダウンした日時を稼働状況の履歴から取得する。そして、サーバ制御装置１００の判定部１０６ｂは、取得した日時について周期性を解析し、仮想マシン処理部１３のスケールアップ時刻として、例えば、「平日の１２時００分」を算出する。
【０１２２】
そして、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３のスケールアップ時刻を経過していれば、仮想マシン処理部１３をスケールアップさせると判定する。そして、サーバ制御装置１００の仮想マシン制御部１０８は、仮想マシン処理部１３をスケールアップさせる（ステップＳ３６）。また、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３のスケールダウン時刻を経過していれば、仮想マシン処理部１３をスケールダウンさせると判定する。そして、サーバ制御装置１００の仮想マシン制御部１０８は、仮想マシン処理部１３をスケールダウンさせる（ステップＳ３７）。
【０１２３】
また、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３の起動判定に関する利用状況の集計を、内部スレッドで定期的に実行し（ステップＳ３８）、仮想マシン処理部１３を停止させるか否かを判定する（ステップＳ３９）。一例としては、サーバ制御装置１００の判定部１０６ｂは、過去一週間の間に仮想マシン処理部１３が停止した日時を稼働状況の履歴から取得する。
【０１２４】
そして、サーバ制御装置１００の判定部１０６ｂは、取得した日時について周期性を解析し、仮想マシン処理部１３の停止時刻として、例えば、「平日の１７時００分」を算出する。そして、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３の停止時刻を経過していれば、仮想マシン処理部１３を停止させると判定する。そして、サーバ制御装置１００の仮想マシン制御部１０８は、仮想マシン処理部１３の停止を開始させる（ステップＳ４０）。
【０１２５】
なお、ここでは、サーバ制御装置１００の判定部１０６ｂが算出した起動時刻を経過した場合に、仮想マシン処理部１３を起動させるものとして説明したが、これに限定されるものではない。例えば、サーバ制御装置１００の内部の記憶領域に算出した起動時刻を仮想マシン処理部１３ごとにスケジュールとして記憶しておき、サーバ制御装置１００の判定部１０６ｂがスケジュールを定期的に参照し、起動時刻を経過した場合に、仮想マシン処理部１３を起動させると判定する構成としても良い。
【０１２６】
また、サーバ制御装置１００は、スケールアップ時刻、スケールダウン時刻および停止時刻についても同様にスケジュールとして記憶し、それぞれのスケジュールに応じて、仮想マシン処理部１３をスケールアップ、スケールダウンまたは停止させてもよい。さらに、サーバ制御装置１００が記憶するスケジュールは、利用者によって任意に設定されてもよい。
【０１２７】
また、ここでは、サーバ制御装置１００の判定部１０６ｂによって算出される起動時刻、スケールアップ時刻、スケールダウン時刻および停止時刻の一例として、「平日」と曜日が指定される場合を説明したが、これに限定されるものではない。例えば、サーバ制御装置１００は、所定の期間が指定されてもよいし、時間帯が指定されてもよい。
【０１２８】
なお、サーバ制御装置１００と、仮想マシン処理部１３との通信は、サーバ装置１０の仮想マシン実行部１２を経由して行われる。また、サーバ制御装置１００は、仮想マシン処理部１３の起動、停止、死活監視などをサーバ装置１０の仮想マシン実行部１２を制御しておこなう。図９Ａ〜図９Ｃ示すシーケンス図では、仮想マシン実行部１２および仮想マシン実行部１２の機能もしくは処理の図示を省略している。
【０１２９】
（クライアント端末におけるデータ要求にかかる処理）
図１０Ａは、クライアント端末におけるデータ要求にかかる処理の一例を示すフローチャートである。図１０Ａに示すように、クライアント端末２０は、アクセスユーザから入力された、サーバ装置１０で提供されるサービスに対するデータ要求のリクエストをサーバ制御装置１００へ送信する（ステップＳ５１）。そして、クライアント端末２０は、ステップＳ５１で送信したリクエストに対するレスポンスのデータを、サーバ制御装置１００から受信する（ステップＳ５２）。そして、クライアント端末２０は、ステップＳ５２で受信したレスポンスのデータに基づく表示を画面表示する（ステップＳ５３）。
【０１３０】
（クライアント端末におけるサーバ状態確認にかかる処理）
図１０Ｂは、クライアント端末におけるサーバ状態確認にかかる処理の一例を示すフローチャートである。図１０Ｂに示すように、クライアント端末２０は、アクセスユーザから入力された、サーバ装置１０でサービスを提供する仮想マシン処理部１３に対するサーバ状態確認のリクエストをサーバ制御装置１００へ送信する（ステップＳ６１）。そして、クライアント端末２０は、ステップＳ６１で送信したリクエストに対するレスポンスのデータを、サーバ制御装置１００から受信する（ステップＳ６３）。
【０１３１】
そして、クライアント端末２０は、ステップＳ６２で受信したレスポンスの内容を判定する（ステップＳ６３）。クライアント端末２０は、ステップＳ５２で受信したレスポンスの内容が「サーバ起動中」である場合には、レスポンスのデータに基づき、リクエストを送信した仮想マシン処理部１３の状態の表示を画面表示する（ステップＳ６４）。
【０１３２】
また、クライアント端末２０は、ステップＳ６２で受信したレスポンスの内容が「サーバ起動処理中」である場合には、レスポンスのデータに基づき、リクエストを送信した仮想マシン処理部１３がサーバ起動処理中である旨の表示を画面表示する（ステップＳ６５）。また、クライアント端末２０は、ステップＳ６２で受信したレスポンスの内容が「サーバ停止中」である場合には、レスポンスのデータに基づき、リクエストを送信した仮想マシン処理部１３が停止中である旨の表示を画面表示する（ステップＳ６６）。
【０１３３】
（サーバ制御装置における全体処理）
図１１は、サーバ制御装置における全体処理の一例を示すフローチャートである。図１１に示す処理は、例えば、サーバ制御装置１００のリクエスト受信部１０５がリクエストを受信したことを契機として実行される。
【０１３４】
図１１に示すように、サーバ制御装置１００のリクエスト受信部１０５は、クライアント端末２０からリクエストを受信する（ステップＳ１０１）。そして、サーバ制御装置１００のリクエスト解析部１０６ａは、受信したリクエストを接続情報記憶テーブル１０１ａに記録する（ステップＳ１０２）。そして、サーバ制御装置１００の判定部１０６ｂは、サービスグループテーブル１０３ｂを参照し、リクエストがアクセスを要求するサービスを提供する仮想マシン処理部１３のＶＭＩＤを取得する（ステップＳ１０３）。
【０１３５】
そして、サーバ制御装置１００の判定部１０６ｂは、受信したリクエストがデータ要求リクエストであるか否かを判定する（ステップＳ１０４）。サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０４の処理により、データ要求リクエストであると判定した場合（ステップＳ１０４肯定）、ステップＳ１０３で取得したＶＭＩＤのなかから一つのＶＭＩＤ選択する（ステップＳ１０５）。例えば、サーバ制御装置１００の判定部１０６ｂは、取得したＶＭＩＤのうち未選択のＶＭＩＤを一つ選択する。
【０１３６】
そして、サーバ制御装置１００の判定部１０６ｂは、選択したＶＭＩＤに対応する仮想マシン処理部１３への接続可否を判定する接続可否判定処理をおこなう（ステップＳ１０６）。サーバ制御装置１００のリクエスト送信部１０７は、ステップＳ１０６の処理により、クライアント端末２０による仮想マシン処理部１３への接続が許可された場合、リクエストを仮想マシン処理部１３へ送信する。また、ステップＳ１０６の処理により、クライアント端末２０による仮想マシン処理部１３への接続が許可されない場合、サーバ制御装置１００のレスポンス生成部１１０ａは、接続が許可されなかった旨のレスポンスを生成する。そして、サーバ制御装置１００のレスポンス送信部１１１は、レスポンス生成部１１０ａにより生成されたレスポンスをクライアント端末２０へ送信する。
【０１３７】
そして、サーバ制御装置１００の判定部１０６ｂは、仮想マシン状態記憶テーブル１０３ａを参照して、ステップＳ１０５で選択したＶＭＩＤに対応する仮想マシン処理部１３の状態を取得する（ステップＳ１０７）。そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０７で状態を取得した仮想マシン処理部１３が稼働しているか否かを判定する（ステップＳ１０８）。
【０１３８】
サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０７で状態を取得した仮想マシン処理部１３が稼働している場合（ステップＳ１０８肯定）、当該の仮想マシン処理部１３を停止させるか否かを判定する停止判定処理をおこなう（ステップＳ１０９）。
【０１３９】
サーバ制御装置１００の仮想マシン制御部１０８は、ステップＳ１０９の処理により、仮想マシン処理部１３を停止させると判定した場合（ステップＳ１１０肯定）、当該の仮想マシン処理部１３を停止させるＶＭ停止処理をおこなう（ステップＳ１１１）。そして、サーバ制御装置１００のレスポンス生成部１１０ａは、当該の仮想マシン処理部１３を停止処理中である旨の情報を表示するためのレスポンスを生成する（ステップＳ１１２）。そして、サーバ制御装置１００のレスポンス送信部１１１は、生成したレスポンスをクライアント端末２０へ送信する（ステップＳ１１３）。
【０１４０】
一方、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０９の処理により、仮想マシン処理部１３を停止させないと判定した場合（ステップＳ１１０否定）、当該の仮想マシン処理部１３のスケールアップ／スケールダウン判定処理をおこなう（ステップＳ１１４）。
【０１４１】
そして、サーバ制御装置１００のレスポンス生成部１１０ａは、ステップＳ１０７で状態を取得した仮想マシン処理部１３が起動中である旨の情報を表示するためのレスポンスを生成する（ステップＳ１１５）。そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０３の処理で取得した全てのＶＭＩＤを選択したか否かを判定する（ステップＳ１１６）。
【０１４２】
サーバ制御装置１００のリクエスト送信部１０７は、ステップＳ１０３の処理で取得した全てのＶＭＩＤを選択したと判定した場合（ステップＳ１１６肯定）、リクエストを仮想マシン処理部１３へ送信する（ステップＳ１１７）。そして、サーバ制御装置１００のレスポンス受信部１０９は、送信したリクエストに対するレスポンスを仮想マシン処理部１３から受信する（ステップＳ１１８）。そして、サーバ制御装置１００のレスポンス修正部１１０ｂは、受信したレスポンスに、生成したレスポンスを付加する（ステップＳ１１９）。そして、サーバ制御装置１００のレスポンス送信部１１１は、ステップＳ１１９の処理により、生成したレスポンスを負荷したレスポンスをクライアント端末２０へ送信する（ステップＳ１１３）。
【０１４３】
また、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０３の処理で取得した全てのＶＭＩＤを選択していないと判定した場合（ステップＳ１１６否定）、ステップＳ１０５の処理へ移る。
【０１４４】
また、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０７で状態を取得した仮想マシン処理部１３が稼働していない場合（ステップＳ１０８否定）、当該の仮想マシン処理部１３を起動させるか否かを判定する起動判定処理をおこなう（ステップＳ１２０）。そして、サーバ制御装置１００の仮想マシン制御部１０８は、ステップＳ１２０の処理により、当該の仮想マシン処理部１３を起動させると判定した場合（ステップＳ１２１肯定）、当該の仮想マシン処理部１３を起動させるＶＭ起動処理をおこなう（ステップＳ１２２）。
【０１４５】
そして、サーバ制御装置１００のレスポンス生成部１１０ａは、当該の仮想マシン処理部１３を起動処理中である旨の情報を表示するためのレスポンスを生成する（ステップＳ１２３）。そして、サーバ制御装置１００のレスポンス送信部１１１は、ステップＳ１２３の処理により生成されたレスポンスをクライアント端末２０へ送信する（ステップＳ１１３）。
【０１４６】
また、サーバ制御装置１００のレスポンス生成部１１０ａは、ステップＳ１２０の処理により、当該の仮想マシン処理部１３を起動させないと判定した場合（ステップＳ１２１否定）、当該の仮想マシン処理部１３が停止中である旨の情報を表示するためのレスポンスを生成する（ステップＳ１２４）。そして、サーバ制御装置１００のレスポンス送信部１１１は、ステップＳ１２４の処理により生成されたレスポンスをクライアント端末２０へ送信する（ステップＳ１１３）。
【０１４７】
また、サーバ制御装置１００のレスポンス生成部１１０ａは、ステップＳ１０４の処理により、データ要求リクエストでないと判定した場合（ステップＳ１０４否定）、ステップＳ１３の処理により取得した全てのＶＭＩＤに対応する仮想マシン処理部１３の状態をそれぞれ取得する（ステップＳ１２５）。
【０１４８】
そして、サーバ制御装置１００のレスポンス生成部１１０ａは、ステップＳ１２５の処理により取得した仮想マシン処理部１３の状態を表示するためのレスポンスを生成する（ステップＳ１２６）。そして、サーバ制御装置１００のレスポンス送信部１１１は、ステップＳ１２６の処理により生成されたレスポンスをクライアント端末２０へ送信する（ステップＳ１１３）。
【０１４９】
（サーバ制御装置における接続可否判定処理）
図１２は、サーバ制御装置における接続可否判定処理の一例を示すフローチャートである。図１２は、図１１のステップＳ１０６に対応するサブルーチンを示すフローチャートである。図１２に示すように、サーバ制御装置１００の判定部１０６ｂは、接続情報記憶テーブル１０１ａを参照し、ステップＳ１０５で選択したＶＭＩＤに対応する仮想マシン処理部１３の利用状況を取得する（ステップＳ２０１）。そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ２０１の処理により取得した利用状況を集計する（ステップＳ２０２）。そして、サーバ制御装置１００の判定部１０６ｂは、契約情報記憶テーブル１０４ｂから契約情報を取得する（ステップＳ２０３）。
【０１５０】
そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０１の処理によりクライアント端末２０から受信したリクエストの仮想マシン処理部１３への接続可否を、ステップＳ２０２の処理により集計した利用状況と、ステップＳ２０３の処理により取得した契約情報とに基づき判定する（ステップＳ２０４）。そして、サーバ制御装置１００の判定部１０６ｂは、接続可能と判定した場合（ステップＳ２０５肯定）、クライアント端末２０による仮想マシン処理部１３への接続を許可する（ステップＳ２０６）。
【０１５１】
一方、サーバ制御装置１００の判定部１０６ｂは、接続可能と判定した場合（ステップＳ２０５否定）、クライアント端末２０による仮想マシン処理部１３への接続を許可しない（ステップＳ２０７）。なお、サーバ制御装置１００の判定部１０６ｂは、ステップＳ２０５の処理により、仮想マシン処理部１３への接続を許可しなかった場合、図１２の処理を終了する。そして、サーバ制御装置１００のレスポンス生成部１１０ａは、仮想マシン処理部への接続を許可しない旨のレスポンスを生成し、図１１のステップＳ１１３の処理により、生成したレスポンスをクライアント端末２０へ送信する。
【０１５２】
（サーバ制御装置における停止判定処理）
図１３は、サーバ制御装置における停止判定処理の一例を示すフローチャートである。図１３は、図１１のステップＳ１０９に対応するサブルーチンを示すフローチャートである。図１３に示すように、サーバ制御装置１００の判定部１０６ｂは、接続情報記憶テーブル１０１ａを参照し、図１１のステップＳ１０５で選択したＶＭＩＤに対応する仮想マシン処理部１３の利用状況を取得する（ステップＳ３０１）。そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ３０１の処理により取得した利用状況を集計する（ステップＳ３０２）。そして、サーバ制御装置１００の判定部１０６ｂは、契約情報記憶テーブル１０４ｂから契約情報を取得する（ステップＳ３０３）。
【０１５３】
そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０５の処理により選択した仮想マシン処理部１３の停止を、ステップＳ３０２の処理により集計した利用状況と、ステップＳ３０３の処理により取得した契約情報とに基づき判定する（ステップＳ３０４）。そして、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３を停止すると判定した場合（ステップＳ３０５肯定）、当該の仮想マシン処理部１３を停止させると決定する（ステップＳ３０６）。一方、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３を停止しないと判定した場合（ステップＳ３０５否定）、当該の仮想マシン処理部１３を停止させないと決定する（ステップＳ３０７）。
【０１５４】
（サーバ制御装置における仮想マシン停止処理）
図１４は、サーバ制御装置における仮想マシン停止処理の一例を示すフローチャートである。図１４は、図１１のステップＳ１１１に対応するサブルーチンを示すフローチャートである。図１４に示すように、サーバ制御装置１００の仮想マシン制御部１０８は、サービスグループテーブル１０３ｂを参照し、図１１のステップＳ１０１で受信したリクエストに含まれるサービス名に対応する仮想マシン処理部１３のうちの未選択の仮想マシン処理部１３を停止順に一つ選択する（ステップＳ４０１）。
【０１５５】
そして、サーバ制御装置１００の仮想マシン制御部１０８は、ステップＳ４０１で選択した仮想マシン処理部１３が他のサービスでも利用されているか否かを判定する（ステップＳ４０２）。そして、サーバ制御装置１００の仮想マシン制御部１０８は、ステップＳ４０１で選択した仮想マシン処理部１３が他のサービスで利用されている場合（ステップＳ４０２肯定）、ステップＳ４０４の処理へ移る。一方、サーバ制御装置１００の仮想マシン制御部１０８は、ステップＳ４０１で選択した仮想マシン処理部１３が他のサービスで利用されていない場合（ステップＳ４０２否定）、ステップＳ４０１で選択した仮想マシン処理部１３を停止させる（ステップＳ４０３）。
【０１５６】
そして、サーバ制御装置１００の仮想マシン制御部１０８は、サービスグループテーブル１０３ｂにおいて、図１１のステップＳ１０１で受信したリクエストに含まれるサービス名に対応する仮想マシン処理部１３を全て選択したか否かを判定する（ステップＳ４０４）。そして、サーバ制御装置１００の仮想マシン制御部１０８は、全ての仮想マシン処理部１３を選択した場合（ステップＳ４０４肯定）、図１１のステップＳ１１２へ処理を移す。一方、サーバ制御装置１００の仮想マシン制御部１０８は、サービスグループテーブル１０３ｂにおいて、図１１のステップＳ１０１で受信したリクエストに含まれるサービス名に対応する未選択の仮想マシン処理部１３がある場合（ステップＳ４０４否定）、ステップＳ４０１へ処理を移す。
【０１５７】
（サーバ制御装置における仮想マシンのスケールアップ／スケールダウン判定処理）
図１５は、サーバ制御装置における仮想マシンのスケールアップ／スケールダウン判定処理の一例を示すフローチャートである。図１５は、図１１のステップＳ１１４に対応するサブルーチンを示すフローチャートである。
【０１５８】
図１５に示すように、サーバ制御装置１００の判定部１０６ｂは、接続情報記憶テーブル１０１ａを参照し、ステップＳ１０５で選択したＶＭＩＤに対応する仮想マシン処理部１３の利用状況を取得する（ステップＳ５０１）。そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ５０１の処理により取得した利用状況を集計する（ステップＳ５０２）。そして、サーバ制御装置１００の判定部１０６ｂは、契約情報記憶テーブル１０４ｂから契約情報を取得する（ステップＳ５０３）。
【０１５９】
そして、サーバ制御装置１００の判定部１０６ｂは、図１１のステップＳ１０５の処理により選択した仮想マシン処理部１３の必要リソース、例えばＣＰＵの数および駆動周波数、メモリの容量を、ステップＳ５０２の処理により集計した利用状況に基づき算出する（ステップＳ５０４）。そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ５０４で算出した必要リソースと、仮想マシン状態記憶テーブル１０３ａに記憶される仮想マシンの状態、例えば「ＣＰＵスケール状態」、「メモリスケール状態」とを比較する。
【０１６０】
そして、サーバ制御装置１００の判定部１０６ｂは、必要リソースと、仮想マシンの状態との比較結果に基づき、リソースが不足するか否か判定する（ステップＳ５０５）。そして、サーバ制御装置１００の判定部１０６ｂは、リソースが不足する場合（ステップＳ５０５肯定）、ステップＳ５０８へ処理を移す。一方、サーバ制御装置１００の判定部１０６ｂは、リソースが不足しない場合（ステップＳ５０５否定）、ステップＳ５０６へ処理を移す。
【０１６１】
そして、サーバ制御装置１００の判定部１０６ｂは、必要リソースと、仮想マシンの状態との比較結果に基づき、リソースが過剰か否か判定する（ステップＳ５０６）。サーバ制御装置１００は、リソースが過剰である場合（ステップＳ５０６肯定）、ステップＳ５０９へ処理を移す。一方、サーバ制御装置１００の判定部１０６ｂは、リソースが過剰でない場合（ステップＳ５０６否定）、ステップＳ５０７へ処理を移す。
【０１６２】
ステップＳ５０７では、サーバ制御装置１００の仮想マシン制御部１０８は、当該の仮想マシン処理部１３のリソースを現状維持させる。また、ステップＳ５０８では、サーバ制御装置１００の仮想マシン制御部１０８は、当該の仮想マシン処理部１３のリソースをスケールアップさせる。また、ステップＳ５０９では、サーバ制御装置１００の仮想マシン制御部１０８は、当該の仮想マシン処理部１３のリソースをスケールダウンさせる。サーバ制御装置１００は、ステップＳ５０７〜Ｓ５０９の処理が終了すると、図１１のステップＳ１１５へ処理を移す。
【０１６３】
（サーバ制御装置における起動判定処理）
図１６は、サーバ制御装置における起動判定処理の一例を示すフローチャートである。図１６は、図１１のステップＳ１２０に対応するサブルーチンを示すフローチャートである。図１６に示すように、サーバ制御装置１００の判定部１０６ｂは、接続情報記憶テーブル１０１ａを参照し、図１１のステップＳ１０５で選択したＶＭＩＤに対応する仮想マシン処理部１３の利用状況を取得する（ステップＳ６０１）。そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ６０１の処理により取得した利用状況を集計する（ステップＳ６０２）。そして、サーバ制御装置１００の判定部１０６ｂは、契約情報記憶テーブル１０４ｂから契約情報を取得する（ステップＳ６０３）。
【０１６４】
そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０５の処理により選択した仮想マシン処理部１３の起動を、ステップＳ６０２の処理により集計した利用状況と、ステップＳ６０３の処理により取得した契約情報と基づき判定する（ステップＳ６０４）。そして、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３を起動すると判定した場合（ステップＳ６０５肯定）、当該の仮想マシン処理部１３を起動させると決定する（ステップＳ６０６）。一方、サーバ制御装置１００の判定部１０６ｂは、仮想マシン処理部１３を起動しないと判定した場合（ステップＳ６０５否定）、当該の仮想マシン処理部１３を起動させないと決定する（ステップＳ６０７）。
【０１６５】
（サーバ制御装置における仮想マシン起動処理）
図１７は、サーバ制御装置における仮想マシン起動処理の一例を示すフローチャートである。図１７は、図１１のステップＳ１２２に対応するサブルーチンを示すフローチャートである。図１７に示すように、サーバ制御装置１００の仮想マシン制御部１０８は、サービスグループテーブル１０３ｂを参照し、図１１のステップＳ１０１で受信したリクエストに含まれるサービス名に対応する仮想マシン処理部１３のうちの未選択の仮想マシン処理部１３を起動順に一つ選択する（ステップＳ７０１）。
【０１６６】
そして、サーバ制御装置１００の仮想マシン制御部１０８は、ステップＳ７０１で選択した仮想マシン処理部１３が起動しているか否かを判定する（ステップＳ７０２）。そして、サーバ制御装置１００の仮想マシン制御部１０８は、ステップＳ７０１で選択した仮想マシン処理部１３が起動している場合（ステップＳ７０２肯定）、ステップＳ７０４の処理へ移る。一方、サーバ制御装置１００の仮想マシン制御部１０８は、ステップＳ７０１で選択した仮想マシン処理部１３が起動していない場合（ステップＳ７０２否定）、ステップＳ７０１で選択した仮想マシン処理部１３を起動させる（ステップＳ７０３）。
【０１６７】
そして、サーバ制御装置１００の仮想マシン制御部１０８は、サービスグループテーブル１０３ｂにおいて、図１１のステップＳ１０１で受信したリクエストに含まれるサービス名に対応する仮想マシン処理部１３を全て選択したか否かを判定する（ステップＳ７０４）。そして、サーバ制御装置１００の仮想マシン制御部１０８は、全ての仮想マシン処理部１３を選択した場合（ステップＳ７０４）、図１１のステップＳ１２３へ処理を移す。一方、サーバ制御装置１００の仮想マシン制御部１０８は、サービスグループテーブル１０３ｂにおいて、図１１のステップＳ１０１で受信したリクエストに含まれるサービス名に対応する未選択の仮想マシン処理部１３がある場合（ステップＳ７０４否定）、ステップＳ７０１へ処理を移す。
【０１６８】
（実施の形態による効果）
以上の実施の形態によれば、サーバ制御装置１００は、サーバ装置上で動作し、ネットワークを介してクライアント端末へサービスを提供する仮想マシンの状態の履歴を記憶する。サーバ制御装置１００は、仮想マシンを利用してサービスを提供するサービス提供者ごとの仮想マシンの識別情報に対応付けて、仮想マシンの利用にかかる契約情報を予め記憶する。サーバ制御装置１００は、仮想マシン状態履歴記憶部に記憶される履歴から求まる仮想マシンの利用料金が、記憶される契約情報を満たすように、仮想マシンを起動または停止させるかを判定する。サーバ制御装置１００は、判定した結果に応じて仮想マシンを起動または停止させる制御をおこなう。このため、サーバ制御装置１００は、サーバ装置１０を効率よく稼働させることができる。
【０１６９】
例えば、サーバ制御装置１００は、サーバ装置１０の仮想マシン処理部１３により提供されるサービスが利用されていない場合には、仮想マシン処理部１３を停止させたり、スケールダウンさせたりするので、サーバ装置１０を効率よく稼働させることができる。また、例えば、サーバ制御装置１００は、アクセスユーザによるアクセスの発生、増加が予測され、負荷が高くなることが予測される場合に、仮想マシン処理部１３を起動、スケールアップさせるので、サーバ装置１０を効率よく稼働させることができる。
【０１７０】
よって、従量課金制で有料提供されるサービスプラットフォームの利用の際に、利用金額の無駄を低減でき、サービスプラットフォームの利用者は、利用料金を節約することができる。
【０１７１】
また、サーバ装置１０の管理者でなくても、サーバ装置１０が利用される状況に応じて、サーバ制御装置１００が能動的にサーバ装置１０における仮想マシン処理部１３の稼働制御をおこなうことができる。また、サーバ装置１０の仮想マシン処理部１３の利用状況に応じたメッセージをクライアント端末２０に表示させることにより、サーバ装置１０の仮想マシン処理部１３で実行されるソフトウェアにより提供されるサービスにアクセスするアクセスユーザは、サーバ装置１０もしくは仮想マシン処理部１３の状態、またはサービスの利用状況を把握できる。
【０１７２】
［その他の実施の形態］
以上、本願が開示する技術の実施の形態について説明したが、本願が開示する技術は上述した実施の形態のほか、その他の実施の形態にて実施されてもよい。そこで、以下では、その他の実施の形態について説明する。
【０１７３】
（１）サーバ制御装置が制御する仮想マシン処理部の数
上述の実施の形態では、サーバ制御装置１００は、複数の仮想マシン処理部１３を制御する場合を説明した。しかし、これに限定されるものではなく、サーバ制御装置１００が一つの仮想マシン処理部１３を制御してもよい。
【０１７４】
例えば、上述の実施の形態では、サーバ制御装置１００が、仮想マシン処理部１３ごとに稼働を制御する場合を説明した。しかし、例えば、サーバ制御装置１００は、仮想マシン処理部１３の利用状況と契約情報とに基づいて、複数の仮想マシン処理部１３の合計利用料金を算出し、合計利用料金が許容料金に達しているか否かに応じて、複数の仮想マシン処理部１３を制御してもよい。
【０１７５】
図１８は、サーバ制御装置が複数の仮想マシンを制御する場合における契約情報記憶テーブルの構成の一例を示す図である。図１８に示すように、契約情報記憶テーブル１０４ｃは、複数の「ＶＭＩＤ」に共通の「月最大許容使用料金」“１０００００円”を記憶する。この「月最大許容使用料金」は、一のサービス提供者によって複数の仮想マシン処理部１３が利用される際に許容される所定期間あたりの利用料金の合計の上限を指す。
【０１７６】
サーバ制御装置１００の判定部１０６ｂは、「ＶＭＩＤ」“ＶＭ１”および“ＶＭ２”の「課金額」を合計し、“ＶＭ１”および“ＶＭ２”の「合計課金額」を算出する。そして、サーバ制御装置１００の判定部１０６ｂは、「合計課金額」が、共通の「月最大許容使用料金」“１０００００円”に達している場合には、稼働中の“ＶＭ１”および“ＶＭ２”を停止させると判定する。一方、サーバ制御装置１００は、「合計課金額」が、共通の「月最大許容使用料金」“１０００００円”に達していない場合には、“ＶＭ１”および“ＶＭ２”を起動させると判定する。なお、ここでは、サーバ制御装置１００が、１つの「月最大許容使用料金」により２つの仮想マシン処理部１３を制御する場合を説明したが、これに限定されず、１つの「月最大許容使用料金」により３つ以上の仮想マシン処理部１３を制御してもよい。
【０１７７】
すなわち、サーバ制御装置１００は、一のサービス提供者にかかる複数の仮想マシンの識別情報と、複数の仮想マシンごとの起動および停止を含むイベントと、そのイベントの発生日時とを対応付けて記憶する。また、サーバ制御装置１００は、複数の仮想マシンの識別情報に対応付けて、一のサービス提供者によって複数の仮想マシンがそれぞれ利用される際の仮想マシンごとの所定利用時間あたりの利用料金、一のサービス提供者によって複数の仮想マシンが利用される際に許容される所定期間あたりの利用料金の合計の上限を記憶する。また、サーバ制御装置１００は、複数の仮想マシンの起動および停止を含むイベントおよびそのイベントの発生日時から仮想マシンごとの利用時間の累計を求め、その仮想マシンの利用時間の累計に所定利用時間あたりの利用料金を乗じた利用料金の累計を仮想マシンごとに算出し、仮想マシンの利用料金の累計から複数の仮想マシンの利用料金の累計の合計を算出し、算出した合計が前記契約情報記憶部に記憶された上限に達している場合には、起動中の複数の仮想マシンを停止すると判定し、または、算出した合計が上限に達していない場合には、停止中の複数の仮想マシンを起動すると判定する。これによれば、例えば、複数の企業によって提供されるサービスプラットフォームとしての各仮想マシン処理部１３の稼働を１つの「月最大許容使用料金」により制御できる。
【０１７８】
（２）レスポンス解析による仮想マシン処理部の制御
また、例えば、上述の実施の形態では、サーバ制御装置１００がリクエストを解析することで、仮想マシン処理部１３を制御する場合を説明したが、これに限定されるものではない。例えば、サーバ制御装置１００は、レスポンスを解析することで、仮想マシン処理部１３を制御してもよい。
【０１７９】
図１９は、レスポンス解析による仮想マシンの再起動制御の一例を示す図である。図１９に示すＤＢサーバ３０は、サーバ装置１０にて用いられるデータを管理するデータベースサーバに対応する。また、図１９では、ＤＢサーバ３０は、再起動を要するエラーが発生しているものとする。
【０１８０】
図１９に示すように、クライアント端末２０は、サーバ制御装置１００へリクエストを送信する（ステップＳ４１）。サーバ制御装置１００は、クライアント端末２０から受信したリクエストをサーバ装置１０へ転送する（ステップＳ４２）。サーバ装置１０は、リクエストに対するレスポンスの生成に要するデータ取得をＤＢサーバ３０にアクセスして試みる。しかし、サーバ制御装置１００は、ＤＢサーバ３０でエラーが発生しているので、ＤＢサーバ３０へのアクセスに失敗する（ステップＳ４３）。
【０１８１】
これにより、サーバ制御装置１００は、ＤＢサーバ３０のエラーを検知する（ステップＳ４４）。そして、サーバ装置１０は、図２０に例示するレスポンスを生成し、生成したレスポンスをサーバ制御装置１００へ送信する（ステップＳ４５）。図２０は、レスポンス解析による仮想マシンの再起動制御の際に、サーバ装置から送信されるレスポンスの一例を示す図である。
【０１８２】
そして、サーバ制御装置１００は、サーバ装置１０から受信したレスポンスを解析する（ステップＳ４６）。例えば、サーバ制御装置１００は、サーバ装置１０から受信したレスポンスに対し、「＜ｈｅａｄ＞＜ｔｉｔｌｅ＞ＤＢエラー＜／ｔｉｔｌｅ＞＜／ｈｅａｄ＞」とのパターンマッチングを行って、一致するか否かを判定する。一致した場合、サーバ制御装置１００は、ＤＢサーバ３０でエラーが発生したものと判定し、エラーの発生を自装置内部のメモリに記憶させる。
【０１８３】
そして、サーバ制御装置１００は、ＤＢサーバ３０におけるエラー回数が所定回数に到達したことを契機として、ＤＢサーバ３０の再起動（ステップＳ４７）と、サーバ装置１０の再起動（ステップＳ４８）とを実行する。そして、サーバ制御装置１００は、サーバ装置１０およびＤＢサーバ３０を再起動している旨を示すレスポンスをクライアント端末２０へ送信する（ステップＳ４９）。このようにして、サーバ制御装置１００は、レスポンスに基づきサーバ装置１０、仮想マシン処理部１３およびＤＢサーバ３０を制御できる。
【０１８４】
（３）サーバ制御装置による自律的な制御
上記の実施の形態では、サーバ制御装置１００がリクエスト受信部１０５にリクエストが受信されたことを契機として処理を開始するものと説明した。しかしながら、本発明はこれに限定されるものではなく、例えば、サーバ制御装置１００は、定期的に仮想マシン処理部１３を制御するか否かを判定しても良い。
【０１８５】
図２１は、サーバ制御装置における全体処理の一例を示すフローチャートである。図２１に示す処理は、例えば、図示した各装置に電源から電力が供給される間、所定時間間隔で実行される。なお、図２１の各ステップのうち、図１１と同一のステップについては図１１と同一の符号を付し、その説明を省略する。
【０１８６】
図２１に示すように、サーバ制御装置１００の判定部１０６ｂは、処理タイミングになると（ステップＳ８０１肯定）、サービスグループテーブル１０３ｂを参照し、制御の対象となる仮想マシン処理部１３のＶＭＩＤを取得する（ステップＳ１０３）。そして、サーバ制御装置１００の判定部１０６ｂは、ステップＳ１０５へ処理を移す。なお、サーバ制御装置１００の判定部１０６ｂは、処理タイミングになるまで（ステップＳ８０１否定）、待機状態である。
【０１８７】
（４）サーバ制御装置の実装形態
上述の実施の形態では、サーバ制御装置１００は、リバースプロキシサーバであるとした。しかし、これに限らず、サーバ制御装置１００は、リバースプロキシサーバとは異なるハードウェアに実装されてもよい。すなわち、サーバ制御装置１００は、クライアント端末２０からのリクエストをリバースプロキシサーバから受信し、リクエストを解析した結果に基づいて、サーバ装置１０および仮想マシン処理部１３を制御してもよい。また、サーバ制御装置１００は、リバースプロキシサーバと同一のハードウェアに、連携する異なるサーバアプリケーションとして実装されてもよい。このようにすると、サーバ制御装置１００は、ハードウェアやソフトウェアの負荷を分散して実装できる。
【０１８８】
（５）サーバ制御プログラム
図２２は、サーバ制御プログラムを実行するコンピュータの一例を示す図である。図２２に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１、ユーザからデータの入力を受け付ける入力装置３０２、モニタ３０３を有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る媒体読み取り装置３０４、他の装置と接続するためのインターフェース装置３０５、他の装置と無線により接続するための無線通信装置３０６を有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）３０７と、ハードディスク装置３０８とを有する。また、各装置３０１〜３０８は、バス３０９に接続される。
【０１８９】
ハードディスク装置３０８には、図３Ａ〜図３Ｃに示した各機能ブロックと同様の機能を有するサーバ制御プログラムが記憶される。また、ハードディスク装置３０８は、コンピュータ３００がサーバ制御プログラムを実行するための各種データを記憶する。
【０１９０】
ＣＰＵ３０１は、ハードディスク装置３０８に記憶されたサーバ制御プログラムを読み出して、ＲＡＭ３０７に展開して実行することで、各種の処理を行う。また、サーバ制御プログラムは、コンピュータ３００を、図３Ａ〜図３Ｃに示した各機能ブロックとして機能させることができる。
【０１９１】
なお、サーバ制御プログラムは、必ずしもハードディスク装置３０８に記憶されている必要はない。例えば、コンピュータ３００が読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ３００が読み出して実行するようにしてもよい。コンピュータ３００が読み取り可能な記録媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ３００がこれらからプログラムを読み出して実行するようにしてもよい。
【０１９２】
（各機能ブロックのハードウェア）
なお、上述の実施の形態で説明した各処理を実行する各機能ブロックは、ＡＳＩＣ、ＣＰＵ、ＭＰＵ、ＦＰＧＡなどの集積回路で実現できる。各部における各処理は、ＣＰＵなどの集積回路、内部記憶装置、外部記憶装置の協働により実行される。また、上述の実施の形態で説明した各情報を記憶、格納、蓄積する各部は、一例として、ＲＡＭ、フラッシュメモリ、外部記憶装置等で実現できる。
【０１９３】
なお、ＡＳＩＣは“Application  Specific  Integrated  Circuit”、ＣＰＵは“Central  Processing  Unit”、ＭＰＵは“Micro  Processing  Unit”、ＦＰＧＡは“Field  Programmable  Gate  Array”の略である。内部記憶装置は、ＲＡＭ（Random  Access  Memory）などの半導体メモリ装置である。外部記憶装置は、フラッシュメモリ（flash  memory）、磁気ディスク、光ディスク、光磁気ディスクなどを記憶媒体とする記憶装置である。
【符号の説明】
【０１９４】
１００      サーバ制御装置
１０１      利用状況記憶部
１０１ａ    接続情報記憶テーブル
１０２      仮想マシン状態履歴記憶部
１０２ａ    仮想マシン状態履歴記憶テーブル
１０３      仮想マシン状態記憶部
１０３ａ    仮想マシン状態記憶テーブル
１０３ｂ    サービスグループテーブル
１０４      契約情報記憶部
１０４ａ    リソース情報記憶テーブル
１０４ｂ    契約情報記憶テーブル
１０６      リクエスト制御部
１０６ａ    リクエスト解析部
１０６ｂ    判定部
１０８      仮想マシン制御部
１１０      レスポンス制御部
１１０ａ    レスポンス生成部
１１０ｂ    レスポンス修正部
【図１】
2013257789.tif 000003
【図２】
2013257789.tif 000004
【図３Ａ】
2013257789.tif 000005
【図３Ｂ】
2013257789.tif 000006
【図３Ｃ】
2013257789.tif 000007
【図４】
2013257789.tif 000008
【図５】
2013257789.tif 000009
【図６Ａ】
2013257789.tif 000010
【図６Ｂ】
2013257789.tif 000011
【図７Ａ】
2013257789.tif 000012
【図７Ｂ】
2013257789.tif 000013
【図８Ａ】
2013257789.tif 000014
【図８Ｂ】
2013257789.tif 000015
【図８Ｃ】
2013257789.tif 000016
【図８Ｄ】
2013257789.tif 000017
【図８Ｅ】
2013257789.tif 000018
【図９Ａ】
2013257789.tif 000019
【図９Ｂ】
2013257789.tif 000020
【図９Ｃ】
2013257789.tif 000021
【図１０Ａ】
2013257789.tif 000022
【図１０Ｂ】
2013257789.tif 000023
【図１１】
2013257789.tif 000024
【図１２】
2013257789.tif 000025
【図１３】
2013257789.tif 000026
【図１４】
2013257789.tif 000027
【図１５】
2013257789.tif 000028
【図１６】
2013257789.tif 000029
【図１７】
2013257789.tif 000030
【図１８】
2013257789.tif 000031
【図１９】
2013257789.tif 000032
【図２０】
2013257789.tif 000033
【図２１】
2013257789.tif 000034
【図２２】
2013257789.tif 000035