(57)【要約】【課題】  管理対象の負荷が閾値から外れたときに、管理対象の負荷の変化を過去の負荷変動の履歴を基に予測し、この予測結果に従って物理サーバに関する制御を実行すること。【解決手段】負荷情報収集部130は、物理サーバ110と仮想サーバ115の負荷を収集して、各負荷を採取した時間に対応づけて、負荷情報として負荷情報テーブル132に格納し、類似負荷情報選択部136は、管理対象の負荷がスケールアウト閾値またはスケールイン閾値から外れたときに、現在時刻の負荷に類似する過去の負荷情報を負荷情報テーブル132から選択し、スケールアウト判断部134またはスケールイン判断部135は、選択された負荷情報に従って管理対象の負荷が変化すると仮定して、管理対象の負荷が、その後も、いずれかの閾値から外れると予測したときには、スケールアウトまたはスケールインを実行する。【選択図】  図１
2011118525.tif 000002
【特許請求の範囲】
【請求項１】
物理サーバの負荷と前記物理サーバ上で動作する１または２以上の仮想サーバの負荷をそれぞれ収集し、前記収集した各負荷を、前記各負荷を採取した時間に対応づけて、負荷情報として負荷情報テーブルに格納する負荷情報収集部と、
前記負荷情報収集部の収集による前記各負荷のうち管理対象の負荷の変化を時間軸に沿って監視して、前記管理対象の負荷が閾値から外れるか否かを判断する判断部と、
前記判断部で肯定の判断をしたときに、その時点の前記管理対象の負荷を現在時刻の負荷として、前記負荷情報テーブルを検索し、前記現在時刻より過去の負荷であって、前記現在時刻と同時刻に採取された負荷の中から、前記現在時刻の負荷に類似する負荷に関する負荷情報を前記負荷情報テーブルから選択する類似負荷情報選択部と、を備え、
前記判断部は、
前記類似負荷情報選択部により選択された負荷情報に従って前記管理対象の負荷が変化すると仮定して、前記管理対象の負荷が、その後も前記閾値から外れる傾向にあるか否かを予測し、前記予測結果に従って前記物理サーバに関する制御を実行してなる、サーバ管理装置。
【請求項２】
請求項１に記載のサーバ管理装置において、
前記判断部は、
前記管理対象の負荷が、スケールアウト閾値を上回るときに、前記管理対象の負荷が前記閾値から外れたとして、肯定の判断結果を前記類似負荷情報選択部に出力するとともに、前記管理対象の負荷が、その後も前記スケールアウト閾値を上回る傾向にあるか否かを予測し、前記予測で肯定の結果を得たときに、前記物理サーバ上で動作する前記仮想サーバの数を増大させる制御を実行してなる、サーバ管理装置。
【請求項３】
請求項１に記載のサーバ管理装置において、
前記判断部は、
前記管理対象の負荷が、スケールイン閾値を下回るときに、前記管理対象の負荷が前記閾値から外れたとして、肯定の判断結果を前記類似負荷情報選択部に出力するとともに、前記管理対象の負荷が、その後も前記スケールイン閾値を下回る傾向にあるか否かを予測し、前記予測で肯定の結果を得たときに、前記物理サーバ上で動作する前記仮想サーバの数を減少させる制御を実行してなる、サーバ管理装置。
【請求項４】
請求項２に記載のサーバ管理装置において、
前記判断部は、
前記管理対象の負荷が、その後も前記スケールアウト閾値を一定期間に亘って上回る傾向にあると予測したときには、前記物理サーバ上で動作する前記仮想サーバの数を増大させる制御を実行し、
前記管理対象の負荷が、その後一時的に増加した後、前記スケールアウト閾値以下になると予測したときには、前記物理サーバ上で動作する前記仮想サーバの数を増大させる制御の実行を抑止してなる、サーバ管理装置。
【請求項５】
請求項３に記載のサーバ管理装置において、
前記判断部は、
前記管理対象の負荷が、その後も前記スケールイン閾値を一定期間に亘って下回る傾向にあると予測したとき、または前記管理対象の負荷が、その後一時的には前記スケールイン閾値以上となることがあっても、長期間では前記スケールイン閾値を下回る傾向にあると予測したときには、前記物理サーバ上で動作する前記仮想サーバの数を減少させる制御を実行し、
前記管理対象の負荷が、その後一時的に減少した後、前記スケールイン閾値以上になると予測したときには、前記物理サーバ上で動作する前記仮想サーバの数を減少させる制御の実行を抑止してなる、サーバ管理装置。
【請求項６】
請求項５に記載のサーバ管理装置において、
前記判断部は、前記物理サーバ上に前記仮想サーバが存在しないときには、前記物理サーバの電源をオフに制御してなる、サーバ管理装置。
【請求項７】
物理サーバの負荷と前記物理サーバ上で動作する１または２以上の仮想サーバの負荷をそれぞれ収集し、前記収集した各負荷を、前記各負荷を採取した時間に対応づけて、負荷情報として負荷情報テーブルに格納する負荷情報収集部と、
前記負荷情報収集部の収集による前記各負荷のうち管理対象の負荷の変化を時間軸に沿って監視して、前記管理対象の負荷が閾値から外れるか否かを判断する判断部と、
前記判断部で肯定の判断をしたときに、その時点の前記管理対象の負荷を現在時刻の負荷として、前記負荷情報テーブルを検索し、前記現在時刻より過去の負荷であって、前記現在時刻と同時刻に採取された負荷の中から、前記現在時刻の負荷に類似する負荷に関する負荷情報を前記負荷情報テーブルから選択する類似負荷情報選択部と、を備えたサーバ管理方法であって、
前記判断部は、
前記類似負荷情報選択部により選択された負荷情報に従って前記管理対象の負荷が変化すると仮定して、前記管理対象の負荷が、その後も前記閾値から外れる傾向にあるか否かを予測するステップと、
前記ステップの予測結果に従って前記物理サーバに関する制御を実行するステップと、を備えてなる、サーバ管理方法。
【請求項８】
請求項７に記載のサーバ管理方法において、
前記判断部は、
前記管理対象の負荷が、スケールアウト閾値を上回るときに、前記管理対象の負荷が前記閾値から外れたとして、肯定の判断結果を前記類似負荷情報選択部に出力するステップと、
前記管理対象の負荷が、その後も前記スケールアウト閾値を上回る傾向にあるか否かを予測するステップと、
前記ステップの予測で肯定の結果を得たときに、前記物理サーバ上で動作する前記仮想サーバの数を増大させる制御を実行するステップと、を備えてなる、サーバ管理方法。
【請求項９】
請求項７に記載のサーバ管理方法において、
前記判断部は、
前記管理対象の負荷が、スケールイン閾値を下回るときに、前記管理対象の負荷が前記閾値から外れたとして、肯定の判断結果を前記類似負荷情報選択部に出力するステップと
前記管理対象の負荷が、その後も前記スケールイン閾値を下回る傾向にあるか否かを予測するステップと、
前記ステップの予測で肯定の結果を得たときに、前記物理サーバ上で動作する前記仮想サーバの数を減少させる制御を実行するステップと、を備えてなる、サーバ管理方法。
【請求項１０】
請求項８に記載のサーバ管理方法において、
前記判断部は、
前記管理対象の負荷が、その後も前記スケールアウト閾値を一定期間に亘って上回る傾向にあると予測したときには、前記物理サーバ上で動作する前記仮想サーバの数を増大させる制御を実行するステップと、
前記管理対象の負荷が、その後一時的に増加した後、前記スケールアウト閾値以下になると予測したときには、前記物理サーバ上で動作する前記仮想サーバの数を増大させる制御の実行を抑止するステップと、を備えてなる、サーバ管理方法。
【請求項１１】
請求項９に記載のサーバ管理方法において、
前記判断部は、
前記管理対象の負荷が、その後も前記スケールイン閾値を一定期間に亘って下回る傾向にあると予測したとき、または前記管理対象の負荷が、その後一時的には前記スケールイン閾値以上となることがあっても、長期間では前記スケールイン閾値を下回る傾向にあると予測したときには、前記物理サーバ上で動作する前記仮想サーバの数を減少させる制御を実行するステップと、
前記管理対象の負荷が、その後一時的に減少した後、前記スケールイン閾値以上になると予測したときには、前記物理サーバ上で動作する前記仮想サーバの数を減少させる制御の実行を抑止するステップと、を備えてなる、サーバ管理方法。
【請求項１２】
請求項１１に記載のサーバ管理方法において、
前記判断部は、
前記物理サーバ上に前記仮想サーバが存在しないときには、前記物理サーバの電源をオフに制御するステップを備えてなる、サーバ管理方法。
【請求項１３】
請求項７〜１３のうちいずれか１項に記載の各ステップを計算機に実行させるためのサーバ管理プログラム。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、物理サーバと物理サーバ上で動作する仮想サーバの管理に係り、特に、物理サーバと仮想サーバの負荷の変動を制御するためのサーバ管理装置とサーバ管理方法およびサーバ管理プログラムに関する。
【背景技術】
【０００２】
近年、１台の物理サーバ上に複数の仮想サーバを動作させるための仮想化技術が広く導入されている。この仮想化技術を採用すると、ある物理マシン上で動作している仮想マシンを、別の物理マシンに移動させて動作させることが可能である。これにより、特定の物理サーバに負荷が集中しないように、複数の物理サーバに負荷を分散することが可能となる。また、複数の物理サーバに分散されている処理負荷を、１台の物理サーバに集約することで、集約の対象から外れた物理サーバの電源をオフにできるので、消費電力を削減することが可能となる。
【０００３】
負荷の異なる複数の仮想サーバを、より少ない台数の物理サーバに割当てる技術として、特許文献１がある。特許文献１では、一般に「ビンパッキング問題」と呼ばれる問題を仮想サーバの割当て問題に適用し、仮想サーバの移行計画を作成する。
【０００４】
ところで、クラスタシステムにおいては、物理サーバ上で動作する仮想サーバに対して、リクエスト割振りを停止し、その仮想サーバを停止する処理として、スケールインを実行することがある。スケールインによって物理サーバ上で稼動している仮想サーバがなくなった場合には、物理サーバの電源を切断することが可能となり、消費電力を削減することができる。また、クラスタシステムでは、物理サーバ上に新たに仮想サーバを起動し、起動した仮想サーバにリクエスト割振りを開始する処理として、スケールアウトを実行することがある。スケールアウトを実行すると、物理サーバ上で動作する仮想サーバの数が増加するため、クラスタシステムの処理量を増大させることができる。
【０００５】
ところが、スケールイン・スケールアウトには、仮想サーバを移行するための負荷がかかるため、スケールイン・スケールアウトの回数は少ない方が好ましい。スケールイン・スケールアウトが頻繁に発生した場合、それに伴って、CPU（Central  Processing  Unit）負荷、I/O（Input/Output）負荷、移行時間が増大し、消費電力が増大する。
【０００６】
また、スケールイン・スケールアウトは、物理サーバの起動、停止を伴うことがあり、この場合、さらに消費電力が大幅に増大することになる。例えば、一時的（突発的、瞬間的、例外的）な負荷変動が生じた場合、物理サーバは、短時間に高負荷または低負荷状態となり、スケールイン・スケールアウトを発生させることがある。
【０００７】
頻繁に発生する負荷変動によるスケールイン・スケールアウトを防止する技術として、特許文献２がある。特許文献２では、物理サーバの負荷があらかじめ定められた閾値を越え、一定期間その状態が持続した場合に、仮想サーバの移動を行っている。仮想サーバの移動により、物理サーバの負荷が低減するので、一時的（例えば、瞬間的）な負荷変動によって生じるスケールイン・スケールアウトを抑制することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−２１０００１号公報
【特許文献２】特開２００９−１１６３８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献２に開示された技術は、物理サーバの負荷が一定期間閾値を越えた状態が持続した場合に、仮想サーバのスケールイン・スケールアウトを行うようになっていることから、瞬間的に発生した急激な負荷変動に対しては、過剰なスケールイン・スケールアウトを抑止するという利点があるものの、長時間に渡って負荷が閾値を越えた状態にあった場合、即ちスケールイン・スケールアウトを実行するのが好ましい場合であっても、一定期間はスケールイン・スケールアウトが抑制されることになる。これにより、物理サーバの電源が一定期間投入された状態が持続し、電力を不要に消費することがある。
【００１０】
また、特許文献２に開示された技術において、スケールイン・スケールアウトの抑制時間を短くするために、判断期間（上述の一定時間）を短く設定してしまうと、本来スケールイン・スケールアウトを抑制するのが好ましい場合であっても、スケールイン・スケールアウトを実行してしまう恐れがある。
【００１１】
この点、特許文献２では、スケールイン・スケールアウトを実行する条件である一定期間の調整に関して、具体的な開示はなく、ユーザや開発者の判断に委ねられているという課題も残る。
【００１２】
本発明は、前記従来技術の課題に鑑みて為されたものであり、その目的は、管理対象の負荷が閾値から外れたときに、その後の、管理対象の負荷の変化を過去の負荷変動の履歴を基に予測し、この予測結果に従って物理サーバに関する制御を実行することができるサーバ管理装置とサーバ管理方法およびサーバ管理プログラムを提供することにある。
【課題を解決するための手段】
【００１３】
前記目的を達成するために、本発明は、物理サーバの負荷と仮想サーバの負荷をそれぞれ収集し、前記収集した各負荷を、前記各負荷を採取した時間に対応づけて、負荷情報として負荷情報テーブルに格納し、前記各負荷のうち管理対象の負荷の変化を時間軸に沿って監視して、前記管理対象の負荷が閾値から外れたときには、その時点の前記管理対象の負荷を現在時刻の負荷として、前記負荷情報テーブルを検索し、前記現在時刻より過去の負荷であって、前記現在時刻と同時刻に採取された負荷の中から、前記現在時刻の負荷に類似する負荷に関する負荷情報を前記負荷情報テーブルから選択し、前記選択された負荷情報に従って前記管理対象の負荷が変化すると仮定して、前記管理対象の負荷が、その後も前記閾値から外れる傾向にあるか否かを予測し、前記予測結果に従って前記物理サーバに関する制御を実行することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、物理サーバに関する制御を効率良く高精度に実行することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明が適用されたクラスタシステムのブロック構成図である。
【図２】構成情報テーブルの構成図である。
【図３】負荷情報テーブルの構成図である。
【図４】過去の負荷情報から類似負荷情報を選択する類似負荷情報選択部の処理を説明するためのフローチャートである。
【図５】過去の負荷情報からスケールアウトを制御するスケールアウト判断部の処理を説明するためのフローチャートである。
【図６】スケールアウトを実行する場合の負荷の変動状態を示す特性図である。
【図７】過去の負荷情報からスケールインを制御するスケールイン判断部の処理を説明するためのフローチャートである。
【図８】スケールインを実行する場合の負荷の変動状態を示す特性図である。
【発明を実施するための形態】
【実施例】
【００１６】
本実施例は、物理サーバの負荷と仮想サーバの負荷をそれぞれ収集し、収集した各負荷を、各負荷を採取した時間に対応づけて、負荷情報として負荷情報テーブルに格納し、各負荷が時間軸に沿って変化する過程で、各負荷のうち管理対象の負荷が閾値から外れたときには、その時点の現在時刻より、過去の負荷であって、現在時刻と同時刻に採取された負荷の中から、現在時刻の負荷に類似する負荷に関する負荷情報を負荷情報テーブルから選択し、選択された負荷情報に従って管理対象の負荷が変化すると仮定して、管理対象の負荷が、その後も、閾値から外れる傾向にあると予測したときには、物理サーバに関する制御として、スケールアウトまたはスケールインを実行するものである。  
【００１７】
以下、本発明の一実施例を図面に基づいて説明する。図１は、本発明が適用されたクラスタシステムの構成図である。
【００１８】
図１において、クラスタシステムは、サーバ管理装置120と、複数の物理サーバ110と、負荷分散装置102とを備えており、各物理サーバ110は、サーバ管理装置120に接続されているとともに、負荷分散装置102を介してネットワーク101に接続されている。
【００１９】
各物理サーバ110は、CPU（処理部）111と、メモリ（記憶部）114と、ハードディスク（記憶部）112と、通信インタフェース113と、を備えており、CPU111は、通信インタフェース113を介してサーバ管理装置120と情報の授受を行う。
【００２０】
各物理サーバ110のメモリ114では、複数の仮想サーバ115が、各物理サーバ110上で動作するように、仮想化ソフトウェア117によって仮想化されている。即ち、各物理サーバ110上では、１または２以上の仮想サーバ115が動作するようになっている。各仮想サーバ115は、各仮想サーバ115の負荷を収集する負荷情報収集部116を備えている。
【００２１】
負荷分散装置102は、ネットワーク101からリクエストが受信したときに、受信したリクエストを各物理サーバ110を介して、各物理サーバ110の仮想サーバ115へ割り振る。
【００２２】
サーバ管理装置120は、メモリ（記憶部）121と、CPU（処理部）122と、通信インタフェース123と、ハードディスク（記憶部）124と、を備えており、CPU122は、通信インタフェース123を介して各物理サーバ110および各仮想サーバ115と情報の授受を行う。
【００２３】
メモリ121は、負荷情報収集部130と、構成情報収集部131と、負荷情報テーブル132と、構成情報テーブル133と、スケールアウト判断部134と、スケールイン判断部135と、類似負荷情報選択部１３６と、を備えている。
【００２４】
負荷情報収集部130と、構成情報収集部131と、スケールアウト判断部134と、スケールイン判断部135および類似負荷情報選択部１３６は、CPU122によって実行されるプログラムとして構成されている。
【００２５】
構成情報収集部131は、CPU122の実行により、現在時刻の物理サーバ110上に割当てられている仮想サーバ115の構成に関する構成情報を各物理サーバ110から収集し、収集した構成情報を構成情報テーブル133に蓄積する。
【００２６】
図２に、構成情報テーブル133の構成を示す。構成情報テーブル133は、各物理サーバ110を識別するために、予め付与された物理サーバID（IDentifire）フィールド202と、各物理サーバ110に含まれる仮想サーバ115を識別するために、予め付与された仮想サーバIDフィールド203とから構成される。
【００２７】
物理サーバIDフィールド202の各エントリーには、物理サーバ110の識別子として、例えば、物理サーバ110が３台で構成されていた場合、「物理サーバ１」、「物理サーバ２」、「物理サーバ３」が格納される。
【００２８】
仮想サーバIDフィールド203の各エントリーには、仮想サーバ115の識別子が格納される。例えば、「物理サーバ１」に対応したエントリーには、「物理サーバ１」に属する仮想サーバとして、「仮想サーバ１〜３」が格納され、「物理サーバ２」に対応したエントリーには、「物理サーバ２」に属する仮想サーバとして、「仮想サーバ４〜５」が格納され、「物理サーバ３」に対応したエントリーには、「物理サーバ３」に属する仮想サーバとして、「仮想サーバ６〜７」が格納される。
【００２９】
負荷情報収集部130は、物理サーバ内の負荷情報収集部118と、仮想サーバ内の負荷情報収集部116と連携し、一定時間おきに物理サーバ110と仮想サーバ115の負荷情報を収集し、収集した負荷情報を負荷情報テーブル132に蓄積する。
【００３０】
具体的には、各物理サーバ110内の負荷情報収集部118は、各物理サーバ110から、各物理サーバ110の負荷を収集するとともに、収集した負荷を、当該負荷を採取した時刻（時間）に対応づけて、負荷情報として、通信インタフェース113を介してサーバ管理装置120に転送する。仮想サーバ115内の負荷情報収集部116は、各物理サーバ110上で動作する１または２以上の仮想サーバ115から、各仮想サーバ115の負荷を収集するとともに、収集した負荷を、当該負荷を採取した時刻（時間）に対応づけて、負荷情報として、通信インタフェース113を介してサーバ管理装置120に転送する。
【００３１】
なお、仮想サーバ115の負荷情報は仮想化ソフトウェア117を介して取得することが可能であれば、仮想サーバ115の外部に、負荷情報収集部118を設けていても良い。
【００３２】
サーバ管理装置120の負荷情報収集部130は、負荷情報収集部116の収集による負荷情報を、通信インタフェース123を介して受信し、受信した負荷情報を負荷情報テーブル132に格納するとともに、負荷情報収集部118の収集による負荷情報を、通信インタフェース123を介して受信し、受信した負荷情報を負荷情報テーブル132に格納する。
【００３３】
この際、負荷情報収集部130は、各物理サーバ110の負荷と、各物理サーバ110上で動作する仮想サーバ115の負荷をそれぞれ間接的に収集し、収集した各負荷を、各負荷を採取した時刻（時間）および年月日に対応づけて、負荷情報として、負荷情報テーブル132に格納する。
【００３４】
ここで、負荷としては、物理サーバ115と仮想サーバ115のCPU使用率、メモリ使用率、ディスク使用率、ネットワーク帯域使用率、仮想サーバ115上で稼動するアプリケーションの処理待ちキュー数、データベースとのコネクション数、Full GC（Garbage Collection）の発生頻度、セッション数などが挙げられる。
【００３５】
各負荷には、閾値として、スケールイン閾値とスケールアウト閾値が予め設定されている。
【００３６】
図３に、負荷情報テーブル132の構成を示す。負荷情報テーブル301は、時刻フィールド302と、負荷を採取した物理サーバ110のサーバIDフィールド303と、CPU使用率フィールド304と、メモリ使用率フィールド305とから構成される。
【００３７】
時刻フィールド302の各エントリーには、物理サーバ110または仮想サーバ115が負荷を採取した時刻（時間）が年月日とともに格納される。サーバIDフィールド303の各エントリーには、負荷を採取した物理サーバ110または仮想サーバ115のサーバID、例えば、「物理サーバ１」、「物理サーバ２」、「物理サーバ３」などが格納される。CPU使用率フィールド304の各エントリーには、負荷を採取した物理サーバ110または仮想サーバ115のCPU使用率、例えば、「10％」、「20％」、「15％」などが格納される。メモリ使用率フィールド305の各エントリーには、負荷を採取した物理サーバ110または仮想サーバ115のメモリ使用率、例えば、「15％」、「10％」、「25％」などが格納される。
【００３８】
スケールアウト判断部134とスケールイン判断部135は、負荷情報収集部130の収集による各負荷の変化を時間軸に沿って監視して、各負荷のうち、例えば、各物理サーバ110の負荷が閾値から外れるか否かを判断し、各物理サーバ110の負荷が閾値から外れると判断したときには、類似負荷情報選択部136の選択による負荷情報（過去の負荷変動の履歴を示す負荷情報）に従って各物理サーバ110の負荷が変化すると仮定して、各物理サーバ110の負荷が、その後も閾値から外れる傾向にあるか否かを予測し、この予測結果に従って各物理サーバ110に関する制御を実行する判断部の一要素を構成する。
【００３９】
具体的には、スケールアウト判断部134は、例えば、各物理サーバ110の負荷が、スケールアウト閾値を上回るとき（スケールアウト閾値を超えたとき）、各物理サーバ110の負荷が閾値から外れたとして、肯定の判断結果を類似負荷情報選択部136に出力するとともに、各物理サーバ110の負荷が、その後も、スケールアウト閾値を上回る傾向にあるか否かを予測し、この予測で肯定の結果を得たときに、各物理サーバ110上で動作する仮想サーバ115の数を増大させる制御として、スケールアウトを実行する。
【００４０】
スケールイン判断部135は、例えば、各物理サーバ110の負荷が、スケールイン閾値を下回るとき（スケールイン閾値未満のとき）、各物理サーバ110の負荷が閾値から外れたとして、肯定の判断結果を類似負荷情報選択部136に出力するとともに、各物理サーバ110の負荷が、その後も、スケールイン閾値を下回る傾向にあるか否かを予測し、この予測で肯定の結果を得たときに、各物理サーバ110上で動作する仮想サーバ115の数を減少させる制御として、スケールインを実行する。
【００４１】
一方、類似負荷情報選択部136は、スケールアウト判断部134またはスケールイン判断部135で肯定の判断をしたときに、その時点の負荷、例えば、各物理サーバ110の負荷を現在時刻の負荷として、負荷情報テーブル132を検索し、現在時刻より過去の負荷であって、現在時刻と同時刻に採取された負荷の中から、現在時刻の負荷に類似する負荷に関する負荷情報を負荷情報テーブル132から選択する。
【００４２】
以下、類似負荷情報選択部136の処理を、図４のフローチャートに従って説明する。
【００４３】
まず、類似負荷情報選択部136は、例えば、物理サーバ110の負荷が、スケールアウト閾値を上回ったこと、またはスケールイン閾値を下回ったことを条件に、現在時刻の負荷に類似する負荷に関する類似負荷情報を選択するための処理を開始し（ステップ401）、過去の負荷情報に属する日々の中から、候補日となる複数の日を選択する（ステップ402）。例えば、類似負荷情報選択部136は、過去の負荷情報に属する日々の中から、複数の候補日として、先月同日、先週同曜日、前日の３日を選択する。
【００４４】
次に、類似負荷情報選択部136は、現在時刻の負荷に類似する負荷に関する類似負荷情報を選択するに際して、以下の方法を採用する。例えば、現在時刻ｔＴＯＤＡＹより一定時間T前までの負荷と、過去の同時刻間（t’-Tからt’まで）の負荷との差分を求める。このとき、時刻ｔでの負荷をLｔ-とすると、時刻ｔＴＯＤＡＹ時点までの負荷と、時刻t’時点までの負荷との差分Diff(t’)は、以下のように計算できる。
【００４５】
【数１】
2011118525.tif 000003
【００４６】
この計算方法を用いて、類似負荷情報選択部136は、現在時刻の負荷を基準として、先月同日の同時刻ｔLAST-MONTHの負荷と、先週同曜日の同時刻ｔLAST-WEEKの負荷と、前日の同時刻ｔYESTERDAYの負荷との差分をそれぞれ算出する。この際、類似負荷情報選択部136は、全ての候補日について、現在時刻の負荷と各候補日の負荷との差分を算する（ステップ403）。
【００４７】
次に、類似負荷情報選択部136は、複数の候補日の中から、各算出結果を基に負荷の差分が最小となる候補日を選択し、選択した候補日の負荷情報を類似負荷情報として選択し（ステップ404）、このルーチンでの処理を終了する（ステップ405）。
【００４８】
これにより、類似負荷情報選択部136は、物理サーバ110の負荷が、スケールアウト閾値を上回ったとき、またはスケールイン閾値を下回ったとき、その時点の物理サーバ110の負荷を現在時刻の負荷として、負荷情報テーブル132を検索し、現在時刻より過去の負荷であって、現在時刻と同時刻に採取された負荷の中から、現在時刻の負荷に類似する負荷に関する類似負荷情報を負荷情報テーブル132から選択することができる。
【００４９】
次に、スケールアウト判断部の処理を図５のフローチャートに従って説明する。
【００５０】
スケールアウト判断部134は、スケールアウトの判断を開始すると（ステップ501）、負荷情報収集部130の収集による各負荷を時間軸に沿って監視し、各負荷のうち、例えば、物理サーバ110の最新の負荷が、スケールアウト閾値を上回ったか否かを判断する（ステップ502）。
【００５１】
スケールアウト判断部134は、ステップ502で、物理サーバ110の最新の負荷が、スケールアウト閾値以下であると判断した場合（No）、スケールアウトを実行することなく、このルーチンでの処理を終了し（ステップ508）、物理サーバ110の最新の負荷がスケールアウト閾値を上回ったと判断した場合には（Yes）、負荷情報テーブル132を検索し、この検索結果を基に過去の負荷情報が存在するか否かを判定する（ステップ503）。
【００５２】
スケールアウト判断部134は、ステップ503において、過去の負荷情報が存在しないと判定したときには（NO）、ステップ507の処理に移行してスケールアウトを実行する。
【００５３】
即ち、過去の負荷情報が存在しないと判定したときには、過去の負荷情報を基にスケールアウトを実行するか否かを判断できないが、物理サーバ110の負荷が、スケールアウト閾値を上回っていることを考慮し、スケールアウトを実行する。
【００５４】
一方、スケールアウト判断部134は、ステップ503において、過去の負荷情報が存在すると判定したときには（Yes）、過去の負荷情報の中から、現在時刻の負荷に最も類似している負荷に関する類似負荷情報を選択するための処理を類似負荷情報選択部136に要求する。
【００５５】
類似負荷情報選択部136は、スケールアウト判断部134からの要求に応答して、負荷情報テーブル132を検索し、物理サーバ110の過去の負荷情報と、物理サーバ110の過去の負荷情報の中から、現在時刻の負荷情報に最も類似している負荷情報を類似負荷情報として選択する。スケールアウト判断部134は、類似負荷情報選択部136により選択された類似負荷情報に属する時刻のうち現在時刻と同時刻なる時刻を選択する（ステップ504）。
【００５６】
例えば、スケールアウト判断部134は、図６に示すように、物理サーバ110の負荷が時間軸に沿って変化している過程で、物理サーバ110の負荷が、時刻602でスケールアウト閾値th1を上回ったときには、現在時刻の負荷に最も類似している負荷に関する類似負荷情報を選択するための処理を類似負荷情報選択部136に要求する。
【００５７】
類似負荷情報選択部136は、スケールアウト判断部134からの要求に応答して、負荷情報テーブル132を検索し、物理サーバ110の過去の負荷情報の中から、現在時刻（時刻602）の負荷情報に最も類似している負荷情報を類似負荷情報として選択する。
【００５８】
スケールアウト判断部134は、類似負荷情報選択部136により選択された類似負荷情報に属する過去の日の時刻のうち現在時刻と同時刻となる時刻を、ｔ１として選択する（ステップ504）。
【００５９】
ここで、過去の日の時刻とは、現在時刻よりも過去の時刻のうち現在時刻と同時刻であって、前述した先月同日、先週同曜日、前日の時刻である。例えば、現在時刻が午後２時であれば、過去の日の時刻は、先月同日の午後２時、先週同曜日の午後２時、前日の午後２時である。
【００６０】
負荷情報テーブル134に、過去の負荷情報が存在する場合、スケールアウト判断部134は、過去の負荷情報（類似負荷情報選択部136で選択された類似負荷情報）に従って物理サーバ110の負荷が変化すると仮定して、将来の物理サーバ110の負荷を予測し、この予測結果を基にスケールアウトを実行するか否かを判断する。
【００６１】
この際、仮想サーバ115の数を増加させるためのスケールアウトを実行すると、リクエストを処理するための計算資源が増加するため、物理サーバ110の負荷を減少させることができるが、その一方で、スケールアウトにより、物理サーバ110が起動すると、その分消費電力が増加するため、できるだけスケールアウトを行わないことが好ましい。
【００６２】
そこで、本発明を適用したクラスタシステムでは、一時的な負荷増加はスケールアウトが不要であるとしていことから、例えば、図６に示すように、物理サーバ110の負荷が時間軸に沿って変化している過程で、物理サーバ110の負荷が、時刻602でスケールアウト閾値th1を上回ったときには、類似負荷情報選択部136が、負荷情報テーブル132を検索し、物理サーバ110の過去の負荷情報の中から、現在時刻（時刻602）の負荷情報に最も類似している負荷情報を、過去の類似負荷情報として選択する。
【００６３】
過去の類似負荷情報が選択された後、スケールアウト判断部134は、図６に示すように、現在時刻における物理サーバ110の負荷が、時刻602でスケールアウト閾値th1を上回ったときには、その後、物理サーバ110の過去の類似負荷情報に従って変化すると仮定し、過去の類似負荷情報に属する過去の日の時刻のうち、現在時刻（時刻602）と同時刻となる時刻を、ｔ１とするとともに、時刻ｔ１から時刻ｔ２（ｔ２＝ｔ１＋負荷下降探索時間）までの一定時間605を負荷下降探索時間とし（ステップ505）、時刻ｔ１から一定時間606が経過する時刻ｔ２の間に、物理サーバ110の過去の負荷が、下降してスケールアウト閾値th1以下となるか否かを調べる（ステップ506）。
【００６４】
ここで、図６は、類似負荷情報選択部136により選択された過去の類似負荷情報の特性図であって、グラフ601は、物理サーバ110の過去の負荷の特性を表している。このため、スケールアウト判断部134は、現在時刻における物理サーバ110の負荷が、スケールアウト閾値th1を上回ったときには、その後、過去の類似負荷情報であるグラフ601に従って変化すると仮定し、グラフ601の時刻のうち、現在時刻（時刻602）と同時刻となる時刻を、ｔ１としている。
【００６５】
物理サーバ110の過去の負荷が、時刻602から、その後、一時的に上昇し、その後下降して、時刻603からスケールアウト閾値th1以下となった場合（Yes）、スケールアウト判断部134は、物理サーバ110の過去の負荷の上昇は一時的なものであると判断し、スケールアウトを抑止して、スケールアウトを実行することなく、このルーチンでの処理を終了する（ステップ508）。
【００６６】
次に、時刻604で、物理サーバ110の負荷が、スケールアウト閾値th1を上回った場合、スケールアウト判断部134は、再び、類似負荷情報選択部136に類似負荷情報の選択を要求する。これにより、類似負荷情報選択部136は、負荷情報テーブル132を検索し、物理サーバ110の過去の負荷情報の中から、現在時刻（時刻604）の負荷情報に最も類似している負荷情報を過去の類似負荷情報として選択する。
【００６７】
過去の類似負荷情報が選択された後、スケールアウト判断部134は、現在時刻における物理サーバ110の負荷が、スケールアウト閾値th1を上回ったときには、その後、物理サーバ110の過去の類似負荷情報に従って変化すると仮定し、過去の類似負荷情報に属する過去の日の時刻のうち、現在時刻（時刻604）と同時刻となる時刻をｔ１とするとともに、時刻ｔ１から一定時間606を負荷下降探索時間とし、一定時間606が経過する時刻ｔ２の間に、物理サーバ110の過去の負荷が、下降してスケールアウト閾値th1以下となるか否かを調べる（ステップ506）。
【００６８】
ステップ506において、物理サーバ110の過去の負荷が、時刻ｔ１から一定時間606が経過する時刻ｔ２の間に、スケールアウト閾値th1以下とならず、その後も上昇傾向にあると予測したときには（No）、スケールアウト判断部134は、物理サーバ110の過去の負荷の上昇は一時的なものではないと判断し、物理サーバ110上で動作する仮想サーバ115の数を増大させる制御として、スケールアウトを実行する（ステップ507）。
【００６９】
上述したように、スケールアウト判断部134は、物理サーバ110の過去の負荷が、スケールアウト閾値th1を上回ったときに、その後も、スケールアウト閾値th1を一定時間606に亘って上回る傾向にあると予測したときには、物理サーバ110上で動作する仮想サーバ115の数を増大させる制御として、スケールアウトを実行し、物理サーバ110の過去の負荷が、スケールアウト閾値th1を上回ったときに、その後、一時的に増加した後、スケールアウト閾値th1以下になると予測したときには、物理サーバ115上で動作する仮想サーバ115の数を増大させる制御の実行を抑止することになる。
【００７０】
次に、スケールイン判断部の処理を図７のフローチャートに従って説明する。
【００７１】
スケールイン判断を開始すると（ステップ701）、スケールイン判断部135は、負荷情報収集部130の収集による各負荷の変化を時間軸に沿って監視し、例えば、物理サーバ110の最新の負荷が、スケールイン閾値を下回ったか否かを判断する（ステップ702）。
【００７２】
ステップ702において、スケールイン判断部135は、物理サーバ110の負荷が、スケールイン閾値以上であると判断した場合（No）、スケールインを実行することなく、このルーチンでの処理を終了し（ステップ711）、物理サーバ110の負荷が、スケールイン閾値を下回ったと判断した場合には（Yes）、負荷情報テーブル132を検索し、この検索結果を基に過去の負荷情報が存在するか否かを判定する（ステップ703）。
【００７３】
スケールイン判断部135は、ステップ703において、過去の負荷情報が存在しないと判定したときには（NO）、過去の負荷情報を基にスケールインを実行するか否かを判断できないが、物理サーバ110の負荷が、スケールイン閾値を下回っていることを考慮し、ステップ710の処理に移行してスケールインを実行し、その後、このルーチンでの処理を終了する（ステップ711）。
【００７４】
一方、スケールイン判断部135は、ステップ703において、過去の負荷情報が存在すると判定したときには（Yes）、過去の負荷情報から、現在時刻の負荷に最も類似している負荷を選択するための処理を類似負荷情報選択部136に要求する。
【００７５】
類似負荷情報選択部136は、スケールイン判断部135からの要求に応答して、負荷情報テーブル132を検索し、物理サーバ110の過去の負荷情報の中から、現在時刻の負荷情報に最も類似している負荷情報を類似負荷情報として選択し、選択した類似負荷情報に属する過去の日の時刻のうち現在時刻と同時刻なる時刻ｔ１を選択する（ステップ704）。
【００７６】
例えば、スケールイン判断部135は、図8に示すように、物理サーバ110の負荷が時間軸に沿って変化している過程で、物理サーバ110の負荷が、時刻802でスケールイン閾値th2を下回ったときには、現在時刻の負荷に最も類似している負荷を選択するための処理を類似負荷情報選択部136に要求する。
【００７７】
類似負荷情報選択部136は、スケールイン判断部135からの要求に応答して、負荷情報テーブル132を検索し、物理サーバ110の過去の負荷情報の中から、現在時刻（時刻802）の負荷情報に最も類似している負荷情報を過去の類似負荷情報として選択する。
【００７８】
過去の類似負荷情報が選択された後、スケールイン判断部135は、類似負荷情報選択部136により選択された類似負荷情報に属する過去の日の時刻のうち現在時刻と同時刻となる時刻を、ｔ１として選択する（ステップ704）。
【００７９】
この後、スケールイン判断部135は、類似負荷情報選択部136で選択された過去の負荷情報と時刻ｔ１を基に、物理サーバ110の将来の負荷の変化を予測し、この予測結果を基にスケールインを実行するか否かを判断する。この際、物理サーバ110が起動中は、常に電力を消費するため、可能な限りスケールインを行うことで、消費電力を削減することが望ましい。
【００８０】
そこで、本発明を適用したクラスタシステムでは、一定期間に渡り負荷が減少する場合には、スケールインを実行することとしていることから、スケールイン判断部135は、一時的な負荷減少は、スケールインが不要であると判断し、また、負荷減少中に一時的な負荷増加が発生している場合には、長期間では負荷減少しているとみなしてスケールインを実行すべきであると判断する。
【００８１】
具体的には、例えば、図８に示すように、物理サーバ110の負荷が時間軸に沿って変化している過程で、物理サーバ110の負荷が、時刻802でスケールイン閾値th2を下回ったときには、スケールイン判断部135は、類似負荷情報の選択を類似負荷情報選択部136に要求する。
【００８２】
類似負荷情報選択部136は、スケールイン判断部135からの要求に応答して、負荷情報テーブル132を検索し、過去の物理サーバの負荷情報の中から、現在時刻（時刻802）の負荷情報に最も類似している負荷情報を、過去の類似負荷情報として選択する。
【００８３】
過去の類似負荷情報が選択された後、スケールイン判断部135は、現在時刻における物理サーバ110の負荷が、スケールイン閾値th2を下回ったときには、その後、物理サーバ110の過去の類似負荷情報に従って変化すると仮定し、過去の類似負荷情報に属する過去の日の時刻のうち、現在時刻（時刻802）と同時刻となる時刻ｔを、ｔ＝ｔ１とするとともに、時刻ｔ１から時刻ｔ２までの一定時間807を負荷上昇探索時間とし（ステップ705）、時刻ｔ１から一定時間807が経過する時刻ｔ２の間に、物理サーバ110の過去の負荷が、上昇してスケールイン閾値th2以上となるか否かを調べる（ステップ706）。
【００８４】
ここで、図８は、類似負荷情報選択部136により選択された過去の類似負荷情報の特性図であって、グラフ801は、物理サーバ110の過去の負荷の特性を表している。このため、スケールイン判断部135は、現在時刻における物理サーバ110の負荷が、スケールイン閾値th2を下回ったときには、その後、過去の類似負荷情報であるグラフ801に従って変化すると仮定し、グラフ801の時刻のうち、現在時刻（時刻802）と同時刻となる時刻ｔを、ｔ１としている。
【００８５】
ステップ706において、時刻ｔ１から一定時間807が経過する時刻ｔ２の間に、物理サーバ110の過去の負荷が、スケールイン閾値th2を下回るとともに、その後も、スケールイン閾値th2を下回るとことが予測されるときには（No）、スケールイン判断部135は、スケールインを実行する（ステップ710）。
【００８６】
一方、ステップ706で、物理サーバ110の過去の負荷が、時刻802から、その後、一時的に下降し、その後上昇して、時刻803からスケールイン閾値th2以上となることが予測されるときには（Yes）、スケールイン判断部135は、現在時刻（時刻803）と同時刻となる時刻を、ｔ３とするとともに、時刻ｔ３から時刻ｔ４までの一定時間808を負荷下降探索時間とし（ステップ707）、時刻ｔ３から一定時間808が経過する時刻ｔ４の間に、物理サーバ110の過去の負荷が、下降してスケールイン閾値th2を下回るか否かを調べる（ステップ708）。
【００８７】
ステップ708で、時刻ｔ３から一定時間808が経過する時刻ｔ４の間に、物理サーバ110の過去の負荷が、スケールイン閾値th2を下回ることがないと予測したときには（No）、スケールイン判断部135は、スケールインを実行することなく、このルーチンでの処理を終了する（ステップ711）。
【００８８】
ステップ708で、時刻ｔ３から一定時間808が経過する時刻ｔ４の間に、物理サーバ110の過去の負荷が、スケールイン閾値th2を下回ることがあると予測したときには（Yes）、スケールイン判断部135は、物理サーバ110の過去の負荷が、スケールイン閾値th2を下回った時刻ｔをｔ＝ｔ１とし（ステップ709）、ステップ706の処理に戻る。
【００８９】
次に、物理サーバ110の過去の負荷が、時刻804でスケールイン閾値th2を下回ったときには、スケールイン判断部135は、再び、類似負荷情報の選択を類似負荷情報選択部136に要求する。
【００９０】
類似負荷情報選択部136は、スケールイン判断部135からの要求に応答して、負荷情報テーブル132を検索し、物理サーバ110の過去の負荷情報の中から、現在時刻（時刻804）の負荷情報に最も類似している負荷情報を、過去の類似負荷情報として選択する。
【００９１】
過去の類似負荷情報が選択された後、スケールイン判断部135は、現在時刻における物理サーバ110の負荷が、スケールイン閾値th2を下回ったときには、その後、過去の類似負荷情報（グラフ801）に従って変化すると仮定し、過去の類似負荷情報に属する過去の日の時刻のうち、現在時刻（時刻804）と同時刻となる時刻ｔを、ｔ１とするとともに、時刻ｔ１から時刻ｔ２までの一定時間809を負荷上昇探索時間とし（ステップ705）、時刻ｔ１から一定時間809が経過する時刻ｔ２の間に、物理サーバ110の過去の負荷が、上昇してスケールイン閾値th2以上となるか否かを調べる（ステップ706）。
【００９２】
物理サーバ110の過去の負荷が、時刻804から、その後、一時的に下降し、その後上昇して、時刻805からスケールイン閾値th2以上となった場合、スケールイン判断部135は、現在時刻（時刻805）と同時刻となる時刻を、ｔ３とするとともに、時刻ｔ３から時刻ｔ４までの一定時間810を負荷下降探索時間とし（ステップ707）、時刻ｔ３から一定時間810が経過する時刻ｔ４の間に、物理サーバ110の過去の負荷が、下降してスケールイン閾値th2を下回るか否かを調べる（ステップ708）。
【００９３】
時刻ｔ３から一定時間808が経過する時刻ｔ４の間に、物理サーバ110の過去の負荷が、時刻806でスケールイン閾値th2を下回るときには、スケールイン判断部135は、時刻806を時刻ｔに設定し（ステップ709）、ステップ706の処理に戻る。
【００９４】
ステップ706では、スケールイン判断部135は、時刻806を時刻ｔに設定し、時刻ｔから時刻ｔ２の間に、物理サーバ110の過去の負荷が、スケールイン閾値th2を下回るとともに、その後も、スケールイン閾値th2を下回ることが予測されるときに、即ち、物理サーバ110の過去の負荷が、その後も、時刻ｔ１（時刻804）時の負荷まで上昇しないことが予測されるときには、スケールインを実行する（ステップ710）。
【００９５】
この際、スケールイン判断部135は、時刻804をスケールイン開始時刻とし、時刻804でスケールインを実行する。
【００９６】
即ち、スケールイン判断部135は、物理サーバ110の過去の負荷の下降は一時的なものではないと判断し、物理サーバ110上で動作する仮想サーバ115の数を減少させる制御として、スケールインを時刻804で実行する。
【００９７】
上述したように、スケールイン判断部135は、物理サーバ110の負荷が、スケールイン閾値th2を下回ったときに、その後も、スケールイン閾値th2を一定期間に亘って下回る傾向にあると予測したとき、または物理サーバ110の負荷が、その後、一時的にはスケールイン閾値th2以上となることがあっても、長期間ではスケールイン閾値th2を下回る傾向にあると予測したときには、物理サーバ110上で動作する仮想サーバ115の数を減少させる制御として、スケールインを実行し、物理サーバ110の負荷が、スケールイン閾値th2を下回ったときに、その後、一時的に減少した後、スケールイン閾値th2以上になると予測したときには、物理サーバ110上で動作する仮想サーバ115の数を減少させる制御の実行を抑止することになる。
【００９８】
この際、スケールイン判断部135は、物理サーバ110上に仮想サーバ115が存在しないときには、物理サーバ110の電源をオフに制御することで、消費電力を低減できる。
【００９９】
本実施例によれば、物理サーバ110の負荷が閾値から外れたときに、その後の、物理サーバ110の負荷の変化を過去の負荷変動の履歴を基に予測し、この予測結果に従って物理サーバ110に関する制御として、スケールアウトまたはスケールインを実行するようにしたため、スケールアウトまたはスケールインを効率良く高精度に実行することができる。
【０１００】
また、本実施例によれば、現在発生している負荷変動が一時的なものであると判断した場合には、スケールインまたはスケールアウトを抑制するようにしたため、不要な構成変更を削減することができる。
【０１０１】
本実施例においては、スケールアウト判断部134でスケールアウトを実行するか否かを判断するとき、またはスケールイン判断部135でスケールインを実行するか否かを判断するときに、物理サーバ110の負荷が、スケールアウト閾値th1を上回るか否かを判断したり、スケールイン閾値th2を下回るか否かを判断したりするものについて述べてが、スケールアウトまたはスケールインを実行するか否かを判断するための管理対象の負荷としては、物理サーバ110の負荷の代わりに、物理サーバ全体の負荷、または物理サーバ110上で動作する仮想サーバ115の負荷、あるいは物理サーバ110上で動作する仮想サーバ全体の負荷を用いることもできる。
【０１０２】
本実施例において、管理対象の負荷の閾値として、スケールアウト閾値th1とスケールイン閾値th2を設定するに際して、両者の値を同じすることもでき、また、両者の値を異なる値にすることもできる。
【符号の説明】
【０１０３】
１０１  ネットワーク
１０２  負荷分散装置
１１０  物理サーバ
１１１  CPU
１１２  ハードディスク
１１３  通信インタフェース
１１４  メモリ
１１５  仮想サーバ
１１６  負荷情報収集部
１１７  仮想化ソフトウェア
１１８  負荷情報収集部
１２０  サーバ管理装置
１２１  メモリ
１２２  CPU
１２３  通信インタフェース
１２４  ハードディスク
１３０  負荷情報収集部
１３１  構成情報収集部
１３２  負荷情報テーブル
１３３  構成情報テーブル
１３４  スケールアウト判断部
１３５  スケールイン判断部
１３６  類似負荷情報選択部
２０１  構成情報テーブル
２０２  物理サーバID
２０３  仮想サーバID
３０１  負荷情報テーブル
３０２  時刻
３０３  サーバID
３０４  CPU使用率
３０５  メモリ使用率
【図１】
2011118525.tif 000004
【図２】
2011118525.tif 000005
【図３】
2011118525.tif 000006
【図４】
2011118525.tif 000007
【図５】
2011118525.tif 000008
【図６】
2011118525.tif 000009
【図７】
2011118525.tif 000010
【図８】
2011118525.tif 000011