(57)【要約】【課題】負荷分散において過剰な仮想マシンが配置されるのを抑制する。【解決手段】管理装置１０は、システム２に配置された仮想マシン２ａ，２ｂの負荷が第１の負荷条件を満たす場合、システム３に仮想マシン３ａを配置して、ある業務の処理を仮想マシン２ａ，２ｂと仮想マシン３ａとに分散させる。管理装置１０は、仮想マシン３ａの配置後、仮想マシン２ａ，２ｂの負荷が第１の負荷条件を満たし、仮想マシン３ａの負荷が第２の負荷条件を満たす場合、システム３に仮想マシン３ｂを追加することを許容する。管理装置１０は、仮想マシン３ａの配置後、仮想マシン２ａ，２ｂの負荷が第１の負荷条件を満たし、仮想マシン３ａの負荷が第２の負荷条件を満たさない場合、システム３に仮想マシン３ｂを追加することを制限する。【選択図】図１
2015153402.tif 000002
【特許請求の範囲】
【請求項１】
第１のシステムに配置された１または２以上の第１の仮想マシンの負荷を示す情報を取得し、また、第２のシステムに１または２以上の第２の仮想マシンが配置されているとき、前記第２の仮想マシンの負荷を示す情報を取得する通信部と、
前記第１の仮想マシンの負荷が第１の負荷条件を満たす場合、前記第２のシステムに前記第２の仮想マシンを配置して、ある業務の処理を前記第１の仮想マシンと前記第２の仮想マシンとに分散させ、
前記第２の仮想マシンの配置後、前記第１の仮想マシンの負荷が前記第１の負荷条件を満たし、前記第２の仮想マシンの負荷が第２の負荷条件を満たす場合、前記第２のシステムに他の第２の仮想マシンを追加することを許容し、
前記第２の仮想マシンの配置後、前記第１の仮想マシンの負荷が前記第１の負荷条件を満たし、前記第２の仮想マシンの負荷が前記第２の負荷条件を満たさない場合、前記第２のシステムに前記他の第２の仮想マシンを追加することを制限する、制御部と、
を有する管理装置。
【請求項２】
前記制御部は、前記第１の仮想マシンの負荷が前記第１の負荷条件を満たし、前記第２の仮想マシンの負荷が前記第２の負荷条件を満たさない場合、前記第１の仮想マシンの少なくとも一部を前記第２のシステムに移動させる、請求項１記載の管理装置。
【請求項３】
前記制御部は、一部の第１の仮想マシンの移動後に、前記第１のシステムに配置された他の一部の第１の仮想マシンの負荷が前記第１の負荷条件を満たさなくなった場合、前記一部の第１の仮想マシンまたは前記第２の仮想マシンの少なくとも一部を前記第１のシステムに移動させる、請求項２記載の管理装置。
【請求項４】
コンピュータが実行する業務負荷分散管理方法であって、
第１のシステムに配置された１または２以上の第１の仮想マシンの負荷が第１の負荷条件を満たす場合、第２のシステムに１または２以上の第２の仮想マシンを配置して、ある業務の処理を前記第１の仮想マシンと前記第２の仮想マシンとに分散させ、
前記第２の仮想マシンの配置後、前記第１の仮想マシンの負荷が前記第１の負荷条件を満たし、前記第２の仮想マシンの負荷が第２の負荷条件を満たす場合、前記第２のシステムに他の第２の仮想マシンを追加することを許容し、
前記第２の仮想マシンの配置後、前記第１の仮想マシンの負荷が前記第１の負荷条件を満たし、前記第２の仮想マシンの負荷が前記第２の負荷条件を満たさない場合、前記第２のシステムに前記他の第２の仮想マシンを追加することを制限する、
業務負荷分散管理方法。
【請求項５】
コンピュータに、
第１のシステムに配置された１または２以上の第１の仮想マシンの負荷が第１の負荷条件を満たす場合、第２のシステムに１または２以上の第２の仮想マシンを配置して、ある業務の処理を前記第１の仮想マシンと前記第２の仮想マシンとに分散させ、
前記第２の仮想マシンの配置後、前記第１の仮想マシンの負荷が前記第１の負荷条件を満たし、前記第２の仮想マシンの負荷が第２の負荷条件を満たす場合、前記第２のシステムに他の第２の仮想マシンを追加することを許容し、
前記第２の仮想マシンの配置後、前記第１の仮想マシンの負荷が前記第１の負荷条件を満たし、前記第２の仮想マシンの負荷が前記第２の負荷条件を満たさない場合、前記第２のシステムに前記他の第２の仮想マシンを追加することを制限する、
処理を実行させる業務負荷分散管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は管理装置、業務負荷分散管理方法および業務負荷分散管理プログラムに関する。
【背景技術】
【０００２】
近年、コンピュータリソースの利用形態の１つとして、クラウドコンピューティングが提案されている。クラウドコンピューティングでは、ユーザは、所望の情報処理に要するリソースを手元に用意する代わりに、ネットワーク経由で他者の所有するコンピュータにアクセスし、当該コンピュータのリソースを借りて所望の情報処理を実行させる。クラウドコンピューティングを実現するクラウドシステムは、リソースをサービスとしてユーザに提供することになる。クラウドシステムは、多数のユーザに対して柔軟にリソースを割り振ることができるよう、複数の仮想的なコンピュータ（仮想マシンや論理マシンなどと言うことがある）を配置できる仮想化システムとして実装されることが多い。
【０００３】
クラウドコンピューティングは、リソースの共有度の観点から、プライベートクラウドとパブリッククラウドとハイブリッドクラウドに分類されることがある。プライベートクラウドでは、１つの組織がクラウドシステムを所有し、その組織内のユーザ（例えば、様々な部署に属するユーザ）が共通してクラウドシステムを利用する。パブリッククラウドでは、サービス提供者がクラウドシステムを所有し、不特定多数のユーザが広域ネットワークを介してクラウドシステムを利用する。パブリッククラウドのユーザには、例えば、ユーザとサービス提供者との間の契約に基づき、仮想マシン数・リソース割当量・利用時間などの利用量に比例した金額の料金が課される。ハイブリッドクラウドは、プライベートクラウドのシステムとパブリッククラウドのシステムを連携させるものである。
【０００４】
ハイブリッドクラウドに関して、企業ネットワーク内に配置された内部サーバおよび企業ネットワーク外のクラウドネットワークに配置されたクラウドサーバの間で作業を分配する負荷分散装置が提案されている。この負荷分散装置は、内部サーバの負荷が低いうちはユーザからの要求を内部サーバに転送し、内部サーバの負荷が高いときのみユーザからの要求をクラウドサーバに転送する。これにより、企業はピークの情報処理量に対応するリソースの全てを所有しなくてもよく、内部サーバを構築・維持するコストを抑制することができる。なお、複数のデータセンタの間で仮想マシンを移動させる管理サーバが提案されている。この管理サーバは、複数の仮想マシンの間の結合度をそれら仮想マシンの間の通信量や応答速度から算出し、結合度に応じて移動する仮想マシンを選択する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１１／０４１１０１号
【特許文献２】特開２０１２−２２１０４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここでは、システム＃１に配置した仮想マシンに一の業務の処理を実行させ、当該仮想マシンの負荷が高くなると、システム＃２に仮想マシンを配置して業務の処理をそれら複数の仮想マシンに分散させる形態を考える。例えば、上記の「システム＃１」をプライベートクラウドのシステムとして実装し、上記の「システム＃２」をパブリッククラウドのシステムとして実装することが考えられる。システム＃１に配置した仮想マシンの負荷の上昇に応じて、システム＃２に対して更に仮想マシンを追加することも考えられる。これにより、仮想マシン１つ当たりの負荷が下がることが期待される。
【０００７】
しかし、システム＃１には、上記の業務の処理を行う仮想マシン以外に、他の業務の処理を行う仮想マシン（例えば、企業内の他の部署が使用する仮想マシン）も配置されていることがある。一の業務の処理を行う仮想マシンで未使用リソースが増えると、当該仮想マシンへのリソースの割当が削減され、他の業務の処理を行う仮想マシンに振り替えられてしまうこともある。この場合、一の業務の処理に関して、システム＃２に仮想マシンを追加してもシステム＃１の仮想マシンの負荷が高止まりしているように見える。このため、システム＃１の仮想マシンの負荷のみに基づいてシステム＃２に仮想マシンを追加するか否か判断してしまうと、過剰な仮想マシンが配置されてしまうおそれがある。
【０００８】
１つの側面では、本発明は、負荷分散において過剰な仮想マシンが配置されるのを抑制する管理装置、業務負荷分散管理方法および業務負荷分散管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、通信部と制御部とを有する管理装置が提供される。通信部は、第１のシステムに配置された１または２以上の第１の仮想マシンの負荷を示す情報を取得し、また、第２のシステムに１または２以上の第２の仮想マシンが配置されているとき、第２の仮想マシンの負荷を示す情報を取得する。制御部は、第１の仮想マシンの負荷が第１の負荷条件を満たす場合、第２のシステムに第２の仮想マシンを配置して、ある業務の処理を第１の仮想マシンと第２の仮想マシンとに分散させる。制御部は、第２の仮想マシンの配置後、第１の仮想マシンの負荷が第１の負荷条件を満たし、第２の仮想マシンの負荷が第２の負荷条件を満たす場合、第２のシステムに他の第２の仮想マシンを追加することを許容する。制御部は、第２の仮想マシンの配置後、第１の仮想マシンの負荷が第１の負荷条件を満たし、第２の仮想マシンの負荷が第２の負荷条件を満たさない場合、第２のシステムに他の第２の仮想マシンを追加することを制限する。
【００１０】
また、１つの態様では、コンピュータが実行する業務負荷分散管理方法が提供される。業務負荷分散管理方法では、第１のシステムに配置された１または２以上の第１の仮想マシンの負荷が第１の負荷条件を満たす場合、第２のシステムに１または２以上の第２の仮想マシンを配置して、ある業務の処理を第１の仮想マシンと第２の仮想マシンとに分散させる。第２の仮想マシンの配置後、第１の仮想マシンの負荷が第１の負荷条件を満たし、第２の仮想マシンの負荷が第２の負荷条件を満たす場合、第２のシステムに他の第２の仮想マシンを追加することを許容する。第２の仮想マシンの配置後、第１の仮想マシンの負荷が第１の負荷条件を満たし、第２の仮想マシンの負荷が第２の負荷条件を満たさない場合、第２のシステムに他の第２の仮想マシンを追加することを制限する。また、１つの態様では、コンピュータに実行させる業務負荷分散管理プログラムが提供される。
【発明の効果】
【００１１】
１つの側面では、負荷分散において過剰な仮想マシンが配置されるのを抑制できる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の管理装置の例を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】管理サーバのハードウェア例を示すブロック図である。
【図４】仮想マシンの配置例を示すブロック図である。
【図５】サーバアプリケーションの起動・停止の例を示す第１の図である。
【図６】サーバアプリケーションの起動・停止の例を示す第２の図である。
【図７】サーバアプリケーションの起動・停止の例を示す第３の図である。
【図８】ＣＰＵリソースの割当例を示す第１の図である。
【図９】ＣＰＵリソースの割当例を示す第２の図である。
【図１０】ＣＰＵリソースの割当例を示す第３の図である。
【図１１】サーバアプリケーションの起動・停止の例を示す第４の図である。
【図１２】サーバアプリケーションの起動・停止の例を示す第５の図である。
【図１３】サーバアプリケーションの起動・停止の例を示す第６の図である。
【図１４】ＣＰＵリソースの割当例を示す第４の図である。
【図１５】管理サーバのソフトウェア構成例を示すブロック図である。
【図１６】仮想マシン数テーブルの例を示す図である。
【図１７】負荷判定テーブルの例を示す図である。
【図１８】仮想マシン配置テーブルの例を示す図である。
【図１９】仮想マシン配置の判断基準の例を示す図である。
【図２０】仮想マシン配置制御の手順例を示すフローチャート（第１の図）である。
【図２１】仮想マシン配置制御の手順例を示すフローチャート（第２の図）である。
【図２２】仮想マシン配置制御の手順例を示すフローチャート（第３の図）である。
【図２３】仮想マシン配置制御の手順例を示すフローチャート（第４の図）である。
【図２４】仮想マシン配置制御の手順例を示すフローチャート（第５の図）である。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の管理装置の例を示す図である。
【００１４】
第１の実施の形態の管理装置１０は、システム２，３を利用した業務の処理の負荷分散を管理する。システム２，３は、仮想マシンを動作させることができる１または２以上の物理的なコンピュータ（物理マシンと言うことがある）を含む。システム２は、システム３よりも優先的に利用されるものであり、例えば、プライベートクラウドのシステムとして実装される。システム３は、システム２の負荷の上昇に応じて一時的に利用されるものであり、例えば、パブリッククラウドのシステムとして実装される。管理装置１０は、プライベートクラウドとパブリッククラウドとを連携させたハイブリッドクラウドを管理するものであってもよい。管理装置１０は、例えば、コンピュータとして実装される。
【００１５】
管理装置１０は、通信部１１および制御部１２を有する。通信部１１は、システム２，３と通信を行う通信インタフェースである。通信部１１は、ケーブルによってルータやスイッチなどの通信装置と接続される有線通信インタフェースでもよいし、無線リンクによって基地局と接続される無線通信インタフェースでもよい。制御部１２は、後述するように、システム２，３への仮想マシンの配置を決定する。制御部１２は、プロセッサを含んでもよい。プロセッサは、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）であってもよく、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の集積回路を含んでもよい。プロセッサは、ＲＡＭ（Random Access Memory）やＨＤＤ（Hard Disk Drive）などの記憶装置に記憶されたプログラムを実行することができる。２以上のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００１６】
通信部１１は、システム２に配置された１または２以上の仮想マシンの負荷を示す情報を取得する。第１の実施の形態では、システム２に仮想マシン２ａ，２ｂが配置されているとする。すると、通信部１１は、仮想マシン２ａ，２ｂの負荷を示す情報を取得する。また、通信部１１は、システム３に１または２以上の仮想マシンが配置されているとき、システム３の仮想マシンの負荷を示す情報を取得する。後述するようにシステム３に仮想マシン３ａが配置されると、通信部１１は、仮想マシン３ａの負荷を示す情報を取得する。負荷を示す情報は、例えば、各仮想マシンのＣＰＵ使用率を示す情報である。仮想マシンのＣＰＵ使用率は、当該仮想マシンに割り当てられたＣＰＵリソース（例えば、ＣＰＵ時間）のうち、使用されている部分（例えば、命令を実行している時間）の割合である。
【００１７】
ここで、仮想マシン２ａ，２ｂは、同じ業務（例えば、Ｗｅｂサービスの提供）に用いられる仮想マシンであるとする。ある業務のために複数の仮想マシンが用意されている場合、当該業務の処理がそれら複数の仮想マシンに分散されることになる。
【００１８】
制御部１２は、仮想マシン２ａ，２ｂの負荷（例えば、仮想マシン２ａの負荷と仮想マシン２ｂの負荷の平均）が第１の負荷条件を満たすことを検出する。すると、制御部１２は、システム３に仮想マシン３ａを配置し、ある業務の処理を仮想マシン２ａ，２ｂ，３ａに分散させる。業務の処理を分散させるために、ロードバランサが用いられてもよい。これにより、仮想マシン２ａ，２ｂの負荷が下がることが期待される。第１の負荷条件は、例えば、仮想マシン２ａ，２ｂの負荷が第１の閾値以上になったことである。これは、仮想マシン２ａ，２ｂの負荷が高くなったとき、制御部１２が、負荷分散のためにシステム３に仮想マシン３ａを配置していると言うことができる。
【００１９】
仮想マシン３ａの配置後、制御部１２は、仮想マシン２ａ，２ｂの負荷が第１の負荷条件を満たし、仮想マシン３ａの負荷が第２の負荷条件を満たすことを検出することがある。その場合、制御部１２は、システム３に仮想マシン３ｂを追加することを許容する。仮想マシン３ｂが追加されると、ある業務の処理が仮想マシン２ａ，２ｂ，３ａ，３ｂに分散される。これにより、仮想マシン２ａ，２ｂ，３ａの負荷が下がることが期待される。第２の負荷条件は、例えば、仮想マシン３ａの負荷が第２の閾値以上になったことである。これは、仮想マシン２ａ，２ｂ，３ａの全ての負荷が高いとき、制御部１２が、更なる負荷軽減のためにシステム３に仮想マシン３ｂを追加していると言うことができる。
【００２０】
一方、仮想マシン３ａの配置後、制御部１２は、仮想マシン２ａ，２ｂの負荷が第１の負荷条件を満たすものの、仮想マシン３ａの負荷が第２の負荷条件を満たさないことを検出することがある。その場合、制御部１２は、システム３に仮想マシン３ｂを追加することを制限する。システム３の仮想マシン３ａの負荷が低い場合、システム２の仮想マシン２ａ，２ｂの負荷は、仮想マシン２ａ，２ｂ，３ａが担当する業務以外の要因で高止まりしている可能性がある。よって、制御部１２は、システム３に仮想マシン３ｂを追加しても仮想マシン２ａ，２ｂの負荷が下がることが期待できないと判断する。
【００２１】
仮想マシン２ａ，２ｂ，３ａのうち仮想マシン２ａ，２ｂのみ負荷が高止まりする要因の１つとして、他の業務の処理に用いられる仮想マシンがシステム２に配置されていることが挙げられる。負荷分散によって仮想マシン２ａ，２ｂの未使用リソース（例えば、未使用ＣＰＵリソース）が増えると、仮想マシン２ａ，２ｂの割当リソースが削減されて他の業務用の仮想マシンに振り替えられてしまうことがある。すると、仮想マシン２ａ，２ｂのリソース使用率（例えば、ＣＰＵ使用率）が高く計算され、仮想マシン２ａ，２ｂの負荷が高止まりしているように見える。この場合、システム３に仮想マシン３ｂを追加しても、仮想マシン２ａ，２ｂのリソース使用率が下がることは期待できない。
【００２２】
そこで、管理装置１０によって、システム３への仮想マシン３ｂの追加が制限される。なお、制御部１２は、適切なロードバランシングによって仮想マシン３ａに割り振る業務の処理を多くし仮想マシン２ａ，２ｂに割り振る業務の処理を少なくすることで、仮想マシン２ａ，２ｂの負荷が高止まりしても応答性能の悪化を抑制できる。制御部１２は、上記のように仮想マシン２ａ，２ｂの負荷が第１の負荷条件を満たし、仮想マシン３ａの負荷が第２の負荷条件を満たさない場合、システム２に配置された仮想マシン２ａ，２ｂの少なくとも一部を、システム２からシステム３に移動するようにしてもよい。
【００２３】
第１の実施の形態の管理装置１０によれば、仮想マシン２ａ，２ｂの負荷が第１の負荷条件を満たし、仮想マシン３ａの負荷が第２の負荷条件を満たす場合、システム３に仮想マシン３ｂを追加することが許容される。一方、仮想マシン２ａ，２ｂの負荷が第１の負荷条件を満たすものの、仮想マシン３ａの負荷が第２の負荷条件を満たさない場合、システム３に仮想マシン３ｂを追加することが制限される。これにより、仮想マシン２ａ，２ｂの負荷のみに基づいて仮想マシン３ｂを追加するか否か判断する場合と比べて、仮想マシン２ａ，２ｂの負荷の低下が期待できない場面での仮想マシン３ｂの追加が抑制され、システム３への過剰な仮想マシンの配置が抑制される。その結果、システム３の利用量に比例した料金（従量制料金）が発生する場合には、その料金を削減することができる。
【００２４】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。
第２の実施の形態の情報処理システムは、企業が所有するプライベートクラウド４のシステムとサービス提供者が所有するパブリッククラウド５のシステムとを含み、ハイブリッドクラウドを実現する。企業内のユーザのネットワーク２１には、クライアント３３，３４が属する。プライベートクラウド４のネットワーク２２には、プライベート管理サーバ３１、業務サーバ３５，３６および管理サーバ１００が属する。パブリッククラウド５のネットワーク２３には、パブリック管理サーバ３２および業務サーバ３７，３８が属する。ネットワーク２１はネットワーク２２と接続され、ネットワーク２２はインターネットなどの広域ネットワークを介してネットワーク２３と接続されている。
【００２５】
プライベート管理サーバ３１は、プライベートクラウド４を管理するサーバコンピュータである。プライベート管理サーバ３１は、クライアント３３，３４に対して、業務サーバ３５，３６に配置する仮想マシンを設定するためのユーザインタフェースを提供する。プライベート管理サーバ３１は、クライアント３３，３４または管理サーバ１００からの要求に応じて業務サーバ３５，３６に仮想マシンを起動させ、また、要求に応じて業務サーバ３５，３６上の仮想マシンを停止させる。また、プライベート管理サーバ３１は、業務サーバ３５，３６で動作している仮想マシンの負荷を監視する。
【００２６】
パブリック管理サーバ３２は、パブリッククラウド５を管理するサーバコンピュータである。パブリック管理サーバ３２は、クライアント３３，３４に対して、業務サーバ３７，３８に配置する仮想マシンを設定するためのユーザインタフェースを提供する。パブリック管理サーバ３２は、クライアント３３，３４または管理サーバ１００からの要求に応じて業務サーバ３７，３８に仮想マシンを起動させ、また、要求に応じて業務サーバ３７，３８上の仮想マシンを停止させる。また、パブリック管理サーバ３２は、業務サーバ３７，３８で動作している仮想マシンの負荷を監視する。
【００２７】
なお、パブリック管理サーバ３２は、通常、サービス提供者によって提供される。パブリック管理サーバ３２は、クライアント３３，３４や管理サーバ１００に対して、ＧＵＩ（Graphical User Interface）やＡＰＩ（Application Programming Interface）を提供する。ユーザは、このＧＵＩやＡＰＩを使用して、間接的にパブリック管理サーバ３２を利用する。パブリック管理サーバ３２を、クラウドポータルと呼ぶ場合もある。
【００２８】
クライアント３３，３４は、ユーザが操作する端末装置としてのクライアントコンピュータである。クライアント３３とクライアント３４とは、異なる業務に従事するユーザ（例えば、企業内の異なる部署に属するユーザ）によって使用されるものであってもよい。クライアント３３，３４は、プライベートクラウド４に仮想マシンを配置して業務の処理を実行させる場合、プライベート管理サーバ３１にアクセスする。また、クライアント３３，３４は、明示的にパブリッククラウド５に仮想マシンを配置して業務の処理を実行させる場合、パブリック管理サーバ３２にアクセスする。
【００２９】
ただし、パブリッククラウド５のシステムを利用すると、仮想マシン数・割当リソース量・利用時間などの利用量に応じた従量料金が企業に課される。一方、プライベートクラウド４のシステムを利用しても、このような従量料金は発生しない。よって、クライアント３３，３４は、通常はプライベート管理サーバ３１にアクセスして、プライベートクラウド４のシステムを優先的に利用する。プライベートクラウド４のリソースが一時的に不足した場合、後述するように、自動的にパブリッククラウド５のリソースを利用して負荷分散が図られる。クライアント３３，３４は、自動的な負荷分散を意識しなくてよい。
【００３０】
業務サーバ３５〜３８は、複数の仮想マシンを動作させることができるサーバコンピュータである。業務サーバ３５，３６は、プライベート管理サーバ３１からの指示に応じて、ＣＰＵ時間やＲＡＭ領域などのリソースを仮想マシンに割り当てて仮想マシンを起動する。また、業務サーバ３５，３６は、プライベート管理サーバ３１からの指示に応じて仮想マシンを停止させる。業務サーバ３７，３８は、パブリック管理サーバ３２からの指示に応じて、リソースを仮想マシンに割り当てて仮想マシンを起動する。また、業務サーバ３７，３８は、パブリック管理サーバ３２からの指示に応じて仮想マシンを停止させる。
【００３１】
管理サーバ１００は、ハイブリッドクラウドを管理するサーバコンピュータである。管理サーバ１００は、業務単位で、プライベートクラウド４およびパブリッククラウド５に配置する仮想マシンの数を調整する。プライベートクラウド４に仮想マシンを配置する場合、管理サーバ１００は、プライベート管理サーバ３１に仮想マシンの起動を指示する。パブリッククラウド５に仮想マシンを配置する場合、管理サーバ１００は、パブリック管理サーバ３２に仮想マシンの起動を指示する。
【００３２】
仮想マシンの数を調整するにあたり、管理サーバ１００は、プライベート管理サーバ３１から各仮想マシンの負荷（第２の実施の形態では主にＣＰＵ使用率）を示す情報を取得する。プライベートクラウド４において一の業務用の仮想マシンの負荷が高い場合、管理サーバ１００は、その業務に対して予め設定された上限数に達するまで、プライベートクラウド４に仮想マシンを追加する。上限数に達してもまだ負荷が高い場合、管理サーバ１００は、パブリッククラウド５にその業務用の仮想マシンを配置する。パブリッククラウド５の仮想マシンを追加するにあたっては、管理サーバ１００は、後述するように、パブリック管理サーバ３２から各仮想マシンの負荷を示す情報を取得し、プライベートクラウド４の負荷とパブリッククラウド５の負荷の両方を考慮する。
【００３３】
図３は、管理サーバのハードウェア例を示すブロック図である。
管理サーバ１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。ＣＰＵ１０１は、第１の実施の形態の制御部１２の一例である。通信インタフェース１０７は、第１の実施の形態の通信部１１の一例である。
【００３４】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、管理サーバ１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００３５】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性メモリである。なお、管理サーバ１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００３６】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、管理サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００３７】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、管理サーバ１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００３８】
入力信号処理部１０５は、管理サーバ１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、管理サーバ１００に、複数の種類の入力デバイスが接続されていてもよい。
【００３９】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４０】
通信インタフェース１０７は、ネットワーク２２に接続され、ネットワーク２２を介してプライベート管理サーバ３１などの他のコンピュータと通信を行うインタフェースである。通信インタフェース１０７は、ケーブルで通信装置と接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【００４１】
なお、管理サーバ１００は、媒体リーダ１０６を備えていなくてもよく、ユーザが操作する端末装置から制御可能である場合には画像信号処理部１０４や入力信号処理部１０５を備えていなくてもよい。また、ディスプレイ１１１や入力デバイス１１２が、管理サーバ１００の筐体と一体に形成されていてもよい。プライベート管理サーバ３１、パブリック管理サーバ３２、クライアント３３，３４および業務サーバ３５〜３８も、管理サーバ１００と同様のハードウェアを用いて実現することができる。
【００４２】
図４は、仮想マシンの配置例を示すブロック図である。
第２の実施の形態では、１つの業務として、３階層アーキテクチャのＷｅｂシステムを用いたＷｅｂサービスの提供を考える。３階層アーキテクチャのＷｅｂシステムは、サーバアプリケーションとして、Ｗｅｂサーバとアプリケーションサーバ（ＡＰサーバ）とデータベースサーバ（ＤＢサーバ）とを含む。Ｗｅｂサーバは、クライアントコンピュータが送信したＨＴＴＰ（Hypertext Transfer Protocol）リクエストを受信し、ＨＴＴＰリクエストに対するＨＴＴＰレスポンスを返信する。ＡＰサーバは、Ｗｅｂサーバが受信したＨＴＴＰリクエストに応じた業務ロジックを実行し、業務ロジックの実行結果をＷｅｂサーバに提供する。ＤＢサーバは、ＡＰサーバの業務ロジックにおいて使用され得るデータを管理し、ＡＰサーバからの要求に応じてデータの検索や更新を行う。
【００４３】
Ｗｅｂサーバが複数存在する場合、クライアントコンピュータが送信したＨＴＴＰリクエストは、ロードバランサによってこれら複数のＷｅｂサーバに振り分けられる。第２の実施の形態では、ロードバランサおよびＤＢサーバは１つずつ用意され、プライベートクラウド４に配置される。ＤＢサーバをプライベートクラウド４に配置することで、パブリッククラウド５に配置するよりもデータの漏洩や消失のリスクを低減できる。一方、ＷｅｂサーバとＡＰサーバの組は負荷に応じて増減し、プライベートクラウド４のみまたはプライベートクラウド４とパブリッククラウド５の両方に配置される。
【００４４】
例えば、業務サーバ３５はハイパーバイザ３５ａを実行し、業務サーバ３６はハイパーバイザ３６ａを実行し、業務サーバ３７はハイパーバイザ３７ａを実行し、業務サーバ３８はハイパーバイザ３８ａを実行する。ハイパーバイザ３５ａ，３６ａ，３７ａ，３８ａは、各業務サーバが備えるリソースを仮想マシンに割り当てるミドルウェアである。ハイパーバイザ３５ａ上では仮想マシン４１〜４３が動作し、ハイパーバイザ３６ａ上では仮想マシン４４が動作し、ハイパーバイザ３７ａ上では仮想マシン４５，４６が動作し、ハイパーバイザ３８ａ上では仮想マシン４７，４８が動作する。仮想マシン４１はロードバランサを実行し、仮想マシン４２，４５，４７はＷｅｂサーバを実行し、仮想マシン４３，４６，４８はＡＰサーバを実行し、仮想マシン４４はＤＢサーバを実行する。
【００４５】
この場合、仮想マシン４１のロードバランサは、クライアントコンピュータから受信したＨＴＴＰリクエストを仮想マシン４２，４５，４７に振り分ける。仮想マシン４２のＷｅｂサーバは仮想マシン４３にアクセスし、仮想マシン４５のＷｅｂサーバは仮想マシン４６にアクセスし、仮想マシン４７のＷｅｂサーバは仮想マシン４８にアクセスする。仮想マシン４３，４６，４８のＡＰサーバは、Ｗｅｂサーバからの要求に応じて業務ロジックを実行し、業務ロジックの中で仮想マシン４４にアクセスする。仮想マシン４４のＤＢサーバは、ＡＰサーバからの要求に応じてデータの検索や更新を行う。
【００４６】
仮想マシン４３のＡＰサーバは業務ロジックの結果を仮想マシン４２に送信し、仮想マシン４６のＡＰサーバは業務ロジックの結果を仮想マシン４５に送信し、仮想マシン４８のＡＰサーバは業務ロジックの結果を仮想マシン４７に送信する。仮想マシン４２，４５，４７のＷｅｂサーバは、業務ロジックの結果からＨＴＴＰレスポンスを生成し、仮想マシン４１に送信する。仮想マシン４１のロードバランサは、ＨＴＴＰレスポンスをクライアントコンピュータに転送する。なお、ロードバランサは、各Ｗｅｂサーバで処理中のＨＴＴＰレスポンスの数を監視することで各Ｗｅｂサーバの負荷を推定し、負荷の小さいＷｅｂサーバに対して優先的にＨＴＴＰリクエストを転送するようにする。
【００４７】
次に、ＷｅｂサーバとＡＰサーバの組を複数起動することによる負荷分散を説明する。
図５は、サーバアプリケーションの起動・停止の例を示す第１の図である。
ここでは、ロードバランサ５０、Ｗｅｂサーバ５１ａおよびＡＰサーバ５１ｂがプライベートクラウド４で実行されているとする。また、このＷｅｂサービスの業務に関して、プライベートクラウド４に配置されている仮想マシンの数は上限に達していないとする。
【００４８】
管理サーバ１００は、Ｗｅｂサーバ５１ａおよびＡＰサーバ５１ｂの実行に用いる仮想マシンの負荷が高いことを検出する。例えば、管理サーバ１００は、２つの仮想マシンのＣＰＵ使用率の平均が閾値以上であることを検出する。すると、管理サーバ１００は、プライベート管理サーバ３１に仮想マシンの追加を指示する。プライベート管理サーバ３１は、プライベートクラウド４に、Ｗｅｂサーバ５２ａを実行する仮想マシンとＡＰサーバ５２ｂを実行する仮想マシンとを起動させる。また、管理サーバ１００は、Ｗｅｂサーバ５２ａにもＨＴＴＰリクエストが振り分けられるようにロードバランサ５０を設定する。
【００４９】
図６は、サーバアプリケーションの起動・停止の例を示す第２の図である。
管理サーバ１００は、Ｗｅｂサーバ５１ａ，５２ａおよびＡＰサーバ５１ｂ，５２ｂの実行に用いる仮想マシンの負荷が依然として高いことを検出する。例えば、管理サーバ１００は、４つの仮想マシンのＣＰＵ使用率の平均が閾値以上であることを検出する。ここでは、このＷｅｂサービスの業務に関して、プライベートクラウド４に配置されている仮想マシンの数が上限に達しているとする。すると、管理サーバ１００は、パブリック管理サーバ３２に仮想マシンの配置を指示する。パブリック管理サーバ３２は、パブリッククラウド５に、Ｗｅｂサーバ５３ａを実行する仮想マシンとＡＰサーバ５３ｂを実行する仮想マシンとを起動させる。また、管理サーバ１００は、Ｗｅｂサーバ５３ａにもＨＴＴＰリクエストが振り分けられるようにロードバランサ５０を設定する。
【００５０】
図７は、サーバアプリケーションの起動・停止の例を示す第３の図である。
管理サーバ１００は、このＷｅｂサービスの業務に対して依然としてリソースが不足している（仮想マシンが不足している）と判断したとする。すると、管理サーバ１００は、パブリック管理サーバ３２に仮想マシンの追加を指示する。パブリック管理サーバ３２は、パブリッククラウド５に、Ｗｅｂサーバ５４ａを実行する仮想マシンとＡＰサーバ５４ｂを実行する仮想マシンとを起動させる。また、管理サーバ１００は、Ｗｅｂサーバ５４ａにもＨＴＴＰリクエストが振り分けられるようにロードバランサ５０を設定する。
【００５１】
リソースが不足しているか否かは、例えば、プライベートクラウド４に配置されたＷｅｂサーバ５１ａ，５２ａおよびＡＰサーバ５１ｂ，５２ｂの実行に用いる仮想マシンの負荷に基づいて判断することが考えられる。パブリッククラウド５に仮想マシンを追加することで、多くの場合、仮想マシン１つ当たりの負荷が下がり、プライベートクラウド４に配置された仮想マシンの負荷も下がると期待される。しかし、以下に説明するように、仮想マシンを追加しても、プライベートクラウド４の仮想マシンの負荷が下がらない場合がある。その場合、プライベートクラウド４の仮想マシンの負荷のみに基づいて仮想マシンを追加すると、過剰な仮想マシンが配置されてしまうおそれがある。
【００５２】
図８は、ＣＰＵリソースの割当例を示す第１の図である。
ここでは、プライベートクラウド４のシステムはＣＰＵ６１〜６４（ＣＰＵ＃１〜＃４）を備え、パブリッククラウド５のシステムはＣＰＵ６５，６６（ＣＰＵ＃１１，＃１２）を含む多数のＣＰＵを備えているとする。説明を簡単にするため、全てのＣＰＵの演算速度は同じであるとし、１つのＣＰＵの処理時間１００％を１００リソースと定義する。ＣＰＵ６１の１００リソースは、業務Ａに用いる１つの仮想マシンに割り当てられている。ＣＰＵ６３の５０リソースとＣＰＵ６４の５０リソースは業務Ｂに割り当てられ、ＣＰＵ６３の５０リソースとＣＰＵ６４の５０リソースは業務Ｃに割り当てられている。また、仮想マシンのＣＰＵ使用率が６０％以上になったとき、当該仮想マシンの負荷が高いと判断するものとする。また、業務Ａについてプライベートクラウド４に配置可能な仮想マシンの上限数を２とする。
【００５３】
業務Ａに用いる仮想マシンのＣＰＵ使用率が８０％に上昇すると、例えば、プライベート管理サーバ３１は、業務Ａに用いる仮想マシンをプライベートクラウド４に追加し、追加した仮想マシンにＣＰＵ６２の１００リソースを割り当てる。これにより、業務Ａに用いる２個の仮想マシンそれぞれのＣＰＵ使用率が４０％に低下する。
【００５４】
図９は、ＣＰＵリソースの割当例を示す第２の図である。
業務Ａに用いる仮想マシンそれぞれのＣＰＵ使用率が６０％に上昇したとする。このとき、プライベートクラウド４に配置された仮想マシンの数は上限に達している。そこで、例えば、パブリック管理サーバ３２は、業務Ａに用いる仮想マシンをパブリッククラウド５に配置し、配置した仮想マシンにＣＰＵ６５の１００リソースを割り当てる。これにより、業務Ａに用いる３個の仮想マシンそれぞれのＣＰＵ使用率が４０％に低下する。
【００５５】
図１０は、ＣＰＵリソースの割当例を示す第３の図である。
プライベートクラウド４に対し、業務Ｄのユーザおよび業務Ｅのユーザから仮想マシンの起動が要求されたとする。このとき、プライベートクラウド４のシステムは未割当のＣＰＵリソースをもっていない。そこで、例えば、プライベート管理サーバ３１は、複数の業務の間の公平性の観点から、未使用のＣＰＵリソースが多い仮想マシンに対する割当を削減する。ここでは、業務Ａの１番目の仮想マシンへの割当をＣＰＵ６１の６０リソースに削減し、２番目の仮想マシンへの割当をＣＰＵ６２の６０リソースに削減する。
【００５６】
これに伴い、プライベートクラウド４に配置された業務Ａの仮想マシンのＣＰＵ使用率が６０％以上と算出される。そこで、例えば、パブリック管理サーバ３２は、業務Ａに用いる仮想マシンをパブリッククラウド５に追加し、追加した仮想マシンにＣＰＵ６６の１００リソースを割り当てる。これにより、プライベートクラウド４に配置された業務Ａの仮想マシンそれぞれのＣＰＵ使用率が５０％に低下する。
【００５７】
しかし、プライベートクラウド４のシステム全体のリソースが不足している状況では、ＣＰＵ使用率が下がると業務Ａの仮想マシンへのＣＰＵリソースの割当が更に削減されてしまうおそれがある。このように、パブリッククラウド５に業務Ａの仮想マシンを追加しても、プライベートクラウド４の業務Ａの仮想マシンの負荷は下がらず高止まりしてしまうことがある。そこで、第２の実施の形態では、管理サーバ１００は、パブリッククラウド５に配置された仮想マシンの負荷も参照して、プライベートクラウド４に配置された仮想マシンの負荷が下がると期待できるか判定する。負荷が下がると期待できない場合、管理サーバ１００は、仮想マシンの総数を増やすことを制限する。
【００５８】
図１１は、サーバアプリケーションの起動・停止の例を示す第４の図である。
管理サーバ１００は、Ｗｅｂサーバ５１ａ，５２ａおよびＡＰサーバ５１ｂ，５２ｂの実行に用いる仮想マシンの負荷が高い一方、Ｗｅｂサーバ５３ａおよびＡＰサーバ５３ｂの実行に用いる仮想マシンの負荷が低いことを検出する。例えば、管理サーバ１００は、プライベートクラウド４に配置された４つの仮想マシンのＣＰＵ使用率の平均が閾値以上であり、かつ、パブリッククラウド５に配置された２つの仮想マシンのＣＰＵ使用率の平均が閾値未満であることを検出する。この場合、管理サーバ１００は、仮想マシンを増やしてもプライベートクラウド４の負荷が下がらないと判断する。
【００５９】
すると、管理サーバ１００は、プライベート管理サーバ３１に仮想マシンの削減を指示する。プライベート管理サーバ３１は、Ｗｅｂサーバ５２ａおよびＡＰサーバ５２ｂの実行に用いる仮想マシンを停止させる。また、管理サーバ１００は、パブリック管理サーバ３２に仮想マシンの追加を指示する。パブリック管理サーバ３２は、パブリッククラウド５に、Ｗｅｂサーバ５４ａを実行する仮想マシンとＡＰサーバ５４ｂを実行する仮想マシンとを起動させる。また、管理サーバ１００は、Ｗｅｂサーバ５２ａへのＨＴＴＰリクエストの振り分けが停止され、Ｗｅｂサーバ５４ａにＨＴＴＰリクエストが振り分けられるように、ロードバランサ５０を設定する。これにより、実質的にプライベートクラウド４からパブリッククラウド５へ仮想マシンが移動したことになる。
【００６０】
図１２は、サーバアプリケーションの起動・停止の例を示す第５の図である。
管理サーバ１００は、Ｗｅｂサーバ５１ａおよびＡＰサーバ５１ｂの実行に用いる仮想マシンの負荷が高い一方、Ｗｅｂサーバ５３ａ，５４ａおよびＡＰサーバ５３ｂ，５４ｂの実行に用いる仮想マシンの負荷が低いことを検出する。例えば、管理サーバ１００は、プライベートクラウド４に配置された２つの仮想マシンのＣＰＵ使用率の平均が閾値以上であり、かつ、パブリッククラウド５に配置された４つの仮想マシンのＣＰＵ使用率の平均が閾値未満であることを検出する。この場合、管理サーバ１００は、仮想マシンを増やしてもプライベートクラウド４の負荷が下がらないと判断する。
【００６１】
すると、管理サーバ１００は、図１１の場合と同様に、仮想マシンの総数を増加させない。また、プライベートクラウド４には、Ｗｅｂサービスを提供するための最小限の数の仮想マシンのみ配置されているため、管理サーバ１００は、プライベートクラウド４からパブリッククラウド５へ仮想マシンを移動させない。業務毎に設定した下限数の仮想マシンをプライベートクラウド４に維持しておくことで、パブリッククラウド５のシステムが異常停止しても業務の処理を継続することができる。よって、ここでは管理サーバ１００は、仮想マシンの移動も追加も行わなくてよい。
【００６２】
図１３は、サーバアプリケーションの起動・停止の例を示す第６の図である。
管理サーバ１００は、Ｗｅｂサーバ５１ａおよびＡＰサーバ５１ｂの実行に用いる仮想マシンの負荷が低くなったことを検出する。例えば、管理サーバ１００は、プライベートクラウド４に配置された２つの仮想マシンのＣＰＵ使用率の平均が閾値未満に低下したことを検出する。すると、管理サーバ１００は、図１１の場合と逆に、プライベートクラウド４からパブリッククラウド５へ仮想マシンを移動させる。
【００６３】
すなわち、管理サーバ１００は、パブリック管理サーバ３２に仮想マシンの削減を指示する。パブリック管理サーバ３２は、Ｗｅｂサーバ５４ａおよびＡＰサーバ５４ｂの実行に用いる仮想マシンを停止させる。また、管理サーバ１００は、プライベート管理サーバ３１に仮想マシンの追加を指示する。プライベート管理サーバ３１は、プライベートクラウド４に、Ｗｅｂサーバ５２ａを実行する仮想マシンとＡＰサーバ５２ｂを実行する仮想マシンとを起動させる。また、管理サーバ１００は、Ｗｅｂサーバ５４ａへのＨＴＴＰリクエストの振り分けが停止され、Ｗｅｂサーバ５２ａにＨＴＴＰリクエストが振り分けられるように、ロードバランサ５０を設定する。パブリッククラウド５からプライベートクラウド４への仮想マシンの移動は、プライベートクラウド４に配置された仮想マシンの数が上限に達するまで行ってよい。
【００６４】
図１４は、ＣＰＵリソースの割当例を示す第４の図である。
ここでは、図１０で説明したように、プライベートクラウド４に対し、業務Ｄのユーザおよび業務Ｅのユーザから仮想マシンの起動が要求されたとする。そして、業務Ａの１番目の仮想マシンへの割当がＣＰＵ６１の６０リソースに削減され、２番目の仮想マシンへの割当がＣＰＵ６２の６０リソースに削減されたとする。
【００６５】
すると、管理サーバ１００は、プライベートクラウド４に配置された業務Ａの仮想マシンのＣＰＵ使用率が６０％以上である一方、パブリッククラウド５に配置された業務Ａの仮想マシンのＣＰＵ使用率が低い（４０％である）ことを検出する。よって、管理サーバ１００は、業務Ａに用いる仮想マシンを増やしてもプライベートクラウド４の負荷が下がらないと判断し、業務Ａに用いる仮想マシンの増加を制限する。
【００６６】
その代わり、管理サーバ１００は、プライベートクラウド４からパブリッククラウド５へ仮想マシンを移動することを決定する。プライベート管理サーバ３１は、ＣＰＵ６２の６０リソースを解放し、業務Ａに用いる１個の仮想マシンを停止させる。パブリック管理サーバ３２は、業務Ａに用いる仮想マシンをパブリッククラウド５に追加し、追加した仮想マシンにＣＰＵ６６の１００リソースを割り当てる。プライベートクラウド４では、１個の仮想マシンが停止したことで未割当のＣＰＵリソースが生じ、残された業務Ａの仮想マシンへのＣＰＵリソースの割当が増加することが期待できる。
【００６７】
なお、プライベートクラウド４のシステム全体のリソースが不足している状況では、複数の業務それぞれについて、上記のようにプライベートクラウド４からパブリッククラウド５への仮想マシンの移動が発生し得る。よって、プライベートクラウド４に残された仮想マシンへのＣＰＵリソースの割当は削減されず、それら仮想マシンの負荷は高止まりせずに低下するものと期待される。ただし、第２の実施の形態では、業務毎に下限数の仮想マシンをプライベートクラウド４に維持することとしたが、ある業務の仮想マシン全てをプライベートクラウド４から削除する（下限数をゼロとする）ようにしてもよい。
【００６８】
次に、管理サーバ１００が行う負荷分散の制御について説明する。
図１５は、管理サーバのソフトウェア構成例を示すブロック図である。
管理サーバ１００は、パラメータ設定部１２１、制御情報記憶部１２２、負荷情報取得部１２３、配置判定部１２４、起動・停止指示部１２５およびロードバランサ設定部１２６を有する。制御情報記憶部１２２は、例えば、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域として実装できる。パラメータ設定部１２１、負荷情報取得部１２３、配置判定部１２４、起動・停止指示部１２５およびロードバランサ設定部１２６は、例えば、ＣＰＵ１０１が実行するプログラムのモジュールとして実装できる。
【００６９】
パラメータ設定部１２１は、ユーザが入力デバイス１１２を用いて入力したパラメータの値を取得し、取得したパラメータの値を制御情報として制御情報記憶部１２２に格納する。パラメータの値は、配置判定部１２４による仮想マシンの配置制御に用いられるものであり、後述するようにプライベートクラウド４の仮想マシンの上限数などを含む。
【００７０】
制御情報記憶部１２２は、配置判定部１２４による仮想マシンの配置制御に用いられる制御情報を記憶する。制御情報は、上記の通り、パラメータ設定部１２１がユーザから取得したパラメータの値を含む。また、制御情報は、プライベートクラウド４およびパブリッククラウド５への仮想マシンの配置状況を示す情報を含む。
【００７１】
負荷情報取得部１２３は、業務サーバ３５，３６で動作している仮想マシンそれぞれの負荷を示す負荷情報を、プライベート管理サーバ３１から定期的に取得する。負荷を表す指標として、例えば、仮想マシンに割り当てられたＣＰＵ時間に対する当該仮想マシンが演算を行っているＣＰＵ時間の割合であるＣＰＵ使用率を用いる。各仮想マシンの負荷としては、瞬間的な負荷を用いてもよいし、直近の所定時間における平均の負荷を用いてもよい。負荷情報取得部１２３は、業務毎のプライベートクラウド４の負荷（プライベート負荷）として、当該業務に用いる仮想マシンの負荷の平均を算出する。また、負荷情報取得部１２３は、配置判定部１２４からの要求に応じて、業務サーバ３７，３８で動作している仮想マシンそれぞれの負荷を示す負荷情報をパブリック管理サーバ３２から取得する。負荷情報取得部１２３は、業務毎のパブリッククラウド５の負荷（パブリック負荷）として、当該業務に用いる仮想マシンの負荷の平均を算出する。
【００７２】
配置判定部１２４は、業務毎に、当該業務の処理が複数の仮想マシンに適切に分散されるよう、動的に仮想マシンのスケールアウトやスケールインを行う。スケールアウトは、仮想マシンを増やして業務処理能力を拡張することである。スケールインは、仮想マシンを減らして業務処理能力を縮小することである。配置判定部１２４は、定期的にプライベート負荷を確認し、プライベート負荷に応じて、業務サーバ３５〜３８上での仮想マシンの起動や停止を決定する。原則として、業務サーバ３５，３６に優先的に仮想マシンが配置され、プライベートクラウド４の仮想マシン数が上限に達した場合に、業務サーバ３７，３８に仮想マシンが配置される。ただし、配置判定部１２４は、パブリック負荷に応じて、業務サーバ３７，３８への仮想マシンの追加を制限することがある。
【００７３】
起動・停止指示部１２５は、業務サーバ３５，３６上での仮想マシンの起動または停止が決定されると、配置判定部１２４からの要求に応じて、プライベート管理サーバ３１に仮想マシンの起動または停止を指示する。また、起動・停止指示部１２５は、業務サーバ３７，３８上での仮想マシンの起動または停止が決定されると、配置判定部１２４からの要求に応じて、パブリック管理サーバ３２に仮想マシンの起動または停止を指示する。
【００７４】
ロードバランサ設定部１２６は、業務サーバ３５〜３８上での仮想マシンの起動または停止が決定されると、配置判定部１２４からの要求に応じて、ロードバランサがもつ設定情報を更新する。ロードバランサの設定情報は、例えば、ＨＴＴＰリクエストの振り分け先であるサーバアプリケーションを実行する仮想マシンのアドレス（例えば、ＩＰ（Internet Protocol）アドレス）のリストを含む。ロードバランサ設定部１２６は、例えば、仮想マシンが起動される場合には当該仮想マシンのアドレスをリストに追加し、仮想マシンが停止される場合には当該仮想マシンのアドレスをリストから削除する。
【００７５】
図１６は、仮想マシン数テーブルの例を示す図である。
仮想マシン数テーブル１３１は、業務毎に用意されて制御情報記憶部１２２に記憶される。図１６は、１つの業務に対応する仮想マシン数テーブル１３１の例を示している。仮想マシン数テーブル１３１には、５個のパラメータ（ｐｒｉｖａｔｅ＿ｍｉｎ，ｐｒｉｖａｔｅ＿ｌｉｍｉｔ，ｐｒｉｖａｔｅ＿ｖｍｓ，ｐｕｂｌｉｃ＿ｌｉｍｉｔ，ｐｕｂｌｉｃ＿ｖｍｓ）のパラメータ名とその値とが対応付けて登録される。
【００７６】
ｐｒｉｖａｔｅ＿ｍｉｎは、ある業務に関してプライベートクラウド４に配置する仮想マシンの下限数を示す。ｐｒｉｖａｔｅ＿ｌｉｍｉｔは、ある業務に関してプライベートクラウド４に配置可能な仮想マシンの上限数を示す。ｐｒｉｖａｔｅ＿ｖｍｓは、ある業務に関してプライベートクラウド４に現在配置されている仮想マシンの数を示す。ｐｕｂｌｉｃ＿ｌｉｍｉｔは、ある業務に関してパブリッククラウド５に配置可能な仮想マシンの上限数を示す。ｐｕｂｌｉｃ＿ｖｍｓは、ある業務に関してパブリッククラウド５に現在配置されている仮想マシンの数を示す。ｐｒｉｖａｔｅ＿ｍｉｎ，ｐｒｉｖａｔｅ＿ｌｉｍｉｔ，ｐｕｂｌｉｃ＿ｌｉｍｉｔの値は、ユーザによって指定される。
【００７７】
図１７は、負荷判定テーブルの例を示す図である。
負荷判定テーブル１３２は、業務毎に用意されて制御情報記憶部１２２に記憶される。図１７は、１つの業務に対応する負荷判定テーブル１３２の例を示している。負荷判定テーブル１３２には、２個のパラメータ（ｐｒｉｖａｔｅ＿ｌｏａｄＴｈ，ｐｕｂｌｉｃ＿ｌｏａｄＴｈ）のパラメータ名とその値とが対応付けて登録される。
【００７８】
ｐｒｉｖａｔｅ＿ｌｏａｄＴｈは、ある業務に関して、プライベートクラウド４に配置された仮想マシンの負荷（プライベート負荷）が高いか否か判定する閾値を示す。ｐｕｂｌｉｃ＿ｌｏａｄＴｈは、ある業務に関して、パブリッククラウド５に配置された仮想マシンの負荷（パブリック負荷）が高いか否か判定する閾値を示す。ｐｒｉｖａｔｅ＿ｌｏａｄＴｈ，ｐｕｂｌｉｃ＿ｌｏａｄＴｈの値は、ユーザによって指定される。
【００７９】
図１８は、仮想マシン配置テーブルの例を示す図である。
仮想マシン配置テーブル１３３は、業務毎に用意されて制御情報記憶部１２２に記憶される。図１８は、１つの業務に対応する仮想マシン配置テーブル１３３の例を示している。仮想マシン配置テーブル１３３は、仮想マシン名および配置ゾーンの項目を含む。
【００８０】
仮想マシン名の項目には、仮想マシンを識別する識別情報が登録される。識別情報は、仮想マシンに設定されたホスト名であってもよいし、仮想マシンに割り当てられたアドレス（例えば、ＩＰアドレス）であってもよい。配置ゾーンの項目には、仮想マシンがプライベートクラウド４である業務サーバ３５，３６とパブリッククラウド５である業務サーバ３７，３８の何れに配置されているかを示す情報が登録される。例えば、配置ゾーンの項目には、「プライベート」または「パブリック」の何れかが登録される。
【００８１】
次に、仮想マシンの起動や停止を判断するアルゴリズムを説明する。
図１９は、仮想マシン配置の判断基準の例を示す図である。
ここで、移動中フラグ＝ＹＥＳ（＝１）は、パブリッククラウド５に仮想マシンを追加することが制限され、プライベートクラウド４からパブリッククラウド５へ移動された仮想マシンがあることを示している。移動中フラグ＝ＮＯ（＝０）は、プライベートクラウド４からパブリッククラウド５へ移動された仮想マシンがないこと（移動した仮想マシンの全てをプライベートクラウド４に戻した場合を含む）を示している。
【００８２】
（１）プライベート負荷が高く、プライベートクラウド４の仮想マシン数が上限ではなく、移動中フラグ＝ＮＯの場合、プライベートクラウド４に仮想マシンが追加される。
（２）プライベート負荷が高く、プライベートクラウド４の仮想マシン数が上限であり、移動中フラグ＝ＮＯであり、パブリッククラウド５の仮想マシン数がゼロの場合、パブリッククラウド５に仮想マシンが追加される。
【００８３】
（３）プライベート負荷が高く、プライベートクラウド４の仮想マシン数が上限であり、移動中フラグ＝ＮＯであり、パブリッククラウド５の仮想マシン数が１以上であり、パブリック負荷が高い場合、パブリッククラウド５に仮想マシンが追加される。
【００８４】
（４）プライベート負荷が高く、プライベートクラウド４の仮想マシン数が上限であり、移動中フラグ＝ＮＯであり、パブリッククラウド５の仮想マシン数が１以上であり、パブリック負荷が低い場合、プライベートクラウド４からパブリッククラウド５へ仮想マシンが移動する。これに伴い、移動中フラグ＝ＹＥＳに更新される。
【００８５】
（５）プライベート負荷が高く、プライベートクラウド４の仮想マシン数が下限ではなく、移動中フラグ＝ＹＥＳであり、パブリック負荷が低い場合、プライベートクラウド４からパブリッククラウド５へ仮想マシンが移動する。
【００８６】
（６）プライベート負荷が高く、プライベートクラウド４の仮想マシン数が下限であり、移動中フラグ＝ＹＥＳであり、パブリック負荷が低い場合、何もしなくてよい。
（７）プライベート負荷が高く、移動中フラグ＝ＹＥＳであり、パブリック負荷が高い場合、パブリッククラウド５へ仮想マシンが追加される。
【００８７】
（８）プライベート負荷が低く、移動中フラグ＝ＹＥＳの場合、パブリッククラウド５からプライベートクラウド４へ仮想マシンが移動する。移動によってプライベートクラウド４の仮想マシン数が上限に達した場合、移動中フラグ＝ＮＯに更新される。
【００８８】
（９）プライベート負荷が低く、移動中フラグ＝ＮＯであり、パブリッククラウド５の仮想マシン数が１以上である場合、パブリッククラウド５から仮想マシンを削減する。
（１０）プライベート負荷が低く、プライベートクラウド４の仮想マシン数が下限ではなく、移動中フラグ＝ＮＯであり、パブリッククラウド５の仮想マシン数がゼロである場合、プライベートクラウド４から仮想マシンを削減する。
【００８９】
（１１）プライベート負荷が低く、プライベートクラウド４の仮想マシン数が下限であり、移動中フラグ＝ＮＯであり、パブリッククラウド５の仮想マシン数がゼロである場合、何もしなくてよい。
【００９０】
図２０は、仮想マシン配置制御の手順例を示すフローチャート（第１の図）である。
仮想マシン配置制御は、例えば、複数の業務それぞれについて定期的に実行される。
（Ｓ１０）負荷情報取得部１２３は、プライベート管理サーバ３１からプライベートクラウド４の各仮想マシンの負荷（例えば、ＣＰＵ使用率）を示す負荷情報を取得する。仮想マシンの負荷は、瞬間的な値でもよいし直近の所定時間の平均値でもよい。負荷情報取得部１２３は、取得した負荷情報に基づいて、一の業務に用いる複数の仮想マシンの負荷の平均（例えば、平均ＣＰＵ使用率）をプライベート負荷として算出する。
【００９１】
（Ｓ１１）配置判定部１２４は、負荷判定テーブル１３２に登録されたプライベートクラウド４の負荷閾値（ｐｒｉｖａｔｅ＿ｌｏａｄＴｈ）を読み出し、プライベート負荷がｐｒｉｖａｔｅ＿ｌｏａｄＴｈ以上であるか判断する。条件を満たす場合はステップＳ１２に処理が進み、条件を満たさない場合はステップＳ４０に処理が進む。
【００９２】
（Ｓ１２）配置判定部１２４は、移動中フラグ＝ＹＥＳ（または、値「１」）であるか判断する。移動中フラグ＝ＹＥＳの場合はステップＳ２０に処理が進み、移動中フラグ＝ＮＯの場合はステップＳ１３に処理が進む。なお、移動中フラグは、配置判定部１２４が保持してもよいし、制御情報記憶部１２２に記憶するテーブルに登録してもよい。
【００９３】
（Ｓ１３）配置判定部１２４は、仮想マシン数テーブル１３１から、プライベートクラウド４の配置数（ｐｒｉｖａｔｅ＿ｖｍｓ）とプライベートクラウド４の上限数（ｐｒｉｖａｔｅ＿ｌｉｍｉｔ）を読み出す。そして、配置判定部１２４は、ｐｒｉｖａｔｅ＿ｖｍｓがｐｒｉｖａｔｅ＿ｌｉｍｉｔに達しているか判断する。条件を満たす場合はステップＳ２０に処理が進み、条件を満たさない場合はステップＳ１４に処理が進む。
【００９４】
（Ｓ１４）配置判定部１２４は、プライベートクラウド４で仮想マシンを起動することを決定する。起動する仮想マシンの数は、業務の処理を担当するための最小の単位数とし、業務に応じて異なることがある。３階層ＷｅｂシステムのＷｅｂサーバとＡＰサーバを負荷分散する場合、例えば、２個の仮想マシンが起動される。起動・停止指示部１２５は、プライベート管理サーバ３１に仮想マシンの起動を指示する。プライベート管理サーバ３１は、仮想マシンに割り当てるリソースを決定し、業務サーバ３５，３６に仮想マシンを配置する。なお、仮想マシンの起動に用いるイメージデータには、ＯＳプログラムやサーバアプリケーションプログラムが含まれる。このイメージデータは、所定の記憶装置に記憶されており、仮想マシンを配置する業務サーバに転送される。
【００９５】
（Ｓ１５）ロードバランサ設定部１２６は、ＨＴＴＰリクエストの振り分け先となるサーバアプリケーション（例えば、Ｗｅｂサーバ）を実行する仮想マシンを特定し、ロードバランサがもつ設定情報に当該仮想マシンのアドレスを登録する。これにより、プライベートクラウド４で起動した仮想マシンに業務の処理が振り分けられる。
【００９６】
（Ｓ１６）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたプライベートクラウド４の配置数（ｐｒｉｖａｔｅ＿ｖｍｓ）を更新する。ここでは、起動された仮想マシンの数だけｐｒｉｖａｔｅ＿ｖｍｓが増加する。また、配置判定部１２４は、起動された仮想マシンの識別情報を仮想マシン配置テーブル１３３に登録する。このとき、配置ゾーンは「プライベート」に設定される。そして、処理が終了する。
【００９７】
図２１は、仮想マシン配置制御の手順例を示すフローチャート（第２の図）である。
（Ｓ２０）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたパブリッククラウド５の配置数（ｐｕｂｌｉｃ＿ｖｍｓ）を読み出し、ｐｕｂｌｉｃ＿ｖｍｓがゼロであるか判断する。条件を満たす場合はステップＳ２４に処理が進み、条件を満たさない場合（ｐｕｂｌｉｃ＿ｖｍｓが１以上の場合）はステップＳ２１に処理が進む。
【００９８】
（Ｓ２１）負荷情報取得部１２３は、パブリック管理サーバ３２からパブリッククラウド５の各仮想マシンの負荷（例えば、ＣＰＵ使用率）を示す負荷情報を取得する。負荷情報取得部１２３は、取得した負荷情報に基づいて、一の業務に用いる複数の仮想マシンの負荷の平均（例えば、平均ＣＰＵ使用率）をパブリック負荷として算出する。
【００９９】
（Ｓ２２）配置判定部１２４は、負荷判定テーブル１３２に登録されたパブリッククラウド５の負荷閾値（ｐｕｂｌｉｃ＿ｌｏａｄＴｈ）を読み出し、パブリック負荷がｐｕｂｌｉｃ＿ｌｏａｄＴｈ以上であるか判断する。条件を満たす場合はステップＳ２３に処理が進み、条件を満たさない場合はステップＳ３０に処理が進む。
【０１００】
（Ｓ２３）配置判定部１２４は、仮想マシン数テーブル１３１から、パブリッククラウド５の配置数（ｐｕｂｌｉｃ＿ｖｍｓ）とパブリッククラウド５の上限数（ｐｕｂｌｉｃ＿ｌｉｍｉｔ）を読み出す。そして、配置判定部１２４は、ｐｕｂｌｉｃ＿ｖｍｓがｐｕｂｌｉｃ＿ｌｉｍｉｔに達しているか判断する。条件を満たす場合は仮想マシンの配置に変化なく処理が終了し、条件を満たさない場合はステップＳ２４に処理が進む。
【０１０１】
（Ｓ２４）配置判定部１２４は、パブリッククラウド５で仮想マシンを起動することを決定する。３階層ＷｅｂシステムのＷｅｂサーバとＡＰサーバを負荷分散する場合、例えば、２個の仮想マシンが起動される。起動・停止指示部１２５は、パブリック管理サーバ３２に仮想マシンの起動を指示する。パブリック管理サーバ３２は、仮想マシンに割り当てるリソースを決定し、業務サーバ３７，３８に仮想マシンを配置する。
【０１０２】
（Ｓ２５）ロードバランサ設定部１２６は、ＨＴＴＰリクエストの振り分け先となるサーバアプリケーション（例えば、Ｗｅｂサーバ）を実行する仮想マシンを特定し、ロードバランサがもつ設定情報に当該仮想マシンのアドレスを登録する。
【０１０３】
（Ｓ２６）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたパブリッククラウド５の配置数（ｐｕｂｌｉｃ＿ｖｍｓ）を更新する。ここでは、起動された仮想マシンの数だけｐｕｂｌｉｃ＿ｖｍｓが増加する。また、配置判定部１２４は、起動された仮想マシンの識別情報を仮想マシン配置テーブル１３３に登録する。このとき、配置ゾーンは「パブリック」に設定される。そして、処理が終了する。
【０１０４】
図２２は、仮想マシン配置制御の手順例を示すフローチャート（第３の図）である。
（Ｓ３０）配置判定部１２４は、仮想マシン数テーブル１３１から、プライベートクラウド４の配置数（ｐｒｉｖａｔｅ＿ｖｍｓ）とプライベートクラウド４の下限数（ｐｒｉｖａｔｅ＿ｍｉｎ）を読み出す。そして、配置判定部１２４は、ｐｒｉｖａｔｅ＿ｖｍｓがｐｒｉｖａｔｅ＿ｍｉｎと一致するか判断する。条件を満たす場合は仮想マシンの配置に変化なく処理が終了し、条件を満たさない場合はステップＳ３１に処理が進む。
【０１０５】
（Ｓ３１）配置判定部１２４は、パブリッククラウド５で仮想マシンを起動することを決定する。３階層ＷｅｂシステムのＷｅｂサーバとＡＰサーバを負荷分散する場合、例えば、２個の仮想マシンが起動される。起動・停止指示部１２５は、パブリック管理サーバ３２に仮想マシンの起動を指示する。パブリック管理サーバ３２は、仮想マシンに割り当てるリソースを決定し、業務サーバ３７，３８に仮想マシンを配置する。
【０１０６】
（Ｓ３２）ロードバランサ設定部１２６は、ＨＴＴＰリクエストの振り分け先となるサーバアプリケーション（例えば、Ｗｅｂサーバ）を実行する仮想マシンを特定し、ロードバランサがもつ設定情報に当該仮想マシンのアドレスを登録する。
【０１０７】
（Ｓ３３）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたパブリッククラウド５の配置数（ｐｕｂｌｉｃ＿ｖｍｓ）を更新する。ここでは、起動された仮想マシンの数だけｐｕｂｌｉｃ＿ｖｍｓが増加する。また、配置判定部１２４は、起動された仮想マシンの識別情報を仮想マシン配置テーブル１３３に登録する。このとき、配置ゾーンは「パブリック」に設定される。
【０１０８】
（Ｓ３４）配置判定部１２４は、プライベートクラウド４で仮想マシンを停止することを決定する。停止する仮想マシンの数は、業務の処理を担当するための最小の単位数とし、ステップＳ３１で起動された仮想マシンと同じ数とする。停止する仮想マシンは、プライベートクラウド４で動作中の仮想マシンの中からランダムに選択してもよい。ロードバランサ設定部１２６は、ＨＴＴＰリクエストの振り分け先となるサーバアプリケーション（例えば、Ｗｅｂサーバ）を実行する仮想マシンであって停止する仮想マシンを特定し、ロードバランサがもつ設定情報から当該仮想マシンのアドレスを削除する。
【０１０９】
（Ｓ３５）起動・停止指示部１２５は、プライベート管理サーバ３１に仮想マシンの停止を指示する。プライベート管理サーバ３１は、指定された仮想マシンのＯＳをシャットダウンさせ、停止した仮想マシンに割り当てていたリソースを解放する。
【０１１０】
（Ｓ３６）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたプライベートクラウド４の配置数（ｐｒｉｖａｔｅ＿ｖｍｓ）を更新する。ここでは、停止した仮想マシンの数だけｐｒｉｖａｔｅ＿ｖｍｓが減少する。また、配置判定部１２４は、停止した仮想マシンの識別情報を仮想マシン配置テーブル１３３から削除する。
【０１１１】
（Ｓ３７）配置判定部１２４は、移動中フラグ＝ＹＥＳ（または、値「１」）に設定する。ステップＳ３１〜Ｓ３６の結果、プライベートクラウド４からパブリッククラウド５に仮想マシンが移動したことになる。そして、処理が終了する。
【０１１２】
図２３は、仮想マシン配置制御の手順例を示すフローチャート（第４の図）である。
（Ｓ４０）配置判定部１２４は、移動中フラグ＝ＹＥＳ（または、値「１」）であるか判断する。移動中フラグ＝ＹＥＳの場合はステップＳ４１に処理が進み、移動中フラグ＝ＮＯの場合はステップＳ５０に処理が進む。
【０１１３】
（Ｓ４１）配置判定部１２４は、プライベートクラウド４で仮想マシンを起動することを決定する。３階層ＷｅｂシステムのＷｅｂサーバとＡＰサーバを負荷分散する場合、例えば、２個の仮想マシンが起動される。起動・停止指示部１２５は、プライベート管理サーバ３１に仮想マシンの起動を指示する。プライベート管理サーバ３１は、仮想マシンに割り当てるリソースを決定し、業務サーバ３５，３６に仮想マシンを配置する。
【０１１４】
（Ｓ４２）ロードバランサ設定部１２６は、ＨＴＴＰリクエストの振り分け先となるサーバアプリケーション（例えば、Ｗｅｂサーバ）を実行する仮想マシンを特定し、ロードバランサがもつ設定情報に当該仮想マシンのアドレスを登録する。
【０１１５】
（Ｓ４３）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたプライベートクラウド４の配置数（ｐｒｉｖａｔｅ＿ｖｍｓ）を更新する。ここでは、起動された仮想マシンの数だけｐｒｉｖａｔｅ＿ｖｍｓが増加する。また、配置判定部１２４は、起動された仮想マシンの識別情報を仮想マシン配置テーブル１３３に登録する。このとき、配置ゾーンは「プライベート」に設定される。
【０１１６】
（Ｓ４４）配置判定部１２４は、パブリッククラウド５で仮想マシンを停止することを決定する。停止する仮想マシンの数は、業務の処理を担当するための最小の単位数とし、ステップＳ４１で起動された仮想マシンと同じ数とする。停止する仮想マシンは、パブリッククラウド５で動作中の仮想マシンの中からランダムに選択してもよい。ロードバランサ設定部１２６は、ＨＴＴＰリクエストの振り分け先となるサーバアプリケーション（例えば、Ｗｅｂサーバ）を実行する仮想マシンであって停止する仮想マシンを特定し、ロードバランサがもつ設定情報から当該仮想マシンのアドレスを削除する。
【０１１７】
（Ｓ４５）起動・停止指示部１２５は、パブリック管理サーバ３２に仮想マシンの停止を指示する。パブリック管理サーバ３２は、指定された仮想マシンのＯＳをシャットダウンさせ、停止した仮想マシンに割り当てていたリソースを解放する。
【０１１８】
（Ｓ４６）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたパブリッククラウド５の配置数（ｐｕｂｌｉｃ＿ｖｍｓ）を更新する。ここでは、停止した仮想マシンの数だけｐｕｂｌｉｃ＿ｖｍｓが減少する。また、配置判定部１２４は、停止した仮想マシンの識別情報を仮想マシン配置テーブル１３３から削除する。
【０１１９】
（Ｓ４７）配置判定部１２４は、仮想マシン数テーブル１３１から、プライベートクラウド４の配置数（ｐｒｉｖａｔｅ＿ｖｍｓ）とプライベートクラウド４の上限数（ｐｒｉｖａｔｅ＿ｌｉｍｉｔ）を読み出す。そして、配置判定部１２４は、ｐｒｉｖａｔｅ＿ｖｍｓがｐｒｉｖａｔｅ＿ｌｉｍｉｔに達しているか判断する。条件を満たす場合はステップＳ４８に処理が進み、条件を満たさない場合は処理が終了する。
【０１２０】
（Ｓ４８）配置判定部１２４は、移動中フラグ＝ＮＯ（または、値「０」）に設定する。ステップＳ４１〜Ｓ４６の結果、パブリッククラウド５からプライベートクラウド４に仮想マシンが移動したことになる。そして、処理が終了する。
【０１２１】
図２４は、仮想マシン配置制御の手順例を示すフローチャート（第５の図）である。
（Ｓ５０）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたパブリッククラウド５の配置数（ｐｕｂｌｉｃ＿ｖｍｓ）を読み出し、ｐｕｂｌｉｃ＿ｖｍｓがゼロであるか判断する。条件を満たす場合はステップＳ５１に処理が進み、条件を満たさない場合（ｐｕｂｌｉｃ＿ｖｍｓが１以上の場合）はステップＳ５５に処理が進む。
【０１２２】
（Ｓ５１）配置判定部１２４は、仮想マシン数テーブル１３１から、プライベートクラウド４の配置数（ｐｒｉｖａｔｅ＿ｖｍｓ）とプライベートクラウド４の下限数（ｐｒｉｖａｔｅ＿ｍｉｎ）を読み出す。そして、配置判定部１２４は、ｐｒｉｖａｔｅ＿ｖｍｓがｐｒｉｖａｔｅ＿ｍｉｎと一致するか判断する。条件を満たす場合は処理が終了し、条件を満たさない場合はステップＳ５２に処理が進む。
【０１２３】
（Ｓ５２）配置判定部１２４は、プライベートクラウド４で仮想マシンを停止することを決定する。３階層ＷｅｂシステムのＷｅｂサーバとＡＰサーバを負荷分散している場合、例えば、２個の仮想マシンを停止させる。停止する仮想マシンは、プライベートクラウド４で動作中の仮想マシンの中からランダムに選択してもよい。ロードバランサ設定部１２６は、ＨＴＴＰリクエストの振り分け先となるサーバアプリケーション（例えば、Ｗｅｂサーバ）を実行する仮想マシンであって停止する仮想マシンを特定し、ロードバランサがもつ設定情報から当該仮想マシンのアドレスを削除する。
【０１２４】
（Ｓ５３）起動・停止指示部１２５は、プライベート管理サーバ３１に仮想マシンの停止を指示する。プライベート管理サーバ３１は、指定された仮想マシンのＯＳをシャットダウンさせ、停止した仮想マシンに割り当てていたリソースを解放する。
【０１２５】
（Ｓ５４）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたプライベートクラウド４の配置数（ｐｒｉｖａｔｅ＿ｖｍｓ）を更新する。ここでは、停止した仮想マシンの数だけｐｒｉｖａｔｅ＿ｖｍｓが減少する。また、配置判定部１２４は、停止した仮想マシンの識別情報を仮想マシン配置テーブル１３３から削除する。これにより、複数の仮想マシンを用いた業務処理の能力が縮退する。そして、処理が終了する。
【０１２６】
（Ｓ５５）配置判定部１２４は、パブリッククラウド５で仮想マシンを停止することを決定する。３階層ＷｅｂシステムのＷｅｂサーバとＡＰサーバを負荷分散している場合、例えば、２個の仮想マシンを停止させる。停止する仮想マシンは、パブリッククラウド５で動作中の仮想マシンの中からランダムに選択してもよい。ロードバランサ設定部１２６は、ＨＴＴＰリクエストの振り分け先となるサーバアプリケーション（例えば、Ｗｅｂサーバ）を実行する仮想マシンであって停止する仮想マシンを特定し、ロードバランサがもつ設定情報から当該仮想マシンのアドレスを削除する。
【０１２７】
（Ｓ５６）起動・停止指示部１２５は、パブリック管理サーバ３２に仮想マシンの停止を指示する。パブリック管理サーバ３２は、指定された仮想マシンのＯＳをシャットダウンさせ、停止した仮想マシンに割り当てていたリソースを解放する。
【０１２８】
（Ｓ５７）配置判定部１２４は、仮想マシン数テーブル１３１に登録されたパブリッククラウド５の配置数（ｐｕｂｌｉｃ＿ｖｍｓ）を更新する。ここでは、停止した仮想マシンの数だけｐｕｂｌｉｃ＿ｖｍｓが減少する。また、配置判定部１２４は、停止した仮想マシンの識別情報を仮想マシン配置テーブル１３３から削除する。これにより、複数の仮想マシンを用いた業務処理の能力が縮退する。そして、処理が終了する。
【０１２９】
第２の実施の形態の情報処理システムによれば、プライベートクラウド４の仮想マシンの負荷とパブリッククラウド５の仮想マシンの負荷の両方が高い場合、パブリッククラウド５に仮想マシンを追加することが許容される。一方、プライベートクラウド４の仮想マシンの負荷は高いもののパブリッククラウド５の仮想マシンの負荷が低い場合、パブリッククラウド５に仮想マシンを更に追加して仮想マシンの総数を増やすことが制限される。
【０１３０】
これにより、プライベートクラウド４の負荷の低下が期待できない場面でパブリッククラウド５に過剰な仮想マシンが配置されるのを抑制でき、パブリッククラウド５のリソースを効率的に利用することができる。パブリッククラウド５のリソースの利用に対して従量制料金が発生する場合、企業が負担する料金を削減することができる。
【０１３１】
また、仮想マシンの総数を増やすことが制限されているとき、プライベートクラウド４からパブリッククラウド５に仮想マシンを移動することで、負荷が高止まりしている仮想マシンを減らすことができる。また、ロードバランサが適切にＨＴＴＰリクエストを振り分けることで、負荷が高止まりしている仮想マシンの業務処理を減らし、応答時間の悪化を抑制することができる。また、プライベートクラウド４に最低数の仮想マシンを残すことで、パブリッククラウド５のシステムが障害などにより一時的に利用できなくなっても業務を継続することができ、業務停止のリスクを低減できる。
【０１３２】
なお、前述のように、第１の実施の形態の情報処理は、管理装置１０にプログラムを実行させることで実現することができる。第２の実施の形態の情報処理は、プライベート管理サーバ３１、パブリック管理サーバ３２、クライアント３３，３４、業務サーバ３５〜３８および管理サーバ１００にプログラムを実行させることで実現することができる。
【０１３３】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体１１３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムを複製して（インストールして）実行してもよい。
【符号の説明】
【０１３４】
１０  管理装置
１１  通信部
１２  制御部
２，３  システム
２ａ，２ｂ，３ａ，３ｂ  仮想マシン
【図１】
2015153402.tif 000003
【図２】
2015153402.tif 000004
【図３】
2015153402.tif 000005
【図４】
2015153402.tif 000006
【図５】
2015153402.tif 000007
【図６】
2015153402.tif 000008
【図７】
2015153402.tif 000009
【図８】
2015153402.tif 000010
【図９】
2015153402.tif 000011
【図１０】
2015153402.tif 000012
【図１１】
2015153402.tif 000013
【図１２】
2015153402.tif 000014
【図１３】
2015153402.tif 000015
【図１４】
2015153402.tif 000016
【図１５】
2015153402.tif 000017
【図１６】
2015153402.tif 000018
【図１７】
2015153402.tif 000019
【図１８】
2015153402.tif 000020
【図１９】
2015153402.tif 000021
【図２０】
2015153402.tif 000022
【図２１】
2015153402.tif 000023
【図２２】
2015153402.tif 000024
【図２３】
2015153402.tif 000025
【図２４】
2015153402.tif 000026