(57)【特許請求の範囲】
【請求項１】
クライアント装置と、該クライアント装置に対してサービスを提供する複数のサーバ装置とを有する通信制御システムであって、
前記複数のサーバ装置のそれぞれは、
前記サーバ装置に作成された仮想マシンのリソース状況を前記クライアント装置に通知する通知部と、
前記クライアント装置からの要求に応じて、前記クライアント装置用の仮想マシンを作成する作成部とを有し、
前記クライアント装置は、
前記仮想マシンのリソース状況を用いて、前記複数のサーバ装置の中から、使用されているリソースの最も少ないサーバ装置を選択する選択部と、
前記選択部により選択されたサーバ装置に対して、前記クライアント装置用の仮想マシンの作成を要求する要求部と
を有することを特徴とする通信制御システム。
【請求項２】
前記サーバ装置は、
前記サーバ装置以外の他のサーバ装置に作成された仮想マシンの起動数を前記他のサーバ装置毎に取得し、前記起動数を用いて、各サーバ装置における仮想マシンの起動数の平均値を算出する算出部と、
前記サーバ装置における仮想マシンの起動数が、前記算出部により算出された平均値を超える場合、前記他のサーバ装置の中から、前記仮想マシンの起動数の最も少ないサーバ装置を検索する検索部と、
前記サーバ装置において起動されている仮想マシンを、前記サーバ装置から、前記検索部により検索された前記他のサーバ装置に、移動する移動部と
を更に有することを特徴とする請求項１に記載の通信制御システム。
【請求項３】
前記クライアント装置の要求部は、前記サーバ装置により作成された仮想マシンの識別子を用いて、前記複数のサーバ装置に対して、前記クライアント装置用の仮想マシンの位置の検索を要求することを特徴とする請求項１に記載の通信制御システム。
【請求項４】
複数のサーバ装置からサービスの提供を受けるクライアント装置であって、
前記複数のサーバ装置のそれぞれに作成された仮想マシンのリソース状況を前記複数のサーバ装置から通知されると、前記仮想マシンのリソース状況を用いて、前記複数のサーバ装置の中から、使用されているリソースの最も少ないサーバ装置を選択する選択部と、
前記選択部により選択されたサーバ装置に対して、前記クライアント装置用の仮想マシンの作成を要求する要求部と
を有することを特徴とするクライアント装置。
【請求項５】
クライアント装置に対してサービスを提供するサーバ装置であって、
前記サーバ装置に作成された仮想マシンのリソース状況を前記クライアント装置に通知する通知部と、
前記クライアント装置からの仮想マシン作成要求に応じて、前記クライアント装置用の仮想マシンを作成する作成部と、
前記サーバ装置以外の他のサーバ装置に作成された仮想マシンの起動数を前記他のサーバ装置毎に取得し、前記起動数を用いて、各サーバ装置における仮想マシンの起動数の平均値を算出する算出部と、
前記サーバ装置における仮想マシンの起動数が、前記算出部により算出された平均値を超える場合、複数のサーバ装置の中から、前記仮想マシンの起動数の最も少ないサーバ装置を検索する検索部と、
前記サーバ装置において起動されている仮想マシンを、前記サーバ装置から、前記検索部により検索された前記他のサーバ装置に、移動する移動部と
を有することを特徴とするサーバ装置。
【請求項６】
クライアント装置と、該クライアント装置に対してサービスを提供する複数のサーバ装置とを有する通信制御システムで実行される通信制御方法であって、
前記複数のサーバ装置のそれぞれが、前記サーバ装置に作成された仮想マシンのリソース状況を前記クライアント装置に通知する通知工程と、
前記クライアント装置が、前記仮想マシンのリソース状況を用いて、前記複数のサーバ装置の中から、使用されているリソースの最も少ないサーバ装置を選択する選択工程と、
前記クライアント装置が、前記選択工程にて選択されたサーバ装置に対して、前記クライアント装置用の仮想マシンの作成を要求する要求工程と、
前記サーバ装置が、前記クライアント装置からの要求に応じて、前記クライアント装置用の仮想マシンを作成する作成工程と
を含むことを特徴とする通信制御方法。
【請求項７】
複数のサーバ装置からサービスの提供を受けるクライアント装置で実行される通信制御プログラムであって、
前記複数のサーバ装置のそれぞれに作成された仮想マシンのリソース状況を前記複数のサーバ装置から通知されると、前記仮想マシンのリソース状況を用いて、前記複数のサーバ装置の中から、使用されているリソースの最も少ないサーバ装置を選択する選択ステップと、
前記選択ステップにて選択されたサーバ装置に対して、前記クライアント装置用の仮想マシンの作成を要求する要求ステップと
をコンピュータに実行させるための通信制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御システム、クライアント装置、サーバ装置、通信制御方法、及び通信制御プログラムに関する。
【背景技術】
【０００２】
従来、インターネットを始めとするネットワーク上のリソースを用いて、各種サービスをユーザに提供するコンピュータ利用形態として、クラウドコンピューティングが普及しつつある。ネットワークに接続されたクライアントは、ネットワーク上のサーバ内に作成された複数の仮想マシン（ＶＭ：Virtual  Machine）を利用して、クラウドコンピューティングを実現する。上記ネットワークにおいて、クラウド用の仮想マシンは、サーバ管理者または管理用のソフトウェアによって集中的に管理される。例えば、オープンソースを用いたOpenstack方式では、仮想マシンの管理は、仮想マシン管理機能を有するソフトウェアが、一元的に行っている。また、ネットワークコントローラと呼ばれる機能が、仮想スイッチや仮想ルータ等の仮想ネットワークを提供し、ＩＰ（Internet  Protocol）アドレスやＶＬＡＮ−ＩＤ（Virtual  Local  Area  Network−IDentification）を集中的に管理している。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“DOCOMO  Euro  Research  Atelier”、［online］、［平成２４年１月４日検索］、インターネット＜URL：http://www.facebook.com/photo.php?fbid=180895138670951&set=a.161315133962285.36546.150800645013734&type=1&theater＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来の方式では、サーバ管理者が、作成済みの仮想マシンを仮想スイッチに登録させる処理を、手動で行う必要がある。また、何れの仮想スイッチに何れの仮想マシンを接続するかの設計についても、管理者が行わなければならない。更に、サーバでの仮想マシンの利用状況の変化等により、使用中のリソースに偏りが発生した場合には、管理者は、リソースが平滑化されるように、仮想マシンの移動や仮想ネットワークの再設定を行う必要がある。また、クライアントが仮想マシンや仮想ネットワークを利用する際、管理者は、ＣＰＵ（Central  Processing  Unit）、メモリ、ＨＤＤ（Hard  Disk  Drive）等のリソースを事前に確保しておかなければならない。これにより、管理者に掛かる負担が増大する。併せて、従来の方式では、管理用のサーバがリソース管理を集中的に行うため、特に、ネットワークに収容する仮想マシンの数が増加した場合、サーバの負荷が増大する。
【０００５】
開示の実施例は、上記に鑑みてなされたものであって、サーバ管理者の負担を軽減すると共に、サーバの負荷を低減することができる通信制御システム、クライアント装置、サーバ装置、通信制御方法、及び通信制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本願の開示する通信制御システムは、一つの態様において、クライアント装置と、該クライアント装置に対してサービスを提供する複数のサーバ装置とを有する通信制御システムである。前記複数のサーバ装置のそれぞれは、通知部と作成部とを有する。前記通知部は、前記サーバ装置に作成された仮想マシンのリソース状況を前記クライアント装置に通知する。前記作成部は、前記クライアント装置からの要求に応じて、前記クライアント装置用の仮想マシンを作成する。前記クライアント装置は、選択部と要求部とを有する。前記選択部は、前記仮想マシンのリソース状況を用いて、前記複数のサーバ装置の中から、使用されているリソースの最も少ないサーバ装置を選択する。前記要求部は、前記選択部により選択されたサーバ装置に対して、前記クライアント装置用の仮想マシンの作成を要求する。
【０００７】
また、本願の開示するクライアント装置は、一つの態様において、複数のサーバ装置からサービスの提供を受けるクライアント装置である。前記クライアント装置は、選択部と要求部とを有する。前記選択部は、前記複数のサーバ装置のそれぞれに作成された仮想マシンのリソース状況を前記複数のサーバ装置から通知されると、前記仮想マシンのリソース状況を用いて、前記複数のサーバ装置の中から、使用されているリソースの最も少ないサーバ装置を選択する。前記要求部は、前記選択部により選択されたサーバ装置に対して、前記クライアント装置用の仮想マシンの作成を要求する。
【０００８】
更に、本願の開示するサーバ装置は、一つの態様において、クライアント装置に対してサービスを提供するサーバ装置である。前記サーバ装置は、通知部と作成部と算出部と検索部と移動部とを有する。前記通知部は、前記サーバ装置に作成された仮想マシンのリソース状況を前記クライアント装置に通知する。前記作成部は、前記クライアント装置からの仮想マシン作成要求に応じて、前記クライアント装置用の仮想マシンを作成する。前記算出部は、前記サーバ装置以外の他のサーバ装置に作成された仮想マシンの起動数を前記他のサーバ装置毎に取得し、前記起動数を用いて、各サーバ装置における仮想マシンの起動数の平均値を算出する。前記検索部は、前記サーバ装置における仮想マシンの起動数が、前記算出部により算出された平均値を超える場合、複数のサーバ装置の中から、前記仮想マシンの起動数の最も少ないサーバ装置を検索する。前記移動部は、前記サーバ装置において起動されている仮想マシンを、前記サーバ装置から、前記検索部により検索された前記他のサーバ装置に、移動する。
【０００９】
また、本願の開示する通信制御方法は、一つの態様において、クライアント装置と、該クライアント装置に対してサービスを提供する複数のサーバ装置とを有する通信制御システムで実行される通信制御方法である。前記通信制御方法は、通知工程と選択工程と要求工程と作成工程とを含む。前記通知工程では、前記複数のサーバ装置のそれぞれが、前記サーバ装置に作成された仮想マシンのリソース状況を前記クライアント装置に通知する。前記選択工程では、前記クライアント装置が、前記仮想マシンのリソース状況を用いて、前記複数のサーバ装置の中から、使用されているリソースの最も少ないサーバ装置を選択する。前記要求工程では、前記クライアント装置が、前記選択工程にて選択されたサーバ装置に対して、前記クライアント装置用の仮想マシンの作成を要求する。前記作成工程では、前記サーバ装置が、前記クライアント装置からの要求に応じて、前記クライアント装置用の仮想マシンを作成する。
【００１０】
更に、本願の開示する通信制御プログラムは、一つの態様において、コンピュータを上記クライアント装置として機能させる。すなわち、前記通信制御プログラムは、複数のサーバ装置からサービスの提供を受けるクライアント装置で実行される通信制御プログラムである。前記通信制御プログラムは、選択ステップと要求ステップとをコンピュータに実行させる。前記選択ステップでは、前記コンピュータは、前記複数のサーバ装置のそれぞれに作成された仮想マシンのリソース状況を前記複数のサーバ装置から通知されると、前記仮想マシンのリソース状況を用いて、前記複数のサーバ装置の中から、使用されているリソースの最も少ないサーバ装置を選択する。前記要求ステップでは、前記コンピュータは、前記選択ステップにて選択されたサーバ装置に対して、前記クライアント装置用の仮想マシンの作成を要求する。
【発明の効果】
【００１１】
本願の開示する通信制御システム、クライアント装置、サーバ装置、通信制御方法、及び通信制御プログラムは、サーバ管理者の負担を軽減すると共に、サーバの負荷を低減することができるという効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、通信制御システムの概略構成を示す図である。
【図２】図２は、クライアントの機能構成を示すブロック図である。
【図３】図３は、サーバの機能構成を示すブロック図である。
【図４】図４は、通信制御システムの実行する仮想マシン作成処理を説明するためのフローチャートである。
【図５】図５は、リソース再配置処理の概要を説明するための図である。
【図６】図６は、通信制御システムの実行するリソース再配置処理を説明するためのフローチャートである。
【図７】図７は、通信制御プログラムによる情報処理がコンピュータを用いて具体的に実現されることを示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示する通信制御システム、クライアント装置、サーバ装置、通信制御方法、及び通信制御プログラムの実施例を、図面を参照しながら詳細に説明する。なお、以下の実施例により本願の開示する通信制御システム、クライアント装置、サーバ装置、通信制御方法、及び通信制御プログラムが限定されるものではない。
【００１４】
まず、本願の開示する一実施例に係る通信制御システムの構成を説明する。図１は、通信制御システム１の概略構成を示す図である。図１に示すように、通信制御システム１は、後述するクライアント１０と、サーバ２０、３０、４０、５０、６０とを有する。クライアント１０とサーバ２０、３０、４０、５０、６０とは、ルータＲ１またはルータＲ２を介して、各種信号やデータの送受信が可能である。
【００１５】
また、サーバ２０、３０、４０、５０、６０は、ルータＲ１またはルータＲ２を介して、相互に各種信号やデータの送受信が可能である。サーバ２０は、一つまたは複数の仮想マシン２０ａ−１、２、・・・、ｎ（ｎは自然数）を内部に作成し、仮想スイッチ２０ｂにより、各仮想マシンの起動、停止等の切替え制御を行う。また、エージェント２０ｃは、サーバ２０の通信機能を実現し、例えば、クライアント１０を送信元とするリソース確認要求をルータＲ１から受信すると、該要求に対する応答として、リソース確認応答を返信する。各サーバ２０、３０、４０、５０、６０間では、エージェントを介して、起動中の仮想マシンの数やリソース使用状況（例えば、ＣＰＵ使用率、メモリ使用量）を随時交換している。
【００１６】
なお、他のサーバ３０、４０、５０、６０の概略構成は、上述したサーバ２０の構成と同様である。したがって、共通する構成要素には、末尾が同一の参照符号を用いると共に、その詳細な説明は省略する。
【００１７】
図２は、クライアント１０の機能構成を示すブロック図である。図２に示すように、クライアント１０は、リソース確認要求部１１とサーバ選択部１２と仮想マシン作成要求部１３とを有する。これら各構成部分は、一方向又は双方向に、信号やデータの入出力が可能なように接続されている。リソース確認要求部１１は、仮想マシンのリソース確認要求を、クラウドネットワークＣに向けてブロードキャストする。サーバ選択部１２は、仮想マシンのリソース状況を用いて、複数のサーバ２０、３０、４０、５０、６０の中から、使用されているリソースの最も少ないサーバを選択する。仮想マシン作成要求部１３は、選択されたサーバに対して、クライアント１０用の仮想マシンの作成を要求する。
【００１８】
図３は、サーバ２０の機能構成を示すブロック図である。図３に示すように、サーバ２０は、リソース状況通知部２１と仮想マシン作成部２２と起動数平均値算出部２３とサーバ検索部２４と仮想マシン移動制御部２５とを有する。これら各構成部分は、一方向又は双方向に、信号やデータの入出力が可能なように接続されている。リソース状況通知部２１は、各サーバ２０、３０、４０、５０、６０に作成された仮想マシンのリソース状況をクライアント１０に通知する。仮想マシン作成部２２は、クライアント１０からの要求に応じて、クライアント１０の用いる仮想マシンを作成する。起動数平均値算出部２３は、他のサーバ３０、４０、５０、６０に作成された仮想マシンの起動数をサーバ毎に取得し、該起動数を用いて、各サーバ２０、３０、４０、５０、６０における仮想マシンの起動数の平均値を算出する。サーバ検索部２４は、自サーバ２０における仮想マシンの起動数が、算出された平均値を超える場合、複数のサーバ３０、４０、５０、６０の中から、仮想マシンの起動数の最も少ないサーバを検索する。仮想マシン移動制御部２５は、自サーバ２０において起動されている仮想マシンを、自サーバ２０から、検索されたサーバに、移動する。
【００１９】
以上、サーバ２０の機能構成を説明したが、他のサーバ３０、４０、５０、６０の機能構成は、上述したサーバ２０の構成と同様である。したがって、共通する構成要素には、末尾が同一の参照符号を用いると共に、その詳細な説明は省略する。
【００２０】
次に、通信制御システム１の動作を説明する。
【００２１】
図４は、通信制御システム１の実行する仮想マシン作成処理を説明するためのフローチャートである。Ｓ１では、クライアント１０のリソース確認要求部１１は、クラウドネットワークＣに対して、クライアント１０用の仮想マシンの作成を希望する旨を伝えるため、リソース確認要求メッセージをブロードキャスト送信する。リソース確認要求メッセージには、クライアント１０が作成を所望する仮想マシンのスペックを示す情報が含まれる。スペックを示す情報は、例えば、ＣＰＵ性能（クロック周波数、コア数、バス速度等）、メモリ容量、ＨＤＤ容量である。なお、リソース確認要求メッセージの送信は、クラウドネットワークＣ内に存在するサーバ２０、３０、４０、５０、６０の内、特定のサーバを宛先とする配信（マルチキャスト）であってもよい。
【００２２】
Ｓ２では、各サーバ２０、３０、４０、５０、６０のリソース状況通知部は、エージェントにより、クライアント１０から上記メッセージを受信すると、自サーバ装置内に仮想マシンを作成可能なサーバは、リソース確認応答メッセージを返信する。リソース確認応答メッセージには、自サーバの現在のリソース状況と、リソース確認要求メッセージにより要求されたスペックの仮想マシンの作成可否とを示す情報が含まれる。また、リソース状況を示す情報は、例えば、自サーバ内に作成または起動されている仮想サーバの数、ＣＰＵ使用率、使用可能なメモリ容量、ＨＤＤ容量である。なお、サーバ内に複数の仮想マシンが存在する場合、ＣＰＵ使用率、使用可能なメモリ容量、ＨＤＤ容量は、各仮想マシン毎の個別の値であってもよいし、サーバ内の全ての仮想マシンについての合計値であってもよい。
【００２３】
Ｓ３では、クライアント１０のサーバ選択部１２は、Ｓ２で返信された複数のリソース確認応答メッセージの受信に伴い、リソース状況を基に、メッセージ送信元のサーバの中から、仮想マシンを作成するのに最適なサーバを選択する。すなわち、サーバ選択部１２は、各サーバ２０、３０、４０、５０、６０に作成された仮想マシンのリソース状況を用いて、複数のサーバ２０、３０、４０、５０、６０の中から、使用されているリソースの最も少ないサーバを選択する。このとき選択されるサーバの条件として、クライアント１０は、上記のリソース状況以外に、ホップ数や遅延時間の条件を付加することもできる。例えば、クライアント１０は、クライアント１０からのホップ数が所定値（例えば、３〜５）以下であるサーバ、あるいは、クライアント１０との通信の遅延時間が所定の閾値（例えば、１０〜１００ｍｓ）以下であるサーバを、選択するものとしてもよい。これにより、よりユーザの現在位置に近いサーバに仮想マシンが作成されることとなる。
【００２４】
以下、本実施例では、サーバ２０、３０、４０、５０、６０の内、最適なサーバとして、サーバ２０が選択されたものとする。
【００２５】
Ｓ４では、クライアント１０の仮想マシン作成要求部１３は、Ｓ３で選択されたサーバ２０のエージェント２０ｃに対して、ＶＭ作成要求メッセージを送信する。このＶＭ作成要求メッセージには、暗号化処理が施され、仮想マシンの作成に使用されるＩＤ、パスワードが含まれている。サーバ２０の仮想マシン作成部２２は、ＶＭ作成要求メッセージを受信すると、上記ＩＤ、パスワードを用いて、クライアント１０用に仮想マシンを作成する（Ｓ５）。なお、ＶＭ作成要求を受けたサーバ２０は、仮想マシンの作成に先立ち、要求元であるクライアント１０に対して、ステータス（ＶＭ作成開始またはＶＭ作成不能）を報告するものとしてもよい。
【００２６】
サーバ２０は、仮想マシンの作成を完了すると、クライアント１０にその旨を知らせるため、ＶＭ作成完了メッセージを送信する（Ｓ６）。ＶＭ作成完了メッセージには、クラウドネットワークＣ内において仮想マシンを識別するためのＶＭ識別子が含まれる。すなわちＳ６では、サーバ２０は、仮想スイッチ２０ｂを管理するコントローラに対し、仮想ネットワークへの接続設定を行うと共に、ネットワーク内で一意となるＶＭ識別子に、アクセス先のＩＰアドレス等を付して、仮想マシンの作成完了及びその位置をクライアント１０へ報告する。
【００２７】
仮想マシンの作成完了後は、クライアント１０は、各種メッセージにより、仮想マシンの挙動を制御する。例えば、クライアント１０は、クラウドネットワークＣに向けてＶＭ検索要求メッセージを送信し、当該メッセージに対するエージェントからの応答を待機する。これにより、クライアント１０は、応答のあったサーバを特定することができるため、現在、自装置の仮想マシンが何れのサーバに存在するかを簡易迅速に検知することができる。また、クライアント１０は、検索されたサーバに対して、ＶＭ識別子を含むＶＭ起動要求メッセージを起動命令としてユニキャスト送信することで、クラウドネットワークＣ上に存在する、自装置用の仮想マシンを起動させる。同様に、クライアント１０は、起動されたサーバに対して、ＶＭ識別子を含むＶＭ停止要求メッセージを停止命令としてユニキャスト送信することで、自装置用の仮想マシンを停止させる。
【００２８】
続いて、図５、図６を参照しながら、通信制御システム１がサーバ間の負荷を平滑化するために実行されるリソース再配置処理について説明する。
【００２９】
図５は、リソース再配置処理の概要を説明するための図である。図５に示すように、サーバ２０、３０、４０には、それぞれ４つの仮想マシンが作成されている。図５において、斜線のハッチングの施された仮想マシン（ＶＭ）は起動中であることを示し、ハッチングの施されていない仮想マシン（ＶＭ）は停止中であることを示す。各サーバ２０、３０、４０に作成された４つの仮想マシンの内、サーバ２０では、全ての仮想マシン２０ａ−１、２、３、４が起動されている。また、サーバ３０、４０では、４台中３台の仮想マシンが起動されており、１台は停止している。サーバ５０、６０は、それぞれ３つの仮想マシンを内部に有し、サーバ５０では、全ての仮想マシン５０ａ−１、２、３が起動しているが、サーバ６０では、２台の仮想マシン６０ａ−１、２が起動している。また、破線で示す矢印Ｙ１は、起動中の仮想マシンが、サーバ２０（仮想マシン２０ａ−４）からサーバ６０（仮想マシン６０ａ−３）に移動したことを示す。これにより、クラウドネットワークＣ内におけるリソースの再配置が実現される。その結果、リソースは平滑化される。
【００３０】
具体的には、各サーバ２０、３０、４０、５０、６０のエージェントは、他のエージェントと情報交換をしており、クラウドネットワークＣ内の各サーバの平均ＶＭ起動数が  “３”であることを事前に把握している。サーバ２０は、自装置のＶＭ起動数が“４”に達し、平均ＶＭ起動数である“３”を超えたことから、リソースに余裕が無くなったものと判断し、仮想マシン２０ａ−４の移動先を検索する。検索の結果、サーバ２０は、他のサーバの内、サーバ６０のＶＭ起動数が、平均値を下回る“２”であることを検知する。したがって、サーバ２０は、サーバ６０に仮想マシンを１台移動させる。
【００３１】
図６は、通信制御システム１の実行するリソース再配置処理を説明するためのフローチャートである。Ｓ１１では、各サーバ２０、３０、４０、５０、６０は、他のサーバから、自サーバ以外の仮想マシンの起動数を収集する。各サーバの起動数平均値算出部２３、３３、４３、５３、６３は、Ｓ１１で収集された仮想マシンの起動数を基に、クラウドネットワークＣ内の全てのサーバの平均起動数を算出する（Ｓ１２）。なお、このとき算出される起動数は、必ずしも全てのサーバについての平均値である必要はなく、例えば、仮想マシンの移動元のサーバ（図５のサーバ２０）を除いたサーバについての平均値であってもよい。
【００３２】
Ｓ１３では、各サーバの起動数平均値算出部２３、３３、４３、５３、６３は、自サーバにおいて現在起動されている仮想マシンの数が、Ｓ１２で算出された平均起動数を超過しているか否かを判定する。当該判定の結果、起動中の仮想マシンの数が各サーバの平均起動数以下である場合（Ｓ１３；Ｎｏ）には、通信制御システム１は、リソース再配置処理を終了するが、仮想マシンの起動数が平均起動数を上回る場合（Ｓ１３；Ｙｅｓ）には、Ｓ１４の処理に移行する。
【００３３】
本実施例では、図５に示したように、サーバ２０における仮想マシンの起動数である“４”がネットワーク全体の平均起動数である“３”を上回っている。したがって、Ｓ１４では、サーバ２０のサーバ検索部２４は、クラウドネットワークＣ内に存在する、自装置以外の全てのサーバ３０、４０、５０、６０の中から、仮想マシンの起動数が最も少ないサーバを検索する。本実施例では、図５に示したように、起動中の仮想マシンが２台であるサーバ６０が仮想マシン起動数の最小値をとることから、移動先のサーバとして、サーバ６０が検索される。
【００３４】
Ｓ１５では、サーバ２０の仮想マシン移動制御部２５は、仮想マシン２０ａ−４を、サーバ２０から、Ｓ１４で検索されたサーバ６０に移動させる。具体的には、仮想マシン移動制御部２５は、移動対象の仮想マシン２０ａ−４のＶＭ識別子を含むＶＭ移動開始メッセージをサーバ６０宛に送信することで、移動先となるサーバ６０のエージェント６０ｃに上記ＶＭ識別子を登録する。移動した仮想マシンは、サーバ６０において、仮想マシン６０ａ−３として機能する。仮想マシン２０ａ−４の移動完了後、サーバ６０は、サーバ２０に対して、移動が完了したことを通知するメッセージ（ＶＭ移動完了メッセージ）を送信する。サーバ２０は、当該メッセージの受信により、仮想マシン２０ａ−４が正常にサーバ６０に移動したことを検知する。サーバ２０は、ＶＭ移動完了メッセージの受信を契機として、仮想マシン２０ａ−４に関する情報をエージェント２０ｃから消去する。
【００３５】
なお、サーバ２０は、仮想マシンの移動完了の検知後、ＶＭ識別子と併せて、サーバ６０のＩＤをクライアント１０宛に送信することで、仮想マシンの移動先をクライアント１０に通知する。クライアント１０は、この通知を受けると、以降、仮想マシンを使用するためのサーバとして、ＩＤを通知されたサーバへのアクセスを開始する。これにより、クライアント１０用の仮想マシンがクラウドネットワークＣ内で移動しても、クライアント１０は、自装置用の仮想マシンを自ら探索することなく、容易かつ確実に仮想マシンの使用を継続することができる。その結果、通信制御システム１の利便性が向上する。
【００３６】
上述したように、通信制御システム１は、上述した一連のリソース再配置処理を実行することで、起動している仮想マシンの偏在を緩和する。これにより、通信制御システム１は、クラウドネットワークＣ内に存在する全ての仮想マシンに対して、より高い処理性能を発揮可能なリソースの提供が可能となる。すなわち、サーバ２０、３０、４０、５０、６０内に存在する各エージェントは、リソース状況として、サーバ内に何台の仮想マシンを現在保持しているか、その内アクティブな仮想マシンは何台あるか、ＣＰＵ使用率、メモリ残量等の情報を相互に交換している。各サーバ２０、３０、４０、５０、６０は、自装置のリソース状況が悪化した場合、他のサーバへ仮想マシンを移動させる要求を送出する。そして、リソースに余裕のある他のサーバが、仮想マシンを引き取ることで、ネットワーク全体でのリソースの均一化を図る。仮想マシンを移動させた場合の仮想ネットワークへの接続及び登録は、移動先のサーバのエージェントが自動的に行う。
【００３７】
仮想マシンの管理に関し、仮想マシンは、各サーバのリソース状況の変化に伴い、サーバ間を移動する。このため、クライアント１０が、自装置用に作成された仮想マシンにアクセスする際、当該仮想マシンが、最初に作成されたサーバから移動していることがある。この場合、クライアント１０は、上記仮想マシンを検索するため、仮想マシンの作成時に受領したＶＭ識別子を含むＶＭ検索要求メッセージを、クラウドネットワークＣに送信する。当該ＶＭ識別子の割り当てられた仮想マシンを保持するサーバが、当該メッセージに応答することで、クライアント１０は、自装置用の仮想マシンの位置やアクセス先のＩＰアドレス等を容易に検知することができる。
【００３８】
また、クライアントと仮想マシン間の遅延に基づくマイグレーションに関し、クライアント１０は、以下の処理を実行することもできる。すなわち、クライアント１０は、仮想マシンに接続した際、ホップ数や遅延時間が所定値よりも大きいと判断すると、クラウドネットワークＣに対して、自装置用の仮想マシンを自装置近隣のサーバに移動することができないかの問合せメッセージを発信する。近隣のサーバのエージェントが、当該問合せメッセージを受けると、自サーバのリソースに余裕がある場合、クライアント１０を受入れ可能であることを示すメッセージをクライアント１０に返信する。クライアント１０は、当該メッセージの受信に伴い、現在自装置の仮想マシンを収容しているサーバに対し、受入れ可能となった近隣のサーバへ仮想マシンを移動させるための移動指示メッセージを送信する。当該メッセージを受信したサーバは、クライアント１０用の仮想マシンを、近隣のサーバに移動させる。
【００３９】
以上説明したように、通信制御システム１は、クライアント１０と、クライアント１０に対してサービスを提供する複数のサーバ２０、３０、４０、５０、６０とを有する。複数のサーバ２０、３０、４０、５０、６０は、各サーバに作成された仮想マシンのリソース状況をクライアント１０に通知するリソース状況通知部２１を有する。クライアント１０は、サーバ選択部１２と仮想マシン作成要求部１３とを有する。サーバ選択部１２は、上記仮想マシンのリソース状況を用いて、複数のサーバ２０、３０、４０、５０、６０の中から、使用されているリソースの最も少ないサーバ２０を選択する。仮想マシン作成要求部１３は、サーバ選択部１２により選択されたサーバに対して、クライアント１０の用いる仮想マシンの作成を要求する。サーバ２０は、クライアント１０からの要求に応じて、クライアント１０用の仮想マシンを作成する仮想マシン作成部２２を有する。
【００４０】
また、サーバ２０は、起動数平均値算出部２３とサーバ検索部２４と仮想マシン移動制御部２５とを更に有するものとしてもよい。起動数平均値算出部２３は、サーバ２０以外の他のサーバ３０、４０、５０、６０に作成された仮想マシンの起動数をサーバ毎に取得し、上記起動数を用いて、上記各サーバにおける仮想マシンの起動数の平均値を算出する。サーバ検索部２４は、自サーバ２０における仮想マシンの起動数が、起動数平均値算出部２３により算出された平均値を超える場合、他のサーバ３０、４０、５０、６０の中から、上記仮想マシンの起動数の最も少ないサーバを検索する。仮想マシン移動制御部２５は、自サーバ２０において起動されている仮想マシンを、自サーバ２０から、サーバ検索部２４により検索されたサーバに、移動する。
【００４１】
更に、クライアント１０の仮想マシン作成要求部１３は、サーバ２０により作成された仮想マシンの識別子を用いて、複数のサーバ２０、３０、４０、５０、６０に対して、クライアント１０用の仮想マシンの位置の検索を要求するものとしてもよい。
【００４２】
これにより、通信制御システム１は、ユーザが、クラウドネットワークＣに対して仮想マシンの作成要求を行うだけで、クラウドネットワークＣが仮想マシンや仮想ネットワークのコンフィグ迄を完了する自律的なシステムの提供を可能とする。その際、サーバ２０、３０、４０、５０、６０間においてリソースが自動的に平滑化されるため、公平なサービスの提供が可能となる。また、仮想マシンは、クライアント１０に比較的近い位置に作成されるため、ユーザは、ネットワークに対する快適なアクセス環境を享受することができる。その結果、クラウド用仮想マシン、及び仮想ネットワーク（仮想スイッチ、仮想ルータ）を自律的に管理する分散型クラウドネットワーク管理システムが実現される。
【００４３】
通信制御システム１の適用例として、通常は、クライアントの仮想マシンが国内のデータセンタ内に存在し、当該クライアントのユーザが海外出張等で遠方に移動した場合に、特に好適である。通信制御システム１は、遅延時間やホップ数を基に、仮想マシンをユーザの近くに移動できないかを自発的に判断し、リソースが空いている場合には、仮想マシンをユーザ付近のサーバに移動させる。これにより、複数の国に跨がったネットワークサービスの提供は元より、仮想マシンに低遅延でアクセス可能なサービスの提供が可能となる。例えば、ユーザが海外出張する際、自国のサーバではなく、出張先の国のサーバへ自分の仮想マシンが移動するので、遅延の少ない環境での仮想マシンの使用が可能となる。また、仮想マシンは、仮想スイッチにより制御されるため、通信制御システム１は、仮想マシンの移動制御に際し、ユーザ側の設定変更を意識する必要がない。
【００４４】
上述したように、通信制御システム１によれば、仮想マシンや仮想ネットワークを提供するサーバ内に実装されたソフトウェアとしてのエージェントが、エージェントがインストールされたサーバ間で、相互にリソース情報の交換を行う。これにより、通信制御システム１は、ネットワーク内の全体のリソースを勘案した上で、ネットワーク内で次に仮想マシンを追加するのに最適な場所を特定し、仮想マシンの作成及び仮想ネットワークの構築を自動的に行う。したがって、従来行われていた、人手を介した仮想マシン、仮想ネットワークの設備設計や設備管理が不要となる。また、エージェントが、仮想マシン及び仮想スイッチが搭載されているサーバのリソース状況を判断し、リソースが空いているサーバへ仮想マシンを移動させることで、ネットワーク負荷の分散を図ることが可能となる。
【００４５】
特に、通信制御システム１は、ネットワーク内にリソースを追加する場合、エージェントを有するサーバをネットワーク内に追加するだけで、以降、エージェントが、サーバに内蔵されたＣＰＵ、メモリ、ＨＤＤをリソースとして自動的に追加する。その際、通信制御システム１は、必要に応じて、仮想マシンや仮想ネットワークを移動させるため、新たなサーバリソースの追加が容易となる。従来の方式では、リソースは、一元的に管理されているため、管理対象の仮想マシンの台数や仮想ネットワークの台数が多くなると、特定のサーバに負荷が集中することとなる。本実施例に係る通信制御システム１では、リソースの管理が各サーバのエージェントに分散されるため、特定のサーバへの集中は回避される。更に、新規に作成される仮想マシンは、サーバとクライアント間のホップ数や遅延時間を考慮して、クライアントの近くに作成される。このため、ユーザは、クライアントを介して、通信速度の高い快適なアクセス環境を享受することができる。
【００４６】
［通信制御プログラム］
図７は、通信制御プログラムによる情報処理がコンピュータ１００を用いて具体的に実現されることを示す図である。図７に例示するように、コンピュータ１００は、例えば、メモリ１０１と、ＣＰＵ１０２と、ハードディスクドライブインタフェース１０３と、ディスクドライブインタフェース１０４と、シリアルポートインタフェース１０５と、ビデオアダプタ１０６と、ネットワークインタフェース１０７とを有し、これらの各部はバスＢによって接続される。
【００４７】
メモリ１０１は、図７に例示するように、ＲＯＭ（Read  Only  Memory）１０１ａ及びＲＡＭ（Random  Access  Memory）１０１ｂを含む。ＲＯＭ１０１ａは、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３は、図７に例示するように、ハードディスクドライブ１０８に接続される。ディスクドライブインタフェース１０４は、図７に例示するように、ディスクドライブ１０９に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０９に挿入される。シリアルポートインタフェース１０５は、図７に例示するように、例えばマウス１１０、キーボード１１１に接続される。ビデオアダプタ１０６は、図７に例示するように、例えばディスプレイ１１２に接続される。
【００４８】
ここで、図７に例示するように、ハードディスクドライブ１０８は、例えば、ＯＳ（Operating  System）１０８ａ、アプリケーションプログラム１０８ｂ、プログラムモジュール１０８ｃ、プログラムデータ１０８ｄを記憶する。すなわち、開示の実施例に係る通信制御プログラムは、コンピュータ１００によって実行される指令が記述されたプログラムモジュール１０８ｃとして、例えばハードディスクドライブ１０８に記憶される。具体的には、上記実施例で説明したリソース確認要求部１１、サーバ選択部１２、仮想マシン作成要求部１３、リソース状況通知部２１、仮想マシン作成部２２、起動数平均値算出部２３、サーバ検索部２４、及び仮想マシン移動制御部２５と同様の情報処理を実行する各種手順が記述されたプログラムモジュール１０８ｃが、ハードディスクドライブ１０８に記憶される。また、通信制御プログラムによる情報処理に用いられるデータは、プログラムデータ１０８ｄとして、例えばハードディスクドライブ１０８に記憶される。そして、ＣＰＵ１０２が、ハードディスクドライブ１０８に記憶されたプログラムモジュール１０８ｃやプログラムデータ１０８ｄを必要に応じてＲＡＭ１０１ｂに読み出し、上記各種手順を実行する。
【００４９】
なお、通信制御プログラムに係るプログラムモジュール１０８ｃやプログラムデータ１０８ｄは、ハードディスクドライブ１０８に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１０９等を介してＣＰＵ１０２によって読み出されてもよい。あるいは、通信制御プログラムに係るプログラムモジュール１０８ｃやプログラムデータ１０８ｄは、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７を介してＣＰＵ１０２によって読み出されてもよい。
【００５０】
なお、上記実施例では、仮想マシン作成処理の実行に際してクライアント１０がサーバを選択する基準として、クライアント１０は、使用リソースが最少のサーバを選択する態様を例示した。しかしながら、かかる態様に限らず、クライアント１０は、ＣＰＵ使用率が最も低いサーバ、あるいは、メモリやＨＤＤの空き容量が最も多いサーバを、仮想マシン作成の要求先として選択するものとしてもよい。また、クライアント１０は、ＣＰＵ使用率や空き容量を組み合わせて、使用してもよい。その際、ＣＰＵ使用率の比重を他のパラメータよりも大きくする等の重み付けを行ってもよい。更に、クライアント１０は、サーバ内に作成されている仮想マシンの数や起動中の仮想マシンの数を、上述の各種パラメータと組み合わせて用いてもよい。例えば、クライアント１０は、まず、自サーバ内に存在する起動中の仮想マシンの数が最少の値をとるサーバを選択する。そして、クライアント１０は、当該値が同一である場合に初めて、他のパラメータであるＣＰＵ使用率、空きメモリ容量等を参照するものとしてもよい。
【００５１】
また、上記実施例では、図４のＳ２において、自サーバ装置内に仮想マシンを作成可能なサーバが、リソース確認要求に対するリソース確認応答メッセージをクライアント１０に返信するものとした。しかしながら、リソース確認応答メッセージを返信するサーバは、必ずしも、クラウドネットワークＣ内に設置された全てのサーバ２０、３０、４０、５０、６０である必要はない。すなわち、自サーバ装置内に仮想マシンを作成可能なサーバの内、クライアント１０の要求するスペックを満たす仮想マシンを作成可能なサーバのみが、リソース確認応答メッセージをクライアント１０に返信するものとしてもよい。
【００５２】
例えば、クライアント１０がクラウドネットワークＣに対して、ＣＰＵの周波数として３ＧＨｚ以上、メモリ容量として３ＧＢ以上、及びＨＤＤ容量として１００ＧＢ以上のスペックを要求した場合を想定する。この場合、クラウドネットワークＣ内に存在するサーバ２０、３０、４０、５０、６０の内、これらの条件を満たす仮想マシンをクライアント１０に提供することのできる一つまたは複数のサーバが、リソース状況を応答する。これにより、選択されてもクライアント１０からの要求を満たすことのできないサーバ、換言すれば、仮想マシンを作成するサーバに選択される可能性の低いサーバが、リソース確認応答メッセージを返信する処理が不要となる。その結果、当該メッセージの送信に伴うネットワーク負荷が軽減される。また、クライアント１０が各サーバからのリソース状況の収集を完了するために要する待機時間が短縮される。
【００５３】
更に、上述のリソース再配置処理では、各サーバ２０、３０、４０、５０、６０は、仮想マシンの起動数に基づき、仮想マシンの移動の要否及び移動先を決定するものとした。しかしながら、各サーバ２０、３０、４０、５０、６０は、仮想マシンのリソース使用状況、ひいては、ＣＰＵ使用率、メモリやＨＤＤの使用容量等を参照して、仮想マシンの移動の要否及び移動先を決定するものとしてもよい。また、これらのパラメータ（例えば、各サーバにおける起動数、リソース使用量、ＣＰＵ使用率、メモリやＨＤＤの使用容量）を組み合わせてもよい。各サーバ２０、３０、４０、５０、６０は、パラメータを組み合わせる際、適宜重み付けを行ってもよい。
【００５４】
例えば、サーバ２０が、仮想マシンの移動の要否あるいは移動先を決定するための指標として、ＣＰＵ使用率を用いる場合、サーバ２０は、自装置のＣＰＵ使用率とネットワーク内の各サーバのＣＰＵ使用率の平均値とを監視する。監視の結果、サーバ２０の収容する仮想マシンが使用するＣＰＵの使用率が、ネットワーク全体におけるＣＰＵ使用率を上回る場合には、サーバ２０は、仮想マシンの移動を決定する。サーバ２０は、クラウドネットワークＣ内で最もＣＰＵ使用率の低いサーバを検索し、検索されたサーバを空きリソースに余裕のあるサーバと判断する。サーバ２０は、当該サーバ宛に、ＶＭ移動開始メッセージを送信することで、移動対象の仮想マシンのＶＭ識別子を移動先のサーバに登録する。そして、サーバ２０は、仮想マシンを当該サーバに移動させる。これにより、ＣＰＵ使用率の高かった移動元のサーバ２０における仮想マシンのＣＰＵ使用率は減少し、ＣＰＵ使用率の低かった移動先のサーバにおける仮想マシンのＣＰＵ使用率は増加する。したがって、クラウドネットワークＣ内に存在するサーバ間におけるＣＰＵ使用率のバラつきは、緩和（平滑化）される。その結果、各サーバの負荷が分散される。
【００５５】
また、クライアント１０及びサーバ２０、３０、４０、５０、６０の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は、図示のものに限らず、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することもできる。例えば、リソース確認要求部１１と仮想マシン作成要求部１３、あるいは、サーバ検索部２４と仮想マシン移動制御部２５をそれぞれ１つの構成要素として統合してもよい。反対に、仮想マシン作成要求部１３に関し、クライアント１０用の仮想マシンの作成を要求する部分と、クライアント１０用の仮想マシンの位置検索を要求する部分とに分散してもよい。更に、ハードディスクドライブ１０８を、クライアント１０の外部装置としてネットワークやケーブル経由で接続するようにしてもよい。
【符号の説明】
【００５６】
１  通信制御システム
１０  クライアント
１１  リソース確認要求部
１２  サーバ選択部
１３  仮想マシン作成要求部
２０、３０、４０、５０、６０  サーバ
２０ａ−１、２０ａ−２、２０ａ−３、・・・、２０ａ−ｎ  仮想マシン（ＶＭ）
３０ａ−１、３０ａ−２、３０ａ−３、・・・、３０ａ−ｎ  仮想マシン（ＶＭ）
４０ａ−１、４０ａ−２、４０ａ−３、・・・、４０ａ−ｎ  仮想マシン（ＶＭ）
５０ａ−１、５０ａ−２、５０ａ−３、・・・、５０ａ−ｎ  仮想マシン（ＶＭ）
６０ａ−１、６０ａ−２、６０ａ−３、・・・、６０ａ−ｎ  仮想マシン（ＶＭ）
２０ｂ、３０ｂ、４０ｂ、５０ｂ、６０ｂ  仮想スイッチ
２０ｃ、３０ｃ、４０ｃ、５０ｃ、６０ｃ  エージェント
２１、３１、４１、５１、６１  リソース状況通知部
２２、３２、４２、５２、６２  仮想マシン作成部
２３、３３、４３、５３、６３  起動数平均値算出部
２４、３４、４４、５４、６４  サーバ検索部
２５、３５、４５、５５、６５  仮想マシン移動制御部
１００  コンピュータ
１０１  メモリ
１０１ａ  ＲＯＭ
１０１ｂ  ＲＡＭ
１０２  ＣＰＵ
１０３  ハードディスクドライブインタフェース
１０４  ディスクドライブインタフェース
１０５  シリアルポートインタフェース
１０６  ビデオアダプタ
１０７  ネットワークインタフェース
１０８  ハードディスクドライブ
１０８ａ  ＯＳ
１０８ｂ  アプリケーションプログラム
１０８ｃ  プログラムモジュール
１０８ｄ  プログラムデータ
１０９  ディスクドライブ
１１０  マウス
１１１  キーボード
１１２  ディスプレイ
Ｂ  バス
Ｃ  クラウドネットワーク
Ｒ１、Ｒ２  ルータ
Ｙ１  仮想マシンの移動を示す矢印
【図１】
0005602775.tif 000002
【図２】
0005602775.tif 000003
【図３】
0005602775.tif 000004
【図４】
0005602775.tif 000005
【図５】
0005602775.tif 000006
【図６】
0005602775.tif 000007
【図７】
0005602775.tif 000008