(57)【要約】      （修正有）【課題】クライアントと近い複数の従サーバから、プログラムのレスポンス時間が最適な従サーバを選択できるようにする。【解決手段】主サーバ１０が、複数の従サーバ２０−１、２０−２・・・のいずれかに対して、要求されたプログラムを実行する仮想マシンを動的に配置する仮想マシン動的配置システムにおいて、各従サーバが主サーバ上で動作される各プログラムに対して要求信号を送信し、主サーバ上の各プログラムからの応答信号の受信までの応答時間情報を計測する応答計測時間情報計測部２３と、計測されたプログラム毎の応答時間情報を、従サーバ毎に保持する応答時間情報記憶部１６と、少なくとも、応答時間情報記憶部を参照して、要求されたプログラムを実行する従サーバを決定する従サーバ決定部１１とを備える。【選択図】図１
2017097707.tif 000002
【特許請求の範囲】
【請求項１】
主サーバが、複数の従サーバのいずれかに対して、要求されたプログラムを実行する仮想マシンを動的に配置する仮想マシン動的配置システムにおいて、
前記各従サーバが前記主サーバ上で動作される複数のプログラムのそれぞれに対して要求信号を送信し、前記主サーバ上の前記各プログラムからの応答信号の受信までの応答時間情報を計測する応答計測時間情報計測部と、
計測された前記プログラム毎の前記応答時間情報を、前記従サーバ毎に保持する応答時間情報記憶部と、
少なくとも、前記応答時間情報記憶部を参照して、前記要求されたプログラムを実行する従サーバを決定する従サーバ決定部と
を備えることを特徴とする仮想マシン動的配置システム。
【請求項２】
前記各従サーバに搭載される演算処理装置の性能情報を保持する演算処理装置性能情報記憶部を更に備え、
前記従サーバ決定部が、前記応答時間情報記憶部と、前記演算処理装置性能情報記憶部とを参照して、前記要求されたプログラムを実行する従サーバを決定する
ことを特徴とする請求項１に記載の仮想マシン動的配置システム。
【請求項３】
前記従サーバ決定部が、前記応答時間情報記憶部を参照して、要求されたプログラムに関する前記応答時間情報が最小値とする従サーバを決定することを特徴とする請求項１又は２に記載の仮想マシン動的配置システム。
【請求項４】
前記従サーバ決定部が、所定時間内に、複数の前記応答時間情報が存在するときに、前記演算処理装置性能情報記憶部を参照して、性能の高い演算処理装置を搭載する従サーバを決定することを特徴とする請求項２に記載の仮想マシン動的配置システム。
【請求項５】
前記主サーバが前記従サーバ決定部を備え、
前記要求されたプログラムを実行している従サーバが、間欠的に、前記主サーバに対してサーバ切替要求を行い、
前記主サーバの前記従サーバ決定部が、切替先の従サーバを決定する
ことを特徴とする請求項１〜４のいずれかに記載の仮想マシン動的配置システム。
【請求項６】
前記主サーバが、前記従サーバ決定部を備え、
前記主サーバが、前記複数の従サーバのそれぞれに対して、前記プログラム毎の応答計測情報の問い合せ要求を行ない、
前記従サーバが、前記プログラム毎の応答時間情報を前記主サーバに送信し、
前記主サーバの前記従サーバ決定部が、切替先の従サーバを決定する
ことを特徴とする請求項１〜４のいずれかに記載の仮想マシン動的配置システム。
【請求項７】
主サーバの指示により、起動した仮想マシンが要求されたプログラムを実行する従たるサーバにおいて、
前記主サーバ上で動作される複数のプログラムのそれぞれに対して要求信号を送信し、前記主サーバ上の前記各プログラムからの応答信号の受信までの応答時間情報を計測する応答計測時間情報計測部を備えることを特徴とするサーバ。
【請求項８】
複数の従サーバのいずれかに対して、要求されたプログラムを実行する仮想マシンを指示する主たるサーバにおいて、
前記各従サーバが前記主サーバ上で動作される複数のプログラムのそれぞれに対して要求信号を送信し、前記主サーバ上の前記各プログラムからの応答信号の受信までの応答時間情報を、前記各従サーバから取得する取得手段と、
計測された前記プログラム毎の前記応答時間情報を、前記従サーバ毎に保持する応答時間情報記憶部と、
少なくとも、前記応答時間情報記憶部を参照して、前記要求されたプログラムを実行する従サーバを決定する従サーバ決定部と
を備えることを特徴とするサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想マシン動的配置システム及びサーバに関し、例えば、分散型ネットワーク上で、プログラム（例えば、アプリケーションプログラム）を動作する仮想マシンの動的配置システムに適用し得るものである。
【背景技術】
【０００２】
近年、ネットワーク技術及びコンピュータ技術の発展に伴い、いわゆるクラウドコンピューティング技術が進展している。
【０００３】
クラウドコンピューティングは、さまざまな局舎に一般的なコンピュータサーバ（以下、「サーバ」と呼ぶ。）を配置し、クライド上のサーバが、クライアントから入力データを取得し、サーバがクライアントの用に供するアプリケーションを動作し、サーバが通信環境を介してクライアントに出力データを戻す。
【０００４】
クラウド環境は多くのユーザにより利用される。クラウド環境の規模は大規模となるため、世界の多くの場所のそれぞれに同一のサーバが配置されている。そのため、クライアントが要求するアプリケーション動作をどのサーバが行なうかについては、その状況に応じて変化する。例えば、日本のクライアントからの要求が、実は地球の裏側のブラジルのサーバに送信され、ブラジルのサーバが日本のクライアントにデータを返信するということも生じ得る。
【０００５】
また、昨今注目されているＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）サービスがある。
【０００６】
ＩｏＴサービスは、多くの機器やモノに通信機能が搭載されて、ネットワークに接続することになる。ＩｏＴサービスを提供する場合には、アプリケーションのリアルタイム性、ネッワーク上のトラフィック量の増大、いわゆるビックデータの蓄積方法等が求められる。
【０００７】
例えば、工場に設けられた機器のセンサからの詳細データに基づいて、サーバが瞬時に分析を行なうサービス等がある。この場合、アプリケーションのレスポンスタイムが遅くなり、利用に適さないという課題がある。
【０００８】
また例えば、信号機等の交通制御や自動車運行システム等のように、リアルタイム性が強く求められるアプリケーションの場合、例えば数百ミリ秒程度の処理遅延が致命傷となる場合も考えられる。
【０００９】
上記のような課題に対して、ユーザと物理的に近い場所に小規模のスレーブサーバ（エッジサーバとも呼ぶ。）を設置し、通信遅延を短縮して、アプリケーションのリアルタイム性を実現するエッジコンピューティング技術が提案されている。
【００１０】
エッジコンピューティングは、分散型ネットワークの一種であり、クラウド上のマスターサーバとクライアントとの間に介在するスレーブサーバ（エッジサーバ）が、データの保存や演算処理等を行なう。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１３−９０２７７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、クライアントが物理的に近い複数のスレーブサーバと接続可能な環境において、どのスレーブサーバにアプリケーション動作を実行させるかについて課題がある。例えば、クライアントから物理的に近いスレーブサーバが、アプリケーション動作を実行する場合でも、リアルタイム性の観点から、必ずしも、そのスレーブサーバからのレスポンスが早いとは限らないからである。
【００１３】
そのため、クライアントと近い複数のスレーブサーバから、アプリケーションのレスポンス時間が最適なスレーブサーバを選択できる仮想マシン動的配置システム及びサーバが求められている。
【課題を解決するための手段】
【００１４】
かかる課題を解決するために、第１の本発明に係る仮想マシン動的配置システムは、主サーバが、複数の従サーバのいずれかに対して、要求されたプログラムを実行する仮想マシンを動的に配置する仮想マシン動的配置システムにおいて、（１）各従サーバが主サーバ上で動作される複数のプログラムのそれぞれに対して要求信号を送信し、主サーバ上の各プログラムからの応答信号の受信までの応答時間情報を計測する応答計測時間情報計測部と、（２）計測されたプログラム毎の応答時間情報を、従サーバ毎に保持する応答時間情報記憶部と、（３）少なくとも、応答時間情報記憶部を参照して、要求されたプログラムを実行する従サーバを決定する従サーバ決定部とを備えることを特徴とする。
【００１５】
第２の発明に係るサーバは、主サーバの指示により、起動した仮想マシンが要求されたプログラムを実行する従たるサーバにおいて、主サーバ上で動作される複数のプログラムのそれぞれに対して要求信号を送信し、主サーバ上の各プログラムからの応答信号の受信までの応答時間情報を計測する応答計測時間情報計測部を備えることを特徴とする。
【００１６】
第３の本発明に係るサーバは、複数の従サーバのいずれかに対して、要求されたプログラムを実行する仮想マシンを指示する主たるサーバにおいて、（１）各従サーバが主サーバ上で動作される複数のプログラムのそれぞれに対して要求信号を送信し、主サーバ上の各プログラムからの応答信号の受信までの応答時間情報を、各従サーバから取得する取得手段と、（２）計測されたプログラム毎の応答時間情報を、従サーバ毎に保持する応答時間情報記憶部と、（３）少なくとも、応答時間情報記憶部を参照して、要求されたプログラムを実行する従サーバを決定する従サーバ決定部とを備えることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、クライアントと近い複数のスレーブサーバから、アプリケーションのレスポンス時間が最適なスレーブサーバを選択できる。
【図面の簡単な説明】
【００１８】
【図１】実施形態に係るネットワークシステムの全体的な構成を示す全体構成図である。
【図２】実施形態に係るアプリケーション応答計測情報リストの構成を示す構成図である。
【図３】実施形態に係るＣＰＵ性能リストの構成を示す構成図である。
【図４】実施形態に係るアプリケーション応答計測情報リストの作成処理の動作を示すシーケンス図である。
【図５】実施形態に係るスレーブサーバの選択処理を示すシーケンス図である。
【図６】実施形態に係るクライアントが要求するアプリケーションを実行するスレーブサーバの選択処理を示すフローチャートである。
【図７】実施形態に係るスレーブサーバの切替処理の動作を示すシーケンスである（その１）。
【図８】実施形態に係るスレーブサーバの切替処理の動作を示すシーケンスである（その２）。
【発明を実施するための形態】
【００１９】
（Ａ）主たる実施形態
以下、本発明に係る仮想マシン動的配置システム及びサーバの実施形態を、図面を参照しながら詳細に説明する。
【００２０】
（Ａ−１）実施形態の構成
図１は、実施形態に係るネットワークシステムの全体的な構成を示す全体構成図である。
【００２１】
図１において、実施形態に係るネットワークシステム１は、マスターサーバ１０、スレーブサーバ２０−１及び２０−２、クライアント３０−１〜３０−４、ネットワーク４０を有する。
【００２２】
なお、以下では、スレーブサーバ２０−１及び２０−２のそれぞれ、クライアント３０−１〜３０−４のそれぞれに共通する構成要素を説明する場合には、スレーブサーバ２０、クライアント３０と表現して説明する。また、マスターサーバ１０、スレーブサーバ２０、クライアント３０のそれぞれの数は特に限定されるものではない。
【００２３】
図１において、実施形態に係るネットワークシステム１は、クラウド環境において、クライアント３０と物理的に近い場所に配置した複数のスレーブサーバ（エッジサーバ）２０がアプリケーション動作を仮想的に実行する、分散型ネットワークシステムを想定する。
【００２４】
また、ネットワークシステム１では、マスターサーバ１０、スレーブサーバ２０が、クラウド環境を構築するための仮想化環境を具備している。つまり、マスターサーバ１０、スレーブサーバ２０は、ＯＳ上で、仮想マシン（ＶＭ：Virtual  Machine）を起動させて、仮想マシンがアプリケーション動作を実行する仮想化環境を有している。
【００２５】
ここで、アプリケーション（アプリケーションプログラム）は、ユーザが要求する情報処理を実行するためのソフトウェアプログラムである。アプリケーションは、クライアントからのデータを収集し、データ統計処理、データ分析処理等を行なう。アプリケーションは、リアルタイム性が求められるものを想定する。
【００２６】
アプリケーションは、リアルタイム性が求められるものであれば、特に限定されないが、例えば、交通制御、自動車運行システム、業務システム、各種管理システム、ＨＥＭＳ（ホームエナジーマネージメントシステム）、ＢＥＭＳ（ビルディングエナジーマネージメントシステム）、ＦＥＭＳ（ファクトリーエナジーマネージメントシステム）等のエナジーマネージメントシステム等に用いられるものがある。
【００２７】
クライアント３０は、クラウド上のサーバ（マスターサーバ１０、スレーブサーバ２０）に対して所望のアプリケーション動作を要求するものである。
【００２８】
クライアント３０のハードウェア構成は図示していないが、通信装置（例えば、近距離無線通信、無線通信、有線通信など）、ＣＰＵ、ＲＯＭ、ＲＡＭ、入出力インタフェース等の演算処理装置などを有する。また、クライアント３０は、アプリケーションに対する入力データ（例えば、センサデータ等の各種データ）を、クラウド上のサーバに与えて、アプリケーション動作により得られたデータをサーバから取得する。
【００２９】
図１において、マスターサーバ１０は、スレーブサーバ選択部１１、アプリケーション情報転送部１２、スレーブサーバ切替部１３、アプリケーション応答計測情報作成部１４、仮想マシン（ＶＭ）１〜４、ネットワークインタフェース部１５、記憶部１６を有する。
【００３０】
なお、マスターサーバ３０のハードウェア構成は、図示していないが汎用的なサーバと同様に、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ、入出力インタフェース部、通信装置等を有する。マスターサーバ３０の各種機能は、ＣＰＵがＲＯＭに格納されている処理プログラムを実行することにより実現される。また、処理プログラムがインストールされることにより構築できるようにしても良く、その場合でも、処理プログラムは図１に示す各構成ブロックで表すことができる。
【００３１】
マスターサーバ１０は、クラウドサービスで提供可能な全てのアプリケーションを有しており、クライアント３０から要求されたアプリケーション（以下では、「ＡＰＬ」と表現する。）をＯＳ上で起動したＶＭが実行する。
【００３２】
ここで、図１では、マスターサーバ１０においてＶＭがＡＰＬを実行しているように示しているが、実質的には、マスターサーバ１０によって選択されたスレーブサーバ２０が、クライアント３０により要求されたアプリケーションを実行する。そのため、マスターサーバ１０は、クライアント３０及びスレーブサーバ２０からのリクエストに応答する機能を有する。
【００３３】
マスターサーバ１０は、ユーザであるクライアント３０に対して物理的に近くに配置されているスレーブサーバ２０を選択し、そのスレーブサーバ２０に対してアプリケーションを動的に配置する。
【００３４】
ネットワークインタフェース部１５は、例えば、ＴＣＰ／ＩＰにより、ネットワーク４０との間で情報の授受を行なう部分である。
【００３５】
ＶＭ１〜ＶＭ４は、マスターサーバ１０のＯＳ上で起動する仮想マシンである。各ＶＭ１〜ＶＭ４は、クライアント３０から要求されたＡＰＬ１〜ＡＰＬ４のそれぞれを実行する。各ＶＭ１〜ＶＭ４は、各ＡＰＬ１〜ＡＰＬ４の実行に必要なデータをＨＤＤ等の記憶部１６に保持しており、又クライアント３０から取得したデータを用いて各ＡＰＬ１〜ＡＰＬ４を実行する。
【００３６】
なお、図１では、４個のＡＰＬ１〜４のそれぞれを、ＶＭ１〜ＶＭ４が実行する場合を例示している。勿論、ＡＰＬの数は限定されるものではなく、各ＡＰＬを実行するために起動されたＶＭの数も限定されるものではない。
【００３７】
スレーブサーバ選択部１１は、分散配置されたスレーブサーバ２０のうち、クライアント３０から要求されたアプリケーションを実行するスレーブサーバを選択するものである。
【００３８】
つまり、スレーブサーバ選択部１１は、クライアント３０からアプリケーションのリクエスト（利用要求）を取得したスレーブサーバ２０からサーバ選択の問い合せを受けると、所定のサーバ選択方法に従って、要求されたアプリケーションを実行する最適なスレーブサーバ２０を選択する。また、スレーブサーバ選択部１１は、選択したスレーブサーバ２０に対してアプリケーションの実行指示を行なう。これにより、クライアント３０によって要求されたアプリケーションを仮想的に実行する最適なスレーブサーバ２０を選択できる。なお、スレーブサーバ選択部１１によるサーバ選択方法の詳細な説明は、動作の項で詳細に説明する。
【００３９】
アプリケーション情報転送部１２は、スレーブサーバ選択部１１により選択されたスレーブサーバ２０、又は、スレーブサーバ切替部１３により選択された切替先のスレーブサーバ２０に対して、クライアント３０により要求されたアプリケーション実行に必要な情報を転送する。
【００４０】
このとき、アプリケーション情報転送部１２は、アプリケーションの要求元であるクライアント３０に関する情報の転送、クライアント３０により要求されたアプリケーション種別の指定、アプリケーションの実行に必要なデータ（例えば、ＨＤＤに格納されているデータ等）の転送等を行ない、仮想マシンの動的配置を行なう。なお、仮想マシンの動的配置のために、アプリケーション実行に必要な情報の転送方法は、特に限定されるものではなく、種々の方法を広く適用できる。
【００４１】
スレーブサーバ切替部１３は、クライアント３０により要求されたアプリケーションを実行しているスレーブサーバ２０を含め複数のスレーブサーバ２０に対して、アプリケーションのレスポンス状況を監視し、その監視結果に基づいてレスポンスの早いスレーブサーバ２０に切り替える。
【００４２】
アプリケーション応答計測情報作成部１４は、各スレーブサーバ２０から取得した、各ＡＰＬのレスポンス時間の計測情報に基づいて、後述するアプリケーション応答計測情報１６１を作成する。
【００４３】
記憶部１６は、処理プログラム、アプリケーション、アプリケーションに必要なデータ等を記憶する記憶領域である。また、記憶部１６は、アプリケーション応答計測情報１６１、ＣＰＵ性能リスト１６２、スレーブサーバ情報１６３等も記憶する。
【００４４】
アプリケーション応答計測情報１６１は、各スレーブサーバ２０の各ＡＰＬが、マスターサーバ１０の各ＡＰＬに行なったリクエストに対するレスポンス時間を計測した計測情報（計測値）をスレーブサーバ２０毎に保持する。
【００４５】
図２は、実施形態に係るアプリケーション応答計測情報１６１の構成を示す構成図である。
【００４６】
図２に示すように、アプリケーション応答計測情報１６１は、「サーバ識別情報」、「アプリケーション応答計測値」を項目として有する。なお、項目は、これらに限定されない。
【００４７】
アプリケーション応答計測情報１６１は、各アプリケーションに対するレスポンス時間である。複数のアプリケーションのそれぞれのレスポンス時間を計測する場合には、アプリケーション毎に、アプリケーション応答計測情報１６１が作成される。
【００４８】
なお、図２では、スレーブサーバ２０毎に１個のアプリケーション応答計測値がリストする場合を例示している。しかし、スレーブサーバ選択部１１、スレーブサーバ切替部１３は、周期的に、レスポンス時間を計測するため、アプリケーション応答計測情報１６１は、スレーブサーバ２０毎に、経時的なレスポンス時間を保持するようにしても良い。
【００４９】
図２において、「サーバ識別情報」は、スレーブサーバ２０の識別情報を記載する部分であり、例えば、スレーブサーバ２０の名称、スレーブサーバ２０のＩＰアドレス等が記載される。
【００５０】
「アプリケーション応答計測値」は、各スレーブサーバ２０の各ＡＰＬが、マスターサーバ１０の各ＡＰＬに送信したリクエストに対して、各スレーブ２０の各ＡＰＬが受信するまでのレスポンス時間（アプリケーション応答の往復遅延時間）である。アプリケーション応答計測値は、各スレーブサーバ２０が測定したものであり、各スレーブサーバ２０から取得したものを、アプリケーション応答計測情報１６１に保持する。
【００５１】
アプリケーション応答計測値は、下位レイヤ（例えば、物理層、ネットワーク層等）のネットワーク上の往復遅延時間ではなく、アプリケーション層を含めたレイヤのレスポンス時間を意図している。
【００５２】
これは、クライアント３０が求めるレスポンスの早さは、アプリケーションの実行動作に対する応答時間の短さである。下位レイヤの往復遅延時間の計測ではアプリケーションのリアルタイム性を充分に確保できないこともある。また、クライアント３０から物理的に近いスレーブサーバ２０がアプリケーション動作を行なう場合でも、必ずしも、アプリケーションのレスポンスが早いとは限らない。
【００５３】
そこで、この実施形態では、アプリケーションのレスポンスの早いスレーブサーバ２０を選択するため、アプリケーションのレスポンス時間（アプリケーションの往復遅延時間）を計測している。
【００５４】
ＣＰＵ性能リスト１６２は、各スレーブサーバ２０に搭載されているＣＰＵの性能をスレーブサーバ２０毎に保持する。
【００５５】
図３は、実施形態に係るＣＰＵ性能リスト１６２の構成を示す構成図である。
【００５６】
図３において、ＣＰＵ性能リスト１６２は、「サーバ識別情報」、「ＣＰＵ性能」を項目として有する。なお、項目はこれらに限定されない。
【００５７】
「ＣＰＵ性能」は、各スレーブサーバ２０に搭載されるＣＰＵの性能情報である。例えば、図２において、「ａａａａ  ｘｘｘ−３０００（２．６ＧＨｚ）」は、ＣＰＵの型番号を示している。つまり、ＣＰＵの製造メーカ名「ａａａａ」、ＣＰＵ名「ｘｘｘ」、型番号「３０００」、クロック数「２．６ＧＨｚ」を示している。このように、ＣＰＵ性能は、ＣＰＵの型番号の情報であっても良いし、ＣＰＵのグレードに応じたＣＰＵ性能を相対的に評価した相対評価値（例えば、ＣＰＵ性能を５段階評価したときの相対評価値等）としても良い。
【００５８】
なお、各スレーブサーバ２０のＣＰＵ性能に関する情報は、マスターサーバ１０とスレーブサーバ２０との間のパケット交換により取得された情報としても良いし、予めスレーブサーバ２０のＣＰＵ性能を認識できる場合には、予め設定した情報であっても良い。
【００５９】
スレーブサーバ情報１６３は、スレーブサーバ２０のアドレス情報（ＩＰアドレス等）や位置情報（例えば、緯度経度、物理的に配置されたときの位置情報等）などの情報を保持する。また、スレーブサーバ情報は、各スレーブサーバ２０と、各スレーブサーバ２０が実行しているアプリケーション種類とを対応付けた情報を保持する。
【００６０】
図１において、スレーブサーバ２０は、スレーブサーバ選択要求部２１、スレーブサーバ切替部２２、アプリケーション応答計測部２３、ＶＭ、ネットワークインタフェース部２５、記憶部２６を有する。
【００６１】
なお、スレーブサーバ２０のハードウェア構成は、図示していないが汎用的なサーバと同様に、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＥＥＰＲＯＭ、入出力インタフェース部、通信装置等を有する。スレーブサーバ２０の各種機能は、ＣＰＵがＲＯＭに格納されている処理プログラムを実行することにより実現される。また、処理プログラムがインストールされることにより構築できるようにしても良く、その場合でも、処理プログラムは図１に示す各構成ブロックで表すことができる。
【００６２】
スレーブサーバ２０は、クライアント３０側に物理的に近い場所に配置されるサーバである。スレーブサーバ２０は、マスタースレーブ１０から指示された、クライアント３０が要求するアプリケーションを実行するものであり、クライアント３０からデータを取得して、アプリケーション動作を行なう。
【００６３】
例えば、スレーブサーバ２０−１は、ＶＭ１がＡＰＬ１を実行し、ＶＭ２がＡＰＬ２を実行している。また、スレーブサーバ２０−２は、ＶＭ３がＡＰＬ３を実行し、ＶＭ４がＡＰＬ４を実行している。
【００６４】
ネットワークインタフェース部２５は、クライアント３０との間で情報を授受したり、マスターサーバ１０との間で情報を授受したりする部分である。
【００６５】
例えば、ネットワークインタフェース部２５は、クライアント３０との間で近距離無線通信により情報を授受するようにしても良い。また、ネットワークインタフェース部２５は、マスターサーバ１０との間で、ＴＣＰ／ＩＰによる情報を授受するようにしても良い。
【００６６】
ＶＭ１〜ＶＭ４のそれぞれは、マスターサーバ１０から指示された、クライアント３０が要求しているＡＰＬ１〜ＡＰＬ４のそれぞれをＯＳ上で実行する仮想マシンである。
【００６７】
スレーブサーバ選択要求部２１は、クライアント３０からアプリケーションの利用要求を取得したときに、マスターサーバ１０に対して、アプリケーションを実行するスレーブサーバ２０の選択要求を行う。
【００６８】
スレーブサーバ切替要求部２２は、定期的に、マスターサーバ１０に対して、他のスレーブサーバ２０への切り替えが必要か否かを問い合せするものである。
【００６９】
アプリケーション応答計測部２３は、各ＡＰＬが、マスターサーバ１０の各ＡＰＬに対して、ダミー情報を含むリクエストを送信し、前記リクエストに対するレスポンス時間を計測するものである。アプリケーション応答計測部２３は、各ＡＰＬのレスポンス時間の計測を定期的に行なう。また、アプリケーション応答計測部２３は、計測した各ＡＰＬのレスポンス時間を、マスターサーバ１０に送信する。
【００７０】
記憶部２６は、処理プログラム、アプリケーション、アプリケーションに必要なデータ等を記憶する記憶領域である。
【００７１】
（Ａ−２）実施形態の動作
次に、実施形態に係るネットワークシステム１におけるアプリケーションの動的配置方法の動作を、図面を参照しながら詳細に説明する。
【００７２】
（Ａ−２−１）アプリケーション応答計測情報リストの作成動作
図４は、実施形態に係るアプリケーション応答計測情報リストの作成処理の動作を示すシーケンス図である。
【００７３】
例えば、クラウド上のマスターサーバ１０が実行可能なアプリケーションとしてＡＰＬ１〜ＡＰＬ４があるとする。
【００７４】
マスターサーバ１０は、実行可能なアプリケーションの種類を知らせるために、常時、各スレーブサーバ２０に対して、マスターサーバ１０がＡＰＬ１〜ＡＰＬ４を動作していることを通知する（Ｓ１１）。
【００７５】
通知方法は、特に限定されないが、例えば、実行可能なアプリケーションの種類を示すＡＰＬ１〜ＡＰＬ４を記載したリスト情報を含むパケットを、マスターサーバ１０が各スレーブサーバ２０に通知することで実現できる。
【００７６】
各スレーブサーバ２０において、アプリケーション応答計測部２３は、定期的に、マスターサーバ１０の各ＡＰＬ１〜ＡＰＬ４に対して、定期的に、ダミー情報を含むリクエストを送信する（Ｓ１２）。
【００７７】
ここで、ダミー情報の内容は、アプリケーションの種類に応じて異なるものであっても良い。
【００７８】
例えば、アプリケーションがＳＩＰである場合、各スレーブサーバ２０のアプリケーションは、ＳＩＰのＩｎｖｉｔｅメッセージを用い、メッセージ内容を空（例えば、オールゼロ等）としたダミー情報を送信するようにしても良い。
【００７９】
また例えば、各スレーブサーバ２０のアプリケーションは、マスターサーバ１０のアプリケーションが応答しないデータ（すなわち、意味を持たないデータ）を含むダミー情報を送信するようにしても良い。
【００８０】
より具体的に、スレーブサーバ２０に搭載するプリント基板を組み込む際に使用される情報を予め設定しておき、これをダミー情報として使用するようにしても良い。例えば、スレーブサーバ２０に搭載するプリント基板を組み立てる際に、プリント基板の組み立て工作機械から読み取ったバーコード情報をダミー情報としても良い。プリント基板を組み立てるバーコード情報は、バーコード番号と、プリント基板を組み立てる作業開始フラグ又は作業終了フラグ等がある。スレーブサーバ２０は、ダミー情報として、例えばバードコード読み取り情報（バーコード番号、作業開始フラグを含む情報）を、マスターサーバ１０のＡＰＬに送信する。このとき、マスターサーバ１０のＡＰＬでは、未登録の情報であるため、マスターサーバ１０のＡＰＬはエラー応答を行なう。
【００８１】
マスターサーバ１０における各ＡＰＬ１〜ＡＰＬ４は、各スレーブサーバ２０のダミー情報を含むリクエストを受信すると、そのリクエストに対する応答情報を返信する（Ｓ１３）。つまり、マスターサーバ１０において、ダミー情報を含むリクエストを受けた各ＡＰＬ１〜ＡＰＬ４は、エラーが生じる。そのため、エラー応答が、各スレーブサーバ２０のＡＰＬに返信される。
【００８２】
各スレーブサーバ２０において、アプリケーション応答計測部２３は、ダミー情報を含むリクエストの送信時刻と、エラー応答の受信時刻とを管理しており、前記送信時刻と前記受信時刻との差分からアプリケーション応答計測情報を計測する（Ｓ１４）。
【００８３】
また、各スレーブサーバ２０は、アプリケーション応答計測情報と、自身のＣＰＵ性能に関する情報とを含む情報をマスターサーバ１０に送信する（Ｓ１５）。なお、各スレーブサーバ２０は、ＣＰＵ性能に関する情報を既にマスターサーバ１０に送信している場合には、その後にＣＰＵ性能に関する情報をマスターサーバ１０に送信しないようにしても良い。
【００８４】
マスターサーバ１０において、アプリケーション応答計測情報作成部１４は、各スレーブサーバ２０から受信した、アプリケーション応答計測情報をアプリケーション応答計測情報１６１に記憶する。また、マスターサーバ１０において、アプリケーション応答計測情報作成部１４は、各スレーブサーバ２０から受信した、スレーブサーバ２０のＣＰＵ性能に関する情報を、ＣＰＵ性能リスト１６２に記憶する（Ｓ１６）。
【００８５】
各スレーブサーバ２０とマスターサーバ１０は、Ｓ１２〜Ｓ１６の処理を定期的に行なうようにする。
【００８６】
（Ａ−２−２）スレーブサーバ２０の選択動作
まず、クライアント３０がアプリケーションの利用要求をした場合のスレーブサーバ２０の選択動作を、図５を用いて説明する。
【００８７】
図５は、実施形態に係るスレーブサーバ２０の選択処理を示すシーケンス図である。
【００８８】
クライアント３０がスレーブサーバ２０−１に対してＡＰＬ１の利用要求を行なう（Ｓ１０１）。
【００８９】
スレーブサーバ２０−１は、マスターサーバ１０に対して、クライアント３０が要求するＡＰＬ１を実行するスレーブサーバ２０の選択要求を送信する（Ｓ１０２）。
【００９０】
マスターサーバ１０では、スレーブサーバ選択部１１が、各スレーブサーバ２０における各アプリケーションのレスポンス時間を計測し、その計測結果に基づいて、クライアント３０が要求するＡＰＬ１を実行するスレーブサーバ２０を選択する（Ｓ１０３）。
【００９１】
図６は、実施形態に係るクライアント３０が要求するアプリケーションを実行するスレーブサーバの選択処理を示すフローチャートである。
【００９２】
まず、マスターサーバ１０において、スレーブサーバ選択部１１は、アプリケーション応答計測情報１６１を参照して、各スレーブサーバ２０における各ＡＰＬ１〜ＡＰＬ４の応答計測値を比較する（Ｓ２０１）。
【００９３】
このとき、アプリケーション応答計測情報１６１は、ＡＰＬ毎に、各スレーブサーバ２０のアプリケーション応答計測値が保持されている。従って、スレーブサーバ選択部１１は、クライアント３０が要求しているＡＰＬについて、各スレーブサーバ２０のアプリケーション応答計測値を比較する。
【００９４】
スレーブサーバ選択部１１は、アプリケーション応答計測値が最も小さいものを選択し、アプリケーション応答計測値が最も小さいスレーブサーバ２０を選択する（Ｓ２０３）。
【００９５】
ここで、スレーブサーバ選択部１１は、最小のアプリケーション応答計測値であるスレーブサーバ２０を選択するが、アプリケーション応答計測値の最小値と、それ以外の値との差分が小さく、最適なスレーブサーバ２０の選択が十分でないことも生じ得る。そこで、実施形態では、アプリケーション応答計測値が小さい順とし、所定範囲内に最小値とそれ以外の値とが複数ある場合には、Ｓ２０４に移行する。
【００９６】
スレーブサーバ選択部１１は、ＣＰＵ性能リスト１６３を参照して、所定範囲内に、最小値とそれ以外の値とが複数ある場合に、それぞれ対応する複数のスレーブサーバ２０のＣＰＵ性能を比較する（Ｓ２０４）。
【００９７】
そして、複数のスレーブサーバ２０のＣＰＵ性能に差がある場合には（Ｓ２０４）、ＣＰＵ性能が高いスレーブサーバ２０を選択する（Ｓ２０５）。
【００９８】
ここで、ＣＰＵ性能が高いスレーブサーバ２０を選択する理由を説明する。これは、ＣＰＵ性能の高いＣＰＵを搭載しているスレーブサーバ２０は、処理能力が高いため、アプリケーションのレスポンスが早いためである。例えば、現時点のＣＰＵの処理負荷等を考慮してスレーブサーバ２０を選択する等も考えられる。
【００９９】
しかし、近年のＣＰＵ技術の進歩により、ＣＰＵの処理能力は格段に高くなっている。そのため、現時点で、ＣＰＵの処理負荷等が大きい場合でも、ＣＰＵ性能が高いときには、時間経過に伴いアプリケーションのレスポンス時間が早くなる傾向がある。
【０１００】
そこで、この実施形態では、アプリケーション応答計測値が同等（すなわち所定範囲内にある）のスレーブサーバ２０が存在するときには、スレーブサーバ選択部１１は、ＣＰＵ性能が高いスレーブサーバ２０を選択する。
【０１０１】
Ｓ２０４において、複数のスレーブサーバ２０のＣＰＵ性能に差がない場合には、アプリケーションＩＤが若いスレーブサーバ２０を選択する（Ｓ２０６）。つまり、クライアント３０が要求するＡＰＬを実行するスレーブサーバ２０として、以前に（既に）割り当てられているスレーブサーバ２０を選択する。
【０１０２】
図５のＳ１０３に戻って、スレーブサーバ２０の選択処理を説明する。
【０１０３】
Ｓ１０３において、スレーブサーバ選択部１１が、クライアント３０が要求したＡＰＬ１を実行するサーバとして、スレーブサーバ２０−１を選択する。そうすると、マスターサーバ１０は、スレーブサーバ２０−１に対して、スレーブサーバ選択指示を送信する（Ｓ１０４）。
【０１０４】
なお、マスターサーバ１０は、スレーブサーバ２０−１に対して、クライアント２０が要求したＡＰＬ１や、アプリケーションの実行に必要なデータ等を転送する。
【０１０５】
スレーブサーバ２０−１は、クライアント３０に対して、ＡＰＬ１を実行するサーバがスレーブサーバであることを知らせるため、スレーブサーバ選択指示を送信する（Ｓ１０５）。
【０１０６】
その後、クライアント３０は、スレーブサーバ２０−１に対して、ＡＰＬ１の動作に必要なデータをスレーブサーバ２０‐１に送信して、ＡＰＬ１の利用を開始する（Ｓ１０６）。
【０１０７】
（Ａ−２−３）スレーブサーバ２０の切り替え方法（その１）
次に、スレーブサーバ２０が主導的にスレーブサーバ２０を行なう、スレーブサーバ２０切替方法の処理動作を、図７を用いて説明する。
【０１０８】
図７は、実施形態に係るスレーブサーバ２０の切替処理の動作を示すシーケンスである。
【０１０９】
ここでは、スレーブサーバ２０−１が、クライアント３０が要求したアプリケーションを実行しているものとする。
【０１１０】
クライアント３０は、アプリケーションの実行に必要なメッセージ（データを含むメッセージ）をスレーブサーバ２０−１に送信する（Ｓ３０１）。
【０１１１】
スレーブサーバ２０−１において、スレーブサーバ切替部２２は、クライアント３０からのメッセージの受信回数を計測している。そして、クライアント３０からのメッセージ受信回数が所定回数（例えば、１０回）に達すると、スレーブサーバ切替部２３は、マスターサーバ１０に対して、最適なスレーブサーバ２０を問い合わせるスレーブサーバ選択要求を送信する（Ｓ３０２、Ｓ３０３）。
【０１１２】
マスターサーバ１０では、スレーブサーバ選択部１１が、アプリケーション応答計測情報１６１を参照して、クライアント３０が要求するＡＰＬ１を実行するスレーブサーバ２０−２を選択する（Ｓ３０４）。ここで、図７のＳ３０４では、図６を用いたスレーブサーバ２０の選択処理を行なう。なお、図６のスレーブサーバ２０の選択処理の詳細な説明について省略する。
【０１１３】
その後、スレーブサーバ選択部１１が、クライアント３０が要求したＡＰＬ１を実行するサーバとして、スレーブサーバ２０−２を選択する。そうすると、マスターサーバ１０は、スレーブサーバ２０−１に対して、スレーブサーバ選択指示を送信する（Ｓ３０５）。つまり、マスターサーバ１０は、クライアント３０が要求するＡＰＬ１を実行する切替先が「スレーブサーバ２０−２」である旨を含むスレーブサーバ選択指示を、スレーブサーバ２０−１に送信する。
【０１１４】
また、マスターサーバ１０において、アプリケーション情報転送部１２は、スレーブサーバ２０−２に対して、クライアント２０が要求したＡＰＬ１や、アプリケーションの実行に必要なデータ等を転送する（Ｓ３０６）。
【０１１５】
スレーブサーバ２０−１は、クライアント３０に対して、ＡＰＬ１を実行するサーバがスレーブサーバで２０−２であることを知らせるため、スレーブサーバ選択指示を送信する（Ｓ３０７）。
【０１１６】
その後、クライアント３０は、スレーブサーバ２０−２に対して、ＡＰＬ１の動作に必要なデータを送信して、ＡＰＬ１の利用を開始する（Ｓ３０８）。
【０１１７】
（Ａ−２−４）スレーブサーバ２０の切り替え方法（その２）
次に、マスターサーバ１０が主導的にスレーブサーバ２０を行なう、スレーブサーバ２０切替方法の処理動作を、図８を用いて説明する。
【０１１８】
図８は、実施形態に係るスレーブサーバ２０の切替処理の動作を示すシーケンスである。
【０１１９】
ここでは、スレーブサーバ２０−１が、クライアント３０が要求したアプリケーションを実行しているものとする。
【０１２０】
マスターサーバ１０において、スレーブサーバ切替部１３は、定期的（例えば、１分、数分毎）に、各スレーブサーバ２０−１〜２０−２に対して、アプリケーション応答計測情報の問い合せを行なう。各スレーブサーバ２０−１〜２０−２は、各ＡＰＬ１〜ＡＰＬ４がマスターサーバ１０の各ＡＰＬに対して、ダミー情報を含むリクエストを送信し、レスポンスが受信されるまでのレスポンス時間を計測し、その応答計測情報をマスターサーバ１０に送信する（Ｓ４０１〜Ｓ４０４）。
【０１２１】
マスターサーバ１０では、スレーブサーバ選択部１１が、アプリケーション応答計測情報１６１を参照して、クライアント３０が要求するＡＰＬ１を実行するスレーブサーバ２０−２を選択する（Ｓ４０５）。ここで、図８のＳ４０５では、図６を用いたスレーブサーバ２０の選択処理を行なう。なお、図６のスレーブサーバ２０の選択処理の詳細な説明について省略する。
【０１２２】
なお、スレーブサーバ２０の切替が行なわれるまでの間、クライアント３０は、アプリケーションの実行に必要なメッセージ（データを含むメッセージ）をスレーブサーバ２０−１に送信する（Ｓ４０６）。
【０１２３】
その後、スレーブサーバ選択部１１が、クライアント３０が要求したＡＰＬ１を実行するサーバとして、スレーブサーバ２０−２を選択する。そうすると、マスターサーバ１０は、スレーブサーバ２０−１に対して、スレーブサーバ選択指示を送信する（Ｓ４０７）。つまり、マスターサーバ１０は、クライアント３０が要求するＡＰＬ１を実行する切替先が「スレーブサーバ２０−２」である旨を含むスレーブサーバ選択指示を、スレーブサーバ２０−１に送信する。
【０１２４】
また、マスターサーバ１０において、アプリケーション情報転送部１２は、スレーブサーバ２０−２に対して、クライアント２０が要求したＡＰＬ１や、アプリケーションの実行に必要なデータ等を転送する（Ｓ４０８）。
【０１２５】
スレーブサーバ２０−１は、クライアント３０に対して、ＡＰＬ１を実行するサーバがスレーブサーバで２０−２であることを知らせるため、スレーブサーバ選択指示を送信する（Ｓ４０９）。
【０１２６】
その後、クライアント３０は、スレーブサーバ２０−２に対して、ＡＰＬ１の動作に必要なデータを送信して、ＡＰＬ１の利用を開始する（Ｓ４１０）。
【０１２７】
（Ａ−３）実施形態の効果
以上のように、この実施形態によれば、クライアントに物理的に近い複数のスレーブサーバがある場合でも、クライアントが要求するアプリケーションを実行する仮想マシンの位置を動的に配置できる。その結果、アプリケーション動作のレスポンスタイムを格段に向上できる。
【符号の説明】
【０１２８】
１…ネットワークシステム、１０…マスターサーバ、２０（２０−１及び２０−２）…スレーブサーバ、３０（３０−１〜３０−４）…クライアント、
１１…スレーブサーバ選択部、１２…アプリケーション情報転送部、１３…スレーブサーバ切替部、１４…アプリケーション応答計測情報作成部、ＶＭ…仮想マシン、１５…ネットワークインタフェース部、１６…記憶部、
２１…スレーブサーバ選択要求部、２２…スレーブサーバ切替部、２３…アプリケーション応答計測部、２５…ネットワークインタフェース部、２６…記憶部２６。
【図１】
2017097707.tif 000003
【図２】
2017097707.tif 000004
【図３】
2017097707.tif 000005
【図４】
2017097707.tif 000006
【図５】
2017097707.tif 000007
【図６】
2017097707.tif 000008
【図７】
2017097707.tif 000009
【図８】
2017097707.tif 000010