(57)【要約】【課題】仮想マシンを追加対象とするサービスを適切に判断すること。【解決手段】情報処理装置１は、記憶部１ａと演算部１ｂとを有する。記憶部１ａは、仮想マシンが提供するサービスとサービスの重要度との対応関係を示す設定情報２を記憶する。演算部１ｂは、サービスを提供している複数の仮想マシンのうち、負荷が閾値を超えた仮想マシンＸ１，Ｘ２を検出し、設定情報２を参照して、仮想マシンＸ１の所定時間後の負荷の予測値である第１の予測負荷値と重要度Ｚ１とに基づいて、仮想マシンＸ１が提供するサービスＹ１に対する仮想マシン増築の優先度を決め、仮想マシンＸ２の所定時間後の負荷の予測値である第２の予測負荷値と、重要度Ｚ２とに基づいて、仮想マシンＸ２が提供するサービスＹ２に対する仮想マシン増築の優先度を決め、優先度が高い方に対するサービスＹ２を提供する仮想マシンを、優先的に構築すると決定する。【選択図】図１
2017107274.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
サービスを提供している複数の仮想マシンのうち、負荷が閾値を超えた第１および第２の仮想マシンを検出し、
前記第１の仮想マシンの所定時間後の負荷の予測値である第１の予測負荷値と、前記第１の仮想マシンが提供している第１のサービスの重要度とに基づいて、前記第１のサービスに対する仮想マシン増築の第１の優先度を決め、
前記第２の仮想マシンの所定時間後の負荷の予測値である第２の予測負荷値と、前記第２の仮想マシンが提供している第２のサービスの重要度とに基づいて、前記第２のサービスに対する仮想マシン増築の第２の優先度を決め、
前記第１の優先度と、前記第２の優先度のうちの優先度が高い方に対するサービスを提供する仮想マシンを、優先的に構築すると決定する、
仮想マシン増設方法。
【請求項２】
前記第１の予測負荷値は、現在から、前記第１のサービス提供用に増築する仮想マシンの起動までに要する時間経過後の、前記第１の仮想マシンの負荷の予測値であり、
前記第２の予測負荷値は、現在から、前記第２のサービス提供用に増築する仮想マシンの起動までに要する時間経過後の、前記第２の仮想マシンの負荷の予測値である、
請求項１記載の仮想マシン増設方法。
【請求項３】
前記コンピュータが、さらに、
前記第１の仮想マシンの負荷が前記閾値を超えたことを検出したとき、前記第１のサービス提供用の仮想マシンの増築処理を開始し、
前記第２の仮想マシンの負荷が前記閾値を超えたことを検出したとき、前記第２のサービス提供用の仮想マシンの増築処理を開始し、
前記第１の優先度を決める処理を、前記第１のサービス提供用の仮想マシンの起動までの残り時間に基づいて、該仮想マシンの構築処理を実施している間に繰り返し行い、
前記第２の優先度を決める処理を、前記第２のサービス提供用の仮想マシンの起動までの残り時間に基づいて、該仮想マシンの構築処理を実施している間に繰り返し行い、
優先的に構築する仮想マシンの決定を、前記第１および第２の優先度の計算が行われる毎に実施し、優先的に構築する仮想マシンの決定結果を更新する、
請求項２記載の仮想マシン増設方法。
【請求項４】
前記コンピュータが、さらに、
優先度が高い方のサービス提供用の仮想マシンよりも先に、優先度が低い方のサービス提供用の仮想マシンの起動が完了したとき、該仮想マシンの状態をストレージ装置に退避させることで、リソースを解放させ、
優先度が高い方のサービス提供用の仮想マシンにリソースを割当て、該仮想マシンを起動する、
請求項３記載の仮想マシン増設方法。
【請求項５】
前記コンピュータが、さらに、
前記第１の予測負荷値が前記閾値未満になった場合、前記第１のサービス提供用の仮想マシンの構築処理を中止する、
前記第２の予測負荷値が前記閾値未満になった場合、前記第２のサービス提供用の仮想マシンの構築処理を中止する、
請求項３または４記載の仮想マシン増設方法。
【請求項６】
仮想マシンが提供するサービスとサービスの重要度との対応関係を示す設定情報を記憶する記憶部と、
サービスを提供している複数の仮想マシンのうち、負荷が閾値を超えた第１および第２の仮想マシンを検出し、前記設定情報を参照して、前記第１の仮想マシンの所定時間後の負荷の予測値である第１の予測負荷値と、前記第１の仮想マシンが提供している第１のサービスの重要度とに基づいて、前記第１のサービスに対する仮想マシン増築の第１の優先度を決め、前記第２の仮想マシンの所定時間後の負荷の予測値である第２の予測負荷値と、前記第２の仮想マシンが提供している第２のサービスの重要度とに基づいて、前記第２のサービスに対する仮想マシン増築の第２の優先度を決め、前記第１の優先度と、前記第２の優先度のうちの優先度が高い方に対するサービスを提供する仮想マシンを、優先的に構築すると決定する演算部と、
を有する情報処理装置。
【請求項７】
サービスを提供している複数の仮想マシンを動作させる、複数の情報処理装置と、
前記複数の仮想マシンのうち、負荷が閾値を超えた第１および第２の仮想マシンを検出し、前記第１の仮想マシンの所定時間後の負荷の予測値である第１の予測負荷値と、前記第１の仮想マシンが提供している第１のサービスの重要度とに基づいて、前記第１のサービスに対する仮想マシン増築の第１の優先度を決め、前記第２の仮想マシンの所定時間後の負荷の予測値である第２の予測負荷値と、前記第２の仮想マシンが提供している第２のサービスの重要度とに基づいて、前記第２のサービスに対する仮想マシン増築の第２の優先度を決め、前記第１の優先度と、前記第２の優先度のうちの優先度が高い方に対するサービスを提供する仮想マシンを、優先的に構築すると決定する、管理装置と、
を有する仮想マシン増設システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想マシン増設方法、情報処理装置および仮想マシン増設システムに関する。
【背景技術】
【０００２】
情報処理装置が有するリソースを割当てられた仮想マシンが様々なサービスをユーザに提供する場合がある。仮想マシンで提供されるサービスとしては、例えば、音声サービスやメールサービスなどがある。このようなサービスを提供していると仮想マシンでは、例えばサービスに対する要求の増加により、負荷が過大となる場合がある。この場合、仮想マシンを新たに追加して、仮想マシンの数を増やすことで負荷を分散させることができる。このように、仮想マシンの数を増やすことをスケールアウトと呼ぶ。
【０００３】
なお、仮想マシンに関する技術としては、例えば仮想マシンの移行に関する技術が提案されている。仮想マシン管理装置は、移行元サーバおよび移行先サーバの負荷情報に基づいて、移行対象仮想マシンの移行を実行するか否かを決定する。また、仮想マシンの配置先を決定する方法に関する技術が提案されている。制御装置は、仮想マシン毎の負荷情報と物理サーバ毎の優先順位と物理サーバ毎の制約条件情報とに基づいて仮想マシンを配置する先の物理サーバを決定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１０８０１４号公報
【特許文献２】特開２０１１−１３８２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、所定のサービスを提供するための仮想マシンを構築し、起動するまでには時間がかかる。そのため、新たに追加する仮想マシンの構築中に、当該仮想マシンが提供するサービスよりも重要度の高いサービスを提供する仮想マシンの負荷が過大になるときがある。このとき新たな仮想マシンを構築できるだけの空きリソースがないこともあり得る。空きリソースが不足する場合、例えば、構築中の仮想マシンの構築を停止してリソースを解放させ、重要度の高いサービスを提供する仮想マシンにリソースを振り分けることが考えられる。
【０００６】
しかし、重要度が高いサービスを提供する仮想マシンの負荷が過大となっても、そのサービスのスケールアウトの緊急性が、その時点で最も高いとは限らない。例えば、重要度が高いサービスに対する負荷の増加が一時的なものである場合、負荷が過大となった他のサービスの方が、スケールアウトの緊急性が高くなる。この場合、重要度の高いサービスを提供する仮想マシンを優先的にスケールアウトすると、より緊急性が高いサービスを提供する仮想マシンを、リソース不足によりスケールアウトできなくなる可能性がある。このように、サービスを提供する仮想マシンの負荷は常に変化しており、単に重要度が高いサービスについて優先的にスケールアウトしたのでは、システム全体の運用効率上不適切な場合がある。
【０００７】
１つの側面では、本発明は、仮想マシンを追加対象とするサービスを適切に判断できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、仮想マシン増設方法が提供される。この仮想マシン増設方法は、コンピュータが、サービスを提供している複数の仮想マシンのうち、負荷が閾値を超えた第１および第２の仮想マシンを検出し、第１の仮想マシンの所定時間後の負荷の予測値である第１の予測負荷値と、第１の仮想マシンが提供している第１のサービスの重要度とに基づいて、第１のサービスに対する仮想マシン増築の第１の優先度を決め、第２の仮想マシンの所定時間後の負荷の予測値である第２の予測負荷値と、第２の仮想マシンが提供している第２のサービスの重要度とに基づいて、第２のサービスに対する仮想マシン増築の第２の優先度を決め、第１の優先度と、第２の優先度のうちの優先度が高い方に対するサービスを提供する仮想マシンを、優先的に構築すると決定する。
【発明の効果】
【０００９】
１つの側面では、仮想マシンを追加対象とするサービスを適切に判断できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の仮想マシン増設システムを示す図である。
【図２】第２の実施の形態の仮想マシン増設システムを示す図である。
【図３】第２の実施の形態の仮想マシン増設システムで動作する仮想マシンの例を示す図である。
【図４】管理サーバのハードウェア例を示す図である。
【図５】サービスの状態遷移図を示す図である。
【図６】管理サーバの機能例を示す図である。
【図７】トラフィック超過比率と重要度の相関関係を示す図である。
【図８】総リソース管理テーブルの例を示す図である。
【図９】状態管理テーブルの例を示す図である。
【図１０】利用リソーステーブルの例を示す図である。
【図１１】履歴テーブルの例を示す図である。
【図１２】予約リソーステーブルの例を示す図である。
【図１３】設定ファイルの例を示す図である。
【図１４】状態遷移の処理例（その１）を示すフローチャートである。
【図１５】予約リソース量を説明するための図である。
【図１６】状態遷移の処理例（その２）を示すフローチャートである。
【図１７】状態遷移の処理例（その３）を示すフローチャートである。
【図１８】予測トラフィック量が閾値未満になった場合の処理の例を示すフローチャートである。
【図１９】ＶＭ起動待機中でない状態で予約リソース量を割当て可能な場合の処理の例を示すフローチャートである。
【図２０】状態遷移の処理例（その４）を示すフローチャートである。
【図２１】状態遷移の処理例（その５）を示すフローチャートである。
【図２２】スケールアウト処理の具体例（その１）を示す図である。
【図２３】スケールアウト処理の具体例（その２）を示す図である。
【図２４】スケールアウト処理の具体例（その３）を示す図である。
【図２５】スケールアウト処理の具体例（その４）を示す図である。
【図２６】スケールアウト処理の具体例（その５）を示す図である。
【図２７】スケールアウト処理の具体例（その６）を示す図である。
【図２８】スケールアウト処理の具体例（その７）を示す図である。
【図２９】スケールアウト処理の具体例（その８）を示す図である。
【図３０】スケールアウト処理の具体例（その９）を示す図である。
【図３１】スケールアウト処理の具体例（その１０）を示す図である。
【図３２】スケールアウト処理の具体例（その１１）を示す図である。
【図３３】スケールアウト処理の具体例（その１２）を示す図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の仮想マシン増設システムを示す図である。仮想マシン増設システムは、情報処理装置１および情報処理装置３を含む。情報処理装置１および情報処理装置３は、ネットワークを介して接続されている。
【００１２】
情報処理装置３は、複数の仮想マシンを動作させる。例えば、情報処理装置３は、仮想マシンＸ１，Ｘ２を動作させる。仮想マシンＸ１，Ｘ２は、情報処理装置３が有するハイパーバイザによって情報処理装置３のリソースを割当てられることで動作する。情報処理装置３は、クライアント４にネットワークを介して接続されている。クライアント４は、ユーザが使用する装置である。クライアント４は、情報処理装置３で動作する仮想マシンＸ１，Ｘ２が提供するサービスを受付ける。
【００１３】
情報処理装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、例えば、プロセッサである。プロセッサには、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。また、演算部１ｂは、マルチプロセッサであってもよい。
【００１４】
記憶部１ａは、情報処理装置３で動作する複数の仮想マシンが提供するサービスとサービスの重要度との対応関係を示す設定情報２を記憶する。例えば、設定情報２は、仮想マシンＸ１が提供するサービスＹ１の重要度がＺ１であることを示す。また、設定情報２は、仮想マシンＸ２が提供するサービスＹ２の重要度がＺ２であることを示す。なお、記憶部１ａは、仮想マシンＸ１がサービスＹ１、仮想マシンＸ２がサービスＹ２を提供していることを示す情報を記憶する。
【００１５】
演算部１ｂは、情報処理装置３で動作する複数の仮想マシンの負荷を監視する。例えば、演算部１ｂは、クライアント４からの仮想マシンＸ１，Ｘ２に対する要求が増加することにより、仮想マシンＸ１，Ｘ２の負荷が高まるのを検出する。そして、演算部１ｂは、仮想マシンＸ１，Ｘ２の負荷が閾値を超えたか否かを判定する。
【００１６】
負荷が閾値を超えた仮想マシンがある場合、演算部１ｂは、負荷が閾値を超えた仮想マシンの所定時間後の負荷の予測値である予測負荷値と、各仮想マシンが提供しているサービスの重要度とに基づいて、サービスに対する仮想マシン増築の優先度を決める。
【００１７】
例えば、演算部１ｂは、仮想マシンＸ１の負荷が閾値を超えた場合、仮想マシンＸ１の予測負荷値と、仮想マシンＸ１が提供しているサービスＹ１の重要度Ｚ１とに基づいて、サービスＹ１に対する仮想マシン増築の優先度を決める。また、演算部１ｂは、仮想マシンＸ２の負荷が閾値を超えた場合、仮想マシンＸ２の予測負荷値と、仮想マシンＸ２が提供しているサービスＹ２の重要度Ｚ２とに基づいて、サービスＹ２に対する仮想マシン増築の優先度を決める。
【００１８】
なお、予測負荷値は、例えば、現時点から仮想マシンが構築済みになる時点までに増加すると予測される負荷値に基づいて計算される。また、サービスの優先度は、そのサービスの重要度が高いほど高い値になると共に、そのサービスを提供している仮想マシンの予測負荷値が高いほど高い値になる。
【００１９】
演算部１ｂは、優先度のうち、優先度が高い方に対するサービスを提供する仮想マシンを、優先的に構築すると決定する。例えばサービスＹ２の方がサービスＹ１よりも優先度が高い場合、演算部１ｂは、サービスＹ２を適用する仮想マシンＸ３を、優先的に構築すると決定する。そして、演算部１ｂは、情報処理装置３に、サービスＹ２を提供する仮想マシンＸ３を構築するように指示をする。
【００２０】
第１の実施の形態によれば、サービスの重要度と緊急性を考慮して優先度が算出される。そして、優先度に基づいて、仮想マシンを追加対象とするサービスを適切に判断できる。
【００２１】
すなわち、予測負荷値から仮想マシンに対する今後の負荷を予測できるため、予測負荷値からスケールアウトの対象にする緊急性を判断できる。そして、予測負荷値とサービスの重要度とに基づいて優先度が計算される。これにより、サービスの重要度と緊急性を考慮して優先度が計算される。そして、仮想マシンを追加対象とするサービスが複数存在する場合に、優先度に基づいて、仮想マシンを追加対象とするサービスが決定される。すなわち、サービスの重要度と緊急性を考慮して、仮想マシンを追加対象とするサービスを適切に判断できる。
【００２２】
サービスの重要度に加え、緊急性を考慮して、スケールアウト対象のサービスを決定することで、例えば、重要度が高いサービスを提供する仮想マシンが過負荷であっても、緊急性が低ければ、スケールアウトの緊急性が高い他のサービスを優先してスケールアウトすることもできる。これにより、システム全体としてリソースを有効利用し、サービスの質を向上させることができる。
【００２３】
なお、演算部１ｂは、例えば、仮想マシンの負荷が閾値を超えたことを検出したとき、その仮想マシンと同じサービスを提供する仮想マシンの増築処理を開始することもできる。すなわち、演算部１ｂは、情報処理装置３に対して、仮想マシンのイメージデータを送信すると共に、そのイメージデータに基づく仮想マシンの起動を指示する。この場合、演算部１ｂは、各サービスに対する優先度の計算を、そのサービス提供用の仮想マシンの起動までの残り時間に基づいて、仮想マシンの構築処理を実施している間に繰り返し行うことができる。優先度を繰り返し計算する場合、演算部１ｂは、各サービスに対する優先度の計算が行われる度に優先的に構築する仮想マシンの決定処理を実施し、優先的に構築する仮想マシンの決定結果を更新する。これにより、動的に変化する予測負荷値に基づいて、仮想マシンの増築対象のサービスを適切に判断することができる。
【００２４】
仮想マシンの負荷が閾値を超えたときに、同じサービスを提供する仮想マシンの増築処理を開始するようにすると、優先度が高い方のサービス提供用の仮想マシンよりも先に、優先度が低い方のサービス提供用の仮想マシンの起動が完了する場合がある。この場合、演算部１ｂは、例えば、優先度が低い方のサービス提供用の仮想マシンの状態をストレージ装置に退避させることで、リソースを解放させる。仮想マシンの状態をストレージ装置に退避させる処理は、例えば、ハイバネーションと呼ばれる処理である。すなわち、演算部１ｂは、情報処理装置３に対して、優先度が低い方のサービス提供用の仮想マシンのハイバネーションを指示する。
【００２５】
優先度が低い方のサービス提供用の仮想マシンにリソースを解放させることで、優先度が高い方のサービス提供用の仮想マシンに割当てるリソースが確保しやすくなる。そこで演算部１ｂは、優先度が高い方のサービス提供用の仮想マシンにリソースを割当て、情報処理装置３に対してその仮想マシンの起動を指示する。
【００２６】
これにより、優先度が低いサービス提供用の仮想マシンが先に起動完了しても、優先度が高いサービス提供用の仮想マシンを、遅延無く起動させることができる。また、優先度が低いサービス提供用の仮想マシンの状態はストレージ装置に退避されている。そのため、優先度が高いサービス提供用の仮想マシンの起動後に、優先度が低いサービス提供用の仮想マシンに割当てる空きリソースが残っていれば、その仮想マシンを迅速に再起動できる。
【００２７】
なお、仮想マシンの増築処理には時間がかかるため、予測負荷値を計算した結果、予測負荷値が閾値未満となる場合があり得る。この場合、演算部１ｂは、仮想マシンの構築処理を中止する。これにより、無駄な仮想マシンの増築を抑止することができる。
【００２８】
［第２の実施の形態］
図２は、第２の実施の形態の仮想マシン増設システムを示す図である。第２の実施の形態の仮想マシン増設システムは、データセンター１００内で構築される。データセンター１００は、管理サーバ２００および業務サーバ３００，３００ａ，３００ｂ，・・・を含む。管理サーバ２００および業務サーバ３００，３００ａ，３００ｂ，・・・は、互いにネットワーク４００を介して接続されている。例えば、ネットワーク４００は、ＬＡＮ（Local Area Network）である。データセンター１００およびクライアント５００は、ネットワーク６００を介して接続されている。例えば、ネットワーク６００は、ＷＡＮ（Wide Area Network）やインターネットなどの広域ネットワークでもよい。クライアント５００は、ネットワーク６００を介して管理サーバ２００および業務サーバ３００，３００ａ，３００ｂ，・・・にアクセスすることができる。
【００２９】
管理サーバ２００および業務サーバ３００，３００ａ，３００ｂ，・・・は、サーバコンピュータである。管理サーバ２００は、業務サーバ３００，３００ａ，３００ｂ，・・・で動作する仮想マシン（ＶＭ：Virtual Machine）をスケールアウトさせることができる。
【００３０】
クライアント５００は、ユーザが利用するクライアントコンピュータである。図２では、クライアント５００のみを図示しているが、複数のクライアントが存在してもよい。クライアント５００は、業務サーバ３００，３００ａ，３００ｂ，・・・で動作するＶＭが提供するサービスを受付ける。すなわち、クライアント５００は、クラウドコンピューティングを利用したサービスの提供を受ける。
【００３１】
図３は、第２の実施の形態の仮想マシン増設システムで動作する仮想マシンの例を示す図である。仮想マシン増設システムでは、業務サーバ３００，３００ａ，３００ｂ，・・・でＶＭが動作する。図３では、業務サーバ３００で動作するＶＭを例として説明する。
【００３２】
業務サーバ３００は、自装置内でＶＭとしてサービスノード３１０，３１０ａ，３１０ｂ，・・・を動作させる。サービスノード３１０，３１０ａ，３１０ｂ，・・・は、業務サーバ３００が有するハイパーバイザによって業務サーバ３００のリソースを割当てられることで動作する。サービスノード３１０，３１０ａ，３１０ｂ，・・・は、クライアント５００にサービスを提供する。例えば、サービスノード３１０，３１０ａ，３１０ｂ，・・・は、音声サービスやメールサービスなどをクライアント５００に提供する。
【００３３】
図４は、管理サーバのハードウェア例を示す図である。管理サーバ２００は、プロセッサ２０１、ＲＡＭ２０２、ＨＤＤ２０３、画像信号処理部２０４、入力信号処理部２０５、読み取り装置２０６および通信インタフェース２０７を有する。各ユニットが管理サーバ２００のバスに接続されている。
【００３４】
プロセッサ２０１は、管理サーバ２００全体を制御する。プロセッサ２０１は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。プロセッサ２０１は、例えばＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field Programmable Gate Array）などである。また、プロセッサ２０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００３５】
ＲＡＭ（Random Access Memory）２０２は、管理サーバ２００の主記憶装置である。ＲＡＭ２０２は、プロセッサ２０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ２０２は、プロセッサ２０１による処理に用いる各種データを記憶する。
【００３６】
ＨＤＤ（Hard Disk Drive）２０３は、管理サーバ２００の補助記憶装置である。ＨＤＤ２０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ２０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。管理サーバ２００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３７】
画像信号処理部２０４は、プロセッサ２０１からの命令に従って、管理サーバ２００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、有機ＥＬ（Electro-Luminescence）ディスプレイなど各種のディスプレイを用いることができる。
【００３８】
入力信号処理部２０５は、管理サーバ２００に接続された入力デバイス１２から入力信号を取得し、プロセッサ２０１に出力する。入力デバイス１２としては、マウスやタッチパネルなどのポインティングデバイスやキーボードなどの各種の入力デバイスを用いることができる。管理サーバ２００には、複数の種類の入力デバイスが接続されてもよい。
【００３９】
読み取り装置２０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置２０６は、例えば、プロセッサ２０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ２０２またはＨＤＤ２０３に格納する。
【００４０】
通信インタフェース２０７は、ネットワーク４００を介して、業務サーバ３００，３００ａ，３００ｂ，・・・と通信を行う。
なお、業務サーバ３００，３００ａ，３００ｂ，・・・も管理サーバ２００と同様のハードウェアにより実現できる。
【００４１】
以上のようなハードウェアによって、ＶＭを用いて、クライアント５００を使用するユーザに対して、様々なサービスが提供される。そして、サービスを提供するＶＭの負荷が過大となると、そのサービスを提供するＶＭのスケールアウトが行われる。サービスの状態は、スケールアウト処理の進行に伴って変化する。
【００４２】
図５は、サービスの状態遷移図を示す図である。図５では、サービスを提供するＶＭをスケールアウトするまでに遷移する状態を示している。サービスは、状態Ｔ１〜Ｔ６を経て、ＶＭをスケールアウトさせた状態となる。また、後述するようにある状態でＶＭの負荷が閾値未満になった場合、スケールアウトを中止することもある。以下、各状態について説明する。
【００４３】
状態Ｔ１は、安定サービス中である。ここで、ＶＭが提供するサービスには、トラフィック量の閾値が設定されている。トラフィック量の単位は、“ｒｅｑ／ｓｅｃ”である。例えば、クライアント５００からの要求が増加することでトラフィック量が増加する。そして、サービスに対するトラフィック量が増加することで、ＶＭの負荷も高くなる。すなわち、サービスに対するトラフィック量とＶＭの負荷は相関関係にある。そのため、第２の実施の形態では、サービスに対するトラフィック量の増減からＶＭの負荷を検出する。
【００４４】
トラフィック量が閾値未満の場合、ＶＭは、サービスを安定して提供する。
状態Ｔ２は、ＶＭ構築用のイメージ転送中である。トラフィック量が増加して閾値以上になった場合、ＶＭの負荷が過大になっていると考えられる。そこで、負荷を分散させるためにスケールアウトの処理が開始される。状態Ｔ２は、追加するＶＭを構築する業務サーバにイメージファイルを転送中の状態である。また、状態Ｔ２の時点で、今後トラフィック量が閾値未満になると予測される場合、状態Ｔ２は、状態Ｔ１に遷移する。
【００４５】
状態Ｔ３は、ＶＭ起動待機中である。状態Ｔ３は、イメージファイルの転送が完了した状態である。また、状態Ｔ３の時点で、今後トラフィック量が閾値未満になると予測される場合、状態Ｔ３は、状態Ｔ１に遷移する。
【００４６】
状態Ｔ４は、ＶＭ起動中である。状態Ｔ４は、スケールアウトされたＶＭの立ち上げ処理を実行中の状態である。
状態Ｔ５は、一時停止中である。状態Ｔ５は、スケールアウトされたＶＭを構築した業務サーバが有するハイパーバイザの一時停止機能により、スケールアウトされたＶＭが一時停止になった状態である。ハイパーバイザの一時停止機能には、ＶＭを対象としたハイバネーション機能が含まれる。そのため、状態Ｔ５に遷移した際に、スケールアウトされたＶＭが読み込まれたメモリ内の情報が、当該ＶＭを構築した業務サーバが有するＨＤＤに一時的に退避される。そして、スケールアウトされたＶＭに割当てられていたリソース（プロセッサおよびメモリ）が解放される。また、状態Ｔ５の時点で、今後トラフィック量が閾値未満になると予測される場合、状態Ｔ５は、状態Ｔ１に遷移する。
【００４７】
状態Ｔ６は、スケールアウトサービス中である。状態Ｔ６は、スケールアウトされたＶＭが一時停止状態から起動した状態であり、再度、当該ＶＭにリソースが割当てられてスケールアウトの処理が完了する状態である。以下、この状態をＶＭ起動完了という場合がある。また、状態Ｔ６の時点で、トラフィック量が低下し、スケールアウトされたＶＭが撤去された場合、状態Ｔ６は、状態Ｔ１に遷移する。
【００４８】
次に、スケールアウトを実現するために管理サーバ２００が有する機能について説明する。
図６は、管理サーバの機能例を示す図である。管理サーバ２００は、記憶部２１０、監視部２２０、予測部２３０およびＶＭ管理部２４０を有する。
【００４９】
記憶部２１０は、各サービスのスケールアウトの要否判断に利用する情報を記憶する。記憶部２１０は、例えば、ＲＡＭ２０２またはＨＤＤ２０３に確保した記憶領域として実装される。記憶部２１０に記憶される情報には、総リソース管理テーブル２１１、状態管理テーブル２１２、利用リソーステーブル２１３、履歴テーブル２１４、予約リソーステーブル２１５、設定ファイル２１６がある。
【００５０】
総リソース管理テーブル２１１には、業務サーバ３００，３００ａ，３００ｂ，・・・が有するリソース量の合計を示す情報が登録される。状態管理テーブル２１２には、図５で説明した状態を示す情報が登録される。利用リソーステーブル２１３には、業務サーバ３００，３００ａ，３００ｂ，・・・で動作するＶＭに割当てられているリソース量を示す情報が登録される。履歴テーブル２１４には、過去のある時点のサービスに対するトラフィック量を示す情報が登録される。予約リソーステーブル２１５には、スケールアウトで新規追加されるＶＭに割当てるリソース量を示す情報が登録される。設定ファイル２１６には、サービスの重要度などを示す情報が登録される。
【００５１】
監視部２２０、予測部２３０およびＶＭ管理部２４０は、例えば、プロセッサ２０１が実行するプログラムのモジュールとして実装される。
監視部２２０は、周期的に業務サーバ３００，３００ａ，３００ｂ，・・・で動作するＶＭからサービスに対するトラフィック量を取得する。監視部２２０は、取得したトラフィック量を履歴テーブル２１４に登録する。また、監視部２２０は、取得したトラフィック量に基づいて、サービス毎に、サービスに対するトラフィック量が閾値を超えるか否かを監視する。そして、監視部２２０は、トラフィック量が閾値を超えたサービスを提供するＶＭをスケールアウトの対象に決定する。
【００５２】
予測部２３０は、ＶＭ起動完了時点における、スケールアウト対象のＶＭが提供するサービスに対するトラフィック量（予測トラフィック量）を予測して算出する。さらに予測部２３０は、予測トラフィック量を処理可能なリソース量（予約リソース量）を算出し、予約リソース量を予約リソーステーブル２１５に登録する。
【００５３】
ＶＭ管理部２４０は、サービスの重要度と緊急性を考慮して優先度を算出する。緊急性は、予測トラフィック量に基づいて判断できる。例えば、ＶＭ管理部２４０は、予測トラフィック量が多いほど、スケールアウトの対象にする緊急性が高いと判断する。詳細には、ＶＭ管理部２４０は、予測トラフィック量が閾値に対して超過するトラフィック量の比率（トラフィック超過比率）から緊急性を判断する。トラフィック超過比率は、次の式（１）により算出される。
【００５４】
トラフィック超過比率＝（（予測トラフィック量−閾値）／予測トラフィック量）×１００・・・（１）
ＶＭ管理部２４０は、トラフィック超過比率とサービスの重要度とに基づいて優先度を算出する。優先度は、次の式（２）に従って算出される。
【００５５】
優先度＝（トラフィック超過比率／１００）×重要度・・・（２）
ＶＭ管理部２４０は、優先度に基づいて、ＶＭを追加対象とするサービスを決定する。ＶＭ管理部２４０は、ＶＭを追加するサービスを決定すると、スケールアウトで新規追加するＶＭを構築する業務サーバにイメージファイルを送信する。そして、ＶＭ管理部２４０は、当該業務サーバにＶＭ起動指示を行う。
【００５６】
以上のような機能により、サービスの重要度と、そのサービスのトラフィック超過比率とに基づいて、予測トラフィック量が閾値を超えたサービスについてのスケールアウトの優先度が決定される。そして、優先度が高いサービスを提供するＶＭに対して優先的にリソースが割当てられ、スケールアウトが実施される。
【００５７】
図７は、トラフィック超過比率と重要度の相関関係を示す図である。縦軸は、サービスの重要度を示している。縦軸の上方向の位置ほど重要度が高く、縦軸の下方向の位置ほど重要度が低いことを示している。横軸は、トラフィック超過比率を示している。横軸の右方向の位置ほどトラフィック超過比率が高く、横軸の左方向の位置ほどトラフィック超過比率が低いことを示している。
【００５８】
優先度は、式（２）に基づいて、トラフィック超過比率とサービスの重要度とに基づいて算出される。例えば、図７は、トラフィック超過比率が高くなるほど緊急性が高くなり、サービスの重要度が高いのであれば、優先的にＶＭを追加対象にするために優先度が高くなることを示している。また、図７は、トラフィック超過比率が低くなるほど緊急性が低くなり、サービスの重要度が低いのであれば、ＶＭを追加対象にしなくてもよいので優先度が低くなることを示している。
【００５９】
次に、記憶部２１０に格納される情報について詳細に説明する。
図８は、総リソース管理テーブルの例を示す図である。総リソース管理テーブル２１１は、記憶部２１０に格納される。総リソース管理テーブル２１１は、ＣＰＵコア数、メモリ量およびディスク量の項目を含む。
【００６０】
ＣＰＵコア数の項目には、業務サーバ３００，３００ａ，３００ｂが有するＣＰＵコアの合計数が登録される。メモリ量の項目には、業務サーバ３００，３００ａ，３００ｂが有するＲＡＭの合計容量が登録される。ディスク量の項目には、業務サーバ３００，３００ａ，３００ｂが有するＨＤＤの合計容量が登録される。
【００６１】
例えば、総リソース管理テーブル２１１には、ＣＰＵコア数が“１０ｃｏｒｅ”、メモリ量が“１０ＧＢ”およびディスク量が“２０００ＧＢ”という情報が登録される。
これは、業務サーバ３００，３００ａ，３００ｂが有するＣＰＵコアの合計数が“１０ｃｏｒｅ”、ＲＡＭの合計容量が“１０ＧＢ”、ＨＤＤの合計容量が“２０００ＧＢ”であることを示す。
【００６２】
図９は、状態管理テーブルの例を示す図である。状態管理テーブル２１２は、記憶部２１０に格納される。状態管理テーブル２１２は、サービスＩＤ（Identifier）およびステータスの項目を含む。
【００６３】
サービスＩＤの項目には、サービスを識別する情報が登録される。ステータスの項目には、ステータスを示す情報が登録される。
例えば、状態管理テーブル２１２には、サービスＩＤが“ＳＡ”、ステータスが“ＶＭ起動待機中”という情報が登録される。これは、サービスＩＤ“ＳＡ”を提供するＶＭのスケールアウトの処理が開始され、追加するＶＭを構築する業務サーバにイメージファイルの転送が完了した状態（“ＶＭ起動待機中”）であることを示す。
【００６４】
図１０は、利用リソーステーブルの例を示す図である。利用リソーステーブル２１３は、記憶部２１０に格納される。利用リソーステーブル２１３は、仮想マシン、サービスＩＤ、ＣＰＵコア数、メモリ量およびディスク量の項目を含む。
【００６５】
仮想マシンの項目には、仮想マシンを示す情報が登録される。サービスＩＤの項目には、サービスを識別する情報が登録される。ＣＰＵコア数の項目には、現在動作しているＶＭに割当てられているＣＰＵコア数を示す情報が登録される。メモリ量の項目には、現在動作しているＶＭに割当てられているメモリ量を示す情報が登録される。ディスク量の項目には、現在動作しているＶＭに割当てられているディスク量を示す情報が登録される。
【００６６】
例えば、利用リソーステーブル２１３の項目には、仮想マシンが“サービスノード１”、サービスＩＤが“ＳＡ”、ＣＰＵコア数が“４ｃｏｒｅ”、メモリ量が“４ＧＢ”およびディスク量が“４００ＧＢ”という情報が登録される。
【００６７】
これは、サービスＩＤ“ＳＡ”を提供している仮想マシン“サービスノード１”に割当てられているＣＰＵコア数が“４ｃｏｒｅ”、メモリ量が“４ＧＢ”、ディスク量が“４００ＧＢ”であることを示す。
【００６８】
図１１は、履歴テーブルの例を示す図である。履歴テーブル２１４は、記憶部２１０に格納される。履歴テーブル２１４は、サービスＩＤ、計測時刻およびトラフィック量の項目を含む。
【００６９】
サービスＩＤの項目には、サービスを識別する情報が登録される。計測時刻の項目には、時刻を示す情報が登録される。トラフィック量の項目には、トラフィック量を示す情報が登録される。
【００７０】
例えば、履歴テーブル２１４には、サービスＩＤが“ＳＡ”、計測時刻が“ｈｍｓ１”およびトラフィック量が“ＴＲ１１”という情報が登録される。
これは、計測時刻“ｈｍｓ１”におけるサービスＩＤ“ＳＡ”に対するトラフィック量が“ＴＲ１１”であることを示す。
【００７１】
図１２は、予約リソーステーブルの例を示す図である。予約リソーステーブル２１５は、記憶部２１０に格納される。予約リソーステーブル２１５は、サービスＩＤ、ＣＰＵコア数、メモリ量およびディスク量の項目を含む。
【００７２】
サービスＩＤの項目には、サービスを識別する情報が登録される。ＣＰＵコア数の項目には、スケールアウトで追加するＶＭに割当てるＣＰＵコア数を示す情報が登録される。メモリ量の項目には、スケールアウトで追加するＶＭに割当てるメモリ量を示す情報が登録される。ディスク量の項目には、スケールアウトで追加するＶＭに割当てるディスク量を示す情報が登録される。
【００７３】
例えば、予約リソーステーブル２１５の項目には、サービスＩＤが“ＳＡ”、ＣＰＵコア数が“２ｃｏｒｅ”、メモリ量が“２ＧＢ”およびディスク量が“２００ＧＢ”という情報が登録される。
【００７４】
これは、サービスＩＤ“ＳＡ”を提供するＶＭをスケールアウトで追加するＶＭに割当てるリソースとして、ＣＰＵコア数“２ｃｏｒｅ”、メモリ量“２ＧＢ”、ディスク量“２００ＧＢ”が予約されていることを示す。
【００７５】
図１３は、設定ファイルの例を示す図である。設定ファイル２１６は、記憶部２１０に格納される。設定ファイル２１６は、サービスＩＤ、閾値および重要度の項目を含む。
サービスＩＤの項目には、サービスを識別する情報が登録される。閾値の項目には、トラフィック量の閾値を示す情報が登録される。重要度の項目には、サービスの重要度を示す情報が登録される。
【００７６】
例えば、設定ファイル２１６には、サービスＩＤが“ＳＡ”、閾値が“ＴＲ１”、重要度が“５０”という情報が登録される。これは、サービスＩＤ“ＳＡ”に対する閾値が“ＴＲ１”であることを示す。また、サービスＩＤ“ＳＡ”の重要度が“５０”であることを示す。
【００７７】
以上のような情報を用いることで、サービス毎に、スケールアウトの優先度が適切に判定できる。そして、優先度が高いサービスから優先的にスケールアウトが実施される。スケールアウトの対象となったサービスは、図５に示すような状態遷移を経て、スケールアウトした状態でのサービスが開始される。以下、図５に示した各状態から他の状態に遷移するかどうかの判定処理について、詳細に説明する。
【００７８】
図１４は、状態遷移の処理例（その１）を示すフローチャートである。図１４は、状態Ｔ１から状態Ｔ２に遷移する場合である。以下、図１４に示す処理をステップ番号に沿って説明する。
【００７９】
（Ｓ１１）監視部２２０は、業務サーバ３００，３００ａ，３００ｂを周期的に監視し、あるサービスに対するトラフィック量が閾値を超えたことを検出する。例えば、監視部２２０は、サービスＩＤ“ＳＡ”に対するトラフィック量が閾値を超えたことを検出する。なお、閾値は、設定ファイル２１６の閾値が用いられる。
【００８０】
監視部２２０は、トラフィック量が閾値を超えたサービスを提供するＶＭをスケールアウトの対象に決定する。以下の処理は、トラフィック量が閾値を超えたサービスに対して実行される。
【００８１】
（Ｓ１２）予測部２３０は、ＶＭ起動完了時点における、スケールアウト対象のＶＭが提供するサービスに対するトラフィック量の予測値（予測トラフィック量Ｔ）を算出する。予測トラフィック量Ｔは、次の式（３）に従って算出される。なお、現在時刻をｔ0、現在時刻のトラフィック量をｆ0、前回トラフィック量の履歴を取得した時刻をｔ1、前回履歴を取得したときのトラフィック量をｆ1、現在時刻からＶＭ起動完了時点までの時間をｔaとする。予測部２３０は、ステップＳ１１で検出したトラフィック量をトラフィック量ｆ0としてもよい。予測部２３０は、履歴テーブル２１４を参照して、時刻ｔ1、トラフィック量ｆ1を取得する。時間ｔaは、過去に計測されたＶＭ起動完了時点までの時間に基づいて決められる。
【００８２】
【数１】
2017107274.tif 000003
【００８３】
（Ｓ１３）予測部２３０は、サービスに対する予測トラフィック量を処理可能な予約リソース量を算出する。例えば、予測部２３０は、過去の履歴に基づいて、予測トラフィック量のうちの閾値を超過した分について処理可能なＶＭを動作させることができるリソース量を、予測リソース量として算出する。
【００８４】
予測部２３０は、スケールアウトで新規追加するＶＭを構築する業務サーバを決定する。例えば、予測部２３０は、予約リソース量に相当する空きリソースを有する業務サーバのうちの１台を、ＶＭを構築する業務サーバに決定する。
【００８５】
（Ｓ１４）予測部２３０は、予約リソース量を予約リソーステーブル２１５に登録する。
（Ｓ１５）ＶＭ管理部２４０は、状態管理テーブル２１２のステータスの項目を安定サービス中からイメージ転送中に更新する。
【００８６】
（Ｓ１６）ＶＭ管理部２４０は、スケールアウトで新規追加するＶＭを構築する業務サーバに、トラフィック量が閾値を超えたサービスを提供するＶＭ構築用のイメージファイルを転送する。そして、処理を終了する。
【００８７】
ここで、予約リソース量の算出に関して説明する。
図１５は、予約リソース量を説明するための図である。図１５で示すグラフの左の縦軸は、トラフィック量を示している。右の縦軸は、リソース量を示している。横軸は、時間を示している。
【００８８】
グラフ線Ｍ１は、あるサービスに対するトラフィック量が閾値を超え、トラフィック量が予測開始時刻からＶＭ起動完了時点まで増加されると予測される状態を示している。
幅Ｎ１は、ＶＭ起動完了時点の予測トラフィック量を示している。幅Ｎ２は、閾値を超えた時点からＶＭ起動完了時点までに増加するトラフィック量を示している。
【００８９】
予測部２３０は、図１５に示すように、ＶＭ起動完了時点までに増加するトラフィック量を処理できるリソース量を少なくとも新規追加するＶＭに割当てるように、予約リソース量を算出する。
【００９０】
次に、状態Ｔ２から状態Ｔ３に遷移する場合を説明する。
図１６は、状態遷移の処理例（その２）を示すフローチャートである。図１６は、状態Ｔ２から状態Ｔ３に遷移する場合であり、イメージファイルを転送した場合に実行される処理である。以下、図１６に示す処理をステップ番号に沿って説明する。
【００９１】
（Ｓ２１）ＶＭ管理部２４０は、状態Ｔ２となっているサービスについてのイメージファイルの転送を完了する。
（Ｓ２２）予測部２３０は、状態Ｔ２となっているサービスについて、ＶＭ起動完了時点における予測トラフィック量を算出する。予測トラフィック量は、式（３）に従って、算出される。
【００９２】
（Ｓ２３）予測部２３０は、予測トラフィック量を処理可能な予約リソース量を算出する。
（Ｓ２４）予測部２３０は、予約リソース量を予約リソーステーブル２１５に登録する。
【００９３】
（Ｓ２５）ＶＭ管理部２４０は、状態Ｔ２となっているサービスについて、状態管理テーブル２１２のステータスの項目をイメージ転送中からＶＭ起動待機中に更新する。そして、処理を終了する。
【００９４】
図１７は、状態遷移の処理例（その３）を示すフローチャートである。図１７は、状態Ｔ２，Ｔ３，Ｔ４，Ｔ５のいずれかの場合に実行される。また、図１７の処理は、周期的に実行される。以下、図１７に示す処理をステップ番号に沿って説明する。
【００９５】
（Ｓ３１）予測部２３０は、状態管理テーブル２１２を参照し、ステータスの項目がイメージ転送中、ＶＭ起動待機中、ＶＭ起動中、一時停止中のいずれかに対応するサービスＩＤを特定する。予測部２３０は、特定したサービスＩＤ毎に、ＶＭ起動完了時点における予測トラフィック量を算出する。予測トラフィック量は、式（３）に従って、算出される。
【００９６】
（Ｓ３２）予測部２３０は、設定ファイル２１６のサービスＩＤと閾値を参照し、サービスＩＤ毎に、予測トラフィック量が閾値未満であるか否かを判定する。閾値未満のサービスＩＤについては、処理をステップＳ５１に進める。閾値以上のサービスＩＤについては、処理をステップＳ３３に進める。
【００９７】
（Ｓ３３）ＶＭ管理部２４０は、設定ファイル２１６のサービスＩＤと閾値を参照し、閾値以上のサービスＩＤ毎に、トラフィック超過比率を算出する。トラフィック超過比率は、式（１）に従って算出される。
【００９８】
（Ｓ３４）ＶＭ管理部２４０は、設定ファイル２１６のサービスＩＤと重要度を参照し、閾値以上のサービスＩＤ毎に、優先度を算出する。優先度は、式（２）に従って算出される。
【００９９】
（Ｓ３５）ＶＭ管理部２４０は、サービスＩＤに優先度を対応付けて、優先度の高い順にソートする。
（Ｓ３６）ＶＭ管理部２４０は、残リソース量を算出する。具体的には、ＶＭ管理部２４０は、総リソース管理テーブル２１１に登録されているリソース量を利用リソーステーブル２１３に登録されている全てのリソース量で減算して、残リソース量を算出する。
【０１００】
（Ｓ３７）ＶＭ管理部２４０は、ソートされた全てのサービスについて処理済みであるか否かを判定する。処理済みの場合、処理を終了する。処理済みでない場合、処理をステップＳ３８に進める。
【０１０１】
（Ｓ３８）ＶＭ管理部２４０は、ソートした順番にサービスを１つ選択する。
（Ｓ３９）ＶＭ管理部２４０は、予約リソーステーブル２１５に登録されている予約リソース量を残リソース量に割当て可能であるか否かを判定する。割当て可能な場合、ＶＭ管理部２４０は、スケールアウトで新規追加するＶＭを構築する業務サーバにＶＭ起動指示を送信する。そして、処理をステップＳ４０に進める。割当て可能でない場合、処理を終了する。
【０１０２】
また、ＶＭ管理部２４０は、本処理の２回目以降、残リソース量を前回の判定で利用した予約リソース量で減算する。そして、ＶＭ管理部２４０は、減算された残リソース量を用いて、予約リソース量を割当て可能であるか否かを判定する。
【０１０３】
（Ｓ４０）ＶＭ管理部２４０は、状態管理テーブル２１２を参照し、ステップＳ３８で選択したサービスに対応するステータスの項目がＶＭ起動待機中であるか否かを判定する。ＶＭ起動待機中の場合、処理をステップＳ４１に進める。ＶＭ起動待機中でない場合、処理をステップＳ６１に進める。
【０１０４】
（Ｓ４１）ＶＭ管理部２４０は、状態管理テーブル２１２のステータスの項目をＶＭ起動待機中からＶＭ起動中に更新する。
（Ｓ４２）ＶＭ管理部２４０は、利用リソーステーブル２１３に予約リソース量を加算する。そして、処理をステップＳ３７に進める。
【０１０５】
図１８は、予測トラフィック量が閾値未満になった場合の処理の例を示すフローチャートである。以下、図１８に示す処理をステップ番号に沿って説明する。
（Ｓ５１）ＶＭ管理部２４０は、状態管理テーブル２１２のステータスの項目がイメージ転送中またはＶＭ起動待機中であるか否かを判定する。イメージ転送中またはＶＭ起動待機中の場合、処理をステップＳ５３に進める。イメージ転送中またはＶＭ起動待機中でない場合、処理をステップＳ５２に進める。
【０１０６】
（Ｓ５２）ＶＭ管理部２４０は、イメージファイルを転送した先の業務サーバにＶＭインスタンスの削除を指示する。
（Ｓ５３）ＶＭ管理部２４０は、イメージファイルを転送した先の業務サーバにイメージファイルの削除を指示する。
【０１０７】
（Ｓ５４）ＶＭ管理部２４０は、状態管理テーブル２１２のステータスの項目を安定サービス中に更新する。
（Ｓ５５）ＶＭ管理部２４０は、イメージファイルを転送した先の業務サーバに、予約していたリソースの解放を指示する。
【０１０８】
（Ｓ５６）ＶＭ管理部２４０は、予約リソーステーブル２１５からスケールアウトを解除されるＶＭが提供するサービスＩＤのレコードを削除する。そして、処理を終了する。
また、図１８の処理において、ＶＭ起動中の場合、ＶＭ管理部２４０は、スケールアウトで新規追加するＶＭの構築を待って、ＶＭインスタンスとイメージファイルを削除し、安定サービス中に遷移させてもよい。そして、ＶＭ管理部２４０は、予約していたリソースの解放を指示し、予約リソーステーブル２１５からレコードを削除する。
【０１０９】
図１９は、ＶＭ起動待機中でない状態で予約リソース量を割当て可能な場合の処理の例を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
【０１１０】
（Ｓ６１）ＶＭ管理部２４０は、状態管理テーブル２１２を参照し、ステップＳ３８で選択したサービスに対応するステータスの項目が一時停止中であるか否かを判定する。一時停止中の場合、処理をステップＳ６２に進める。一時停止中でない場合、処理をステップＳ３７に進める。
【０１１１】
（Ｓ６２）ＶＭ管理部２４０は、スケールアウトで新規追加するＶＭを構築した業務サーバに一時停止の解除指示を送信する。
（Ｓ６３）ＶＭ管理部２４０は、状態管理テーブル２１２のステータスの項目を一時停止中からスケールアウトサービス中に更新する。
【０１１２】
（Ｓ６４）ＶＭ管理部２４０は、利用リソーステーブル２１３に予約リソース量を加算する。そして、処理をステップＳ３７に進める。
図１７〜図１９では、仮想マシンの構築処理が実施されている間に繰り返し行われる。優先度の計算が繰り返し実行されることで、動的に変化する予測負荷値に基づいて、仮想マシンの増築対象のサービスを適切に判断することができる。
【０１１３】
図２０は、状態遷移の処理例（その４）を示すフローチャートである。図２０は、状態Ｔ４から状態Ｔ５に遷移する場合である。以下、図２０に示す処理をステップ番号に沿って説明する。
【０１１４】
（Ｓ７１）ＶＭ管理部２４０は、スケールアウトで新規追加するＶＭを構築した業務サーバが有するハイパーバイザの一時停止機能により、当該ＶＭが一時停止になった旨を当該業務サーバから受信する。
【０１１５】
（Ｓ７２）ＶＭ管理部２４０は、状態管理テーブル２１２のステータスの項目をＶＭ起動中から一時停止中に更新する。
（Ｓ７３）ＶＭ管理部２４０は、利用リソーステーブル２１３から予約リソーステーブル２１５に登録されている予約リソース量を減算する。そして、処理を終了する。
【０１１６】
ステップＳ７１では、ＶＭ管理部２４０がハイパーバイザの一時停止機能により、一時停止になった旨を受信している。受信した時点では、ハイパーバイザの一時停止機能により、新規追加されたＶＭに割当てられたリソースが解放されている。ここで、ハイパーバイザの一時停止機能にハイバネーション機能が含まれていない場合、ＶＭ管理部２４０が当該ハイパーバイザを有する業務サーバにリソースの解放を指示してもよい。これにより、優先度が低いサービスのＶＭに対して、先に割当てられていたリソースが解放されるため、後に、優先度が高いサービスのＶＭをスケールアウトしたい場合、リソースの確保がしやすくできる。
【０１１７】
図２１は、状態遷移の処理例（その５）を示すフローチャートである。図２１は、状態Ｔ６から状態Ｔ１に遷移する場合である。以下、図２１に示す処理をステップ番号に沿って説明する。
【０１１８】
（Ｓ８１）監視部２２０は、業務サーバ３００，３００ａ，３００ｂを周期的に監視し、スケールアウトしたＶＭが提供するサービスに対するトラフィック量が低下したことを検出する。
【０１１９】
（Ｓ８２）ＶＭ管理部２４０は、イメージファイルを転送した先の業務サーバにＶＭインスタンスの削除を指示する。
（Ｓ８３）ＶＭ管理部２４０は、イメージファイルを転送した先の業務サーバに、イメージファイルの削除を指示する。
【０１２０】
（Ｓ８４）ＶＭ管理部２４０は、状態管理テーブル２１２のステータスの項目をスケールアウトサービス中から安定サービス中に更新する。
（Ｓ８５）ＶＭ管理部２４０は、イメージファイルを転送した先の業務サーバに、リソースの解放を指示する。そして、処理を終了する。
【０１２１】
以上のような処理によって、スケールアップまでの段階毎に優先度が算出され、その都度、適切な優先度判定が行われる。その結果、トラフィック量の動的変化に伴って、各サービスのスケールアップの緊急性が変化すると、その緊急性の変化に合わせて、適切なサービスに対してスケールアップを実施することができる。なお、第２の実施の形態では、繰り返し優先度を計算することになるが、例えばステップＳ３２で予測トラフィック量が閾値未満の場合、優先度の算出をせずに、スケールアップ用のＶＭインスタンスの削除処理に移行している。これにより、無駄な仮想マシンの増築を抑止すると共に、優先度の算出処理負担を軽減できる。
【０１２２】
次に、スケールアウト処理の具体例を示して説明する。
図２２は、スケールアウト処理の具体例（その１）を示す図である。以下の具体例では、サービスノード３１０が、サービスＩＤ“ＳＡ”を提供しているものとする。また、サービスノード３１０ａが、サービスＩＤ“ＳＢ”を提供しているものとする。
【０１２３】
図２２では、クライアント５００からのアクセスの増加により、サービスＩＤ“ＳＡ”に対するトラフィック量が閾値を超過したことを示している。
図２３は、スケールアウト処理の具体例（その２）を示す図である。図２３の上部には、サービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量と時間との関係を示すグラフが示されている。グラフの縦軸はトラフィック量を示している。グラフの横軸は、時間を示している。グラフ線３２１は、サービスＩＤ“ＳＡ”に対するトラフィック量を示している。グラフ線３２２は、サービスＩＤ“ＳＢ”に対するトラフィック量を示している。図２３では、時刻Ｔ１におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。ここで、サービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量の閾値は同じであるものとする。時刻Ｔ１では、サービスＩＤ“ＳＡ”に対するトラフィック量が閾値に達している。すなわち、図２２の状態である。一方、時刻Ｔ１では、サービスＩＤ“ＳＢ”に対するトラフィック量が閾値に達していない。
【０１２４】
監視部２２０は、周期的な監視により、サービスＩＤ“ＳＡ”に対するトラフィック量が閾値を超えたことを検出する。予測部２３０は、サービスＩＤ“ＳＡ”に対するＶＭ起動完了時点の予測トラフィック量を算出し、予測トラフィック量を処理可能な予約リソース量を算出する。予測部２３０は、予約リソース量を予約リソーステーブル２１５に登録する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”に対応する状態管理テーブル２１２のステータスの項目を安定サービス中からイメージ転送中に更新する。ＶＭ管理部２４０は、スケールアウトで新規追加するＶＭを構築する業務サーバにイメージファイルを転送する。
【０１２５】
図２４は、スケールアウト処理の具体例（その３）を示す図である。図２４では、クライアント５００からのアクセスの増加により、サービスＩＤ“ＳＢ”に対するトラフィック量が閾値を超過したことを示している。
【０１２６】
図２５は、スケールアウト処理の具体例（その４）を示す図である。図２５では、時刻Ｔ２におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。時刻Ｔ２では、サービスＩＤ“ＳＢ”に対するトラフィック量が閾値に達している。すなわち、図２４の状態である。
【０１２７】
監視部２２０は、周期的な監視により、サービスＩＤ“ＳＢ”に対するトラフィック量が閾値を超えたことを検出する。予測部２３０は、サービスＩＤ“ＳＢ”に対するＶＭ起動完了時点の予測トラフィック量を算出し、予測トラフィック量を処理可能な予約リソース量を算出する。予測部２３０は、予約リソース量を予約リソーステーブル２１５に登録する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”に対応する状態管理テーブル２１２のステータスの項目を安定サービス中からイメージ転送中に更新する。ＶＭ管理部２４０は、スケールアウトで新規追加するＶＭを構築する業務サーバにイメージファイルを転送する。
【０１２８】
図２６は、スケールアウト処理の具体例（その５）を示す図である。図２６では、時刻Ｔ３におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。
【０１２９】
予測部２３０は、イメージファイルの転送を完了すると再度、サービスＩＤ“ＳＡ”に対するＶＭ起動完了時点の予測トラフィック量を算出し、予測トラフィック量を処理可能な予約リソース量を算出する。予測部２３０は、予約リソース量を予約リソーステーブル２１５に登録する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”に対応する状態管理テーブル２１２のステータスの項目をＶＭ起動待機中に更新する。
【０１３０】
図２７は、スケールアウト処理の具体例（その６）を示す図である。図２７では、時刻Ｔ４におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。
【０１３１】
予測部２３０は、サービスＩＤ“ＳＡ”，“ＳＢ”に対するＶＭ起動完了時点の予約トラフィック量を算出する。ＶＭ管理部２４０は、予約トラフィック量が閾値以上であるサービスＩＤ“ＳＡ”，“ＳＢ”について優先度を算出する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”のために新規追加するＶＭに割当てるリソース量が残っていると判定する。ＶＭ管理部２４０は、新規追加するＶＭを構築する業務サーバにＶＭ起動指示を送信する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”に対応する状態管理テーブル２１２のステータスの項目をＶＭ起動中に更新する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”に対応する利用リソーステーブル２１３に予約リソース量を加算する。
【０１３２】
図２８は、スケールアウト処理の具体例（その７）を示す図である。図２８では、時刻Ｔ５におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。
【０１３３】
予測部２３０は、イメージファイルの転送を完了すると再度、サービスＩＤ“ＳＢ”に対するＶＭ起動完了時点の予測トラフィック量を算出し、予測トラフィック量を処理可能な予約リソース量を算出する。予測部２３０は、予約リソース量を予約リソーステーブル２１５に登録する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”に対応する状態管理テーブル２１２のステータスの項目をＶＭ起動待機中に更新する。
【０１３４】
図２９は、スケールアウト処理の具体例（その８）を示す図である。図２９では、時刻Ｔ６におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。
【０１３５】
ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”のために新規追加するＶＭを構築する業務サーバから、当該ＶＭが一時停止になった旨を当該業務サーバから受信する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”に対応する状態管理テーブル２１２のステータスの項目を一時停止中に更新する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”に対応する利用リソーステーブル２１３から予約リソース量を減算する。
【０１３６】
図３０は、スケールアウト処理の具体例（その９）を示す図である。図３０では、時刻Ｔ７におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。
【０１３７】
予測部２３０は、サービスＩＤ“ＳＡ”，“ＳＢ”に対するＶＭ起動完了時点の予約トラフィック量を算出する。ＶＭ管理部２４０は、予約トラフィック量が閾値以上であるサービスＩＤ“ＳＡ”，“ＳＢ”について優先度を算出する。ここで、優先度は、サービスＩＤ“ＳＢ”の方がサービスＩＤ“ＳＡ”よりも高いものとする。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”のために新規追加するＶＭに割当てるリソース量が残っていると判定する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”のために新規追加するＶＭに割当てるリソース量が残っていないと判定する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”のために新規追加するＶＭを構築する業務サーバにＶＭ起動指示を送信する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”に対応する状態管理テーブル２１２のステータスの項目をＶＭ起動中に更新する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”に対応する利用リソーステーブル２１３に予約リソース量を加算する。
【０１３８】
図３１は、スケールアウト処理の具体例（その１０）を示す図である。図３１では、時刻Ｔ８におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。
【０１３９】
ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”のために新規追加するＶＭを構築する業務サーバから、当該ＶＭが一時停止になった旨を当該業務サーバから受信する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”に対応する状態管理テーブル２１２のステータスの項目を一時停止中に更新する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”に対応する利用リソーステーブル２１３から予約リソース量を減算する。
【０１４０】
図３２は、スケールアウト処理の具体例（その１１）を示す図である。図３２では、時刻Ｔ９におけるサービスＩＤ“ＳＡ”，“ＳＢ”に対するトラフィック量について示している。
【０１４１】
予測部２３０は、サービスＩＤ“ＳＡ”，“ＳＢ”に対するＶＭ起動完了時点の予約トラフィック量を算出する。ＶＭ管理部２４０は、予約トラフィック量が閾値以上であるサービスＩＤ“ＳＡ”，“ＳＢ”について優先度を算出する。ここで、優先度は、サービスＩＤ“ＳＢ”の方がサービスＩＤ“ＳＡ”よりも高いものとする。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”のために新規追加するＶＭに割当てるリソース量が残っていると判定する。ＶＭ管理部２４０は、サービスＩＤ“ＳＡ”のために新規追加するＶＭに割当てるリソース量が残っていないと判定する。
【０１４２】
ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”のために新規追加するＶＭを構築する業務サーバに一時停止の解除を指示する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”に対応する状態管理テーブル２１２のステータスの項目をスケールアウトサービス中に更新する。ＶＭ管理部２４０は、サービスＩＤ“ＳＢ”に対応する利用リソーステーブル２１３に予約リソース量を加算する。
【０１４３】
これにより、サービスＩＤ“ＳＢ”を提供するＶＭがスケールアウトされる。
図３３は、スケールアウト処理の具体例（その１２）を示す図である。図３３は、サービスＩＤ“ＳＢ”を提供するサービスノード３２０が新規追加されたことを示している。
【０１４４】
第２の実施の形態によれば、サービスの重要度と緊急性を考慮して優先度が算出される。そして、ＶＭを追加対象とするサービスＩＤ“ＳＡ”，“ＳＢ”が存在する場合に、優先度に基づいてＶＭを追加対象とするサービスＩＤ“ＳＢ”を適切に判断できる。すなわち、サービスの重要度と緊急性を考慮して、ＶＭを追加対象とするサービスを適切に判断できる。
【０１４５】
なお、第１の実施の形態の情報処理は、演算部１ｂとして用いられるプロセッサに、プログラムを実行させることで実現できる。第２の実施の形態の情報処理は、プロセッサ２０１にプログラムを実行させることで実現できる。プログラムは、コンピュータで読み取り可能な記録媒体に記録できる。
【０１４６】
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、監視部２２０、予測部２３０、ＶＭ管理部２４０に相当する機能を実現するプログラムを別個のプログラムとし、各プログラムを別個に配布してもよい。監視部２２０、予測部２３０、ＶＭ管理部２４０の機能が別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、ＲＡＭ２０２やＨＤＤ２０３に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１４７】
１，３  情報処理装置
１ａ  記憶部
１ｂ  演算部
２  設定情報
４  クライアント
Ｘ１，Ｘ２，Ｘ３  仮想マシン
【図１】
2017107274.tif 000004
【図２】
2017107274.tif 000005
【図３】
2017107274.tif 000006
【図４】
2017107274.tif 000007
【図５】
2017107274.tif 000008
【図６】
2017107274.tif 000009
【図７】
2017107274.tif 000010
【図８】
2017107274.tif 000011
【図９】
2017107274.tif 000012
【図１０】
2017107274.tif 000013
【図１１】
2017107274.tif 000014
【図１２】
2017107274.tif 000015
【図１３】
2017107274.tif 000016
【図１４】
2017107274.tif 000017
【図１５】
2017107274.tif 000018
【図１６】
2017107274.tif 000019
【図１７】
2017107274.tif 000020
【図１８】
2017107274.tif 000021
【図１９】
2017107274.tif 000022
【図２０】
2017107274.tif 000023
【図２１】
2017107274.tif 000024
【図２２】
2017107274.tif 000025
【図２３】
2017107274.tif 000026
【図２４】
2017107274.tif 000027
【図２５】
2017107274.tif 000028
【図２６】
2017107274.tif 000029
【図２７】
2017107274.tif 000030
【図２８】
2017107274.tif 000031
【図２９】
2017107274.tif 000032
【図３０】
2017107274.tif 000033
【図３１】
2017107274.tif 000034
【図３２】
2017107274.tif 000035
【図３３】
2017107274.tif 000036