(57)【要約】      （修正有）【課題】複数の仮想インスタンスの各々に効率的に機能を割り当てること。【解決手段】同一又は複数の事業者の複数のクラウドに分散して配備され、各々に複数の機能のいずれかが割り当てられる複数の仮想インスタンスのうちの一の仮想インスタンスが、仮想インスタンスの構成情報を含むイメージ情報を取得する処理S12と、一の仮想インスタンスが、複数の仮想インスタンスの各々の現状の構成情報を取得する処理S23と、取得した現状の構成情報と、イメージ情報における構成情報とに基づいて、一の仮想インスタンスが、複数の仮想インスタンスごとに機能を特定する処理S25と、一の仮想インスタンスが、特定した機能を残りの仮想インスタンスの各々に通知する処理S26とをコンピュータに実行させる配備プログラムによる。【選択図】図１４
2017078898.tif 000002
【特許請求の範囲】
【請求項１】
同一又は複数の事業者の複数のクラウドに分散して配備され、各々に複数の機能のいずれかが割り当てられる複数の仮想インスタンスのうちの一の仮想インスタンスが、前記仮想インスタンスの外部と内部の各々の構成を特定する構成情報であって、前記機能と対応付けられた構成情報を含むイメージ情報を取得する処理と、
前記一の仮想インスタンスが、前記複数の仮想インスタンスの各々の現状の構成情報を取得する処理と、
取得した前記現状の構成情報と、前記イメージ情報における前記構成情報とに基づいて、前記一の仮想インスタンスが、前記複数の仮想インスタンスごとに前記機能を特定する処理と、
前記一の仮想インスタンスが、特定した前記機能を前記残りの仮想インスタンスの各々に通知する処理と、
をコンピュータに実行させる配備プログラム。
【請求項２】
前記機能を特定する処理は、
前記イメージ情報における前記構成情報のうち、取得した前記現状の構成情報に最も類似した構成情報を求め、求めた前記構成情報に対応する前記機能を特定することにより行われることを特徴とする請求項１に記載の配備プログラム。
【請求項３】
前記イメージ情報は、前記複数の仮想インスタンスの各々に前記複数の機能のいずれかを実行するように指示する指示情報を含み、
前記一の仮想インスタンスが、前記指示情報に基づき、特定した自身の前記機能を実行する処理を更に有することを特徴とする請求項１又は請求項２に記載の配備プログラム。
【請求項４】
前記イメージ情報は、
前記複数の仮想インスタンスの各々にインストールされる同一のオペレーティングシステムと、
前記オペレーティングシステムに前記複数の機能のいずれかを追加する追加情報であって、前記複数の機能の各々に対応する複数の追加情報とを有し、
前記一の仮想インスタンスは、特定した自身の前記機能に対応する前記追加情報を取得することにより、特定した自身の前記機能を実行する前記処理を行うことを特徴とする請求項３に記載の配備プログラム。
【請求項５】
同一又は複数の事業者の複数のクラウドに分散して配備され、各々に複数の機能のいずれかが割り当てられる複数の仮想インスタンスのうちの一を除いた残りの仮想インスタンスが、前記複数の仮想インスタンスの各々に前記複数の機能のいずれかを実行するように指示する指示情報を含むイメージ情報を取得する処理と、
前記残りの仮想インスタンスが、自身の外部と内部の各々の構成を特定する現状の構成情報を前記一の仮想インスタンスに通知することにより、自身の前記機能を前記一の仮想インスタンスに問い合わせる処理と、
前記問い合わせにより前記一の仮想インスタンスから通知された前記機能を受けて、前記残りの仮想インスタンスが、前記指示情報に基づいて、通知された前記機能を実行する処理と、
をコンピュータに実行させる配備プログラム。
【請求項６】
同一又は複数の事業者の複数のクラウドに、各々に複数の機能のいずれかが割り当てられる複数の仮想インスタンスを配備し、
前記複数の仮想インスタンスの各々が、前記仮想インスタンスの外部と内部の各々の構成を特定する構成情報であって、前記機能と対応付けられた構成情報と、前記複数の仮想インスタンスの各々に前記複数の機能のいずれかを実行するように指示する指示情報とを含むイメージ情報を取得し、
前記複数の仮想インスタンスのうち、一の仮想インスタンスを除いた残りの仮想インスタンスが、前記一の仮想インスタンスに自身の現状の前記構成情報を通知することにより、自身の前記機能を前記一の仮想インスタンスに問い合わせ、
前記一の仮想インスタンスが、通知された前記現状の構成情報と、前記イメージにおける前記構成情報とに基づいて、前記複数の仮想インスタンスごとに前記機能を特定し、
前記一の仮想インスタンスが、特定した前記機能を前記残りの仮想インスタンスの各々に通知し、
前記一の仮想インスタンスから通知された前記機能を受けて、前記残りの仮想インスタンスが、前記指示情報に基づいて、通知された前記機能を実行する、
配備方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配備プログラム及び配備方法に関する。
【背景技術】
【０００２】
クラウドサービスにおいては、物理サーバの上に仮想サーバや仮想スイッチ等の複数の仮想インスタンスが配備される。
【０００３】
これら複数の仮想インスタンスで提供される機能の一つにクラスタがある。クラスタは、相互に接続された複数の仮想インスタンスによって形成される仮想的な計算機システムである。例えば、webサーバ、AP(Application)サーバ、及びDB(Database)サーバの各々の機能を有する仮想インスタンスを作成すれば、web三層構成のクラスタを実現でききる。
【０００４】
クラスタを形成する各々の仮想インスタンスは、複数の異なるクラウド事業者が提供する複数のクラウドに分散して配備されることがある。また、クラウド事業者が同一の場合でも、その事業者が複数の拠点を有しているときには、各拠点のクラウドに複数の仮想インスタンスが分散して配備されることがある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１５−５１５０３７公報
【特許文献２】特開２０１１−２４２９６４号公報
【特許文献３】特表２０１４−５１８４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、前述のように複数のクラウドに仮想インスタンスが分散されていると、各仮想インスタンス同士が通信できるようにするためにユーザが手動で各仮想インスタンスにIP(Internet Protocol)アドレスを割り当てなければならず、非効率的である。
【０００７】
更に、webサーバやAPサーバ等のように各々の仮想インスタンスが異なる機能を有している場合には、その機能を実現するために仮想インスタンスのOS(Operating System)に追加するファイルが仮想インスタンスごとに異なる。そのため、ユーザが仮想インスタンスごとに異なるファイルを手動でインストールする必要があり、ユーザにとって不便である。
【０００８】
また、これらの問題を解消するためにIPアドレスの割り当てやファイルのインストール等の操作を自動化しようとしても、クラウドごとにAPI(Application Programing Interface)が異なる場合には、APIを介したIPアドレスの割り当て等を定型化することができない。
【０００９】
そこで、一つの側面では、複数の仮想インスタンスの各々に効率的に機能を割り当てることを目的とする。
【課題を解決するための手段】
【００１０】
一つの側面では、同一又は複数の事業者の複数のクラウドに分散して配備され、各々に複数の機能のいずれかが割り当てられる複数の仮想インスタンスのうちの一の仮想インスタンスが、前記仮想インスタンスの外部と内部の各々の構成を特定する構成情報であって、前記機能と対応付けられた構成情報を含むイメージ情報を取得する処理と、前記一の仮想インスタンスが、前記複数の仮想インスタンスの各々の現状の構成情報を取得する処理と、取得した前記現状の構成情報と、前記イメージ情報における前記構成情報とに基づいて、前記一の仮想インスタンスが、前記複数の仮想インスタンスごとに前記機能を特定する処理と、前記一の仮想インスタンスが、特定した前記機能を前記残りの仮想インスタンスの各々に通知する処理とをコンピュータに実行させる配備プログラムが提供される。
【発明の効果】
【００１１】
複数の仮想インスタンスの各々に効率的に機能を割り当てることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、第１実施形態に係る一つのクラウドのハードウェア構成図である。
【図２】図２は、第１実施形態に係るクラウドが分散された場合の機能構成図である。
【図３】図３は、第１実施形態に係る仮想インスタンスの機能構成図である。
【図４】図４は、第１実施形態において、クラスタ種別と、そのクラスタを実現するために各仮想インスタンスに割り当てられる機能とを模式的に示す図である。
【図５】図５は、第１実施形態で使用するクラスタイメージについて模式的に示す図である。
【図６】図６は、第１実施形態に係る構成情報の模式図である。
【図７】図７は、第１実施形態に係るクラスタイメージの作成方法について模式的に説明するための図である。
【図８】図８は、第１実施形態においてm = 7の場合にn次元空間に第１の点Xkの各々をプロットした図である。
【図９】図９は、第１実施形態においてn次元空間に第１の点Xkと第２の点Ykの各々をプロットした図である。
【図１０】図１０は、第１実施形態において、n次元空間中の各ベクトルCIa、CJbを例示した図である。
【図１１】図１１は、第１実施形態において、n次元空間内で組み合わされたベクトルCIa、CJbを例示する図である。
【図１２】図１２は、第１実施形態において、ユーザが参照するユーザガイド表の一例を示す図である。
【図１３】図１３は、第１実施形態に係る配備方法において、ユーザの処理の一例を示すフローチャートである。
【図１４】図１４は、第１実施形態に係る配備方法において、管理サーバに指定された仮想インスタンスの処理の一例を示すフローチャートである。
【図１５】図１５は、第１実施形態に係る配備方法において、管理サーバ以外の仮想インスタンスの処理の一例を示すフローチャートである。
【図１６】図１６は、ホットスタンバイクラスタに第１実施形態に係る配備方法を適用した場合の模式図である。
【図１７】図１７は、web三層構成のクラスタに第１実施形態に係る配備方法を適用した場合の模式図である。
【図１８】図１８は、第２実施形態に係るシステムを模式的に示す図である。
【発明を実施するための最良の形態】
【００１３】
（第１実施形態）
本実施形態では、以下のように複数のクラウドに複数の仮想インスタンスを分散して配備する。
【００１４】
[クラウドシステムの構成]
図１は、本実施形態に係る一つのクラウドのハードウェア構成図である。
【００１５】
図１に示すように、このクラウド１０は、拠点Lに設置された複数の物理サーバ１１と、各物理サーバ１１同士を接続するネットワーク１２とを有する。
【００１６】
各物理サーバ１１は、その上に複数の仮想インスタンスを起動するものであって、CPU(Central Processing Unit)１３、メモリ１４、ストレージ装置１５、及びNIC(Network Interface Card)１６を有する。
【００１７】
このうち、CPU１３は、メモリ１４と協働することにより、仮想インスタンスを起動するための仮想化プログラムを実行する。
【００１８】
また、メモリ１４は、例えばRAM(Random Access Memory)であって、その上に仮想化プログラムが展開される。仮想化プログラムがメモリ１４に展開されると、CPU１３とメモリ１４とが協働して、一つの物理サーバ１１に一又は複数の仮想インスタンスが起動される。
【００１９】
そして、ストレージ装置１５は、例えばハードディスクであって、仮想化プログラムが記憶される。
【００２０】
一方、NIC１６は、ネットワーク１２に物理サーバ１１を接続することにより、各物理サーバ１１同士が相互に通信できるようにするための通信デバイスである。
【００２１】
そして、ネットワーク１２は、例えばLAN(Local Area Network)である。
【００２２】
本実施形態では、このようなクラウド１０が、複数の拠点に分散して管理されることを想定している。
【００２３】
図２は、このようにクラウド１０が分散された場合の機能構成図である。
【００２４】
図２の例では、複数のクラウド１０が、同一又は複数の事業者により、複数の拠点L1〜L5の各々において管理されている。各拠点L1〜L5は、地理的に離れた複数の地点でもよいし、同一のデータセンタ内の複数のエリアでもよい。
【００２５】
また、各クラウド１０にはそれぞれ仮想インスタンス１８が起動される。仮想インスタンス１８は、前述のように物理サーバ１１において仮想化プログラムを実行することにより起動され、この例では複数の仮想インスタンス１８が複数のクラウド１０に分散して配備される。
【００２６】
そして、複数の仮想インスタンス１８の各々は、ネットワーク１７により相互に接続される。そのネットワーク１７としては、例えばインターネット、LAN、WAN(Wide Area Network)、及びVPN(Virtual Private Network)等を採用し得る。
【００２７】
図３は、一つの仮想インスタンス１８の機能構成図である。
【００２８】
図３に示すように、仮想インスタンス１８は、仮想CPU３６、仮想メモリ３７、仮想ディスク３８、及び仮想NIC３９を有する。
【００２９】
このうち、仮想CPU３６は、仮想メモリ３７と協働して後述の配備プログラムを実行する。
【００３０】
また、仮想ディスク３８は、仮想的なハードディスクであって、後述の配備プログラムを記憶する。
【００３１】
なお、その配備プログラムをコンピュータが読み取り可能な記録媒体１９に記憶させておき、仮想インスタンス１８に記録媒体１９の配備プログラムを読み取らせるようにしてもよい。
【００３２】
そのような記録媒体１９としては、例えばCD-ROM(Compact Disc - Read Only Memory)、DVD(Digital Versatile Disc)、及びUSB(Universal Serial Bus)メモリ等の物理的な可搬型記憶媒体がある。また、フラッシュメモリ等の半導体メモリやハードディスクドライブを記憶媒体１９として使用してもよい。これらの記憶媒体１９は、物理的な形態を持たない搬送波のような一時的な媒体ではない。
【００３３】
更に、公衆回線、インターネット、及びLAN等に接続された装置に配備プログラムを記憶させておき、仮想インスタンス１８が配備プログラムを読み出して実行するようにしてもよい。
【００３４】
一方、仮想NIC３９は、ネットワーク１７に仮想インスタンス１８を接続することにより、各仮想インスタンス１８同士が相互に通信できるようにするための仮想的な通信デバイスである。
【００３５】
なお、前述の仮想CPU３６の動作周波数、仮想メモリ３７の容量、及び仮想ディスク３８の容量、及び仮想NIC３９の個数は、各クラウド１０が提供する範囲内においてユーザが設定することができる。
【００３６】
ここで、前述の複数の仮想インスタンス１８の各々は、ネットワーク１７により相互に接続されることにより、一つのクラスタを形成する。
【００３７】
図４は、クラスタ種別と、そのクラスタを実現するために各仮想インスタンス１８に割り当てられる機能３４とを模式的に示す図である。
【００３８】
クラスタ種別は、複数の仮想インスタンス１８によって実現される仮想計算機の機能であり、例えばweb三層構成、大規模webサーバ、ホットスタンバイクラスタ、Hadoop、及び並列計算等がある。
【００３９】
このうち、web三層構成のクラスタを実現するには、webサーバ、APサーバ、及びDBサーバの各々の機能を三つの仮想インスタンス１８の各々に割り当てればよい。
【００４０】
また、並列計算のクラスタを実現するには、計算ノードの機能を複数の仮想インスタンス１８に割り当てればよい。
【００４１】
[クラスタイメージ]
図５は、本実施形態で使用するクラスタイメージについて模式的に示す図である。
【００４２】
クラスタイメージ２０は、各仮想インスタンス１８にインストールされるイメージ情報の一例であって、複数の仮想インスタンス１８でクラスタを実現するためのイメージファイルである。
【００４３】
そのクラスタイメージ２０は、プログラム部分２１とデータ部分２２とを有する。
【００４４】
このうち、プログラム部分２１は、インターフェース２３、構成管理処理２４、及び評価関数処理２５を有する。
【００４５】
インターフェース２３は、REST API (Representational State Transfer API)により他の仮想インスタンス１８と通信を行う。
【００４６】
また、構成管理処理２４は、指示情報の一例であって、複数の機能３４（図４参照）のいずれかを仮想インスタンス１８に実現させる。
【００４７】
その構成管理処理２４は、後述の管理サーバが実行する管理処理２４ａと、管理サーバ以外の仮想インスタンス１８が実行するインスタンス処理２４ｂとに分けられる。
【００４８】
管理処理２４ａとインスタンス処理２４ｂのどちらが実行されるかは、インターフェース２３を介してREST APIでユーザにより決定される。
【００４９】
そして、評価関数処理２５は、後述のように各仮想インスタンス１８の現状の構成情報に基づいて、各仮想インスタンス１８にとって最適な機能３４（図４参照）を特定する。
【００５０】
一方、データ部２２は、OS(Operating System)イメージ３１、追加情報３２、及び情報データベース３３を有する。
【００５１】
このうち、OSイメージ３１は、複数の仮想インスタンス１８のそれぞれに共通にインストールされる同一のOSのディスクイメージである。
【００５２】
OSは特に限定されないが、この例ではLinux(登録商標)の任意のディストリビューションをOSとして採用し得る。
【００５３】
また、追加情報３２は、OSイメージ３１に機能３４（図４参照）を追加するための情報であり、複数の機能３４の各々に対応して複数設けられる。
【００５４】
例えば、機能３４を実現するためにOSイメージ３１のファイルツリーにマージされる別のファイルツリーや、OSイメージ３１の所定の設定ファイルの設定情報等が、追加情報３２の一例である。
【００５５】
OSがLinux系のオペレーティングシステムであり、機能３４がwebサーバの場合には、ファイルツリー/etc/httpd/と、ディレクトリhttpdにサーバプログラムとしてインストールされるApache(登録商標)が追加情報３２となる。
【００５６】
そして、情報データベース３３には、仮想インスタンス１８が実現する複数の機能３４（図４参照）と、その機能３４に適した仮想インスタンス１８の構成情報３５とが対応付けて格納される。
【００５７】
構成情報３５は、仮想インスタンス１８の外部の構成を特定する外部情報４１と、仮想インスタンス１８の内部の構成を特定する内部情報４２とに分けられる。
【００５８】
図６は、構成情報３５の模式図である。
【００５９】
図６に示すように、外部情報４１は、例えば(o1)クラウドの種類、(o2)クラウドの公開性、(o3)グローバルIPアドレス、(o4)グローバルIPアドレスの個数、(o5)ローカルIPアドレス、及び(o6)ローカルIPアドレスの個数が含まれる。
【００６０】
このうち、「(o1)クラウドの種類」は、仮想インスタンス１８が起動しているクラウド１０の種類であり、例えばamazon社のAWS、OpenStack、及びS5等がある。
【００６１】
また、「(o2)クラウドの公開性」は、仮想インスタンス１８が起動しているクラウド１０がパブリッククラウドとプライベートクラウドのどちらであるかを示す。
【００６２】
更に、「(o3)グローバルIPアドレス」は、仮想インスタンス１８に割り当てられたグローバルIPアドレスであり、その個数が「(o4)グローバルIPアドレスの個数」に格納される。
【００６３】
同様に、「(o5)ローカルIPアドレス」は、仮想インスタンス１８に割り当てられたローカルIPアドレスであり、その個数が「(o6)ローカルIPアドレスの個数」に格納される。
【００６４】
一方、内部情報４２は、例えば(i1)クラスタ種別、(i2)リソース、及び(i3)NICの個数が含まれる。
【００６５】
このうち、「(i1)クラスタ種別」は、その仮想インスタンス１８が属するクラスタの種別である。
【００６６】
また、「(i2)リソース」は、その仮想インスタンス１８に割り当てられている仮想CPU３６の動作周波数、仮想メモリ３７の容量、及び仮想ディスク３８の容量等である。
【００６７】
そして、「(i3)NICの個数」は、その仮想インスタンス１８に割り当てられた仮想NICの個数である。
【００６８】
次に、このクラスタイメージ２０の作成方法について説明する。
【００６９】
図７は、クラスタイメージ２０の作成方法について模式的に説明するための図である。
【００７０】
クラスタイメージ２０は、過去に複数のクラウド１０に配備された実績のある仮想インスタンス１８の各々から必要なデータを抽出することで作成される。このとき使用する仮想インスタンス１８は、各クラウド１０にやみくもに配備されておらず、仮想インスタンス１８の機能を実現するのに最も適したクラウド１０に配備される。
【００７１】
例えば、三つの仮想インスタンス１８でweb三層構成のクラスタを形成する場合を考える。
【００７２】
このとき、DBサーバの機能を担う仮想インスタンス１８は、webサーバ用の仮想インスタンス１８と比較して多くのデータを保存するため、webサーバ用の仮想インスタンス１８よりも大きな容量の仮想ディスクを提供できるクラウド１０に配備する。
【００７３】
また、このようなリソースの資源量以外にも、仮想インスタンス１８を外部に公開してよいかという観点からも、仮想インスタンス１８を配備するクラウド１０を決める。例えば、webサーバの機能を担う仮想インスタンス１８は、外部からHTTP(Hyper Text Transfer Protocol)リクエストを受信できるようにするために、パブリッククラウドに配備するのが好ましい。
【００７４】
そして、ユーザは、これらの仮想インスタンス１８の構成情報３５を、仮想インスタンス１８の機能３４と対応付けてクラスタイメージ２０に格納する。
【００７５】
例えば、前述のように機能３４が「DBサーバ」の場合には、構成情報３５の「(i1)リソース」に、DBサーバ用の仮想インスタンス１８のリソース量を機能「DBサーバ」と対応付けて格納すればよい。(i1)以外の項目についてもこれと同様に構成情報３５に格納する。
【００７６】
また、機能３４が「webサーバ」の場合には、構成情報３５の「(o2)クラウドの公開性」にパブリッククラウドである旨を格納すればよい。
【００７７】
そして、「webサーバ」、「DBサーバ」、及び「APサーバ」が形成するのはweb三層構成のクラスタであるから、これらの各機能３４に対応する構成情報３５の「(i1)クラスタ種別」に、ユーザが「web三層構成」を格納する。
【００７８】
このような作業をユーザが行うことで、機能３４に対応した構成情報３５をクラスタイメージ２０に格納することができる。また、その構成情報３５には「(i1)クラスタ種別」が含まれていることから、機能３４と構成情報３５とが複数のクラスタ種別の各々に対応付けられることになる。
【００７９】
更に、ユーザは、各々の仮想インスタンス１８に共通にインストールされている同一のOSのディスクイメージをOS共通部３１に格納する。
【００８０】
また、ユーザは、各仮想インスタンス１８のOSにインストールされている追加情報３２を、その仮想インスタンス１８の機能３４と対応付けてクラスタイメージ２０に格納する。
【００８１】
例えば、機能３４がwebサーバの場合には、サーバプログラムであるApacheとそれがインストールされるディレクトリ/etc/httpd/が追加情報３２となり、ユーザがその追加情報３２を機能「webサーバ」と対応付けてクラスタイメージ２０に格納する。
【００８２】
ここまでの処理で、過去の実績のある仮想インスタンス１８に基づいて、クラスタイメージ２０のデータ部分２２が得られたことになる。
【００８３】
なお、クラスタイメージ２０のプログラム部分２１は、全ての仮想インスタンス１８に共通のプログラムであり、ユーザによってクラスタイメージ２０に格納される。
【００８４】
以上により、クラスタイメージ２０が完成する。
【００８５】
[評価関数処理]
次に、評価関数処理２５について説明する。
【００８６】
本実施形態では、ユーザが複数の新たな仮想インスタンス１８を複数のクラウド１０に任意に配備したとき、新たな仮想インスタンス１８の各々に割り当てる最適な機能を特定するために、評価関数処理２５を使用する。
【００８７】
まず、一つのクラスタを構成する仮想インスタンス１８の個数がm個であるとする。例えば、三層web構成のクラスタにおいては、webサーバ、APサーバ、及びDBサーバの仮想インスタンス１８が必要となるため、m = 3となる。
【００８８】
また、前述の構成情報３５（図６参照）において、外部情報４１と内部情報４２を合わせた項目の数がn個であるとする。図６の例では、n = 9である。
【００８９】
そして、クラスタイメージ２０に格納されている構成情報３５のn個の項目を成分とするn次元空間中の第１の点Xk= (x1, x2, …, xn)を考える。図６の例では、Xk = (クラウドの種類, クラウドの公開性, グローバルIPアドレス…, NICの個数)である。
【００９０】
また、k = 1, 2, …, mであり、m個の第１の点Xkの各々は、クラスタイメージ２０を作成したときの実績のあるm個の仮想インスタンス１８の各々に対応する。
【００９１】
なお、構成情報３５のn個の項目(x1, x2, …, xn)の各々は、ユーザの判断で任意に数値化しておく。例えば、「(o1)クラウドの種類」については、AWSが１、OpenStackが２、S5が３等とすればよい。他の項目についても同様である。
【００９２】
図８は、m = 7の場合にn次元空間に第１の点Xkの各々をプロットした図である。
【００９３】
このn次元空間においては、各仮想インスタンス１８の構成情報３５が第１の点Xkの位置で表される。
【００９４】
更に、ユーザが任意に配備したm個の現状の仮想インスタンス１８についても、それらの構成情報３５をn次元空間中の第２の点Yk = (y1, y2, …, yn)で表す。各成分y1, y2, …, ynは、それぞれ現状の仮想インスタンス１８における構成情報３５のn個の項目である。また、これらの項目は、第１の点Xkと同じ方法でユーザによって予め数値化される。
【００９５】
図９は、n次元空間に第１の点Xkと第２の点Ykの各々をプロットした図である。
【００９６】
第１の点Xkと第２の点Ykとの距離が近いほど、これら二つの点で表される構成情報３５同士が近いということになる。
【００９７】
よって、距離が近い二点Xi、Yjを求め、第１の点Xiに対応する過去の実績のある仮想インスタンス１８の機能３４を、第２の点Yjに対応する新たな仮想インスタンス１８に割り当てれば、その機能を実現するのに最適な新たな仮想インスタンス１８を特定できる。
【００９８】
但し、各点Xi、Yjの総数は2m個あるため、これらの点から二つを選ぶ組み合わせの総数はm!個となる。よって、各点Xi、Yjのなかから距離が最短となる組み合わせを試行錯誤で見つけようとすると計算時間が莫大となる。
【００９９】
そこで、本実施形態では、以下のように距離とは別の指標を用いることにより、各点Xi、Yjのうちで最も類似した二点を見つける。
【０１００】
まず、m個の第１の点Xkの重心Gを次の式（１）から算出する。
【０１０１】
【数１】
2017078898.tif 000003
そして、重心Gからa番目の第１の点Xaに至る第１のベクトルをCIaとし、重心Gからb番目の第２の点Ybに至る第２のベクトルをCJbとする。
【０１０２】
図１０は、n次元空間においてこれらのベクトルCIa、CJbを例示した図である。
【０１０３】
次に、第１のベクトルCIaを一つ選択し、各ベクトルCIa、CJbのコサイン類似度cos(CIa、CJb)を考える。コサイン類似度cos(CIa、CJb)は、次の式（２）で定義される。
【０１０４】
【数２】
2017078898.tif 000004
第１のベクトルCIaを固定したとき、複数の第２のベクトルCJbのうちでコサイン類似度cos(CIa、CJb)を最も大きくする第２のベクトルCJbは、第１のベクトルCIaと向きが最も近い。よって、その第２のベクトルCJbの終点Ybが表す構成情報３５は、第１のベクトルCIaの終点Xaが表す構成情報３５に類似している可能性がある。
【０１０５】
但し、このように第１のベクトルCJaと第２のベクトルCIaの各々の向きが近くても、それらの長さが大きく異なっている場合には、これらのベクトルの各々の終点が表す構成情報３５同士が互いに大きく異なる可能性がある。
【０１０６】
そこで、第１のベクトルCIaと第２のベクトルCJbの各々の長さの差の指標として、次の式（３）で定義される値Labを考える。
【０１０７】
【数３】
2017078898.tif 000005
第１のベクトルCIaを一つ固定したとき、複数の第２のベクトルCJbのうちでLabを最も小さくする第２のベクトルCJbは、第１のベクトルCIaと長さが最も近いことになる。
【０１０８】
本実施形態では、複数の第２のベクトルCJbのうちで、その長さと向きが第１のベクトルCIaのそれらに最も近い第２のベクトルCJbを求める。そのような第２のベクトルCJbを求めるために、式（２）と式（３）を勘案して、次の式（４）で定義される値daを考える。
【０１０９】
【数４】
2017078898.tif 000006
式（４）の右辺の関数は、長さと向きが第１のベクトルCIaのそれらに最も近い第２のベクトルCJbを選び出し、その第２のベクトルCJbについてのLabとコサイン類似度cos(CIa、CJb)との差daを返す関数である。
【０１１０】
評価関数処理２５は、式（４）の関数を用いることにより、長さと向きが最も近いベクトルCIa、CJb同士を組み合わせる。
【０１１１】
図１１は、このようにしてn次元空間内で組み合わされたベクトルCIa、CJbを例示する図である。
【０１１２】
なお、図１１においては、組み合わされたベクトルCIa、CJb同士を実線で繋いでいる。
【０１１３】
このように第１のベクトルCIaと組み合わされた第２のベクトルCJbの終点Ybは、第１のベクトルCIaの終点Xaが表す構成情報３５に最も類似した構成情報３５を表す。
【０１１４】
評価関数処理２５は、このように各ベクトルCIa、CJb同士を組み合わせることにより、複数の第１の点Xaのうちで第２の点Ybに最も類似した点を求める。そして、評価関数処理２５は、求めた第１の点Xaに対応する仮想インスタンス１８の機能３４を、第２の点Ybに対応する仮想インスタンス１８の機能３４として特定する。
【０１１５】
以上により、新たな仮想インスタンス１８の各々に割り当てる最適な機能３４を特定することができた。
【０１１６】
ここで、前述の式（４）によれば、一つのベクトルCIaに組み合わせられるベクトルCJbを見つけるために、式（４）の右辺の括弧の値をm回求めればよい。よって、全てのaに対して組み合わせCIa、CJbを得るには、m×m回の計算で済む。これにより、前述のように各点Xk、Ykのなかから距離が最短となる組み合わせを試行錯誤で見つける場合と比較して計算時間を短縮できる。
【０１１７】
[本実施形態に係る配備方法]
次に、本実施形態に係る配備方法について説明する。
【０１１８】
この配備方法においては、複数のクラウド１０に任意に配備された複数の新たな仮想インスタンス１８の各々に対し、以下のようにして最適な機能を割り当てる。
【０１１９】
その配備方法について、ユーザの処理、管理サーバの処理、及び管理サーバ以外の仮想インスタンスの処理に分けて説明する。なお、管理サーバの処理と管理サーバ以外の仮想インスタンスの処理は、各仮想インスタンス１８にインストールされた配備プログラムにより実行される。
【０１２０】
＜ユーザの処理＞
仮想インスタンスを配備するにあたり、まず、ユーザは図１２のユーザガイド表３０を参照する。
【０１２１】
図１２は、ユーザが参照するユーザガイド表３０の一例を示す図である。
【０１２２】
ユーザガイド表３０は、クラスタ種別と、そのクラスタ種別を実現するために必要な仮想インスタンスの個数とを対応させた表である。
【０１２３】
仮想インスタンスの個数は、仮想インスタンスの総数と、プライベートクラウドに配備することが推奨される仮想インスタンスの総数とに分けられる。
【０１２４】
例えば、web三層構成のクラスタを実現する場合には、web、AP、及びDBの各々のサーバ用の仮想インスタンス１８を配備するため、仮想インスタンス１８の総数は３個となる。また、外部に公開する必要のないAPサーバとDBサーバの仮想インスタンス１８は、外部からの不正なアクセスから保護するために、プライベートクラウドに配備するのが好ましい。よって、プライベートクラウドに配備する仮想インスタンスの総数は２個となる。
【０１２５】
また、MPI(Message Passing Interface)で並列計算を行うクラスタを実現する場合や、ホットスタンバイ用のクラスタを実現する場合は、外部からそのクラスタにアクセスすることを許すか否かはユーザのポリシによる。よって、これらの場合には、プライベートクラウドに配備する仮想インスタンスの総数は任意となる。
【０１２６】
ユーザは、このユーザガイド表３０を参照することにより、今から実現しようとするクラスタの仮想インスタンス１８の個数とそれを配備するクラウド１０とを確認する。
【０１２７】
その後、ユーザは、図１３に示すフローチャートの処理を行う。
【０１２８】
図１３は、本実施形態に係る配備方法において、ユーザの処理の一例を示すフローチャートである。
【０１２９】
まずステップS11において、ユーザは、複数のクラウド１０のいずれかに、一つの仮想インスタンス１８を配備する。配備するクラウド１０をプライベートクラウドにするか否かは、前述のユーザガイド表３０で確認する。
【０１３０】
次に、ステップS12に移り、ユーザが仮想インスタンス１８にクラスタイメージ２０をインストールすることにより、当該インスタンス１８にクラスタイメージ２０を取得させる。
【０１３１】
続いて、ステップS13に移り、ユーザがREST APIで仮想インスタンス１８に管理処理２４ａ（図５参照）を実行させることにより、その仮想インスタンス１８を管理サーバに指定する。これにより、この仮想インスタンス１８は、一時的に管理サーバとして機能することになる。
【０１３２】
以下では、このように管理サーバとして機能する仮想インスタンス１８のことを単に管理サーバ１８とも呼ぶ。
【０１３３】
また、本ステップでは、ユーザが管理サーバ１８にクラスタ種別を通知する。
【０１３４】
次いで、ステップS14に移り、管理サーバ１８から通知されるIPアドレスをユーザが確認する。
【０１３５】
その後、ステップS15に移り、ユーザが、複数のクラウド１０に管理サーバ以外の仮想インスタンス１８を配備する。配備する仮想インスタンス１８の個数や配備すべきクラウド１０は、前述のユーザガイド表３０（図１２）を参照してユーザが決定する。
【０１３６】
そして、ステップS16に移り、管理サーバ以外の仮想インスタンス１８にユーザがクラスタイメージ２０をインストールすることにより、当該仮想インスタンス１８にクラスタイメージ２０を取得させる。
【０１３７】
次に、ステップS17に移り、ステップS14で確認した管理サーバ１８のIPアドレスを、ユーザが管理サーバ以外の仮想インスタンス１８に通知する。これにより、管理サーバ以外の仮想インスタンス１８は、インターフェース２３（図５参照）を介してREST APIで管理サーバ１８にメッセージを送信できるようになる。
【０１３８】
また、これと共に、ユーザは、管理サーバ以外の仮想インスタンス１８にクラスタ種別を通知する。
【０１３９】
次いで、ステップS18に移り、必要数の仮想インスタンス１８を配備したかをユーザが確認する。
【０１４０】
この確認にはユーザガイド表３０（図１２）が使用される。例えば、配備した仮想インスタンス１８の個数がユーザガイド表３０の仮想インスタンスの総数に等しければ、必要数の仮想インスタンス１８を配備した（YES）と判断して処理を終え、そうでなければ配備していない（NO）と判断してステップS15に戻る。
【０１４１】
以上により、ユーザの処理を終える。
【０１４２】
＜管理サーバの処理＞
次に、前述のステップS13で管理サーバに指定された仮想インスタンス１８の処理について説明する。
【０１４３】
図１４は、本実施形態に係る配備方法において、管理サーバに指定された仮想インスタンス１８の処理の一例を示すフローチャートである。
【０１４４】
まず、前述のステップS12において、管理サーバ１８がクラスタイメージ２０を取得する。
【０１４５】
次いで、ステップS21に移り、ステップS13でのユーザの指定に伴い、管理サーバ１８が管理処理２４ａを実行することにより、自らを以下のステップS22〜S27を実行する管理サーバとして機能させる。
【０１４６】
なお、以下の各ステップは、全て管理サーバ１８が管理処理２４ａを実行することで行われる。
【０１４７】
次に、ステップS22に移り、管理サーバ１８が、自分のIPアドレスをユーザに通知する。なお、IPアドレスは、この管理サーバ１８が配備されているクラウド１０からその管理サーバ１８に自動的に通知される。
【０１４８】
続いて、ステップS23に移り、管理サーバ１８が自分以外の仮想インスタンス１８からの通信を待つ。
【０１４９】
その通信においては、自分以外の仮想インスタンス１８の現状の構成情報３５（図６参照）が管理サーバ１８に通知される。構成情報３５の各項目は、前述のようにn次元空間における第２の点Yk = (y1, y2, …, yn)の成分として表される。
【０１５０】
そして、ステップS24に移り、その通信を必要数の仮想インスタンス１８から受信したかどうかを判断する。
【０１５１】
管理サーバ１８は、ステップS13でユーザから通知されたクラスタ種別を実現するのに必要な仮想インスタンス１８の総数を示すデータを保有している。
【０１５２】
そして、管理サーバ１８は、自分自身をカウントしないように、その総数から１を引いた個数の仮想インスタンス１８から通信があったときは受信した（YES）と判断し、そうでない場合には受信していない（NO）と判断する。
【０１５３】
ここで、受信していない（NO）と判断した場合には、必要数の仮想インスタンス１８から通信を受信するまでステップS24を繰り返す。
【０１５４】
一方、受信した（YES）と判断した場合には、管理サーバ１８は、自分以外の全ての仮想インスタンス１８の現状の構成情報３５を取得したことになる。また、管理サーバ１８は自分の構成情報３５は自分で把握できる。
【０１５５】
よって、この時点では、管理サーバ１８は、自分自身も含めた全ての仮想イスタンス１８の現状の設定情報３５を、その仮想インスタンス１８の個数に応じて複数取得している。
【０１５６】
そこで、この場合にはステップS25に移り、管理サーバ１８が、全ての仮想インスタンス１８の構成情報３５（Yk = (y1, y2, …, yn)）を利用して、前述の評価関数処理２５を実行する。
【０１５７】
評価関数処理２５は、前述のように実績のある過去の仮想インスタンス１８の構成情報３５（Xk = (x1, x2, …, xn)）と現状の仮想インスタンス１８の構成情報３５（Yk = (y1, y2, …, yn)）とに基づき、現状の各仮想インスタンス１８に最適な機能３４を特定する。
【０１５８】
これにより、本ステップS25においては、管理サーバ１８により、全ての仮想インスタンス１８ごとにその機能３４が特定されることになる。
【０１５９】
次に、ステップS26に移り、管理サーバ１８が、自分以外の仮想インスタンス１８に、ステップS25で特定した機能３４を通知する。その機能３４は、通知先の仮想インスタンス１８が実行すべき機能であって、インターフェース２３（図５参照）を介してREST APIにより各仮想インスタンス１８に通知される。
【０１６０】
次いで、ステップS27に移り、管理サーバに指定された仮想インスタンス１８が、ステップS25で特定した自分の機能３４を実現するために、その機能３４に対応した追加情報３２（図５参照）をクラスタイメージ２０から取得する。
【０１６１】
これにより、管理サーバとして振る舞っていた仮想インスタンス１８が、管理サーバとしての役目を終えて、webサーバやAPサーバ等のようにクラスタを実現するための具体的な機能３４を実行するようになる。
【０１６２】
この後は、ステップS28に移り、クラスタの運用を開始する。
【０１６３】
以上により、管理サーバの処理を終える。
【０１６４】
＜管理サーバ以外の仮想インスタンスの処理＞
次に、管理サーバ以外の仮想インスタンス１８の処理について説明する。
【０１６５】
図１５は、本実施形態に係る配備方法において、管理サーバ以外の仮想インスタンス１８の処理の一例を示すフローチャートである。
【０１６６】
まず、前述のステップS16において、管理サーバ以外の仮想インスタンス１８がクラスタイメージ２０を取得する。
【０１６７】
次いで、ステップS31に移り、管理サーバ以外の仮想インスタンス１８が、ステップS17で通知されたクラスタ種別と管理サーバ１８のIPアドレスとを受けて、インスタンス処理２４ｂ（図５参照）の実行を開始する。
【０１６８】
なお、以下の各ステップは、全て管理サーバ以外の仮想インスタンス１８がインスタンス処理２４ｂを実行することで行われる。
【０１６９】
次に、ステップS32に移り、管理サーバ以外の仮想インスタンス１８が、管理サーバ１８に対して自分の構成情報３５を通知することにより、自分が実現すべき機能３４を管理サーバ１８に問い合わせる。
【０１７０】
その構成情報３５の各項目は、前述のようにn次元空間における第２の点Yk = (y1, y2, …, yn)の成分として表される。なお、構成情報３５の各項目のうち、「(i1)クラスタ種別」については、ステップS17で通知されたクラスタ種別を管理サーバ１８に通知すればよい。
【０１７１】
次いで、ステップS33に移り、管理サーバ以外の仮想インスタンス１８が、管理サーバ１８から自分の機能３４の通知を受ける。
【０１７２】
そして、ステップS34に移り、管理サーバ以外の仮想インスタンス１８が、通知された機能３４に対応した追加情報３２をクラスタイメージ２０から取得することにより、その機能３４を実行する。
【０１７３】
この後は、前述のステップS28に移り、クラスタの運用を開始する。
【０１７４】
以上により、本実施形態に係る配備方法の基本ステップを終了する。
【０１７５】
[適用例]
次に、本実施形態に係る配備方法の適用例について説明する。
【０１７６】
＜第１例＞
図１６は、ホットスタンバイクラスタに本実施形態に係る配備方法を適用した場合の模式図である。
【０１７７】
図１６に示すように、この場合には、稼働系と待機系の二つの仮想インスタンス１８をそれぞれ別々のクラウド１０に配備することになる。
【０１７８】
以下、主なステップのみを説明する。
【０１７９】
なお、これらのステップの実行順序は一例であって、各ステップは前述の図１３〜１５と齟齬がない限り任意の順序で実行し得る。これについては後述の第２例でも同様である。
【０１８０】
（１）ユーザが、管理サーバ用の仮想インスタンス１８にクラスタイメージ２０をインストールする（ステップS12）。
【０１８１】
（２）ユーザが、仮想インスタンス１８を管理サーバに指定する（ステップS13）。
【０１８２】
（３）ユーザが、待機系用の仮想インスタンス１８にクラスタイメージ２０をインストールする（ステップS16）。
【０１８３】
（４）管理サーバが、自らを稼働系として機能させる（ステップS27）。
【０１８４】
（５）ユーザが、待機系用の仮想インスタンス１８にクラスタ種別を通知する（ステップS17）。
【０１８５】
（６）待機系用の仮想インスタンス１８が、自らを待機系として機能させる（ステップS34）。
【０１８６】
＜第２例＞
図１７は、web三層構成のクラスタに本実施形態に係る配備方法を適用した場合の模式図である。
【０１８７】
図１７に示すように、この場合には、DBサーバとAPサーバの各々の仮想インスタンスを一つのプライベートクラウド１０に配備する。
【０１８８】
また、webサーバのアクセス負荷を軽減するために、webサーバ用の仮想インスタンス１８を二つ配備する。配備先は、二つの異なるパブリッククラウド１０とする。また、そのパブリッククラウド１０の一方にはロードバランサ用の仮想インスタンス１８も配備する。
【０１８９】
以下、主なステップのみを説明する。
【０１９０】
（１）ユーザが、管理サーバ用の仮想インスタンス１８にクラスタイメージ２０をインストールする（ステップS12）。
【０１９１】
（２）ユーザが、仮想インスタンス１８を管理サーバに指定する（ステップS13）。
【０１９２】
（３）ユーザが、APサーバ用の仮想インスタンス１８にクラスタイメージ２０をインストールする（ステップS16）。
【０１９３】
（４）ユーザが、ロードバランサ用の仮想インスタンス１８にクラスタイメージ２０をインストールする（ステップS16）。
【０１９４】
（５）ユーザが、webサーバ用の仮想インスタンス１８にクラスタイメージ２０をインストールする（ステップS16）。
【０１９５】
（６）ユーザが、webサーバ用の仮想インスタンス１８にクラスタイメージ２０をインストールする（ステップS16）。
【０１９６】
（７）管理サーバが、自らをDBサーバとして機能させる（ステップS27）。
【０１９７】
（８）ユーザが、APサーバ用の仮想インスタンス１８にクラスタ種別を通知する（ステップS17）。
【０１９８】
（９）ユーザが、ロードバランサ用の仮想インスタンス１８にクラスタ種別を通知する（ステップS17）。
【０１９９】
（１０）ユーザが、webサーバ用の仮想インスタンス１８にクラスタ種別を通知する（ステップS17）。
【０２００】
（１１）ユーザが、webサーバ用の仮想インスタンス１８にクラスタ種別を通知する（ステップS17）。
【０２０１】
（１２）APサーバ用の仮想インスタンス１８が、自らをAPサーバとして機能させる（ステップS34）。
【０２０２】
（１３）ロードバランサ用の仮想インスタンス１８が、自らをロードバランサとして機能させる（ステップS34）。
【０２０３】
（１４）webサーバ用の仮想インスタンス１８が、自らをwebサーバとして機能させる（ステップS34）。
【０２０４】
（１５）webサーバ用の仮想インスタンス１８が、自らをwebサーバとして機能させる（ステップS34）。
【０２０５】
以上説明した本実施形態によれば、複数のクラウド１０に分散して配備された複数の仮想インスタンス１８の各々にクラスタイメージ２０をインストールする。
【０２０６】
これにより、管理サーバに指定された仮想インスタンス１８が、各仮想インスタンス１８の現状の構成情報３５に基づいて、各仮想インスタンス１８に適した機能３４を自動的に特定でき、仮想インスタンス１８の各々に効率的に機能３４を割り当てることができる。
【０２０７】
また、特定された機能３４は、ネットワーク１７を経由して全仮想インスタンス１８に自動的に通知される。そのため、ユーザが手作業で各仮想インスタンス１８にIPアドレスを設定したり、各仮想インスタンス１８の機能を実現するためのファイルを手動で仮想インスタンス１８にインストールしたりする必要がない。
【０２０８】
しかも、複数の機能３４のいずれかを仮想インスタンス１８に実現させるプログラムである構成管理処理２４（図５参照）が、全仮想インスタンス１８にインストールされるクラスタイメージ２０の内部にある。そのため、複数のクラウド１０の各々のAPI(Application Programing Interface)が異なる場合でも、各仮想インスタンス１８が自ら機能３４を実現することができ、クラウド１０のAPIを問わずに各仮想インスタンス１８に機能を配備できる。
【０２０９】
そして、このようにクラウド１０のAPIを問わないことから、現存するクラウド１０だけでなく、新たな事業者が構築する複数のクラウド１０に分散された仮想インスタンス１８にも機能を配備することが可能となる。
【０２１０】
（第２実施形態）
第１実施形態では、図５に示したように、クラスタイメージ２０の全ての情報を各仮想インスタンス１８にインストールした。
【０２１１】
これに対し、本実施形態では、以下のように各仮想インスタンス１８とは異なる別のサーバを用意し、そのサーバにクラスタイメージ２０の一部の情報を格納する。
【０２１２】
図１８は、本実施形態に係るシステムを模式的に示す図である。
【０２１３】
なお、図１８において、第１実施形態で説明したのと同じ要素には第１実施形態におけるのと同じ符号を付し、以下ではその説明を省略する。
【０２１４】
このシステム５０は、ネットワーク１７を介して相互に接続されたクラウド１０と物理サーバ１１とを有する。
【０２１５】
そのクラウド１０は、図２に示した複数のクラウド１０のうちの一つであって、第１実施形態と同様に仮想インスタンス１８が配備される。そして、その仮想インスタンス１８には、クラスタイメージ２０がインストールされる。
【０２１６】
但し、第１実施形態とは異なり、そのクラスタイメージ２０には追加情報３２と情報データベース３３とは格納されていない。
【０２１７】
一方、物理サーバ１１は、第１実施形態の図１と同様のハードウェア構成を有しており、そのストレージ装置１５には追加情報３２と情報データベース３３とが格納される。
【０２１８】
なお、仮想インスタンス１８が物理サーバ１１にアクセスできるようにするために、物理サーバ１１にはパブリックIPアドレスを割り当てるのが好ましい。
【０２１９】
また、追加情報３２と情報データベース３３とを保有するサーバは、各仮想化インスタンス１８とは異なる別のサーバであれば物理サーバ１１に限定されない。例えば、物理サーバ１１と同様の機能を有する仮想インスタンスをクラウド１０に配備し、その仮想インスタンスに追加情報３２と情報データベース３３とを格納してもよい。
【０２２０】
本実施形態では、仮想インスタンス１８がクラスタイメージ２０の追加情報３２と構成情報３５とを必要とする場合には、仮想インスタンス１８がクラスタイメージ２０を参照せずに、物理サーバ１１から追加情報３２と構成情報３５とを取得する。
【０２２１】
これによれば、追加情報３２と構成情報３５によってクラスタイメージ２０が肥大化するのを防止でき、仮想インスタンス１８の仮想ディスク３８（図３参照）の容量に余裕が生まれる。
【０２２２】
以上説明した各実施形態に関し、更に以下の付記を開示する。
【０２２３】
（付記１）  同一又は複数の事業者の複数のクラウドに分散して配備され、各々に複数の機能のいずれかが割り当てられる複数の仮想インスタンスのうちの一の仮想インスタンスが、前記仮想インスタンスの外部と内部の各々の構成を特定する構成情報であって、前記機能と対応付けられた構成情報を含むイメージ情報を取得する処理と、
前記一の仮想インスタンスが、前記複数の仮想インスタンスの各々の現状の構成情報を取得する処理と、
取得した前記の前記構成情報と、前記イメージ情報における前記構成情報とに基づいて、前記一の仮想インスタンスが、前記複数の仮想インスタンスごとに前記機能を特定する処理と、
前記一の仮想インスタンスが、特定した前記機能を前記残りの仮想インスタンスの各々に通知する処理と、
をコンピュータに実行させる配備プログラム。
【０２２４】
（付記２）  前記機能を特定する処理は、
前記イメージ情報における前記構成情報のうち、取得した前記現状の構成情報に最も類似した構成情報を求め、求めた前記構成情報に対応する前記機能を特定することにより行われることを特徴とする付記１に記載の配備プログラム。
【０２２５】
（付記３）  前記複数の仮想インスタンスの個数をm個、前記イメージ情報に含まれる前記構成情報と前記現状の構成情報の各々の項目の個数をn個とするとき、
前記イメージ情報における前記構成情報は、m個の前記仮想インスタンスごとに、n個の前記項目を成分とする第１の点Xk = (x1, x2, …, xn) (k = 1, 2, …, m)で表され、
前記現状の構成情報は、m個の前記仮想インスタンスごとに、n個の前記項目を成分とする第２の点Yk = (y1, y2, …, yn) (k = 1, 2, …, m)で表され、
前記機能を特定する処理において、
m個の前記第１の点Xkの重心からm個の前記第１の点Xaの各々に至るm個の第１のベクトルと、前記重心からm個の前記第２の点Ybの各々に至るm個の第２のベクトルとの組み合わせのうちで、長さと向きが互いに最も近い前記第１のベクトルと前記第２のベクトルとを求め、
前記求めた第１のベクトルの終点の前記第１の点Xaが表す前記イメージ情報における前記構成情報を、前記求めた第２のベクトルの終点の第２の点Ybが表す前記現状の構成情報に最も類似した前記構成情報とすることを特徴とする付記２に記載の配備プログラム。
【０２２６】
（付記４）  前記イメージ情報は、前記複数の仮想インスタンスの各々に前記複数の機能のいずれかを実行するように指示する指示情報を含み、
前記一の仮想インスタンスが、前記指示情報に基づき、特定した自身の前記機能を実行する処理を更に有することを特徴とする付記１乃至付記３のいずれかに記載の配備プログラム。
【０２２７】
（付記５）  前記イメージ情報は、
前記複数の仮想インスタンスの各々にインストールされる同一のオペレーティングシステムと、
前記オペレーティングシステムに前記複数の機能のいずれかを追加する追加情報であって、前記複数の機能の各々に対応する複数の追加情報とを有し、
前記一の仮想インスタンスは、特定した自身の前記機能に対応する前記追加情報を取得することにより、特定した自身の前記機能を実行する前記処理を行うことを特徴とする付記４に記載の配備プログラム。
【０２２８】
（付記６）  前記イメージ情報の一部は、前記複数の仮想インスタンスとは異なる別のサーバが保有することを特徴とする付記１乃至付記５のいずれかに記載の配備プログラム。
【０２２９】
（付記７）  同一又は複数の事業者の複数のクラウドに分散して配備され、各々に複数の機能のいずれかが割り当てられる複数の仮想インスタンスのうちの一を除いた残りの仮想インスタンスが、前記複数の仮想インスタンスの各々に前記複数の機能のいずれかを実行するように指示する指示情報を含むイメージ情報を取得する処理と、
前記残りの仮想インスタンスが、自身の外部と内部の各々の構成を特定する現状の構成情報を前記一の仮想インスタンスに通知することにより、自身の前記機能を前記一の仮想インスタンスに問い合わせる処理と、
前記問い合わせにより前記一の仮想インスタンスから通知された前記機能を受けて、前記残りの仮想インスタンスが、前記指示情報に基づいて、通知された前記機能を実行する処理と、
をコンピュータに実行させる配備プログラム。
【０２３０】
（付記８）  同一又は複数の事業者の複数のクラウドに、各々に複数の機能のいずれかが割り当てられる複数の仮想インスタンスを配備し、
前記複数の仮想インスタンスの各々が、前記仮想インスタンスの外部と内部の各々の構成を特定する構成情報であって、前記機能と対応付けられた構成情報と、前記複数の仮想インスタンスの各々に前記複数の機能のいずれかを実行するように指示する指示情報とを含むイメージ情報を取得し、
前記複数の仮想インスタンスのうち、一の仮想インスタンスを除いた残りの仮想インスタンスが、前記一の仮想インスタンスに自身の現状の前記構成情報を通知することにより、自身の前記機能を前記一の仮想インスタンスに問い合わせ、
前記一の仮想インスタンスが、通知された前記現状の構成情報と、前記イメージにおける前記構成情報とに基づいて、前記複数の仮想インスタンスごとに前記機能を特定し、
前記一の仮想インスタンスが、特定した前記機能を前記残りの仮想インスタンスの各々に通知し、
前記一の仮想インスタンスから通知された前記機能を受けて、前記残りの仮想インスタンスが、前記指示情報に基づいて、通知された前記機能を実行する、
配備方法。
【０２３１】
（付記９）  前記一の仮想インスタンスが、前記指示情報に基づいて、特定した自身の前記機能を実行することを特徴とする付記７に記載の配備方法。
【符号の説明】
【０２３２】
１０…クラウド、１１…物理サーバ、１２…ネットワーク、１３…CPU、１４…メモリ、１５…ストレージ装置、１６…NIC、１８…仮想インスタンス、１９…記録媒体、２０…クラスタイメージ、２１…プログラム部分、２２…データ部分、２３…インターフェース、２４…構成管理処理、２４ａ…管理処理、２４ｂ…インスタンス処理、２５…評価関数処理、３０…ユーザガイド表、３１…OSイメージ、３２…追加情報、３３…情報データベース、３４…機能、３５…構成情報、３６…仮想CPU、３７…仮想メモリ、３８…仮想ディスク、３９…仮想NIC、４１…外部情報、４２…内部情報。
【図１】
2017078898.tif 000007
【図２】
2017078898.tif 000008
【図３】
2017078898.tif 000009
【図４】
2017078898.tif 000010
【図５】
2017078898.tif 000011
【図６】
2017078898.tif 000012
【図７】
2017078898.tif 000013
【図８】
2017078898.tif 000014
【図９】
2017078898.tif 000015
【図１０】
2017078898.tif 000016
【図１１】
2017078898.tif 000017
【図１２】
2017078898.tif 000018
【図１３】
2017078898.tif 000019
【図１４】
2017078898.tif 000020
【図１５】
2017078898.tif 000021
【図１６】
2017078898.tif 000022
【図１７】
2017078898.tif 000023
【図１８】
2017078898.tif 000024