(57)【要約】【課題】仮想化システム上で分散アプリケーションを稼働させる場合に、仮想マシンを適切に配置する。【解決手段】分散アプリケーション配置システムである仮想化インフラシステム８は、各拠点１のサーバ２と、各サーバ２間または／および各サーバ２と外部ネットワーク間の通信を中継する中継装置である集線スイッチ１３、中継スイッチ１２およびルータ１１と、この拠点１に係る中継装置およびサーバ２の接続構成の情報を格納する設備構成データベースと、分散アプリケーションを構成する各仮想マシン３をサーバ２に配置する拠点内構成管理部と、この設備構成データベースに基づいて、同一の分散アプリケーションを構成する各仮想マシン３間の論理的距離を算出し、この論理的距離が適正距離となるように、各仮想マシン３を配置するサーバ２を選択するＶＭ分散管理配置部とを備える。【選択図】図１
2016053781.tif 000002
【特許請求の範囲】
【請求項１】
各拠点の一または複数のサーバと、
各前記サーバ間または／および各前記サーバと外部ネットワーク間の通信を中継する中継装置と、
当該拠点に係る前記中継装置および前記サーバの接続構成の情報を格納する設備構成データベースと、
分散アプリケーションを構成する各処理部を具現化する各プログラムを、それぞれ各前記拠点の前記サーバに実行させる拠点管理手段と、
前記設備構成データベースに基づいて、同一の分散アプリケーションを構成する各前記処理部間の論理的距離を算出し、前記論理的距離が適正距離となるように、各前記処理部を具現化する各プログラムを実行させるサーバを選択する分散配置手段と、
を備えることを特徴とする分散アプリケーション配置システム。
【請求項２】
前記分散配置手段は、各前記処理部を具現化するプログラムを実行させる各サーバ間に存在する中継装置の数によって前記論理的距離を算出する、
ことを特徴とする請求項１に記載の分散アプリケーション配置システム。
【請求項３】
前記分散アプリケーションを構成する各前記処理部は、仮想マシンとして具現化される、
ことを特徴とする請求項１に記載の分散アプリケーション配置システム。
【請求項４】
前記適正距離は、同一の中継装置を介して接続される異なる２台のサーバ上に具現化される２個の処理部間の論理的距離である、
ことを特徴とする請求項１に記載の分散アプリケーション配置システム。
【請求項５】
前記適正距離は、同一の集線スイッチに接続される異なる２台のサーバ上に具現化される２個の処理部間の論理的距離である、
ことを特徴とする請求項１に記載の分散アプリケーション配置システム。
【請求項６】
前記分散配置手段は更に、各前記サーバにおける各前記処理部の密集度を加味して、各前記処理部を具現化する各プログラムを動作させるサーバを決定する、
ことを特徴とする請求項１に記載の分散アプリケーション配置システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバが処理プログラムを実行して具現化される各処理部で構成される分散アプリケーションにおいて、この処理プログラムを実行するサーバを好適に選択して、処理部を配置する分散アプリケーション配置システムに関する。
【背景技術】
【０００２】
通信サービスには、高い稼働率が求められる。そのため、従来の通信事業者におけるネットワークサーバは厳密な信頼性設計を行い、よって高い稼働率を実現してきた。
【０００３】
近年、ネットワークサーバを仮想マシン（VM:Virtual Machine）として実現することが提唱されている。ネットワークサーバを仮想マシンとして実現することにより、障害時の自律復旧や仮想マシンの動的な増減設による負荷変動への自律的な対応など、様々なメリットが期待される。
非特許文献１には、仮想化されたサーバインフラ（リソースプール）を利用したサーバ障害処理・ソフトウェアアップデートの実現方式が記載されている。
【０００４】
非特許文献２には、従来ハードウェアアプライアンスで実現されてきた様々な通信装置を仮想化技術等によりソフトウェア化することが記載されている。非特許文献２には更に、スイッチ故障により当該スイッチに帰属する複数サーバが同時に利用不能になることや、激甚災害・電源障害等により特定拠点のサーバが全て利用不能になることが記載されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】西村豪生、岩佐絵里子、入江道生、金子雅志、福元健、「リソースプールを活用してキャリアグレード保守運用を実現する通信制御サーバミドルウェア」、電子情報通信学会技術研究報告、電子情報通信学会、２０１３年７月４日、第１１３巻、第１２４号、ICM2013 9-22、pp.63-68
【非特許文献２】金子雅志、森谷俊之、「ＮＦＶにおけるシステム稼働率に関する一考察」、電子情報通信学会大会講演論文集(CD-ROM)資料、電子情報通信学会、２０１４年３月４日、G0508B、2014巻、ROMBUNNO.B-6-27頁
【発明の概要】
【発明が解決しようとする課題】
【０００６】
仮想化されたシステムにおいて高い信頼性を実現するため、仮想マシンの配置方法は重要である。仮想化技術を適用したシステムにおいては物理サーバと仮想マシンとの組み合わせが自由になることによる問題が発生するためである。
仮想化されたシステムにおいて、耐障害性を高めるために１つのシステムを複数の仮想マシンで分散処理させることが考えられるが、同じシステムを構成する複数の仮想マシンを同一の物理サーバ上で稼働させた場合、その物理サーバの故障により、仮想化システムを構成する複数の仮想マシンが同時に消失する。これによりシステムの性能不足が発生し、データの信頼性を高めるために複数の仮想マシン間で持ち合っていたレプリケーションデータが消失するなどの問題が発生するおそれがある。
【０００７】
しかし非特許文献１では、物理サーバに対する仮想マシンの配置方法や、仮想マシンの配置に伴う問題については言及されていない。
【０００８】
１つのシステムを構成する複数の仮想マシンにおいては、レプリケーションデータの転送などにより、仮想マシン間でのトラフィックが多く発生する場合がある。そのため、闇雲に仮想マシンを遠隔に配置すると、中継トラフィックが増大して上位のルータや中継回線が処理のボトルネックとなり、性能が低下するおそれがある。また、仮想マシンの配置においては特定の物理サーバに仮想マシンが集中することで特定の仮想マシンの性能が低下しないように物理サーバの混雑具合を考慮して仮想マシンを配置する必要がある。
また、仮想化されたシステムに限定されず、複数のサーバが処理プログラムを実行して具現化される各処理部で構成される分散アプリケーションにおいても同様である。
【０００９】
本発明は、前記した問題を解決し、分散アプリケーションを稼働させる場合に、複数のサーバを適切に選択して各処理部を配置することができる分散アプリケーション配置システムを提供することを課題とする。
【課題を解決するための手段】
【００１０】
前記課題を解決するため、請求項１に記載の発明では、各拠点の一または複数のサーバと、各前記サーバ間または／および各前記サーバと外部ネットワーク間の通信を中継する中継装置と、当該拠点に係る前記中継装置および前記サーバの接続構成の情報を格納する設備構成データベースと、分散アプリケーションを構成する各処理部を具現化する各プログラムを、それぞれ各前記拠点の前記サーバに実行させる拠点管理手段と、前記設備構成データベースに基づいて、同一の分散アプリケーションを構成する各前記処理部間の論理的距離を算出し、前記論理的距離が適正距離となるように、各前記処理部を具現化する各プログラムを実行させるサーバを選択する分散配置手段と、を備えることを特徴とする分散アプリケーション配置システムとした。
【００１１】
このようにすることで、同一の分散アプリケーションを構成する各処理部間の論理的距離が適正距離となるように配置できる。この分散アプリケーションは、装置の故障に対する所定の耐性と、所定のレイテンシとを得ることができる。この分散アプリケーション配置システムは、廉価な低信頼性の各サーバに処理部を具現化させ、かつ、廉価で低信頼性の各中継装置を活用できるので、廉価に分散アプリケーションを実現可能である。
【００１２】
請求項２に記載の発明にて、前記分散配置手段は、各前記処理部を具現化するプログラムを実行させる各サーバ間に存在する中継装置の数によって前記論理的距離を算出する、ことを特徴とする請求項１に記載の分散アプリケーション配置システムとした。
【００１３】
このようにすることで、拠点内に配備された各中継装置の故障に対する分散アプリケーションの耐性を容易に評価可能となる。
【００１４】
請求項３に記載の発明で、前記分散アプリケーションを構成する各前記処理部は、仮想マシンとして具現化される、ことを特徴とする請求項１に記載の分散アプリケーション配置システムとした。
【００１５】
このようにすることで、仮想化技術を用いた分散アプリケーションに対して、本発明を適用することができる。
【００１６】
請求項４に記載の発明での前記適正距離は、同一の中継装置を介して接続される異なる２台のサーバ上に具現化される２個の処理部間の論理的距離である、ことを特徴とする請求項１に記載の分散アプリケーション配置システムとした。
【００１７】
このようにすることで、同一の中継装置を介して接続される異なる２台のサーバ上に各処理部を具現化させることができる。
【００１８】
請求項５に記載の発明での前記適正距離は、同一の集線スイッチに接続される異なる２台のサーバ上に具現化される２個の処理部間の論理的距離である、ことを特徴とする請求項１に記載の分散アプリケーション配置システムとした。
【００１９】
このようにすることで、同一の集線スイッチに接続される異なる２台のサーバ上に各処理部を具現化させることができる。
【００２０】
請求項６に記載の発明で、前記分散配置手段は更に、各前記サーバにおける各前記処理部の密集度を加味して、各前記処理部を具現化する各プログラムを動作させるサーバを決定する、ことを特徴とする請求項１に記載の分散アプリケーション配置システムとした。
【００２１】
このようにすることで、同一のサーバが具現化する異なる分散アプリケーションの処理部の数を制限して、処理部の集中を抑止可能である。
【発明の効果】
【００２２】
本発明によれば、分散アプリケーションを稼働させる場合に、複数のサーバを適切に選択して各処理部を配置することができる分散アプリケーション配置システムを提供可能である。
【図面の簡単な説明】
【００２３】
【図１】本実施形態における仮想化インフラシステムの概略を示す構成図である。
【図２】仮想マシンによって構成される分散アプリケーションの一例を示す図である。
【図３】拠点管理サーバの概略を示す構成図である。
【図４】設備構成データベースで管理される装置構成の例を示す図である。
【図５】仮想マシンのストレス値の説明図である。
【図６】仮想マシンの配置の一例を示す図である。
【図７】仮想マシンの配置の一例の再配置後を示す図である。
【図８】仮想マシン最適配置の探索処理を示すフローチャートである。
【発明を実施するための形態】
【００２４】
次に、本発明を実施するための形態（「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
図１は、本実施形態における仮想化インフラシステム８の概略を示す構成図である。
本実施形態の仮想化インフラシステム８は、遠隔して配置された複数の拠点１−１〜１−３によって構成される分散アプリケーション配置システムである。これら拠点１−１〜１−３は、拠点間ネットワーク５によって相互に接続される。ここでは、拠点間ネットワーク５を構成する各装置を、拠点間転送装置６として示している。なお、仮想化インフラシステム８は、例えば単一の拠点１−１によって構成されていてもよい。以下、各拠点１−１〜１−３を特に区別しないときには、単に拠点１と記載する。
【００２５】
拠点１は、例えば通信の局舎やデータセンタなどであり、ルータ１１と、中継スイッチ１２と、集線スイッチ１３と、サーバ２と、拠点管理サーバ４とを備えている。
集線スイッチ１３は、例えばスイッチングハブやＬ２（Layer 2）スイッチやＬ３（Layer3）スイッチなどの中継装置であり、各サーバ２と直接に接続される。
中継スイッチ１２は、例えばスイッチングハブやＬ２スイッチやＬ３スイッチなどの中継装置であり、各集線スイッチ１３間に接続されて、拠点１内のトラヒックを中継する。
ルータ１１は、トラヒックを中継する中継装置であり、中継スイッチ１２に接続されて、拠点１内のトラヒックと、拠点１と拠点間ネットワーク５との間のトラヒックを中継する。
拠点間転送装置６は、異なる拠点１間のトラヒックをそれぞれ転送する。
サーバ２は、物理サーバであり、ＶＭ管理部２１により、１または複数の仮想マシン３を稼働させる。なお、各図面では、仮想マシン３のことを「ＶＭ」と省略して記載している。サーバ２は、ＶＭ管理部２１により、この仮想マシン３を他のサーバ２に移行させることも可能である。ＶＭ管理部２１はハイパーバイザであり、コンピュータの仮想化技術のひとつである仮想マシン３を具現化する制御部である。各サーバ２は、集線スイッチ１３、中継スイッチ１２およびルータ１１などの中継装置によって相互に接続される。サーバ２間の接続構成は、グラフ構造で示すことができる。
集線スイッチ１３、中継スイッチ１２およびルータ１１などの中継装置は、サーバ２間の通信を疎通させる。サーバ２の稼働は、これら中継装置の稼働が前提である。そのため、これら中継装置の故障は、複数のサーバ２に影響を与えるおそれがある。よって、仮想マシン３は、中継装置の故障に備えて、それぞれ異なる中継装置下のサーバ２に分散して配置することが望ましい。
拠点管理サーバ４は、自身の拠点１−１や他の拠点１−２，１−３などの装置構成やサーバ２の利用状況を把握する。この拠点管理サーバ４は、後記する図３で詳細に説明する。
【００２６】
図２は、仮想マシン３によって構成される分散アプリケーション７の一例を示す図である。
仮想化インフラシステム８上で実現されるネットワークサーバは、複数の仮想マシン３で構成された分散アプリケーション７として実装される。分散アプリケーション７は、複数の仮想マシン３によって所定の処理を行う。仮想マシン３は、この分散アプリケーション７に係る処理を実行する処理部である。各分散アプリケーション７は、物理サーバ２への仮想マシン３の配置を最適化するＶＭ分散管理配置部３１と、それらの稼働状態を管理する分散アプリケーション管理部３２とによって制御される。仮想化インフラシステム８上では、複数個の分散アプリケーション７が稼働することになる。
また、図２ではＶＭ分散管理配置部３１と分散アプリケーション管理部３２とは、仮想マシン３上で実現されているが、拠点管理サーバ４上で実装されていてもよい。
分散アプリケーション管理部３２は、拠点管理サーバ４の機能を利用することで、分散アプリケーション７を構成する仮想マシン３の配置などを取得し、仮想マシン３を再配置することができる。
ＶＭ分散管理配置部３１（分散配置手段）は、仮想マシン３の配置にあたり、どのサーバ２に仮想マシン３を配置すべきか、現在の仮想マシン３の配置に改善の余地がないかを判定する。
分散アプリケーション管理部３２は、分散アプリケーション７ごとに、それを構成する１または複数の仮想マシン３の識別子を管理する。分散アプリケーション管理部３２は、仮想マシン３の増設時に、ＶＭ分散管理配置部３１により、どのサーバ２に仮想マシン３を配置するかを後記する最適配置の探索処理によって判断する。また、定期的に現状の仮想マシン３の配置に改善余地があるか否かを判定し、仮想マシン３の配置の最適化を随時行う。これにより、拠点１の構成の変更や仮想マシン３の配置状況の変動に対して分散アプリケーション７の構成が最適になるように追従させることができる。
【００２７】
図３は、拠点管理サーバ４の概略を示す構成図である。
拠点管理サーバ４は、各拠点１−１，１−２にそれぞれ配置される。拠点管理サーバ４は、他拠点構成管理部４１と、拠点内構成管理部４２と、設備構成データベース４３と、ＶＭ配置データベース４４とを備えている。
他拠点構成管理部４１（拠点管理手段）は、他の拠点１−１の設備構成や仮想マシン３の配置状況を問い合わせると共に、分散アプリケーション管理部３２やＶＭ分散管理配置部３１からの問い合わせに応答する。
拠点内構成管理部４２（拠点管理手段）は、ＶＭ配置管理部４２１とサーバ監視部４２２とを備えており、設備構成データベース４３により、自身の拠点１の設備構成であるサーバ２の台数やスペックや接続構成の情報を管理する。ＶＭ配置管理部４２１は、拠点１内のサーバ２のＶＭ管理部２１と通信して、仮想マシン３の配置状況をＶＭ配置データベース４４として管理する。サーバ監視部４２２は、サーバ２の稼働状態を監視する。他拠点構成管理部４１は、設備構成データベース４３とＶＭ配置データベース４４とを参照する。拠点管理サーバ４により、各拠点１に配置されるサーバ２や各種中継装置、および、各サーバ２上に具現化される仮想マシン３を管理することができる。ＶＭ分散管理配置部３１（図２参照）は、他拠点構成管理部４１や拠点内構成管理部４２に、サーバ２や各種中継装置、および、各サーバ２上に具現化される仮想マシン３の配置を問い合わせる。これにより、ＶＭ分散管理配置部３１は、自身の分散アプリケーション７に係る１または複数の仮想マシン３を、好適なサーバ２上に再配置することができる。
【００２８】
図４は、設備構成データベース４３で管理される装置構成の例を示す図である。
設備構成データベース４３で管理されている装置構成は、図４のようなグラフ構造で表現されている。これを、設備構成グラフという。各サーバ２の稼働可否は、上位装置の稼働が条件となっている。設備構成データベース４３は、この拠点１に係る各中継装置の接続構成の情報を格納する。
【００２９】
例えば、或る集線スイッチ１３が故障したとき、その配下のサーバ２は、全て稼働不可となる。サーバ２−１，２−２は、共通に接続されている集線スイッチ１３が故障したときには両方とも稼働不可となる。
或る中継スイッチ１２が故障したとき、その配下のサーバ２は、全て稼働不可となる。２台のサーバ２は、共通に接続されている中継スイッチ１２が故障したときには両方とも稼働不可となる。
或るルータ１１が故障したとき、その配下のサーバ２は、全て稼働不可となる。２台のサーバ２は、共通に接続されているルータ１１が故障したときには両方とも稼働不可となる。
【００３０】
各サーバ２には仮想マシン３が配置される。仮想マシン３間の論理的な距離として、仮想マシン間距離ｄを定義する。ここで、ｄは任意の仮想マシン３を２つ選択したときに、設備構成グラフによって表現される距離で算出される。この論理的な距離は、設備構成グラフにおいて、２台の仮想マシン３の間の通信経路に存在する節の数である。例えば、同一のサーバ２の配下の仮想マシン３は、通信経路が２本の直線で示される。このとき通信経路の節の数は、１である。同一の集線スイッチ１３の配下の異なるサーバ２上の仮想マシン３は、通信経路が４本の直線で示される。このとき通信経路の節の数は、３である。
本実施形態の設備構成グラフのうち、スイッチやルータとして定義する中継装置は物理的な個々の装置として示すものであってもよいし、ソフトウェアとして機能する仮想的な装置として示すものであってもよい。設備構成グラフを、仮想的に定義したスイッチやルータのグラフ構造とすれば、各拠点１の物理構成によらず、共通する仮想的な指標で仮想マシン間距離ｄを算出可能である。
また、実際には経路上複数存在する複数の中継装置を1台の中継装置として抽象化して定義してもよい。例えば、拠点間ネットワーク５内の経路が複数の装置により構成される場合において、それらの故障率が極めて小さく、拠点１内の中継装置に比べ無視しうるようなときは、図４における拠点間転送装置６のように１台の装置として定義することは適当である。
【００３１】
同一のサーバ２−１上に配置された異なる仮想マシン３−１，３−２の仮想マシン間距離ｄは、１となる。同一の集線スイッチ１３に接続された異なる２台のサーバ２−１，２−２に配置された各仮想マシン３の仮想マシン間距離ｄは、３となる。
【００３２】
また、前記した距離計算方法については、単純に節の数を足しあわせるのではなく、各スイッチ／各ルータの性能や中継回線の転送遅延などによって節に重みを付ける計算方法も考えられる。各スイッチ／各ルータの性能や中継回線の転送遅延は、設備費用とのトレードオフの関係がある。よって、各スイッチ／各ルータの性能や中継回線の転送遅延で重み付けした距離に対して、仮想マシン間適正距離Ｄだけ離間させて各仮想マシン３を配置することで、適切なコストの廉価なスイッチ／ルータ／中継回線を活用することができる。廉価な低信頼性の各サーバ２や各中継装置に仮想マシン３を配置できるので、廉価に分散アプリケーション７を実現可能である。
【００３３】
図５は、仮想マシン３のストレス値の説明図である。
分散アプリケーション７は、仮想マシン３−１，３−４，３−５，…，３−ｎで構成される。
サーバ２には、仮想マシン３−１が配置され、更に他の分散アプリケーション７を構成する仮想マシン３ｘ，３ｙが配置される。仮想マシン３−４，３−５，…，３−ｎは、サーバ２以外に配置される。
本実施形態の仮想マシン３の配置の最適化は、同一の分散アプリケーション７を構成する２台の仮想マシン３間の距離によって生じる距離ストレス値ｓｄを最小化することで実現する。ここで仮想マシン３−１は、仮想マシン３−４，３−５，…，３−ｎとの間で、距離ストレスが生じる。
更に、他の仮想マシン３とサーバ２や中継装置などを共有することにより生じる密集度ストレス値ｓｌを、距離ストレス値ｓｄに加算してストレス値Ｓを算出し、これを最小化するとよい。これにより、異なる分散アプリケーション７を構成する仮想マシン３が同一のサーバ２に集中することを抑止可能である。仮想マシン３−１は、他の分散アプリケーション７を構成する仮想マシン３ｘ，３ｙとの間で密集ストレスが生じる。
【００３４】
距離ストレス値ｓｄは、同一の分散アプリケーション７を構成する複数の仮想マシン３間で仮想マシン間適正距離Ｄがどの程度とれているかで算出される。仮想マシン間適正距離Ｄとは、複数の仮想マシン３間における適切な論理的距離である。ここで、識別子ｉで識別される仮想マシン３を、仮想マシン（ｉ）とする。仮想マシン（ｉ）と識別子ｊの仮想マシン（ｊ）との仮想マシン間距離を、ｄ（ｉ，ｊ）とする。仮想マシン（ｉ）と仮想マシン（ｊ）の間の距離ストレス値ｓｄ（ｉ，ｊ）を、仮想マシン間適正距離Ｄと仮想マシン間距離ｄ（ｉ，ｊ）との差の絶対値に、係数ｋｄをかけたものと定義する。これを以下の式（１）に示す。
【数１】
2016053781.tif 000003
【００３５】
仮想マシン（ｉ）が、当該分散アプリケーション７を構成する他の全ての仮想マシンとの距離によって生じる距離ストレス値をｓｄ（ｉ）とする。距離ストレス値ｓｄ（ｉ）は、以下の式（２）によって算出できる。
【数２】
2016053781.tif 000004
【００３６】
なお、式（２）のΣは、同じ分散アプリケーション７に所属する他の全ての仮想マシン（ｊ）との距離ストレス値ｓｄの総和を算出することを示している。
また、他の仮想マシン３と装置を共有することにより生じる密集度ストレス値ｓｌ（ｉ）は、仮想マシン（ｉ）に対して他の全ての仮想マシン（ｊ）との間の距離の逆数の和をとる方法が考えられる。これを以下の式（３）に示す。
【数３】
2016053781.tif 000005
【００３７】
また、密集度ストレス値ｓｌ（ｉ）は、仮想マシン（ｉ）と同一の物理サーバ２を共有している仮想マシン３の数で算出する方法もある。以下、この方法で密集度ストレス値ｓｌ（ｉ）を算出することとする。
距離ストレス値ｓｄと、密集度ストレス値ｓｌとの和を、仮想マシン（ｉ）に対して生じるストレス値Ｓ（ｉ）として定義する。これを、以下の式（４）に示す。
【数４】
2016053781.tif 000006
【００３８】
ここで、距離ストレス値ｓｄ（ｉ）は、仮想マシン３間の距離を適正に保とうとするストレス値である。密集度ストレス値ｓｌ（ｉ）は、特定箇所に仮想マシン３が集中することを防ぐストレス値である。係数ｋｄを調整することで、前者を優先するか後者を優先するかを設定することができる。
或る分散アプリケーション７に対して生じているストレス値Ｓ（ａ）は、以下の式（５）で示される。
【数５】
2016053781.tif 000007
【００３９】
ここでｉは、分散アプリケーション７を構成する仮想マシン３を枚挙するものとする。このストレス値Ｓ（ａ）が最小となるように、仮想マシン３を配置することで、適切なコストの廉価なスイッチ・ルータ・中継回線を活用するように分散アプリケーション７を構成することができる。
【００４０】
図６は、仮想マシン３の配置の一例を示す図である。ここでは仮想マシン間適正距離Ｄ＝３とし、係数ｋｄ＝１０として計算している。
この一例において、分散アプリケーション７は、３台の仮想マシン３−１〜３−３で構成される。
サーバ２−１，２−２は、同一の集線スイッチ１３で接続される。サーバ２−１には、仮想マシン３−１，３−２が配置され、更に他の分散アプリケーション７に係る仮想マシン３ｘ，３ｙが配置される。サーバ２−２には、仮想マシン３−３が配置され、更に他の分散アプリケーション７に係る仮想マシン３ｚが配置される。
このとき、仮想マシン３−１に係る距離ストレス値ｓｄと、密集度ストレス値ｓｌと、ストレス値Ｓとは、以下の式（６）で算出される。
【数６】
2016053781.tif 000008
【００４１】
仮想マシン３−２に係る距離ストレス値ｓｄと、密集度ストレス値ｓｌと、ストレス値Ｓとは、以下の式（７）で算出される。
【数７】
2016053781.tif 000009
【００４２】
仮想マシン３−３に係る距離ストレス値ｓｄと、密集度ストレス値ｓｌと、ストレス値Ｓとは、以下の式（８）で算出される。
【数８】
2016053781.tif 000010
【００４３】
分散アプリケーション７に対して生じているストレス値Ｓ（ａ）は、以下の式（９）で算出される。
【数９】
2016053781.tif 000011
【００４４】
図７は、仮想マシン３の配置の一例の再配置後を示す図である。図６に示す仮想マシン３の配置に対して、仮想マシン３−１がサーバ２−２に再配置されている点が異なる。
仮想マシン３−１に係る距離ストレス値ｓｄと、密集度ストレス値ｓｌと、ストレス値Ｓとは、以下の式（１０）で算出される。
【数１０】
2016053781.tif 000012
【００４５】
仮想マシン３−２に係る距離ストレス値ｓｄと、密集度ストレス値ｓｌと、ストレス値Ｓとは、以下の式（１１）で算出される。
【数１１】
2016053781.tif 000013
【００４６】
仮想マシン３−３に係る距離ストレス値ｓｄと、密集度ストレス値ｓｌと、ストレス値Ｓとは、以下の式（１２）で算出される。
【数１２】
2016053781.tif 000014
【００４７】
分散アプリケーション７に対して生じているストレス値Ｓ（ａ）は、以下の式（１３）で算出される。
【数１３】
2016053781.tif 000015
【００４８】
図６の場合はストレス値Ｓ（ａ）が５０であるのに対して、図７の場合はストレス値Ｓ（ａ）が４９である。そのため、図７の方がより最適な配置であることが定量的に判断可能である。すなわち、図７の方が仮想マシン３の配置の偏りが解消されている。
【００４９】
また、Ｓ（ａ，ｉ，ｘ）を、分散アプリケーション７を構成する仮想マシン（ｉ）の配置をサーバ（ｘ）に変更した場合のストレス値と定義する。移動させる対象の仮想マシン（ｉ）と移動先のサーバ（ｘ）とを変化させながら、ストレス値Ｓ（ａ，ｉ，ｘ）が最小化されるようにｉとｘとを探索していくことで、この分散アプリケーション７を構成する仮想マシン３の配置を最適化することができる。
【００５０】
図８は、仮想マシン３の最適配置の探索処理を示すフローチャートである。
分散アプリケーション管理部３２は、ＶＭ分散管理配置部３１により、以下に示した最適配置の探索処理を繰り返す。
ステップＳ１０において、ＶＭ分散管理配置部３１は、例えば式（５）により、現在の分散アプリケーション７のストレス値Ｓ（ａ）を算出する。
ステップＳ１１において、ＶＭ分散管理配置部３１は、現在のストレス値を最小ストレス値に代入する。
【００５１】
ＶＭ分散管理配置部３１は、ステップＳ１２〜Ｓ１９の処理を、分散アプリケーション７を構成する全ての仮想マシン３に繰り返す。このとき、処理対象の仮想マシン３のことを、当該ＶＭ（ｉ）と記載する。ｉは、この仮想マシン３のインデックスである。
ＶＭ分散管理配置部３１は、ステップＳ１３〜Ｓ１８の処理を、システムの全てのサーバ２について繰り返す。このとき、処理対象のサーバ２のことを、当該サーバ（ｘ）と記載する。ｘは、このサーバ２のインデックスである。
【００５２】
ステップＳ１４において、ＶＭ分散管理配置部３１は、当該サーバ（ｘ）に当該ＶＭ（ｉ）を配置したときのストレス値Ｓ（ａ，Ｉ，ｘ）を算出する。
ステップＳ１５において、ＶＭ分散管理配置部３１は、当該ストレス値が最小ストレス値未満であるか否かを判断する。ＶＭ分散管理配置部３１は、当該ストレス値が最小ストレス値未満でなかったならば（Ｎｏ）、ステップＳ１８の処理を行い、当該ストレス値が最小ストレス値未満であったならば（Ｙｅｓ）、ステップＳ１６の処理を行う。
【００５３】
ステップＳ１６において、ＶＭ分散管理配置部３１は、当該ストレス値を最小ストレス値の変数に代入する。
ステップＳ１７において、ＶＭ分散管理配置部３１は、ｉｍｉｎとｘｍｉｎとを保持する。ここでｉｍｉｎは、最小ストレス値を与える当該仮想マシン３のインデックス変数である。ｘｍｉｎは、最小ストレス値を与える当該サーバ２のインデックス変数である。
ステップＳ１８において、ＶＭ分散管理配置部３１は、システムの全てのサーバ２について繰り返したか否かを判断する。ＶＭ分散管理配置部３１は、システムの全てのサーバ２について繰り返していなかったならば、ステップＳ１３に戻る。
ステップＳ１９において、ＶＭ分散管理配置部３１は、分散アプリケーション７の全ての仮想マシン３について繰り返したか否かを判断する。ＶＭ分散管理配置部３１は、分散アプリケーション７の全ての仮想マシン３について繰り返していなかったならば、ステップＳ１２に戻る。
【００５４】
ステップＳ２０において、ＶＭ分散管理配置部３１は、最小ストレス値が現在のストレス値未満であるか否かを判断する。ＶＭ分散管理配置部３１は、最小ストレス値が現在のストレス値未満ならば（Ｙｅｓ）、ステップＳ２１の処理を行い、最小ストレス値が現在のストレス値未満でなかったならば（Ｎｏ）、図８の処理を終了する。
ステップＳ２１において、ＶＭ分散管理配置部３１は、ＶＭ（ｉｍｉｎ）をサーバ（ｘｍｉｎ）へ再配置する。すなわち、最小ストレス値を与えるように、仮想マシン３をサーバ２に再配置する。ＶＭ分散管理配置部３１は、拠点管理サーバ４のＶＭ配置管理部４２１に、ＶＭ（ｉｍｉｎ）をサーバ（ｘｍｉｎ）に配置するように指示する。ＶＭ分散管理配置部３１は、ステップＳ２１の処理が終了すると、図８の処理を終了する。
【００５５】
図８に示した最適配置の探索処理のフローチャートは、分散アプリケーション７を構成する全ての仮想マシン３と配置先候補のサーバ２に対して総当たりで最適配置を探索する手順を示している。つまり、１つの仮想マシン３の再配置により最もストレス値が低くなる再配置パターン（ｉｍｉｎ，ｘｍｉｎ）を全探索で発見し、現在のストレス値と比較して再配置後の構成でストレス値が改善する場合には、仮想マシン３を１つ再配置する。
例えば、図８に示した最適配置の探索処理をコンピュータプログラムとして実装して、ＣＰＵ（Central Processing Unit）に実行させることにより、分散アプリケーション管理部３２とＶＭ分散管理配置部３１とが具現化する。分散アプリケーション管理部３２が定期的に最適配置の探索処理（図８参照）を実行することにより、分散アプリケーション７の仮想マシン３の配置は、徐々に最適構成に近づいてゆく。
なお、図８の処理は一例であり、再配置の探索方法についてはｉｍｉｎ，ｘｍｉｎの組をランダムで探索する方法なども考えられる。
【００５６】
図４に戻り、サーバ２−１の故障に備えて、分散アプリケーション７を構成する仮想マシン３−２，３−３を異なる２台のサーバ２−１，２−２に分散して配置する場合を考える。このとき、図４で示したように、２台の仮想マシン３−２，３−３間には、サーバ２＝集線スイッチ１３＝サーバ２の３個の節が存在する。このときの仮想マシン間適正距離Ｄは、３となる。
【００５７】
激甚災害による拠点１−１全体の動作停止に備えて、分散アプリケーション７を構成する仮想マシン３−ｎを、別の拠点１−２の配下のサーバ２に配置する場合を考える。このとき、図４で示したように、２台の仮想マシン３−１，３−ｎ間には、サーバ２＝集線スイッチ１３＝中継スイッチ１２＝ルータ１１＝拠点間転送装置６＝ルータ１１＝中継スイッチ１２＝集線スイッチ１３＝サーバ２の９個の節が存在する。このときの仮想マシン間適正距離Ｄは、９となる。
【００５８】
図示していないが、例えば集線スイッチ１３の故障に備えて、分散アプリケーション７を構成する仮想マシン３を異なる２台の集線スイッチ１３の配下のサーバ２に分散して配置する場合を考える。このとき２台の仮想マシン３間には、サーバ２＝集線スイッチ１３＝中継スイッチ１２＝集線スイッチ１３＝サーバ２の５個の節が存在する。このときの仮想マシン間適正距離Ｄは、５となる。この仮想マシン間適正距離Ｄは、分散アプリケーション７毎に設定される。
分散アプリケーション７が、例えばＶｏＩＰ（Voice over Internet Protocol）のように低レイテンシが要求され、かつ装置の故障時にサービス（通話）を継続することが求められない場合を考える。このときの仮想マシン間適正距離Ｄは、３であることが望ましい。これにより、分散アプリケーション７を構成する各仮想マシン３は、同一のサーバ２に集中して配置されず、かつ、最も小さい論理的距離となる。
【００５９】
分散アプリケーション７が、例えば契約者データベースのように、いずれかの装置の故障時にも継続してサービスを継続することが強く求められるが、低レイテンシが要求されない場合を考える。このときの仮想マシン間適正距離Ｄは、５または７であることが望ましい。仮想マシン間適正距離Ｄが５のとき、分散アプリケーション７を構成する各仮想マシン３は、異なる集線スイッチ１３下のサーバ２に分散して配置され、かつ、最も小さい論理的距離となる。いずれかの集線スイッチ１３またはサーバ２が故障しても、１台の仮想マシン３が稼働停止するのみであり、分散アプリケーション７は、それ以外の仮想マシン３で稼働を継続可能である。
仮想マシン間適正距離Ｄが７のとき、分散アプリケーション７を構成する各仮想マシン３は、異なる中継スイッチ１２下のサーバ２に分散して配置され、かつ、最も小さい論理的距離となる。いずれかの中継スイッチ１２、集線スイッチ１３またはサーバ２が故障しても、１台の仮想マシン３が稼働停止するのみであり、分散アプリケーション７は、それ以外の仮想マシン３で稼働を継続可能である。仮想マシン間適正距離Ｄを選択することで、分散アプリケーション７は、装置の故障に対する所定の耐性と、所定のレイテンシとを得ることができる。
【００６０】
本実施形態では、仮想マシン３間の適切な距離の維持と特定のサーバ２への密集回避を、ストレス値という定量評価尺度を用いることで数値的に表現している。これにより、最適化手順において、仮想マシン３の絶対的な位置を意識する必要が無くなる。よって、拠点１の構成変化に対して柔軟に対応可能である。
【００６１】
本実施形態の仮想化インフラシステム８では、分散アプリケーション７を構成する仮想マシン３を好適に配置することができる。また、本発明は、拠点１や各中継装置やサーバ２の構成が変化した場合でも有効である。そのため、単一装置が故障した場合や、激甚災害により拠点１の構成が変化した場合であっても、仮想化インフラシステム８は、自律的に変化後の構成に追従しながら仮想マシン３を好適に配置することができる。
【００６２】
（変形例）
本実施の形態に係る仮想化インフラシステム８は、前記したような処理を実行させるプログラムによって実現することができ、そのプログラムをコンピュータによる読み取り可能な記録媒体に記憶して提供することが可能である。また、そのプログラムを、インターネットなどのネットワークを通して提供することも可能である。
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の（ａ）〜（ｃ）のようなものがある。
【００６３】
（ａ）  本発明は、仮想マシン３で構成された分散アプリケーション７に限定されない。各サーバ２がプログラムを実行して具現化した各処理部によって分散アプリケーション７を構成し、この分散アプリケーション７の各処理部の配置に、本発明を適用してもよい。
（ｂ）  本発明の設備構成グラフは、物理的なスイッチやルータのグラフ構造で示されていてもよい。設備構成グラフを物理的なスイッチやルータのグラフ構造とすることで、拠点１内に配備された各物理装置の故障に対する分散アプリケーション７の耐性を容易に評価可能となる。このとき、ＶＭ分散管理配置部３１は、仮想マシン３が配置されるサーバ２間に存在する中継装置の数によって、この論理的距離を算出する。
（ｃ）  本発明の仮想マシン３間の距離は、論理的距離に限られず、物理的な距離であってもよい。これにより、所定の距離だけ離れた各拠点１に、分散アプリケーション７を構成する各仮想マシン３を分散配置することができる。よって分散アプリケーション７は、激甚災害に対する耐性を得ることができる。
【符号の説明】
【００６４】
１  拠点
１１  ルータ
１２  中継スイッチ
１３  集線スイッチ
２  サーバ
２１  ＶＭ管理部
３  仮想マシン  （処理部）
３１  ＶＭ分散管理配置部  （分散配置手段）
３２  分散アプリケーション管理部
４  拠点管理サーバ
４１  他拠点構成管理部  （拠点管理手段）
４２  拠点内構成管理部  （拠点管理手段）
４２１  ＶＭ配置管理部
４２２  サーバ監視部
４３  設備構成データベース
４４  ＶＭ配置データベース
５  拠点間ネットワーク
６  拠点間転送装置
７  分散アプリケーション
８  仮想化インフラシステム  （分散アプリケーション配置システム）
【図１】
2016053781.tif 000016
【図２】
2016053781.tif 000017
【図３】
2016053781.tif 000018
【図４】
2016053781.tif 000019
【図５】
2016053781.tif 000020
【図６】
2016053781.tif 000021
【図７】
2016053781.tif 000022
【図８】
2016053781.tif 000023