【文献】
中田敦,Close Up Amazon EC2に見る最先端クラウドの条件,日経コンピュータ,日経BP社,2010年 2月17日,第750号,pp.68−73,ISSN0285−4619
【文献】
横山哲也,Hyper−VやVDIなどの新機能を使いこなそう! Windows Server 2008 R2 運用テクニック,月刊アスキードットテクノロジーズ,日本,株式会社アスキー・メディアワークス,第15巻、第6号,pp.122−131,雑誌コード11445−06
(58)【調査した分野】(Int.Cl.,DB名)
前記仮想マシン状態履歴記憶部は、前記複数のサービス提供者が提供する仮想マシンごとの識別情報と、前記仮想マシンごとの起動および停止を含むイベントと、前記イベントの発生日時とを対応付けて記憶し、
前記契約情報記憶部は、複数の前記仮想マシンの識別情報に対応付けて、複数の前記仮想マシンがそれぞれ利用される際の当該仮想マシンごとの所定利用時間あたりの利用料金、及び当該複数の仮想マシンが利用される際に許容される所定期間あたりの前記利用料金の合計金額の上限金額を記憶し、
前記算出部は、前記仮想マシンごとの起動および停止を含むイベントおよび当該イベントの発生日時から前記仮想マシンごとの利用時間の累計を求め、当該仮想マシンの利用時間の累計に前記所定利用時間あたりの利用料金を乗じた利用料金の累計を当該仮想マシンごとに算出し、
前記仮想マシン制御部は、算出された前記利用料金の合計金額が前記契約情報記憶部に記憶された前記上限金額に達している場合には前記契約情報を満たすと判断し、または、当該利用料金の合計金額が、前記上限金額に達していない場合には前記契約情報を満たさないと判断する
ことを特徴とする請求項1に記載のサーバ制御装置。
【発明を実施するための形態】
【0012】
以下、本願が開示する技術の実施の形態について説明する。なお、以下の実施の形態は、一例を示すに過ぎず、本願が開示する技術を限定するものではない。また、以下の実施の形態は、矛盾しない範囲で適宜組合せてもよい。
【0013】
以下の実施の形態では、ネットワークを介して接続されるクライアント端末およびサーバ装置において、アクセスユーザが、サーバ装置で提供されるクラウドサービス(以下、「サービス」と呼ぶ)をクライアント端末で利用する場合を説明する。以下の実施の形態における「利用者」は、テナントとしてサーバ装置で提供される「サービスプラットフォーム」を利用することで、クライアント端末からの「アクセスユーザ」に「サービス」を提供するサービス事業者である。また、「提供者」は、サーバ装置のハードウェアまたはソフトウェアのリソースを「サービスプラットフォーム」として「利用者」に有料で提供し、「サービス」の提供をおこなわせるサーバ装置の設置者である。
【0014】
[実施の形態]
(クラウドシステムの構成の概要)
図1は、実施の形態にかかるクラウドシステムの構成の概要の一例を示すブロック図である。クラウドシステム1は、サーバ装置10a〜10c、サーバ制御装置100、クライアント端末20a〜20cを含む。サーバ制御装置100と、クライアント端末20a〜20cとは、ネットワーク2を介して接続される。また、サーバ制御装置100と、サーバ装置10a〜10cとは、ネットワーク3を介して接続される。なお、ネットワーク2および3は、有線または無線による閉域網または公衆網などの任意の通信網である。また、
図1に示すクラウドシステム1が含むサーバ装置10およびクライアント端末20の数は、一例であり、任意の数でもよい。
【0015】
サーバ装置10a〜10cは、クラウドシステム1において、クライアント端末20a〜20cからのリクエストに応じてサービスを提供するサーバ装置である。なお、以下では、サーバ装置10a〜10cを総称して「サーバ装置10」と呼ぶ。また、クライアント端末20a〜20cを総称して「クライアント端末20」と呼ぶ。
【0016】
サーバ装置10は、SaaS(Software as a Service)型、PaaS(Platform as a Service)型、IaaS(Infrastructure as a Service)型などのサービスプラットフォームを提供する、一または複数の提供者によって設置される。なお、利用者がサーバ装置10のサービスプラットフォームを利用してクライアント端末のアクセスユーザにアクセスさせるサービスは、グループウェア、販売管理業務システム、アンケートシステムなどである。
【0017】
クライアント端末20は、サーバ装置10において動作するソフトウェアにより実現されるサービスにアクセスするアクセスユーザの端末装置である。クライアント端末20は、サービスにアクセスするためのソフトウェアが予めインストールされたパーソナルコンピュータや携帯端末機器などの電子機器である。
【0018】
クライアント端末20は、図示しない入力部および出力部を備え、アクセスユーザにより入力されたリクエストを、アクセスユーザがアクセスするサービスを提供するサーバ装置10へ送信する。リクエストは、アクセスユーザがアクセスするサービスの提供をサーバ装置10へ要求するためのデータを含む。また、クライアント端末20は、サーバ装置10から送信された、クライアント端末20から受信したリクエストに応じたレスポンスを受信する。レスポンスは、クライアント端末20から受信したリクエストに対応するサービスをサーバ装置が提供するためのデータを含む。
【0019】
サーバ制御装置100は、サーバ装置10と、クライアント端末20との伝送経路上に配置され、クライアント端末20からサーバ装置10への全てのリクエストを受信し、受信したリクエストをサーバ装置10へ送信する、例えばリバースプロキシサーバである。また、サーバ制御装置100は、クライアント端末20からサーバ装置10へのリクエストを解析し、解析結果を蓄積する。また、サーバ制御装置100は、蓄積したリクエストの解析結果に基づいて、サーバ装置10の動作を制御する。
【0020】
また、サーバ制御装置100は、クライアント端末20からのリクエストに応じてサーバ装置10から送信されたレスポンスを受信する。そして、サーバ制御装置100は、受信したレスポンスを、リクエストを送信したクライアント端末20へ送信する。また、サーバ制御装置100は、起動または停止、ハードウェアまたはソフトウェアのリソース、負荷状況などのサーバ装置10の仮想マシンの状態を記憶する。そして、サーバ制御装置100は、サーバ装置10の仮想マシンの状態に基づいて、サーバ装置10の仮想マシンの動作を制御する。
【0021】
サーバ装置10で提供されるサービスプラットフォームは、従量課金制により利用料金が発生する。すなわち、サーバ装置10をサービスプラットフォームとして用いたサービスの提供は、サーバ装置10への接続数、接続時間、利用時間、リソース使用量などの利用状況に応じて課金が発生する。なお、サーバ制御装置100は、利用者、提供者、利用者および提供者と異なる第三者のいずれによって設置されてもよい。
【0022】
(サーバ装置の構成)
図2は、サーバ装置の構成の一例を示すブロック図である。サーバ装置10は、サーバ装置10とサーバ制御装置100との通信を制御する通信制御部11、仮想マシン実行部12、1つ以上の仮想マシン処理部13を有する。仮想マシン実行部12は、仮想マシン処理部13の起動や停止などの制御をおこなうサーバ装置10のホストOS(Operating System)の動作により実現される。
【0023】
仮想マシン処理部13は、サーバ装置10の物理的な計算機資源を論理的に分割または統合して構築される仮想マシンである。仮想マシン処理部13は、仮想マシン実行部12で動作するホストOS上で、仮想マシン処理部13ごとのゲストOSにより制御される。そして、仮想マシン処理部13は、ゲストOS上で所定のソフトウェアを実行することにより、様々なサービスをクライアント端末20へ提供する。なお、以下では、仮想マシンおよび仮想マシン処理部13をVM(Virtual Machine)と呼ぶ場合がある。
【0024】
サーバ装置10は、クライアント端末20から送信されたリクエストを、サーバ制御装置100を介して受信する。クライアント端末20からサーバ装置10へのリクエストは、例えば、サーバ装置10の仮想マシン処理部13で実行されるソフトウェアによるサービスの提供の要求である。サーバ装置10は、通信制御部11によりサーバ制御装置100を介して受信したクライアント端末20からのリクエストを、仮想マシン実行部12により、対応するサービスを提供する仮想マシン処理部13へ送信する。
【0025】
そして、リクエストを受信した仮想マシン処理部13は、リクエストに応じたレスポンスを生成し、生成したレスポンスを仮想マシン実行部12により通信制御部11からサーバ制御装置100を介してクライアント端末20へ送信する。サーバ装置10からクライアント端末20へのレスポンスは、例えば、サーバ装置10の仮想マシン処理部13で実行されるソフトウェアによるサービスの提供の可否や、提供するサービスにかかるデータである。
【0026】
(サーバ制御装置の構成)
図3Aは、サーバ制御装置の構成の一例を示すブロック図である。また、
図3Bは、サーバ制御装置のリクエスト制御部の構成の一例を示すブロック図である。また、
図3Cは、サーバ制御装置のレスポンス制御部の構成の一例を示すブロック図である。
【0027】
図3Aに示すように、サーバ制御装置100は、利用状況記憶部101、仮想マシン状態履歴記憶部102、仮想マシン状態記憶部103、契約情報記憶部104、リクエスト受信部105、リクエスト制御部106、リクエスト送信部107、仮想マシン制御部108、レスポンス受信部109、レスポンス制御部110、レスポンス送信部111を含む。
【0028】
サーバ制御装置100は、クライアント端末20からのリクエストを、リクエスト受信部105を介して受信する。リクエスト受信部105は、受信したリクエストをリクエスト制御部106へ送信する。そして、リクエスト制御部106は、リクエストを、リクエスト送信部107を介してサーバ装置10へ送信する。
【0029】
また、サーバ制御装置100は、サーバ装置10からのリクエストに対するレスポンスを、レスポンス受信部109を介して受信する。レスポンス受信部109は、受信したレスポンスをレスポンス制御部110へ送信する。そして、レスポンス制御部110は、レスポンスを、レスポンス送信部111を介してクライアント端末20へ送信する。クライアント端末20、サーバ制御装置100、サーバ装置10間のリクエストおよびレスポンスの送受信の詳細は、後述する。
【0030】
また、
図3Bに示すように、サーバ制御装置100のリクエスト制御部106は、リクエスト解析部106a、判定部106bを含む。また、
図3Cに示すように、サーバ制御装置100のレスポンス制御部110は、レスポンス生成部110a、レスポンス修正部110bを含む。リクエスト解析部106a、判定部106b、レスポンス生成部110a、レスポンス修正部110bの詳細は、後述する。
【0031】
(利用状況記憶部)
利用状況記憶部101は、クライアント端末20のアクセスユーザによる、サーバ装置10で提供するサービスの利用状況を記憶する。利用状況記憶部101は、接続情報記憶テーブル101aを含む。接続情報記憶テーブル101aは、サーバ装置10におけるサービスプラットフォームとしての仮想マシンへの接続を使用状況として、アクセスユーザごと、仮想マシンごと、接続ごとに蓄積して記憶する。
【0032】
(利用状況記憶部の利用者接続情報記憶テーブル)
図4は、接続情報記憶テーブルの構成の一例を示す図である。
図4に示すように、接続情報記憶テーブル101aは、「アクセスユーザID」、「VMID」、「接続ID」、「接続時刻」、「切断時刻」、「接続状態」を対応付けて記憶する。接続情報記憶テーブル101aは、クライアント端末20を利用するアクセスユーザが、サービスを利用するために仮想マシン処理部13にアクセスするごとにレコードが生成される。
【0033】
「アクセスユーザID」は、クライアント端末20からリクエストを送信したアクセスユーザの識別情報である。また、「VMID」は、「アクセスユーザID」で特定されるアクセスユーザのクライアント端末20からリクエストに対応するサービスの提供をおこなうサーバ装置10の仮想マシン処理部13の識別情報である。また、「接続ID」は、クライアント端末20と、仮想マシン処理部13との接続をアクセスユーザごとに識別する識別情報である。
【0034】
「接続時刻」は、「アクセスユーザID」で特定されるアクセスユーザがサービスの提供を受けるために、「接続ID」で特定される接続において、クライアント端末20と、「VMID」で特定される仮想マシン処理部13との接続が開始された時刻である。「切断時刻」は、「接続ID」で特定される接続において、「アクセスユーザID」で特定されるアクセスユーザがサービスの利用を終了し、クライアント端末20と、「VMID」で特定される仮想マシン処理部13との接続が切断された時刻である。また、「接続状態」は、「接続ID」で特定される接続において、クライアント端末20と、「VMID」で特定される仮想マシン処理部13との接続の開始後、接続が切断されたか継続しているかの区別を示す。
【0035】
図4に示すように、接続情報記憶テーブル101aは、例えば、「アクセスユーザID」“USER01”、「VMID」“VM1”、「接続ID」“CONNECTID1”、「接続時刻」“10:00”、「切断時刻」“−”、「接続状態」“接続中”を対応付けて記憶する。すなわち、接続情報記憶テーブル101aは、例えば、「アクセスユーザID」“USER01”のアクセスユーザにより“VM1”へ“10時00分”から「接続ID」“CONNECTID1”の接続が開始され、「接続状態」“接続中”であることを記憶する。
【0036】
(仮想マシン状態履歴記憶部)
仮想マシン状態履歴記憶部102は、サーバ装置10で動作する仮想マシン処理部13の動作の制御履歴を記憶する。仮想マシン状態履歴記憶部102は、仮想マシン状態履歴記憶テーブル102aを含む。仮想マシン状態履歴記憶テーブル102aは、サーバ装置10における仮想マシン処理部13の制御イベントを蓄積して記憶する。
【0037】
(仮想マシン状態履歴記憶部の仮想マシン状態履歴記憶テーブル)
図5は、仮想マシン状態履歴記憶テーブルの構成の一例を示す図である。
図5に示すように、仮想マシン状態履歴記憶テーブル102aは、「VMID」、「イベント」、「発生時刻」を対応付けて記憶する。「VMID」は、サーバ装置10で動作する仮想マシン処理部13の識別情報である。「イベント」は、サーバ装置10で動作する仮想マシン処理部13を制御した制御イベントである。「発生時刻」は、「イベント」が発生した時刻である。
【0038】
図5に示すように、仮想マシン状態履歴記憶テーブル102aは、例えば、「VMID」“VM1”、「イベント」“VM起動”、「発生時刻」“2011/12/10 10:00”を対応付けて記憶する。すなわち、仮想マシン状態履歴記憶テーブル102aは、例えば、「VMID」“VM1”の仮想マシンが“2011年12月10日10時00分”に“起動”されたことを記憶する。なお、仮想マシン状態履歴記憶テーブル102aのレコードは、仮想マシン制御部108により仮想マシン処理部13の動作が制御されるごとにレコードが生成される。
【0039】
(仮想マシン状態記憶部)
仮想マシン状態記憶部103は、サーバ制御装置100によるサーバ装置10における各仮想マシン処理部13の状態に関する情報を記憶する。仮想マシン状態記憶部103は、仮想マシン状態記憶テーブル103a、サービスグループテーブル103bを含む。
【0040】
仮想マシン状態記憶テーブル103aは、サーバ装置10における仮想マシン処理部13の状態を記憶する。また、サービスグループテーブル103bは、サービスごとに使用する仮想マシン処理部13、仮想マシン処理部13上で動作するサーバ名および仮想マシン処理部13の起動、停止の制御順序を記憶する。なお、サービスグループテーブル103bにおけるサーバ名は、アプリケーションサーバとしてのサーバ名である。
【0041】
(仮想マシン状態記憶部の仮想マシン状態記憶テーブル)
図6Aは、仮想マシン状態記憶テーブルの構成の一例を示す図である。
図6Aに示すように、仮想マシン状態記憶テーブル103aは、「VMID」、「状態」、「CPUスケール状態」、「メモリスケール状態」、「同時接続数」、「レスポンスタイム」、「月内累計使用時間」、「課金額」を対応付けて記憶する。
【0042】
「VMID」は、仮想マシン処理部13の識別情報である。「状態」は、「VMID」で特定される仮想マシン処理部13が、現在において起動中であるか停止中であるかの区分である。「CPUスケール状態」は、「VMID」で特定される仮想マシン処理部13に、現在において割り当てられているCPUの数および駆動周波数である。「メモリスケール状態」は、「VMID」で特定される仮想マシン処理部13に、現在において割り当てられているメモリの容量である。
【0043】
「同時接続数」は、「VMID」で特定される仮想マシン処理部13に現在において同時に接続しているアクセスユーザ数である。「レスポンスタイム」は、「VMID」で特定される仮想マシン処理部13へのリクエスト送信から対応するレスポンス受信までの時間(例えばミリ秒単位)である。「月内累計使用時間」は、「VMID」で特定される仮想マシン処理部13が月初から同月の現在までの間に使用された累計時間(例えば1時間単位)である。「課金額」は、「VMID」で特定される仮想マシン処理部13の使用に際して発生した料金の累計額であり、例えば、月初から同月の現在までの間に課金された累計額である。
【0044】
図6Aに示すように、仮想マシン状態記憶テーブル103aは、例えば、「VMID」“VM1”、「状態」“起動中”、「CPUスケール状態」“2vCPU(3GHz)”、「メモリスケール状態」“2GB”、「同時接続数」“100”、「レスポンスタイム」“100”、「月内累計使用時間」“100”、「課金額」“16800円”を対応付けて記憶する。すなわち、仮想マシン状態記憶テーブル103aは、「VMID」“VM1”の仮想マシン処理部13が“起動中”であり、「CPUスケール状態」“2vCPU(3GHz)”、「メモリスケール状態」“2GB”、「同時接続数」“100”、「レスポンスタイム」“100”、「月内累計使用時間」“100”、「課金額」“16800円”であることを記憶する。
【0045】
なお、仮想マシン状態記憶テーブル103aが記憶する、「VMID」、「状態」、「CPUスケール状態」、「メモリスケール状態」、「同時接続数」、「レスポンスタイム」、「課金額」の取得または算出方法については、後述する。「同時接続数」、「レスポンスタイム」は、サーバ制御装置100がリバースプロキシサーバである場合には、リクエストおよびレスポンスを中継する過程で取得する。
【0046】
また、
図6Aには図示しないが、「VMID」で特定される仮想マシンの現在の「CPU使用率」、「メモリ使用量(もしくはメモリ使用率)」、「ディスク使用量」を取得し、仮想マシン状態記憶テーブル103aに含めて記憶させてもよい。この場合、SNMP(Simple Network Management Protocol)やJMX(Java Management Extensions、登録商標)を用いてサーバ装置10から「CPU使用率」、「メモリ使用量(もしくはメモリ使用率)」、「ディスク使用量」などを取得する。
【0047】
(仮想マシン状態記憶部のサービスグループテーブル)
図6Bは、サービスグループテーブルの構成の一例を示す図である。
図6Bに示すように、サービスグループテーブル103bは、「サービス名」、「VMID」、「サーバ名」、「起動順」、「停止順」を対応付けて記憶する。「サービス名」は、サーバ装置10で動作する仮想マシン処理部13により提供されるサービスの名称である。「サーバ名」は、サービスを提供するアプリケーションサーバとしてのサーバ名である。「起動順」は、サービスを提供するために複数の仮想マシン処理部13を動作させる場合に、各仮想マシン処理部13を起動する順序である。「停止順」は、サービスを提供するために複数の仮想マシン処理部13を動作させる場合に、各仮想マシン処理部13を停止する順序である。
【0048】
図6Bに示すように、サービスグループテーブル103bは、例えば、「サービス名」“グループウェア”、「VMID」“VM1”、「サーバ名」“webA.server.com”、「起動順」“1”、「停止順」“3”を対応付けて記憶する。すなわち、サービスグループテーブル103bは、例えば、「サービス名」“グループウェア”の機能を実現する仮想マシン処理部13が「VMID」“VM1”、“VM2”、“VM3”であり、グループウェアを起動する際に“VM1”、“VM2”、“VM3”の順序で各仮想マシン処理部13を起動することを記憶する。また、サービスグループテーブル103bは、例えば、グループウェアを停止する際に“VM3”、“VM2”、“VM1”の順序で各仮想マシン処理部13を停止することを記憶する。
【0049】
(契約情報記憶部)
契約情報記憶部104は、利用者による、サーバ装置10で提供されるサービスプラットフォームの利用にかかるサーバ装置10のハードウェアリソースの利用条件および契約情報を記憶する。契約情報記憶部104は、リソース情報記憶テーブル104a、契約情報記憶テーブル104bを含む。リソース情報記憶テーブル104aは、利用者によるサービスプラットフォームの利用にかかるサーバ装置10のハードウェアリソースの利用条件を記憶する。契約情報記憶テーブル104bは、利用者による、サーバ装置10で提供されるサービスプラットフォームの利用にかかるサーバ装置10のハーウェアリソースの契約情報を記憶する。なお、リソース情報記憶テーブル104aおよび契約情報記憶テーブル104bに記憶される情報は、サーバ装置10を設置するサービスの提供者により予め登録される。
【0050】
(契約情報記憶部のリソース情報記憶テーブル)
図7Aは、リソース情報記憶テーブルの構成の一例を示す図である。リソース情報記憶テーブル104aに記憶される情報は、サーバ装置10によりサービスプラットフォームを提供する提供者により予め登録される。
図7Aに示すように、リソース情報記憶テーブル104aは、「対象」、「スペック」、「料金倍率」を対応付けて記憶する。「対象」は、サーバ装置10により提供されるサービスプラットフォームを利用する際に利用者に提供されるサーバ装置10の物理的計算資源(ハードウェアリソース)である。
【0051】
ここで、「対象」は、例えば、“CPU”、“メモリ”などのサーバ装置10のハードウェアである。また、「スペック」は、「対象」の物理的性能(スペック)である。「料金倍率」は、「対象」となるハードウェアリソースを利用した場合のハードウェアスペックごとの利用にかかる料金の料金倍率である。
図7Aに示すように、例えば、「対象」“CPU”、「スペック」“1vCPU(3GHz)”の場合、「料金倍率」“基本(1倍)”となる。すなわち、利用者は、サービスプラットフォームを利用する際にサーバ装置10の駆動周波数3GHzのCPUを1つ使用する場合、CPUの利用料金として、所定の基本料金の1倍、すなわち基本料金が課金される。「スペック」“1vCPU(3GHz)”の“1v”は、1つの“CPU(3GHz)”であることを示す。
【0052】
また、
図7Aに示すように、例えば、「対象」“CPU”、「スペック」“2vCPU(3GHz)”の場合、「料金倍率」“1.3倍”となる。すなわち、利用者は、サービスプラットフォームを利用する際にサーバ装置10の駆動周波数3GHzのCPUを2つ使用する場合、CPUの利用料金として、所定の基本料金の1.3倍が課金される。
【0053】
また、
図7Aに示すように、例えば、「対象」“メモリ”、「スペック」“1GB”の場合、「料金倍率」“基本(1倍)”となる。すなわち、サービスの利用者は、サービスを利用する際にサーバ装置10の1GByteのメモリを使用する場合に、メモリの利用料金として、所定の基本料金の1倍、すなわち基本料金が課金される。
【0054】
(契約情報記憶部の契約情報記憶テーブル)
図7Bは、契約情報記憶テーブルの構成の一例を示す図である。契約情報記憶テーブル104bに記憶される情報は、サーバ装置10で提供されるサービスプラットフォームの提供者または利用者により予め登録される。
図7Bに示すように、契約情報記憶テーブル104bは、「VMID」、「IPアドレス」、「CPU」、「メモリ」、「ディスク」、「許容接続数」、「起動時従量課金」、「停止時従量課金」、「OS」、「月最大利用時間」、「オートスケール」、「月最大許容使用料金」、「利用可能時間帯」を対応付けて記憶する。
【0055】
ここで、「VMID」は、利用者ごとに割り当てられるサーバ装置10の仮想マシン処理部13の識別情報である。「IPアドレス」は、契約に従って利用者に割り当てられている仮想マシン処理部13のIPアドレスである。「CPU」は、契約に従って利用者に割り当てられている仮想マシン処理部13のCPUのスペックである。「メモリ」は、契約に従って利用者に割り当てられている仮想マシン処理部13の内部記憶装置としてのメモリのサイズである。「ディスク」は、契約に従って利用者に割り当てられている仮想マシン処理部13の外部記憶装置の記憶容量である。
【0056】
また、「許容接続数」は、各仮想マシン処理部13に対して許容される接続数の上限値である。「起動時従量課金」は、各仮想マシン処理部13が起動している間に課金される時間当たりの料金である。「停止時従量課金」は、各仮想マシン処理部13が停止している間に課金される時間当たりの料金である。
【0057】
また、「OS」は、契約に従って利用者に割り当てられている仮想マシン処理部13のOSである。また、「月最大利用時間」は、契約により利用者に割り当てられている仮想マシン処理部13に許容される1ヶ月あたりの利用時間である。「オートスケール」は、各仮想マシン処理部13の利用状況に基づいて当該の仮想マシン処理部13のスケールアップやスケールダウンを行う機能を利用するか否かを示す情報である。「月最大許容使用料金」は、各仮想マシン処理部13が許容される1ヶ月あたりの使用料金である。「利用可能時間帯」は、利用者が各仮想マシン処理部13を利用可能な時間帯の制限の有無および制限時間帯である。
【0058】
図7Bに示すように、契約情報記憶テーブル104bは、例えば、「VMID」“VM1”、「IPアドレス」“192.168.0.100”、「CPU」“1vCPU(3GHz)”、「メモリ」“1GB”、「ディスク」“60GB”、「許容接続数」“”150、「起動時従量課金」“500円/時間”、「停止時従量課金」“10円/時間”、OS“ServerOS1”、「月最大利用時間」“120時間”、「オートスケール」“あり”、「月最大許容使用料金」“100000円”、「利用可能時間帯」“制限なし”を対応付けて記憶する。
【0059】
(リクエスト制御部のリクエスト解析部)
図3Bを参照して、リクエスト制御部106の詳細について説明する。リクエスト制御部106のリクエスト解析部106aは、クライアント端末20から送信され、リクエスト受信部105により受信されたリクエストを解析する。例えば、リクエスト解析部105aは、仮想マシン処理部13への接続もしくは切断を要求するリクエストをクライアント端末20から受信した場合、「アクセスユーザID」、「VMID」、「接続ID」をリクエストから抽出する。
【0060】
そして、リクエスト解析部106aは、抽出した「アクセスユーザID」、「VMID」、「接続ID」を、接続情報記憶テーブル101aの「アクセスユーザID」、「VMID」、「接続ID」にそれぞれ記憶させる。また、リクエスト解析部106aは、仮想マシン処理部13への接続もしくは切断を要求するリクエストを受信した時刻を、接続情報記憶テーブル101aの「接続時刻」もしくは「切断時刻」にそれぞれ記憶させる。
【0061】
また、リクエスト解析部106aは、「VMID」に対応する「切断時刻」が記憶されている接続情報記憶テーブル101aのレコードの「接続状態」に“切断”を記憶させる。また、リクエスト解析部106aは、「VMID」に対応する「切断時刻」が記憶されていない接続情報記憶テーブル101aのレコードの「接続状態」に“接続中”を記憶させる。そして、リクエスト解析部106aは、リクエスト受信部105からリクエストを受信した受信日時とともに、受信したリクエストを判定部106bへ送信する。
【0062】
(リクエスト制御部の判定部)
リクエスト制御部106の判定部106bは、接続情報記憶テーブル101aに記憶される「接続状態」“接続中”であるレコード数を「VMID」ごとに集計することで、仮想マシン処理部13ごとの「同時接続数」を算出する。そして、判定部106bは、算出した「VMID」ごとの「同時接続数」を仮想マシン状態記憶テーブル103aに記憶させる。
【0063】
また、判定部106bは、仮想マシン状態履歴記憶テーブル102aに記憶される「イベント」を「VMID」ごとに「発生時刻」の時系列で走査する。そして、判定部106bは、「VMID」ごとに、各「イベント」による各「VMID」の仮想マシン処理部13の状態の遷移を「発生時刻」の昇順でトレースすることで、各「VMID」の仮想マシン処理部13の現在の状態を判定する。
【0064】
よって、判定部106bは、仮想マシン状態履歴記憶テーブル102aの記憶内容に基づき、現在における各「VMID」の仮想マシン処理部13の“停止中”または“起動中”を示す「状態」、「CPUスケール状態」、「メモリスケール状態」を判定することができる。そして、判定部106bは、判定した「状態」、「CPUスケール状態」、「メモリスケール状態」を、仮想マシン状態記憶テーブル103aにおける対応する各「VMID」のレコードに記憶させる。
【0065】
また、判定部106bは、仮想マシン処理部13の利用にかかる「課金額」を算出する。判定部106bは、仮想マシン状態履歴記憶テーブル102aに記憶される各「VMID」に対応する仮想マシン処理部13の“状態”が変化する各「イベント」間の時間と、リソース情報記憶テーブル104aおよび契約情報記憶テーブル104bに記憶される各リソースの利用料金の単価とに基づき「課金額」を算出する。なお、ここでの“状態”は、仮想マシン状態記憶テーブル103aにおける「状態」、「CPUスケール状態」、「メモリスケール状態」を含む。
【0066】
例えば、判定部106bは、「VMID」“VM1”の仮想マシン処理部13が、「状態」“起動中”である時間が“2時間”であるとすると、“2時間”に、契約情報記憶テーブル104bの「起動時従量課金」“500円/時間”を乗じることで、「課金額」“1000円”を算出する。同様に、判定部106bは、仮想マシン状態履歴記憶テーブル102aに記憶される各「VMID」に対応する「イベント」に基づき、契約情報記憶テーブル104bの「CPU」〜「停止時従量課金」の項目ごとに、所定期間にわたる「課金額」を算出する。そして、判定部106bは、算出した「CPU」〜「停止時従量課金」の項目ごと算出した「課金額」の合計金額を、仮想マシン状態記憶テーブル103aの「課金額」に記憶させる。
【0067】
また、判定部106bは、リクエスト解析部106aから、受信日時とともにリクエストを受信する。そして、判定部106bは、サーバ装置10の仮想マシン処理部13から送信され、レスポンス受信部109を介して受信した当該のリクエストに対応するレスポンスの受信日時を、レスポンス制御部110から受信する。そして、判定部106bは、当該のリクエスト受信日時および対応するレスポンスの受信日時から、当該の仮想マシン処理部13のレスポンスタイムを算出する。そして、判定部106bは、算出したレスポンスタイムを、仮想マシン状態記憶テーブル103aにおける当該の仮想マシン処理部13に対応する「VMID」のレコードの「レスポンスタイム」に記憶させる。
【0068】
なお、レスポンスタイムは、各仮想マシン処理部13に対するリクエストおよび対応するレスポンスが発生するごとに変化する。よって、判定部106bは、仮想マシン状態記憶テーブル103aに記憶させる「レスポンスタイム」を、各仮想マシン処理部13に対するリクエストおよび対応するレスポンスが発生するごとに更新してもよいし、所定周期ごとに更新してもよい。
【0069】
また、判定部106bは、リクエストを受信してから所定時間内に、当該のリクエストに対応するレスポンスが受信されない場合には、当該のリクエストの送信先である仮想マシン処理部13が停止中であると判定する。そして、判定部106bは、判定結果に応じて、当該の仮想マシン処理部13を起動させるよう仮想マシン制御部108に指示する。仮想マシン制御部108は、判定部106bからの指示に応じて、当該の仮想マシン処理部13を起動させる制御をおこなう。
【0070】
また、判定部106bは、仮想マシン処理部13の死活チェックを行う。例えば、判定部106bは、仮想マシン処理部13が起動しているか停止しているかを確認するためのリクエストを生成する。判定部106bは、生成したリクエストを、リクエスト送信部107を介して仮想マシン処理部13へ送信する。判定部106bは、送信したリクエストに対応するレスポンスがレスポンス受信部109で受信された場合に、仮想マシン処理部13が起動しているものと判定する。一方、判定部106bは、送信したリクエストに対応するレスポンスがレスポンス受信部109に一定時間受信されない場合に、仮想マシン処理部13が停止しているものと判定する。
【0071】
また、判定部106bは、仮想マシン処理部13の利用にかかる「月内累計使用時間」を算出する。判定部106bは、仮想マシン状態履歴記憶テーブル102aに記憶される各「VMID」に対応する仮想マシン処理部13の「イベント」“起動”および「イベント」“停止”間の時間から「月内累計使用時間」を算出する。そして、判定部106bは、算出した「月内累計使用時間」を、仮想マシン状態記憶テーブル103aにおいて、対応する「VMID」の「月内累計使用時間」に記憶させる。
【0072】
なお、判定部106bは、「VMID」ごとの「状態」、「CPUスケール状態」、「メモリスケール状態」、「同時接続数」、「レスポンスタイム」「月内累計使用時間」、「課金額」の取得または算出は、リクエスト解析部106aからリクエストを受信するごとに、または、所定周期でおこなってもよい。
【0073】
また、判定部106bは、「VMID」ごとに、仮想マシン状態記憶テーブル103aの「課金額」が、契約情報記憶テーブル104b記憶される「月最大許容使用料金」を満たすか否かを判定する。そして、判定部106bは、「課金額」が、「月最大許容使用料金」を満たさない場合、当該「VMID」に対応する仮想マシン処理部13へのリクエストを拒否すると判定する。または、判定部106bは、「課金額」が、「月最大許容使用料金」を満たさない場合、当該「VMID」に対応する仮想マシン処理部13への接続を切断すると判定する。
【0074】
判定部106bは、「月最大許容使用料金」に基づく「課金額」の判定結果に応じて、リクエスト送信部107に、当該のリクエストのサーバ装置10への送信をキャンセルするよう指示する。リクエスト送信部107は、判定部106bからの指示に応じて、当該のリクエストのサーバ装置10への送信をキャンセルする制御をおこなう。また、判定部106bは、「月最大許容使用料金」に基づく「課金額」の判定結果を、レスポンス制御部110へ送信する。そして、レスポンス制御部110は、リクエストがキャンセルされたことを通知するレスポンスを生成し、レスポンス送信部111を介してクライアント端末20へ送信する。
【0075】
そして、判定部106bは、「月最大許容使用料金」に基づく「課金額」の判定結果に応じて、仮想マシン制御部108に、当該の仮想マシン処理部13を停止させるよう指示する。仮想マシン制御部108は、判定部106bからの指示に応じて、当該の仮想マシン処理部13を停止させる制御をおこなう。
【0076】
なお、判定部106bは、「同時接続数」、「月内累計使用時間」についても、「課金額」と同様に、契約情報記憶テーブル104bの「許容接続数」、「月最大利用時間」に基づいて判定してもよい。また、判定部106bは、「VMID」ごとに、「課金額」が「月最大許容使用料金」を満たすか否かを判定の判定を、リクエスト解析部106aからリクエストを受信するごとに、または、所定周期でおこなってもよい。
【0077】
なお、判定部106bが仮想マシン処理部13を停止させるか否かを判定する方法は、例えば、判定部106bが、契約情報記憶テーブル104bの「利用可能時間帯」を参照し、現在時刻が「利用可能時間帯」に含まれない場合に、仮想マシン処理部13を停止させると判定してもよい。
【0078】
また、判定部106bは、仮想マシン処理部13を起動させるか否かを判定する起動判定処理をおこなう。一例としては、判定部106bは、利用状況と契約情報とを比較することで、仮想マシン処理部13を起動させるか否かを判定する。判定部106bは、判定結果を仮想マシン制御部108およびレスポンス制御部110へ送信する。
【0079】
例えば、判定部106bは、契約情報記憶テーブル104bを参照し、「課金額」が「月最大許容使用料金」を超えていない場合や、現在時刻が「利用可能時間帯」に含まれる場合に、仮想マシン処理部13を起動させると判定する。
【0080】
また、判定部106bは、契約情報記憶テーブル104bにおいて「オートスケール」“あり”の「VMID」に対応する仮想マシン処理部13のスケールアップおよびスケールダウンの要否を判定する。仮想マシンのスケールアップとは、物理計算機上に論理的に構築された仮想マシン処理部13に割り当てるハードウェアの処理能力や記憶領域の容量を増加させる制御をいう。また。仮想マシン処理部13のスケールダウンは、物理計算機上に論理的に構築された仮想マシン処理部13に割り当てるハードウェアの処理能力や記憶領域の容量を減少させる制御をいう。
【0081】
例えば、「オートスケール」“あり”の「VMID」に対応する仮想マシン状態記憶テーブル103aの「同時接続数」が、契約情報記憶テーブル104bの「許容接続数」に対して第1の割合(例えば80%)になったとする。この場合に、判定部106bは、当該の仮想マシン処理部13に割り当てる「CPU」、「メモリ」、「ディスク」のうちの一または複数のハードウェアリソースを、所定量だけ増加させるよう仮想マシン制御部108に指示する。仮想マシン制御部108は、判定部106bの指示に応じて、当該の仮想マシン処理部13に割り当てる「CPU」、「メモリ」、「ディスク」のうちの一または複数のハードウェアリソースを、所定量だけ増加させる制御をおこなう。
【0082】
また、例えば、「オートスケール」“あり”の「VMID」に対応する仮想マシン状態記憶テーブル103aの「同時接続数」が、契約情報記憶テーブル104bの「許容接続数」に対して第2の割合(例えば20%)になったとする。この場合に、判定部106bは、当該の仮想マシン処理部13に割り当てる「CPU」、「メモリ」、「ディスク」のうちの一または複数のハードウェアリソースを、所定量だけ減少させるよう仮想マシン制御部108に指示する。仮想マシン制御部108は、判定部106bの指示に応じて、当該の仮想マシン処理部13に割り当てる「CPU」、「メモリ」、「ディスク」のうちの一または複数のハードウェアリソースを、所定量だけ減少させる制御をおこなう。
【0083】
なお、判定部106bは、「VMID」ごとに、オートスケールの要否の判定を、リクエスト解析部106aからリクエストを受信するごとに、または、所定周期でおこなってもよい。
【0084】
また、判定部106bは、仮想マシン状態記憶テーブル103aを参照し、リクエスト解析部106aから受信したリクエストの送信先の仮想マシン処理部13が停止中であれば、仮想マシン制御部108に、当該の仮想マシン処理部13を起動するよう指示する。仮想マシン制御部108は、判定部106bの指示に応じて、当該の仮想マシン処理部13を起動する制御をおこなう。
【0085】
また、判定部106bは、リクエスト解析部106aから受信したリクエストから「VMID」を取得する。そして、判定部106bは、サービスグループテーブル103bから、リクエストの対象であるサーバ名を含むサービス名を取得し、当該サービスに対応する「VMID」の一覧を取得する。そして、判定部106bは、リクエスト解析部106aから受信したリクエストがデータ要求リクエスト(例えば
図8A参照)であるかサーバ状態確認リクエスト(例えば
図8B参照)であるかを判定する。
【0086】
そして、判定部106bは、リクエスト解析部106aから受信したリクエストがデータ要求リクエストである場合には、取得した「VMID」の一覧から一つの「VMID」を選択する。そして、判定部106bは、選択した「VMID」に対応する仮想マシン処理部13への当該のリクエストの接続可否判定処理を実行する。
【0087】
ここで、接続可否判定処理について説明する。判定部106bは、選択した「VMID」と同一の「VMID」を有するレコードを接続情報記憶テーブル101aから取得し、「VMID」ごとに集計する。また、判定部106bは、契約情報記憶テーブル104bから、当該の「VMID」と同一の「VMID」取得する。
【0088】
例えば、判定部106bは、「アクセスユーザID」“USER01”のリクエストを受信した場合に、接続情報記憶テーブル101aから「同時接続数」“100”を取得する。判定部106bは、「アクセスユーザID」“USER01”のアクセスユーザが接続する仮想マシン処理部13の「許容接続数」“150”を、契約情報記憶テーブル104bから取得する。判定部106bは、「接続数」が「許容接続数」を超えないので、接続可能と判定する。
【0089】
なお、判定部106bが「接続数」を用いて接続可否を判定する場合を説明したが、これに限定されるものではない。例えば、「リソース使用量」を用いて接続可否を判定してもよい。この場合、判定部106bは、同一の仮想マシン処理部13に接続しているアクセスユーザが利用しているリソース使用量を集計し、集計結果と契約情報とを比較することで、接続可否を判定する。
【0090】
一方、判定部106bは、リクエスト解析部106aから受信したリクエストがサーバ状態確認リクエストである場合には、取得した全ての「VMID」に対応する仮想マシン処理部13の「状態」を仮想マシン状態記憶テーブル103aから取得する。そして、判定部106bは、取得した仮想マシン処理部13の「状態」をレスポンス制御部110へ出力する。
【0091】
上述のように、判定部106bは、リクエスト送信部107へ種々の判定結果を送信するとともに、判定結果に応じて判定部106b、リクエスト送信部107または仮想マシン制御部108がおこなう各種制御の内容をレスポンス制御部110へ通知してもよい。そして、レスポンス制御部110は、判定部106bから通知された各種制御の内容を含むレスポンスを生成する、または、レスポンスに各種制御の内容を含める修正をおこなってもよい。このようにして生成または修正されたレスポンスは、レスポンス送信部111を介してクライアント端末20へ送信される。
【0092】
なお、判定部106bは、仮想マシン処理部13の停止時刻、起動時間、スケールアップ時刻およびスケールダウン時刻をそれぞれ算出する。一例としては、判定部106bは、過去一週間の間に仮想マシン処理部13が停止した日時を仮想マシン状態履歴記憶テーブル102aから取得する。判定部106bは、取得した日時について周期性を解析し、仮想マシン処理部13の停止予定時刻とする。
【0093】
具体的には、判定部106bは、「月曜日の16時00分」、「火曜日の16時30分」、「水曜日の17時00分」、「木曜日の17時30分」、「金曜日の18時00分」、「土曜日の12時00分」、「日曜日の20時00分」という一週間分の日時から、停止時刻「平日の17時00分」を算出する。そして、判定部106bは、算出した停止予定時刻を仮想マシン制御部108へ送信する。
【0094】
(仮想マシン制御部)
仮想マシン制御部108は、判定部106bによる指示に応じてサーバ装置10の仮想マシン処理部13の動作を制御する。また、仮想マシン制御部108は、判定部106bによる指示に応じてサーバ装置10の仮想マシン処理部13の動作を制御した履歴を、仮想マシン状態履歴記憶部102の仮想マシン状態履歴記憶テーブル102aに記憶させる。
【0095】
例えば、仮想マシン制御部108は、判定部106bからの指示に応じて、仮想マシン処理部13の起動、スケールアップ、スケールダウン、停止をおこなったとする。この場合に、仮想マシン制御部108は、当該の仮想マシン処理部13の「VMID」、「イベント」、「発生時刻」を対応付けて仮想マシン状態履歴記憶テーブル102aに記憶させる。
【0096】
なお、仮想マシン制御部108は、判定部106bにより仮想マシン処理部13を起動または停止させると指示された場合に、サービスグループテーブル103bに記憶される起動順または停止順に従って各仮想マシン処理部13を起動または停止させる。
【0097】
例えば、仮想マシン制御部108は、サービスを停止する場合に、サービスグループテーブル103bを参照し、停止するサービスに対応付けられる仮想マシン処理部13を停止順に停止させる。この際、仮想マシン制御部108は、停止する仮想マシン処理部13が他のサービスでも利用されているか否かを判定する。仮想マシン制御部108は、停止する仮想マシン処理部13が他のサービスで現在利用されていない場合、当該の仮想マシン処理部13を停止させる。なお、停止させる仮想マシン処理部13が他のサービスで現在利用されている場合には、仮想マシン制御部108は、当該の仮想マシン処理部13を停止させない。
【0098】
また、例えば、仮想マシン制御部108は、サービスを起動する場合に、サービスグループテーブル103bを参照し、起動するサービスに対応付けられる仮想マシン処理部13を起動順に起動させる。この際、仮想マシン制御部108は、起動する仮想マシン処理部13が既に起動中である場合、当該の仮想マシン処理部13を起動する処理をおこなわない。
【0099】
(レスポンス制御部のレスポンス生成部)
レスポンス生成部110aは、リクエスト制御部106から受信した判定結果に応じて、レスポンスを生成する。例えば、レスポンス生成部110aは、仮想マシン処理部13の状態を取得した場合に、仮想マシン処理部13の状態を表示するためのレスポンスを生成する。また、レスポンス生成部110aは、仮想マシン処理部13を停止させる旨の判定結果を受け付けた場合に、仮想マシン処理部13を停止処理中である旨の情報を表示するためのレスポンスを生成する。
【0100】
また、レスポンス生成部110aは、仮想マシン処理部13を起動させる旨の判定結果を受け付けた場合に、仮想マシン処理部13を起動処理中である旨の情報を表示するためのレスポンスを生成する。また、レスポンス生成部110aは、仮想マシン処理部13を起動させない旨の判定結果を受け付けた場合に、仮想マシン処理部13を停止中である旨の情報を表示するためのレスポンスを生成する。また、レスポンス生成部110aは、仮想マシン処理部13を停止させない旨の判定結果を受け付けた場合に、仮想マシン処理部13が起動中である旨の情報を表示するためのレスポンスを生成する。
【0101】
そして、レスポンス生成部110aは、生成したレスポンスを、レスポンス送信部111へ送信する。レスポンス送信部111は、受信したレスポンスをクライアント端末20へ送信する。クライアント端末20は、レスポンス送信部111からレスポンスを受信すると、生成されたレスポンスに対応する表示を表示画面に表示する。
【0102】
(レスポンス制御部のレスポンス修正部)
レスポンス修正部110bは、レスポンス受信部109から受信したレスポンスを修正する。
図8Cおよび
図8Dは、レスポンス修正によるレスポンスへのスクリプトの追加の一例を示す図である。例えば、
図8Cおよび
図8Dに示すように、レスポンス修正部110bは、サーバの停止予定時刻が近づいた場合に、レスポンス受信部109から受信したHTML(HyperText Markup Language)レスポンスを、
図8Cまたは
図8Dに示すようなJavaScript(登録商標、以下同様)などによるスクリプト12aまたは12bを追加して修正する。
【0103】
そして、レスポンス修正部110bは、修正したレスポンスを、レスポンス送信部111へ送信する。レスポンス送信部111は、受信したレスポンスをクライアント端末20へ送信する。
【0104】
図8Eは、レスポンス修正によりスクリプトが追加されたレスポンスの画面表示の一例を示す図である。クライアント端末20は、レスポンス送信部111からレスポンスを受信すると、
図8Eに示すように、JavaScriptなどのスクリプトによるメッセージ12cが追加されたレスポンスを表示画面に表示する。なお、メッセージの領域13aの位置は、クライアント端末20の表示画面において、利用者が容易に視認できる箇所であれば、いずれの位置であってもよい。
【0105】
(サーバ制御装置による仮想マシン処理部の起動の概要)
図9Aは、サーバ制御装置による仮想マシンの起動の概要の一例を示すシーケンス図である。ここでは、仮想マシン処理部13が起動されていない状態(VM停止中)であるものとして説明する。
【0106】
図9Aに示すように、クライアント端末20は、サーバ装置10へ、仮想マシン処理部13が提供するサービスへアクセスするためのリクエストを送信する(ステップS11)。そして、サーバ制御装置100のリクエスト受信部105は、サービスへのアクセスを開始するリクエストをクライアント端末20から受信する。そして、サーバ制御装置100のリクエスト送信部107は、受信したリクエストをサーバ装置10へ転送する(ステップS12)。
【0107】
このとき、サーバ装置10において、仮想マシン処理部13は起動されていない状態であるので、サーバ制御装置100の判定部106bは、サービスを提供する仮想マシン処理部13が停止中である旨を、ネットワークエラーとして検知する。
【0108】
そして、サーバ制御装置100の仮想マシン制御部108は、サービスの提供者により提供されるAPI(Application Program Interface)やWOL(Wake On LAN)などを用いて、サーバ装置10において、仮想マシン処理部13の起動を開始させる制御をおこなう(ステップS13)。そして、サーバ制御装置100のレスポンス送信部111は、仮想マシン処理部13を起動中である旨の情報を含む画面を表示させるレスポンスを、クライアント端末20へ送信する(ステップS14)。一例としては、サーバ制御装置100のレスポンス送信部111は、「サーバを起動しています。しばらくお待ち下さい」というメッセージを含む画面を表示させるレスポンスを、クライアント端末20へ送信する。
【0109】
そして、サーバ制御装置100の判定部106bは、仮想マシン処理部13の起動が完了するまで、定期的に死活チェックを行う(ステップS15)。サーバ制御装置100のレスポンス受信部109は、死活チェックに対する応答を受信する(ステップS16)。これにより、サーバ制御装置100は、仮想マシン処理部13の起動を確認する。
【0110】
また、サーバ制御装置100のリクエスト受信部105がクライアント端末20からリクエストを受信すると(ステップS17)、サーバ制御装置100のリクエスト送信部107は、受信したリクエストをサーバ装置10の仮想マシン処理部13へ転送する(ステップS18)。このとき、サーバ制御装置100のリクエスト解析部106aは、リクエストを受信した日時を記録する。そして、サーバ制御装置100のレスポンス受信部109は、リクエストに対応するレスポンスをサーバ装置10の仮想マシン処理部13から受信する(ステップS19)。
【0111】
そして、サーバ制御装置100のレスポンス送信部111は、受信したレスポンスをクライアント端末20へ転送する(ステップS20)。このように、サーバ制御装置100は、クライアント端末20からのリクエストを受信することで、仮想マシン処理部13を起動させることができる。
【0112】
(サーバ制御装置による仮想マシン処理部の停止の概要)
図9Bは、サーバ制御装置による仮想マシンの停止の概要の一例を示すシーケンス図である。ここでは、仮想マシン処理部13が起動中であるものとして説明する。
【0113】
図9Bに示すように、サーバ制御装置100のリクエスト受信部105がクライアント端末20からリクエストを受信すると(ステップS21)、サーバ制御装置100のリクエスト送信部107は、受信したリクエストをサーバ装置10へ転送する(ステップS22)。サーバ制御装置100のレスポンス受信部109は、リクエストに対するレスポンスを、仮想マシン処理部13から受信し(ステップS23)、サーバ制御装置100の判定部106bは、レスポンスを受信した日時を記録する(ステップS24)。
【0114】
一例としては、サーバ制御装置100の判定部106bは、レスポンスを受信した日時と、レスポンスの送信元の仮想マシン処理部13を識別する情報を対応付けて記録する。そして、サーバ制御装置100のレスポンス送信部111は、受信したレスポンスをクライアント端末20端末へ転送する(ステップS25)。
【0115】
また、サーバ制御装置100の判定部106bは、仮想マシン処理部13へのリクエストを最後に受信した日時を確認する最終アクセスチェックを内部で定期的に実行し(ステップS26)、仮想マシン処理部13を停止させるか否かを判定する(ステップS27)。一例としては、サーバ制御装置100の判定部106bは、起動中の仮想マシン処理部13について記録された日時を参照し、記録した日時と現在時刻との間に所定時間の差がある場合に、当該の仮想マシン処理部13を停止させると判定する。
【0116】
なお、起動中の仮想マシン処理部13について記録された日時が複数存在する場合には、最新の日時を用いて判定する。そして、サーバ制御装置100の仮想マシン制御部108は、停止させると判定した仮想マシン処理部13の停止を開始させる(ステップS28)。そして、サーバ制御装置100の判定部106bは、死活チェックを行うことで(ステップS29)、仮想マシン処理部13の停止を確認する(ステップS30)。
【0117】
(サーバ制御装置による仮想マシン処理部の稼働制御の概要)
図9Cは、サーバ制御装置による仮想マシンの動作制御の概要の一例を示すシーケンス図である。ここでは、仮想マシン処理部13が停止中であるものとして説明する。また、サーバ制御装置100の仮想マシン状態履歴記憶部102は、例えば、仮想マシン処理部13が起動した日時、停止した日時、スケールアップを実行した日時およびスケールダウンを実行した日時を含む稼働状況の履歴を記憶するものとする。
【0118】
図9Cに示すように、サーバ制御装置100の判定部106bは、仮想マシン処理部13の起動判定に関する利用状況の集計を、内部スレッドで定期的に実行し(ステップS31)、仮想マシン処理部13を起動させるか否かを判定する(ステップS32)。一例としては、サーバ制御装置100の判定部106bは、過去一週間の間に仮想マシン処理部13が起動した日時を稼働状況の履歴から取得する。
【0119】
そして、サーバ制御装置100の判定部106bは、取得した日時について周期性を解析し、仮想マシン処理部13の起動時刻として、例えば、「平日の9時00分」を算出する。そして、サーバ制御装置100の判定部106bは、仮想マシン処理部13の起動時刻を経過していれば、仮想マシン処理部13を起動させると判定する。そして、サーバ制御装置100の仮想マシン制御部108は、仮想マシン処理部13の起動を開始させる(ステップS33)。
【0120】
また、サーバ制御装置100の判定部106bは、仮想マシン処理部13のスケールアップおよび/またはスケールダウン判定に関する利用状況の集計を、内部スレッドで定期的に実行し(ステップS34)、仮想マシン処理部13をスケールアップまたはスケールダウンさせるか否かを判定する(ステップS35)。
【0121】
一例としては、サーバ制御装置100の判定部106bは、過去一週間の間に仮想マシン処理部13がスケールアップまたはスケールダウンした日時を稼働状況の履歴から取得する。そして、サーバ制御装置100の判定部106bは、取得した日時について周期性を解析し、仮想マシン処理部13のスケールアップ時刻として、例えば、「平日の12時00分」を算出する。
【0122】
そして、サーバ制御装置100の判定部106bは、仮想マシン処理部13のスケールアップ時刻を経過していれば、仮想マシン処理部13をスケールアップさせると判定する。そして、サーバ制御装置100の仮想マシン制御部108は、仮想マシン処理部13をスケールアップさせる(ステップS36)。また、サーバ制御装置100の判定部106bは、仮想マシン処理部13のスケールダウン時刻を経過していれば、仮想マシン処理部13をスケールダウンさせると判定する。そして、サーバ制御装置100の仮想マシン制御部108は、仮想マシン処理部13をスケールダウンさせる(ステップS37)。
【0123】
また、サーバ制御装置100の判定部106bは、仮想マシン処理部13の起動判定に関する利用状況の集計を、内部スレッドで定期的に実行し(ステップS38)、仮想マシン処理部13を停止させるか否かを判定する(ステップS39)。一例としては、サーバ制御装置100の判定部106bは、過去一週間の間に仮想マシン処理部13が停止した日時を稼働状況の履歴から取得する。
【0124】
そして、サーバ制御装置100の判定部106bは、取得した日時について周期性を解析し、仮想マシン処理部13の停止時刻として、例えば、「平日の17時00分」を算出する。そして、サーバ制御装置100の判定部106bは、仮想マシン処理部13の停止時刻を経過していれば、仮想マシン処理部13を停止させると判定する。そして、サーバ制御装置100の仮想マシン制御部108は、仮想マシン処理部13の停止を開始させる(ステップS40)。
【0125】
なお、ここでは、サーバ制御装置100の判定部106bが算出した起動時刻を経過した場合に、仮想マシン処理部13を起動させるものとして説明したが、これに限定されるものではない。例えば、サーバ制御装置100の内部の記憶領域に算出した起動時刻を仮想マシン処理部13ごとにスケジュールとして記憶しておき、サーバ制御装置100の判定部106bがスケジュールを定期的に参照し、起動時刻を経過した場合に、仮想マシン処理部13を起動させると判定する構成としても良い。
【0126】
また、サーバ制御装置100は、スケールアップ時刻、スケールダウン時刻および停止時刻についても同様にスケジュールとして記憶し、それぞれのスケジュールに応じて、仮想マシン処理部13をスケールアップ、スケールダウンまたは停止させてもよい。さらに、サーバ制御装置100が記憶するスケジュールは、利用者によって任意に設定されてもよい。
【0127】
また、ここでは、サーバ制御装置100の判定部106bによって算出される起動時刻、スケールアップ時刻、スケールダウン時刻および停止時刻の一例として、「平日」と曜日が指定される場合を説明したが、これに限定されるものではない。例えば、サーバ制御装置100は、所定の期間が指定されてもよいし、時間帯が指定されてもよい。
【0128】
なお、サーバ制御装置100と、仮想マシン処理部13との通信は、サーバ装置10の仮想マシン実行部12を経由して行われる。また、サーバ制御装置100は、仮想マシン処理部13の起動、停止、死活監視などをサーバ装置10の仮想マシン実行部12を制御しておこなう。
図9A〜
図9C示すシーケンス図では、仮想マシン実行部12および仮想マシン実行部12の機能もしくは処理の図示を省略している。
【0129】
(クライアント端末におけるデータ要求にかかる処理)
図10Aは、クライアント端末におけるデータ要求にかかる処理の一例を示すフローチャートである。
図10Aに示すように、クライアント端末20は、アクセスユーザから入力された、サーバ装置10で提供されるサービスに対するデータ要求のリクエストをサーバ制御装置100へ送信する(ステップS51)。そして、クライアント端末20は、ステップS51で送信したリクエストに対するレスポンスのデータを、サーバ制御装置100から受信する(ステップS52)。そして、クライアント端末20は、ステップS52で受信したレスポンスのデータに基づく表示を画面表示する(ステップS53)。
【0130】
(クライアント端末におけるサーバ状態確認にかかる処理)
図10Bは、クライアント端末におけるサーバ状態確認にかかる処理の一例を示すフローチャートである。
図10Bに示すように、クライアント端末20は、アクセスユーザから入力された、サーバ装置10でサービスを提供する仮想マシン処理部13に対するサーバ状態確認のリクエストをサーバ制御装置100へ送信する(ステップS61)。そして、クライアント端末20は、ステップS61で送信したリクエストに対するレスポンスのデータを、サーバ制御装置100から受信する(ステップS63)。
【0131】
そして、クライアント端末20は、ステップS62で受信したレスポンスの内容を判定する(ステップS63)。クライアント端末20は、ステップS52で受信したレスポンスの内容が「サーバ起動中」である場合には、レスポンスのデータに基づき、リクエストを送信した仮想マシン処理部13の状態の表示を画面表示する(ステップS64)。
【0132】
また、クライアント端末20は、ステップS62で受信したレスポンスの内容が「サーバ起動処理中」である場合には、レスポンスのデータに基づき、リクエストを送信した仮想マシン処理部13がサーバ起動処理中である旨の表示を画面表示する(ステップS65)。また、クライアント端末20は、ステップS62で受信したレスポンスの内容が「サーバ停止中」である場合には、レスポンスのデータに基づき、リクエストを送信した仮想マシン処理部13が停止中である旨の表示を画面表示する(ステップS66)。
【0133】
(サーバ制御装置における全体処理)
図11は、サーバ制御装置における全体処理の一例を示すフローチャートである。
図11に示す処理は、例えば、サーバ制御装置100のリクエスト受信部105がリクエストを受信したことを契機として実行される。
【0134】
図11に示すように、サーバ制御装置100のリクエスト受信部105は、クライアント端末20からリクエストを受信する(ステップS101)。そして、サーバ制御装置100のリクエスト解析部106aは、受信したリクエストを接続情報記憶テーブル101aに記録する(ステップS102)。そして、サーバ制御装置100の判定部106bは、サービスグループテーブル103bを参照し、リクエストがアクセスを要求するサービスを提供する仮想マシン処理部13のVMIDを取得する(ステップS103)。
【0135】
そして、サーバ制御装置100の判定部106bは、受信したリクエストがデータ要求リクエストであるか否かを判定する(ステップS104)。サーバ制御装置100の判定部106bは、ステップS104の処理により、データ要求リクエストであると判定した場合(ステップS104肯定)、ステップS103で取得したVMIDのなかから一つのVMID選択する(ステップS105)。例えば、サーバ制御装置100の判定部106bは、取得したVMIDのうち未選択のVMIDを一つ選択する。
【0136】
そして、サーバ制御装置100の判定部106bは、選択したVMIDに対応する仮想マシン処理部13への接続可否を判定する接続可否判定処理をおこなう(ステップS106)。サーバ制御装置100のリクエスト送信部107は、ステップS106の処理により、クライアント端末20による仮想マシン処理部13への接続が許可された場合、リクエストを仮想マシン処理部13へ送信する。また、ステップS106の処理により、クライアント端末20による仮想マシン処理部13への接続が許可されない場合、サーバ制御装置100のレスポンス生成部110aは、接続が許可されなかった旨のレスポンスを生成する。そして、サーバ制御装置100のレスポンス送信部111は、レスポンス生成部110aにより生成されたレスポンスをクライアント端末20へ送信する。
【0137】
そして、サーバ制御装置100の判定部106bは、仮想マシン状態記憶テーブル103aを参照して、ステップS105で選択したVMIDに対応する仮想マシン処理部13の状態を取得する(ステップS107)。そして、サーバ制御装置100の判定部106bは、ステップS107で状態を取得した仮想マシン処理部13が稼働しているか否かを判定する(ステップS108)。
【0138】
サーバ制御装置100の判定部106bは、ステップS107で状態を取得した仮想マシン処理部13が稼働している場合(ステップS108肯定)、当該の仮想マシン処理部13を停止させるか否かを判定する停止判定処理をおこなう(ステップS109)。
【0139】
サーバ制御装置100の仮想マシン制御部108は、ステップS109の処理により、仮想マシン処理部13を停止させると判定した場合(ステップS110肯定)、当該の仮想マシン処理部13を停止させるVM停止処理をおこなう(ステップS111)。そして、サーバ制御装置100のレスポンス生成部110aは、当該の仮想マシン処理部13を停止処理中である旨の情報を表示するためのレスポンスを生成する(ステップS112)。そして、サーバ制御装置100のレスポンス送信部111は、生成したレスポンスをクライアント端末20へ送信する(ステップS113)。
【0140】
一方、サーバ制御装置100の判定部106bは、ステップS109の処理により、仮想マシン処理部13を停止させないと判定した場合(ステップS110否定)、当該の仮想マシン処理部13のスケールアップ/スケールダウン判定処理をおこなう(ステップS114)。
【0141】
そして、サーバ制御装置100のレスポンス生成部110aは、ステップS107で状態を取得した仮想マシン処理部13が起動中である旨の情報を表示するためのレスポンスを生成する(ステップS115)。そして、サーバ制御装置100の判定部106bは、ステップS103の処理で取得した全てのVMIDを選択したか否かを判定する(ステップS116)。
【0142】
サーバ制御装置100のリクエスト送信部107は、ステップS103の処理で取得した全てのVMIDを選択したと判定した場合(ステップS116肯定)、リクエストを仮想マシン処理部13へ送信する(ステップS117)。そして、サーバ制御装置100のレスポンス受信部109は、送信したリクエストに対するレスポンスを仮想マシン処理部13から受信する(ステップS118)。そして、サーバ制御装置100のレスポンス修正部110bは、受信したレスポンスに、生成したレスポンスを付加する(ステップS119)。そして、サーバ制御装置100のレスポンス送信部111は、ステップS119の処理により、生成したレスポンスを負荷したレスポンスをクライアント端末20へ送信する(ステップS113)。
【0143】
また、サーバ制御装置100の判定部106bは、ステップS103の処理で取得した全てのVMIDを選択していないと判定した場合(ステップS116否定)、ステップS105の処理へ移る。
【0144】
また、サーバ制御装置100の判定部106bは、ステップS107で状態を取得した仮想マシン処理部13が稼働していない場合(ステップS108否定)、当該の仮想マシン処理部13を起動させるか否かを判定する起動判定処理をおこなう(ステップS120)。そして、サーバ制御装置100の仮想マシン制御部108は、ステップS120の処理により、当該の仮想マシン処理部13を起動させると判定した場合(ステップS121肯定)、当該の仮想マシン処理部13を起動させるVM起動処理をおこなう(ステップS122)。
【0145】
そして、サーバ制御装置100のレスポンス生成部110aは、当該の仮想マシン処理部13を起動処理中である旨の情報を表示するためのレスポンスを生成する(ステップS123)。そして、サーバ制御装置100のレスポンス送信部111は、ステップS123の処理により生成されたレスポンスをクライアント端末20へ送信する(ステップS113)。
【0146】
また、サーバ制御装置100のレスポンス生成部110aは、ステップS120の処理により、当該の仮想マシン処理部13を起動させないと判定した場合(ステップS121否定)、当該の仮想マシン処理部13が停止中である旨の情報を表示するためのレスポンスを生成する(ステップS124)。そして、サーバ制御装置100のレスポンス送信部111は、ステップS124の処理により生成されたレスポンスをクライアント端末20へ送信する(ステップS113)。
【0147】
また、サーバ制御装置100のレスポンス生成部110aは、ステップS104の処理により、データ要求リクエストでないと判定した場合(ステップS104否定)、ステップS13の処理により取得した全てのVMIDに対応する仮想マシン処理部13の状態をそれぞれ取得する(ステップS125)。
【0148】
そして、サーバ制御装置100のレスポンス生成部110aは、ステップS125の処理により取得した仮想マシン処理部13の状態を表示するためのレスポンスを生成する(ステップS126)。そして、サーバ制御装置100のレスポンス送信部111は、ステップS126の処理により生成されたレスポンスをクライアント端末20へ送信する(ステップS113)。
【0149】
(サーバ制御装置における接続可否判定処理)
図12は、サーバ制御装置における接続可否判定処理の一例を示すフローチャートである。
図12は、
図11のステップS106に対応するサブルーチンを示すフローチャートである。
図12に示すように、サーバ制御装置100の判定部106bは、接続情報記憶テーブル101aを参照し、ステップS105で選択したVMIDに対応する仮想マシン処理部13の利用状況を取得する(ステップS201)。そして、サーバ制御装置100の判定部106bは、ステップS201の処理により取得した利用状況を集計する(ステップS202)。そして、サーバ制御装置100の判定部106bは、契約情報記憶テーブル104bから契約情報を取得する(ステップS203)。
【0150】
そして、サーバ制御装置100の判定部106bは、ステップS101の処理によりクライアント端末20から受信したリクエストの仮想マシン処理部13への接続可否を、ステップS202の処理により集計した利用状況と、ステップS203の処理により取得した契約情報とに基づき判定する(ステップS204)。そして、サーバ制御装置100の判定部106bは、接続可能と判定した場合(ステップS205肯定)、クライアント端末20による仮想マシン処理部13への接続を許可する(ステップS206)。
【0151】
一方、サーバ制御装置100の判定部106bは、接続可能と判定した場合(ステップS205否定)、クライアント端末20による仮想マシン処理部13への接続を許可しない(ステップS207)。なお、サーバ制御装置100の判定部106bは、ステップS205の処理により、仮想マシン処理部13への接続を許可しなかった場合、
図12の処理を終了する。そして、サーバ制御装置100のレスポンス生成部110aは、仮想マシン処理部への接続を許可しない旨のレスポンスを生成し、
図11のステップS113の処理により、生成したレスポンスをクライアント端末20へ送信する。
【0152】
(サーバ制御装置における停止判定処理)
図13は、サーバ制御装置における停止判定処理の一例を示すフローチャートである。
図13は、
図11のステップS109に対応するサブルーチンを示すフローチャートである。
図13に示すように、サーバ制御装置100の判定部106bは、接続情報記憶テーブル101aを参照し、
図11のステップS105で選択したVMIDに対応する仮想マシン処理部13の利用状況を取得する(ステップS301)。そして、サーバ制御装置100の判定部106bは、ステップS301の処理により取得した利用状況を集計する(ステップS302)。そして、サーバ制御装置100の判定部106bは、契約情報記憶テーブル104bから契約情報を取得する(ステップS303)。
【0153】
そして、サーバ制御装置100の判定部106bは、ステップS105の処理により選択した仮想マシン処理部13の停止を、ステップS302の処理により集計した利用状況と、ステップS303の処理により取得した契約情報とに基づき判定する(ステップS304)。そして、サーバ制御装置100の判定部106bは、仮想マシン処理部13を停止すると判定した場合(ステップS305肯定)、当該の仮想マシン処理部13を停止させると決定する(ステップS306)。一方、サーバ制御装置100の判定部106bは、仮想マシン処理部13を停止しないと判定した場合(ステップS305否定)、当該の仮想マシン処理部13を停止させないと決定する(ステップS307)。
【0154】
(サーバ制御装置における仮想マシン停止処理)
図14は、サーバ制御装置における仮想マシン停止処理の一例を示すフローチャートである。
図14は、
図11のステップS111に対応するサブルーチンを示すフローチャートである。
図14に示すように、サーバ制御装置100の仮想マシン制御部108は、サービスグループテーブル103bを参照し、
図11のステップS101で受信したリクエストに含まれるサービス名に対応する仮想マシン処理部13のうちの未選択の仮想マシン処理部13を停止順に一つ選択する(ステップS401)。
【0155】
そして、サーバ制御装置100の仮想マシン制御部108は、ステップS401で選択した仮想マシン処理部13が他のサービスでも利用されているか否かを判定する(ステップS402)。そして、サーバ制御装置100の仮想マシン制御部108は、ステップS401で選択した仮想マシン処理部13が他のサービスで利用されている場合(ステップS402肯定)、ステップS404の処理へ移る。一方、サーバ制御装置100の仮想マシン制御部108は、ステップS401で選択した仮想マシン処理部13が他のサービスで利用されていない場合(ステップS402否定)、ステップS401で選択した仮想マシン処理部13を停止させる(ステップS403)。
【0156】
そして、サーバ制御装置100の仮想マシン制御部108は、サービスグループテーブル103bにおいて、
図11のステップS101で受信したリクエストに含まれるサービス名に対応する仮想マシン処理部13を全て選択したか否かを判定する(ステップS404)。そして、サーバ制御装置100の仮想マシン制御部108は、全ての仮想マシン処理部13を選択した場合(ステップS404肯定)、
図11のステップS112へ処理を移す。一方、サーバ制御装置100の仮想マシン制御部108は、サービスグループテーブル103bにおいて、
図11のステップS101で受信したリクエストに含まれるサービス名に対応する未選択の仮想マシン処理部13がある場合(ステップS404否定)、ステップS401へ処理を移す。
【0157】
(サーバ制御装置における仮想マシンのスケールアップ/スケールダウン判定処理)
図15は、サーバ制御装置における仮想マシンのスケールアップ/スケールダウン判定処理の一例を示すフローチャートである。
図15は、
図11のステップS114に対応するサブルーチンを示すフローチャートである。
【0158】
図15に示すように、サーバ制御装置100の判定部106bは、接続情報記憶テーブル101aを参照し、ステップS105で選択したVMIDに対応する仮想マシン処理部13の利用状況を取得する(ステップS501)。そして、サーバ制御装置100の判定部106bは、ステップS501の処理により取得した利用状況を集計する(ステップS502)。そして、サーバ制御装置100の判定部106bは、契約情報記憶テーブル104bから契約情報を取得する(ステップS503)。
【0159】
そして、サーバ制御装置100の判定部106bは、
図11のステップS105の処理により選択した仮想マシン処理部13の必要リソース、例えばCPUの数および駆動周波数、メモリの容量を、ステップS502の処理により集計した利用状況に基づき算出する(ステップS504)。そして、サーバ制御装置100の判定部106bは、ステップS504で算出した必要リソースと、仮想マシン状態記憶テーブル103aに記憶される仮想マシンの状態、例えば「CPUスケール状態」、「メモリスケール状態」とを比較する。
【0160】
そして、サーバ制御装置100の判定部106bは、必要リソースと、仮想マシンの状態との比較結果に基づき、リソースが不足するか否か判定する(ステップS505)。そして、サーバ制御装置100の判定部106bは、リソースが不足する場合(ステップS505肯定)、ステップS508へ処理を移す。一方、サーバ制御装置100の判定部106bは、リソースが不足しない場合(ステップS505否定)、ステップS506へ処理を移す。
【0161】
そして、サーバ制御装置100の判定部106bは、必要リソースと、仮想マシンの状態との比較結果に基づき、リソースが過剰か否か判定する(ステップS506)。サーバ制御装置100は、リソースが過剰である場合(ステップS506肯定)、ステップS509へ処理を移す。一方、サーバ制御装置100の判定部106bは、リソースが過剰でない場合(ステップS506否定)、ステップS507へ処理を移す。
【0162】
ステップS507では、サーバ制御装置100の仮想マシン制御部108は、当該の仮想マシン処理部13のリソースを現状維持させる。また、ステップS508では、サーバ制御装置100の仮想マシン制御部108は、当該の仮想マシン処理部13のリソースをスケールアップさせる。また、ステップS509では、サーバ制御装置100の仮想マシン制御部108は、当該の仮想マシン処理部13のリソースをスケールダウンさせる。サーバ制御装置100は、ステップS507〜S509の処理が終了すると、
図11のステップS115へ処理を移す。
【0163】
(サーバ制御装置における起動判定処理)
図16は、サーバ制御装置における起動判定処理の一例を示すフローチャートである。
図16は、
図11のステップS120に対応するサブルーチンを示すフローチャートである。
図16に示すように、サーバ制御装置100の判定部106bは、接続情報記憶テーブル101aを参照し、
図11のステップS105で選択したVMIDに対応する仮想マシン処理部13の利用状況を取得する(ステップS601)。そして、サーバ制御装置100の判定部106bは、ステップS601の処理により取得した利用状況を集計する(ステップS602)。そして、サーバ制御装置100の判定部106bは、契約情報記憶テーブル104bから契約情報を取得する(ステップS603)。
【0164】
そして、サーバ制御装置100の判定部106bは、ステップS105の処理により選択した仮想マシン処理部13の起動を、ステップS602の処理により集計した利用状況と、ステップS603の処理により取得した契約情報と基づき判定する(ステップS604)。そして、サーバ制御装置100の判定部106bは、仮想マシン処理部13を起動すると判定した場合(ステップS605肯定)、当該の仮想マシン処理部13を起動させると決定する(ステップS606)。一方、サーバ制御装置100の判定部106bは、仮想マシン処理部13を起動しないと判定した場合(ステップS605否定)、当該の仮想マシン処理部13を起動させないと決定する(ステップS607)。
【0165】
(サーバ制御装置における仮想マシン起動処理)
図17は、サーバ制御装置における仮想マシン起動処理の一例を示すフローチャートである。
図17は、
図11のステップS122に対応するサブルーチンを示すフローチャートである。
図17に示すように、サーバ制御装置100の仮想マシン制御部108は、サービスグループテーブル103bを参照し、
図11のステップS101で受信したリクエストに含まれるサービス名に対応する仮想マシン処理部13のうちの未選択の仮想マシン処理部13を起動順に一つ選択する(ステップS701)。
【0166】
そして、サーバ制御装置100の仮想マシン制御部108は、ステップS701で選択した仮想マシン処理部13が起動しているか否かを判定する(ステップS702)。そして、サーバ制御装置100の仮想マシン制御部108は、ステップS701で選択した仮想マシン処理部13が起動している場合(ステップS702肯定)、ステップS704の処理へ移る。一方、サーバ制御装置100の仮想マシン制御部108は、ステップS701で選択した仮想マシン処理部13が起動していない場合(ステップS702否定)、ステップS701で選択した仮想マシン処理部13を起動させる(ステップS703)。
【0167】
そして、サーバ制御装置100の仮想マシン制御部108は、サービスグループテーブル103bにおいて、
図11のステップS101で受信したリクエストに含まれるサービス名に対応する仮想マシン処理部13を全て選択したか否かを判定する(ステップS704)。そして、サーバ制御装置100の仮想マシン制御部108は、全ての仮想マシン処理部13を選択した場合(ステップS704)、
図11のステップS123へ処理を移す。一方、サーバ制御装置100の仮想マシン制御部108は、サービスグループテーブル103bにおいて、
図11のステップS101で受信したリクエストに含まれるサービス名に対応する未選択の仮想マシン処理部13がある場合(ステップS704否定)、ステップS701へ処理を移す。
【0168】
(実施の形態による効果)
以上の実施の形態によれば、サーバ制御装置100は、サーバ装置上で動作し、ネットワークを介してクライアント端末へサービスを提供する仮想マシンの状態の履歴を記憶する。サーバ制御装置100は、仮想マシンを利用してサービスを提供するサービス提供者ごとの仮想マシンの識別情報に対応付けて、仮想マシンの利用にかかる契約情報を予め記憶する。サーバ制御装置100は、仮想マシン状態履歴記憶部に記憶される履歴から求まる仮想マシンの利用料金が、記憶される契約情報を満たすように、仮想マシンを起動または停止させるかを判定する。サーバ制御装置100は、判定した結果に応じて仮想マシンを起動または停止させる制御をおこなう。このため、サーバ制御装置100は、サーバ装置10を効率よく稼働させることができる。
【0169】
例えば、サーバ制御装置100は、サーバ装置10の仮想マシン処理部13により提供されるサービスが利用されていない場合には、仮想マシン処理部13を停止させたり、スケールダウンさせたりするので、サーバ装置10を効率よく稼働させることができる。また、例えば、サーバ制御装置100は、アクセスユーザによるアクセスの発生、増加が予測され、負荷が高くなることが予測される場合に、仮想マシン処理部13を起動、スケールアップさせるので、サーバ装置10を効率よく稼働させることができる。
【0170】
よって、従量課金制で有料提供されるサービスプラットフォームの利用の際に、利用金額の無駄を低減でき、サービスプラットフォームの利用者は、利用料金を節約することができる。
【0171】
また、サーバ装置10の管理者でなくても、サーバ装置10が利用される状況に応じて、サーバ制御装置100が能動的にサーバ装置10における仮想マシン処理部13の稼働制御をおこなうことができる。また、サーバ装置10の仮想マシン処理部13の利用状況に応じたメッセージをクライアント端末20に表示させることにより、サーバ装置10の仮想マシン処理部13で実行されるソフトウェアにより提供されるサービスにアクセスするアクセスユーザは、サーバ装置10もしくは仮想マシン処理部13の状態、またはサービスの利用状況を把握できる。
【0172】
[その他の実施の形態]
以上、本願が開示する技術の実施の形態について説明したが、本願が開示する技術は上述した実施の形態のほか、その他の実施の形態にて実施されてもよい。そこで、以下では、その他の実施の形態について説明する。
【0173】
(1)サーバ制御装置が制御する仮想マシン処理部の数
上述の実施の形態では、サーバ制御装置100は、複数の仮想マシン処理部13を制御する場合を説明した。しかし、これに限定されるものではなく、サーバ制御装置100が一つの仮想マシン処理部13を制御してもよい。
【0174】
例えば、上述の実施の形態では、サーバ制御装置100が、仮想マシン処理部13ごとに稼働を制御する場合を説明した。しかし、例えば、サーバ制御装置100は、仮想マシン処理部13の利用状況と契約情報とに基づいて、複数の仮想マシン処理部13の合計利用料金を算出し、合計利用料金が許容料金に達しているか否かに応じて、複数の仮想マシン処理部13を制御してもよい。
【0175】
図18は、サーバ制御装置が複数の仮想マシンを制御する場合における契約情報記憶テーブルの構成の一例を示す図である。
図18に示すように、契約情報記憶テーブル104cは、複数の「VMID」に共通の「月最大許容使用料金」“100000円”を記憶する。この「月最大許容使用料金」は、一のサービス提供者によって複数の仮想マシン処理部13が利用される際に許容される所定期間あたりの利用料金の合計の上限を指す。
【0176】
サーバ制御装置100の判定部106bは、「VMID」“VM1”および“VM2”の「課金額」を合計し、“VM1”および“VM2”の「合計課金額」を算出する。そして、サーバ制御装置100の判定部106bは、「合計課金額」が、共通の「月最大許容使用料金」“100000円”に達している場合には、稼働中の“VM1”および“VM2”を停止させると判定する。一方、サーバ制御装置100は、「合計課金額」が、共通の「月最大許容使用料金」“100000円”に達していない場合には、“VM1”および“VM2”を起動させると判定する。なお、ここでは、サーバ制御装置100が、1つの「月最大許容使用料金」により2つの仮想マシン処理部13を制御する場合を説明したが、これに限定されず、1つの「月最大許容使用料金」により3つ以上の仮想マシン処理部13を制御してもよい。
【0177】
すなわち、サーバ制御装置100は、一のサービス提供者にかかる複数の仮想マシンの識別情報と、複数の仮想マシンごとの起動および停止を含むイベントと、そのイベントの発生日時とを対応付けて記憶する。また、サーバ制御装置100は、複数の仮想マシンの識別情報に対応付けて、一のサービス提供者によって複数の仮想マシンがそれぞれ利用される際の仮想マシンごとの所定利用時間あたりの利用料金、一のサービス提供者によって複数の仮想マシンが利用される際に許容される所定期間あたりの利用料金の合計の上限を記憶する。また、サーバ制御装置100は、複数の仮想マシンの起動および停止を含むイベントおよびそのイベントの発生日時から仮想マシンごとの利用時間の累計を求め、その仮想マシンの利用時間の累計に所定利用時間あたりの利用料金を乗じた利用料金の累計を仮想マシンごとに算出し、仮想マシンの利用料金の累計から複数の仮想マシンの利用料金の累計の合計を算出し、算出した合計が前記契約情報記憶部に記憶された上限に達している場合には、起動中の複数の仮想マシンを停止すると判定し、または、算出した合計が上限に達していない場合には、停止中の複数の仮想マシンを起動すると判定する。これによれば、例えば、複数の企業によって提供されるサービスプラットフォームとしての各仮想マシン処理部13の稼働を1つの「月最大許容使用料金」により制御できる。
【0178】
(2)レスポンス解析による仮想マシン処理部の制御
また、例えば、上述の実施の形態では、サーバ制御装置100がリクエストを解析することで、仮想マシン処理部13を制御する場合を説明したが、これに限定されるものではない。例えば、サーバ制御装置100は、レスポンスを解析することで、仮想マシン処理部13を制御してもよい。
【0179】
図19は、レスポンス解析による仮想マシンの再起動制御の一例を示す図である。
図19に示すDBサーバ30は、サーバ装置10にて用いられるデータを管理するデータベースサーバに対応する。また、
図19では、DBサーバ30は、再起動を要するエラーが発生しているものとする。
【0180】
図19に示すように、クライアント端末20は、サーバ制御装置100へリクエストを送信する(ステップS41)。サーバ制御装置100は、クライアント端末20から受信したリクエストをサーバ装置10へ転送する(ステップS42)。サーバ装置10は、リクエストに対するレスポンスの生成に要するデータ取得をDBサーバ30にアクセスして試みる。しかし、サーバ制御装置100は、DBサーバ30でエラーが発生しているので、DBサーバ30へのアクセスに失敗する(ステップS43)。
【0181】
これにより、サーバ制御装置100は、DBサーバ30のエラーを検知する(ステップS44)。そして、サーバ装置10は、
図20に例示するレスポンスを生成し、生成したレスポンスをサーバ制御装置100へ送信する(ステップS45)。
図20は、レスポンス解析による仮想マシンの再起動制御の際に、サーバ装置から送信されるレスポンスの一例を示す図である。
【0182】
そして、サーバ制御装置100は、サーバ装置10から受信したレスポンスを解析する(ステップS46)。例えば、サーバ制御装置100は、サーバ装置10から受信したレスポンスに対し、「<head><title>DBエラー</title></head>」とのパターンマッチングを行って、一致するか否かを判定する。一致した場合、サーバ制御装置100は、DBサーバ30でエラーが発生したものと判定し、エラーの発生を自装置内部のメモリに記憶させる。
【0183】
そして、サーバ制御装置100は、DBサーバ30におけるエラー回数が所定回数に到達したことを契機として、DBサーバ30の再起動(ステップS47)と、サーバ装置10の再起動(ステップS48)とを実行する。そして、サーバ制御装置100は、サーバ装置10およびDBサーバ30を再起動している旨を示すレスポンスをクライアント端末20へ送信する(ステップS49)。このようにして、サーバ制御装置100は、レスポンスに基づきサーバ装置10、仮想マシン処理部13およびDBサーバ30を制御できる。
【0184】
(3)サーバ制御装置による自律的な制御
上記の実施の形態では、サーバ制御装置100がリクエスト受信部105にリクエストが受信されたことを契機として処理を開始するものと説明した。しかしながら、本発明はこれに限定されるものではなく、例えば、サーバ制御装置100は、定期的に仮想マシン処理部13を制御するか否かを判定しても良い。
【0185】
図21は、サーバ制御装置における全体処理の一例を示すフローチャートである。
図21に示す処理は、例えば、図示した各装置に電源から電力が供給される間、所定時間間隔で実行される。なお、
図21の各ステップのうち、
図11と同一のステップについては
図11と同一の符号を付し、その説明を省略する。
【0186】
図21に示すように、サーバ制御装置100の判定部106bは、処理タイミングになると(ステップS801肯定)、サービスグループテーブル103bを参照し、制御の対象となる仮想マシン処理部13のVMIDを取得する(ステップS103)。そして、サーバ制御装置100の判定部106bは、ステップS105へ処理を移す。なお、サーバ制御装置100の判定部106bは、処理タイミングになるまで(ステップS801否定)、待機状態である。
【0187】
(4)サーバ制御装置の実装形態
上述の実施の形態では、サーバ制御装置100は、リバースプロキシサーバであるとした。しかし、これに限らず、サーバ制御装置100は、リバースプロキシサーバとは異なるハードウェアに実装されてもよい。すなわち、サーバ制御装置100は、クライアント端末20からのリクエストをリバースプロキシサーバから受信し、リクエストを解析した結果に基づいて、サーバ装置10および仮想マシン処理部13を制御してもよい。また、サーバ制御装置100は、リバースプロキシサーバと同一のハードウェアに、連携する異なるサーバアプリケーションとして実装されてもよい。このようにすると、サーバ制御装置100は、ハードウェアやソフトウェアの負荷を分散して実装できる。
【0188】
(5)サーバ制御プログラム
図22は、サーバ制御プログラムを実行するコンピュータの一例を示す図である。
図22に示すように、コンピュータ300は、各種演算処理を実行するCPU301、ユーザからデータの入力を受け付ける入力装置302、モニタ303を有する。また、コンピュータ300は、記憶媒体からプログラム等を読み取る媒体読み取り装置304、他の装置と接続するためのインターフェース装置305、他の装置と無線により接続するための無線通信装置306を有する。また、コンピュータ300は、各種情報を一時記憶するRAM(Random Access Memory)307と、ハードディスク装置308とを有する。また、各装置301〜308は、バス309に接続される。
【0189】
ハードディスク装置308には、
図3A〜
図3Cに示した各機能ブロックと同様の機能を有するサーバ制御プログラムが記憶される。また、ハードディスク装置308は、コンピュータ300がサーバ制御プログラムを実行するための各種データを記憶する。
【0190】
CPU301は、ハードディスク装置308に記憶されたサーバ制御プログラムを読み出して、RAM307に展開して実行することで、各種の処理を行う。また、サーバ制御プログラムは、コンピュータ300を、
図3A〜
図3Cに示した各機能ブロックとして機能させることができる。
【0191】
なお、サーバ制御プログラムは、必ずしもハードディスク装置308に記憶されている必要はない。例えば、コンピュータ300が読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ300が読み出して実行するようにしてもよい。コンピュータ300が読み取り可能な記録媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)等に接続された装置にこのプログラムを記憶させておき、コンピュータ300がこれらからプログラムを読み出して実行するようにしてもよい。
【0192】
(各機能ブロックのハードウェア)
なお、上述の実施の形態で説明した各処理を実行する各機能ブロックは、ASIC、CPU、MPU、FPGAなどの集積回路で実現できる。各部における各処理は、CPUなどの集積回路、内部記憶装置、外部記憶装置の協働により実行される。また、上述の実施の形態で説明した各情報を記憶、格納、蓄積する各部は、一例として、RAM、フラッシュメモリ、外部記憶装置等で実現できる。
【0193】
なお、ASICは“Application Specific Integrated Circuit”、CPUは“Central Processing Unit”、MPUは“Micro Processing Unit”、FPGAは“Field Programmable Gate Array”の略である。内部記憶装置は、RAM(Random Access Memory)などの半導体メモリ装置である。外部記憶装置は、フラッシュメモリ(flash memory)、磁気ディスク、光ディスク、光磁気ディスクなどを記憶媒体とする記憶装置である。