(57)【要約】【課題】運用方針及び負荷状況に基づいて仮想サーバのスケールアップまたはスケールアウトを動的に行なう。【解決手段】リソース調整装置は、物理サーバ３−１〜３−ｎから各仮想サーバの負荷状況を収集しており、仮想サーバＡの高負荷状態を検出すると、仮想サーバＡと同じアプリケーションを提供する仮想サーバ群αに所属しない仮想サーバから削減可能な総リソース量を、現在の負荷状況に基づいて算出する。さらに、リソース調整装置は、仮想サーバ群αのリソース配分がスケールアップまたはスケールアウトのいずれであるか、スケールアップの場合にリソースを集中的に投下する仮想サーバがいずれであるかに基づいて、合計の追加リソース量が、削減可能な総リソース量となるように、仮想サーバ群αに所属する仮想サーバＡ、Ｂ、Ｈへ追加するリソース量の配分を決定した後、仮想サーバの再配置と、リソースの削減及び追加を指示する。【選択図】図８
2010033292.tif 000002
【特許請求の範囲】
【請求項１】
仮想サーバとして動作するサーバ装置と、前記仮想サーバへの割当リソース量を調整するリソース調整装置とからなる仮想サーバリソース調整システムであって、
前記リソース調整装置は、
仮想サーバ群と、当該仮想サーバ群に所属する仮想サーバとを対応付けた情報と、
前記仮想サーバ群に適用されるリソース配分の方法が、前記仮想サーバ群に属する仮想サーバへリソースを分散的に割当てるスケールアウト、または、前記仮想サーバ群に属する一部の仮想サーバへ集中的にリソースを割当てるスケールアップであるかを示す情報と、
各仮想サーバが集中的にリソースを割当てる役割であるか、分散的にリソースを割当てる役割であるかを示す情報と、
各仮想サーバの使用リソース量の情報と、
高負荷状態の判断基準を示す情報と、
前記仮想サーバの負荷の状態を示す負荷状況通知情報とを記憶する記憶部と、
前記サーバ装置から負荷状況通知情報を受信して前記記憶部に書き込む負荷状況収集部と、
前記記憶部から読み出した前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記高負荷状態の判断基準とを比較して、前記仮想サーバが高負荷であるか否かを判断する負荷判定部と、
前記記憶部を参照して、前記負荷判定部により高負荷であると判断された前記仮想サーバが所属する仮想サーバ群である高負荷仮想サーバ群を特定し、特定した高負荷仮想サーバ群とは異なる仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出する空きリソース計算部と、
前記記憶部に記憶されている、前記高負荷仮想サーバ群のリソース配分の方法と、当該高負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の追加リソース量が前記空きリソース計算部により算出された総リソース量となるように、前記高負荷仮想サーバ群に所属する仮想サーバへの追加リソース量の配分を決定する追加リソース計算部と、
前記追加リソース計算部の決定に従って、前記仮想サーバへ配分されたリソース量のリソースを追加するよう前記サーバ装置へ指示する指示部と
を備え、
前記サーバ装置は、
当該サーバ装置で動作している仮想サーバの負荷の状態を示す負荷状況通知情報を前記リソース調整装置に送信する負荷状況出力部と、
前記リソース調整装置からの指示を受け、前記高負荷仮想サーバ群に所属する前記仮想サーバに配分された追加リソース量のリソースを追加する管理部と
を備える、
ことを特徴とする仮想サーバリソース調整システム。
【請求項２】
前記空きリソース計算部は、前記記憶部に記憶されている、前記高負荷仮想サーバ群とは異なる仮想サーバ群のリソース配分の方法と、当該仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該仮想サーバ群に所属する前記仮想サーバの削減リソース量の割当てを決定し、
前記指示部は、前記空きリソース計算部による決定に従って、割当てられた削減リソース量のリソースを前記仮想サーバから削減するよう前記サーバ装置へ指示し、
前記管理部は、前記リソース調整装置からの指示を受け、リソース削減対象の前記仮想サーバから、割当てられた削減リソース量のリソースを削減する、
ことを特徴とする請求項１に記載の仮想サーバリソース調整システム。
【請求項３】
前記記憶部は、前記サーバ装置の備えるリソース量の情報を記憶しており、
前記リソース調整装置は、前記高負荷仮想サーバ群とは異なる仮想サーバ群に所属する前記仮想サーバそれぞれについて、前記記憶部から読み出した当該仮想サーバの使用リソース量から当該仮想サーバに割当てられた削減リソース量を減算して得たリソース削減後の使用リソース量と、前記高負荷仮想サーバ群に所属する各仮想サーバについて前記記憶部から読み出したリソース追加前の当該仮想サーバの使用リソース量と、当該仮想サーバに配分された追加リソース量と、前記記憶部から読み出した前記サーバ装置の備えるリソース量とに基づいて、前記サーバ装置それぞれに配置される仮想サーバを決定する再配置計算部をさらに備え、
前記指示部は、再配置計算部による決定に従って、前記サーバ装置に仮想サーバの配置の変更を指示し、
前記管理部は、前記リソース調整装置からの指示を受け、前記仮想サーバの配置を変更する、
ことを特徴とする請求項２に記載の仮想サーバリソース調整システム。
【請求項４】
前記高負荷状態の判断基準は、前記仮想サーバの使用リソース量を示す高負荷閾値であり、
前記負荷状況通知情報には、前記仮想サーバにおける実際のリソース使用量を示す情報が含まれており、
前記負荷判定部は、前記負荷状況通知情報により示される前記仮想サーバのリソース使用量と、前記記憶部から読み出した当該仮想サーバの高負荷閾値とを比較して、当該仮想サーバが高負荷であるか否かを判断し、
前記空きリソース計算部は、リソースを削減する対象の仮想サーバの高負荷閾値を、当該仮想サーバの削減リソース量を減算した値により更新し、
前記追加リソース計算部は、リソースを追加する対象の仮想サーバの高負荷閾値を、当該仮想サーバの追加リソース量を加算した値により更新する、
ことを特徴とする請求項２または請求項３に記載の仮想サーバリソース調整システム。
【請求項５】
前記記憶部は、低負荷状態の判断基準を示す情報をさらに記憶し、
前記負荷判定部は、前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記低負荷状態の判断基準とを比較して、前記仮想サーバが低負荷であるか否かを判断し、
前記空きリソース計算部は、前記記憶部を参照して、前記負荷判定部により低負荷であると判断された仮想サーバが所属する仮想サーバ群である低負荷仮想サーバ群を特定し、特定した低負荷仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出し、さらに、当該低負荷仮想サーバ群のリソース配分の方法と、当該低負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該低負荷仮想サーバ群に属する前記仮想サーバの削減リソース量の割当てを決定し、
前記指示部は、前記空きリソース計算部による決定に従って、前記低負荷仮想サーバ群に属する前記仮想サーバから割当てられた削減リソース量のリソースを削減するよう前記サーバ装置へ指示し、
前記管理部は、前記リソース調整装置からの指示を受け、リソース削減が決定された前記低負荷仮想サーバ群に属する前記仮想サーバから、割当てられた削減リソース量のリソースを削減する、
ことを特徴とする請求項１に記載の仮想サーバリソース調整システム。
【請求項６】
前記記憶部は、前記サーバ装置の備えるリソース量の情報を記憶しており、
前記低負荷仮想サーバ群に所属する前記仮想サーバそれぞれについて、前記記憶部から読み出した当該仮想サーバの使用リソース量から当該仮想サーバに割当てられた削減リソースを減算して得たリソース削減後の使用リソース量と、前記記憶部から読み出した低負荷仮想サーバ群とは異なる仮想サーバ群に所属する前記仮想サーバの使用リソース量、及び、前記サーバ装置の備えるリソース量とに基づいて、前記サーバ装置それぞれに配置される仮想サーバを決定する再配置計算部をさらに備え、
前記指示部は、再配置計算部による決定に従って、前記サーバ装置に仮想サーバの配置の変更を指示し、
前記管理部は、前記リソース調整装置からの指示を受け、前記仮想サーバの配置を変更する、
ことを特徴とする請求項５に記載の仮想サーバリソース調整システム。
【請求項７】
前記高負荷状態の判断基準は、前記仮想サーバの使用リソース量を示す高負荷閾値であり、
前記低負荷状態の判断基準は、前記仮想サーバの想定される低負荷時のリソース使用量を示す低負荷閾値であり、
前記負荷状況通知情報には、前記仮想サーバにおける実際のリソース使用量を示す情報が含まれており、
前記負荷判定部は、前記負荷状況通知情報により示される前記仮想サーバのリソース使用量と、前記記憶部から読み出した当該仮想サーバの低負荷閾値とを比較して、当該仮想サーバが低負荷であるか否かを判断し、
前記空きリソース計算部は、前記低負荷仮想サーバ群に所属する前記仮想サーバの高負荷閾値を、当該仮想サーバの削減リソース量を減算した値により更新するとともに、当該仮想サーバの低負荷閾値を、更新した当該高負荷閾値に対応した値に更新する、
ことを特徴とする請求項６に記載の仮想サーバリソース調整システム。
【請求項８】
前記記憶部は、アクセス負荷とリソース使用量との関連を示す負荷リソース特性データを記憶しており、
前記負荷状況通知情報には、前記仮想サーバにおけるアクセス負荷を示す情報が含まれており、
前記空きリソース計算部は、リソース削減対象の仮想サーバそれぞれについて、前記記憶部から当該仮想サーバの負荷状況通知情報を読み出し、所定の算出式により、読み出した負荷状況通知情報で示されるアクセス負荷から想定される高アクセス負荷を算出し、さらに、前記記憶部から読み出した前記負荷リソース特性データを用いて、前記想定される高アクセス負荷に対応したリソース量を取得し、取得したリソース量を、前記記憶部から読み出した当該仮想サーバの前記高負荷閾値から減算して空きリソース量を算出し、前記仮想サーバそれぞれについて算出した空きリソース量を合計して総空きリソース量を算出する、
ことを特徴とする請求項４または請求項７に記載の仮想サーバリソース調整システム。
【請求項９】
前記空きリソース計算部は、
リソース削減対象の仮想サーバの属する仮想サーバ群のリソース配分の方法がスケールアウトである場合、当該仮想サーバ群に所属する全ての仮想サーバの使用リソース量が均等になるように当該仮想サーバの削減リソース量の割当てを決定し、
リソース削減対象の仮想サーバの属する仮想サーバ群のリソース配分の方法がスケールアップである場合、当該仮想サーバ群に所属する仮想サーバのうち、分散的にリソースを割当てる役割の仮想サーバのリソース削減割合が高くなるように削減リソース量の割当てを決定する、
ことを特徴とする請求項１から請求項８のいずれかの項に記載の仮想サーバリソースシステム。
【請求項１０】
前記追加リソース計算部は、
前記高負荷仮想サーバ群のリソース配分の方法がスケールアウトである場合、当該高負荷仮想サーバ群に所属する全ての仮想サーバの使用リソース量が均等になるように当該仮想サーバの追加リソース量の配分を決定し、
前記高負荷仮想サーバ群のリソース配分の方法がスケールアップである場合、当該高負荷仮想サーバ群に所属する仮想サーバのうち、集中的にリソースを割当てる役割の仮想サーバのリソース追加後の使用リソース割合が高くなるように追加リソース量の配分を決定する、
ことを特徴とする請求項１から請求項９のいずれかの項に記載の仮想サーバリソースシステム。
【請求項１１】
ユーザ端末から、アクセス先の仮想サーバ群の情報を受信し、前記仮想サーバの負荷の状態に応じて、当該仮想サーバ群に属する仮想サーバのうちいずれにアクセスすべきかを決定して、当該ユーザ端末へ通知するアクセス振分装置をさらに備えることを特徴とする請求項１から請求項１０のいずれかの項に記載の仮想サーバリソース調整システム。
【請求項１２】
前記リソースは、ＣＰＵ、メモリ、ディスクＩ／Ｏ、ネットワークＩ／Ｏのいずれかまたは複数であることを特徴とする請求項１から請求項１１のいずれかの項に記載の仮想サーバリソース調整システム。
【請求項１３】
仮想サーバとして動作するサーバ装置と、前記仮想サーバへの割当リソース量を調整するリソース調整装置とからなる仮想サーバリソース調整システムにおける前記リソース調整装置であって、
仮想サーバ群と、当該仮想サーバ群に所属する仮想サーバとを対応付けた情報と、
前記仮想サーバ群に適用されるリソース配分の方法が、前記仮想サーバ群に属する仮想サーバへリソースを分散的に割当てるスケールアウト、または、前記仮想サーバ群に属する一部の仮想サーバへ集中的にリソースを割当てるスケールアップであるかを示す情報と、
各仮想サーバが集中的にリソースを割当てる役割であるか、分散的にリソースを割当てる役割であるかを示す情報と、
各仮想サーバの使用リソース量の情報と、
高負荷状態の判断基準を示す情報と、
前記仮想サーバの負荷の状態を示す負荷状況通知情報とを記憶する記憶部と、
前記サーバ装置から負荷状況通知情報を受信して前記記憶部に書き込む負荷状況収集部と、
前記記憶部から読み出した前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記高負荷状態の判断基準とを比較して、前記仮想サーバが高負荷であるか否かを判断する負荷判定部と、
前記記憶部を参照して、前記負荷判定部により高負荷であると判断された前記仮想サーバが所属する仮想サーバ群である高負荷仮想サーバ群を特定し、特定した高負荷仮想サーバ群とは異なる仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出する空きリソース計算部と、
前記記憶部に記憶されている、前記高負荷仮想サーバ群のリソース配分の方法と、当該高負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の追加リソース量が前記空きリソース計算部により算出された総リソース量となるように、前記高負荷仮想サーバ群に所属する仮想サーバへの追加リソース量の配分を決定する追加リソース計算部と、
前記追加リソース計算部の決定に従って、前記仮想サーバへ配分されたリソース量のリソースを追加するよう前記サーバ装置へ指示する指示部と、
を備えることを特徴とするリソース調整装置。
【請求項１４】
前記記憶部は、低負荷状態の判断基準を示す情報をさらに記憶し、
前記負荷判定部は、前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した低負荷状態の判断基準とを比較して、前記仮想サーバが低負荷であるか否かを判断し、
前記空きリソース計算部は、前記記憶部を参照して、前記負荷判定部により低負荷であると判断された仮想サーバが所属する仮想サーバ群である低負荷仮想サーバ群を特定し、特定した低負荷仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出し、さらに、当該低負荷仮想サーバ群のリソース配分の方法と、当該低負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該低負荷仮想サーバ群に属する前記仮想サーバの削減リソース量の割当てを決定し、
前記指示部は、前記空きリソース計算部による決定に従って、前記低負荷仮想サーバ群に属する前記仮想サーバから割当てられた削減リソース量のリソースを削減するよう前記サーバ装置へ指示する、
ことを特徴とする請求項１３に記載のリソース調整装置。
【請求項１５】
仮想サーバとして動作するサーバ装置と、前記仮想サーバへの割当リソース量を調整するリソース調整装置とからなる仮想サーバリソース調整システムに用いられる仮想サーバ調整方法であって、
前記リソース調整装置は、
仮想サーバ群と、当該仮想サーバ群に所属する仮想サーバとを対応付けた情報と、
前記仮想サーバ群に適用されるリソース配分の方法が、前記仮想サーバ群に属する仮想サーバへリソースを分散的に割当てるスケールアウト、または、前記仮想サーバ群に属する一部の仮想サーバへ集中的にリソースを割当てるスケールアップであるかを示す情報と、
各仮想サーバが集中的にリソースを割当てる役割であるか、分散的にリソースを割当てる役割であるかを示す情報と、
各仮想サーバの使用リソース量の情報と、
高負荷状態の判断基準を示す情報と、
前記仮想サーバの負荷の状態を示す負荷状況通知情報とを記憶する記憶部を備えており、
前記サーバ装置の負荷状況出力部が、当該サーバ装置で動作している仮想サーバの負荷の状態を示す負荷状況通知情報を前記リソース調整装置に送信する負荷状況出力過程と、
前記リソース調整装置において、
負荷状況収集部が、前記サーバ装置から前記負荷状況通知情報を受信して前記記憶部に書き込む負荷状況収集過程と、
負荷判定部が、前記記憶部から読み出した前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記高負荷状態の判断基準とを比較して、前記仮想サーバが高負荷であるか否かを判断する負荷判定過程と、
空きリソース計算部が、前記記憶部を参照して、前記負荷判定過程において高負荷であると判断された前記仮想サーバが所属する仮想サーバ群である高負荷仮想サーバ群を特定し、特定した高負荷仮想サーバ群とは異なる仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出する空きリソース計算過程と、
追加リソース計算部が、前記記憶部に記憶されている、前記高負荷仮想サーバ群のリソース配分の方法と、当該高負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の追加リソース量が前記空きリソース計算過程において算出された総リソース量となるように、前記高負荷仮想サーバ群に所属する仮想サーバへの追加リソース量の配分を決定する追加リソース計算過程と、
指示部が、前記追加リソース計算過程における決定に従って、前記仮想サーバへ配分されたリソース量のリソースを追加するよう前記サーバ装置へ指示する指示過程と、
前記サーバ装置の管理部が、前記リソース調整装置からの指示を受け、前記高負荷仮想サーバ群に所属する前記仮想サーバに配分された追加リソース量のリソースを追加するリソース追加過程と、
を有することを特徴とする仮想サーバリソース調整方法。
【請求項１６】
前記リソース調整装置の前記記憶部は、低負荷状態の判断基準を示す情報をさらに記憶しており、
前記リソース調整装置において、
前記負荷判定部が、前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記低負荷状態の判断基準とを比較して、前記仮想サーバが低負荷であるか否かを判断する低負荷判定過程と、
前記空きリソース計算部が、前記記憶部を参照して、前記低負荷判定過程において低負荷であると判断された仮想サーバが所属する仮想サーバ群である低負荷仮想サーバ群を特定し、特定した低負荷仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出し、さらに、当該低負荷仮想サーバ群のリソース配分の方法と、当該低負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該低負荷仮想サーバ群に属する前記仮想サーバの削減リソース量の割当てを決定する低負荷仮想サーバ空きリソース計算過程と、
前記指示部が、前記低負荷仮想サーバ空きリソース計算過程における決定に従って、前記低負荷仮想サーバ群に属する前記仮想サーバから割当てられた削減リソース量のリソースを削減するよう前記サーバ装置へ指示するリソース削減指示過程と、
前記サーバ装置の前記管理部が、前記リソース調整装置からの指示を受け、リソース削減が決定された前記低負荷仮想サーバ群に属する前記仮想サーバから、割当てられた削減リソース量のリソースを削減するリソース削減過程と、
をさらに有することを特徴とする請求項１５に記載の仮想サーバリソース調整方法。
【請求項１７】
仮想サーバとして動作するサーバ装置と、前記仮想サーバへの割当リソース量を調整するリソース調整装置とからなる仮想サーバリソース調整システムにおける前記リソース調整装置として用いられるコンピュータに、
前記サーバ装置から負荷状況通知情報を受信して、仮想サーバ群と、当該仮想サーバ群に所属する仮想サーバとを対応付けた情報、前記仮想サーバ群に適用されるリソース配分の方法が、前記仮想サーバ群に属する仮想サーバへリソースを分散的に割当てるスケールアウト、または、前記仮想サーバ群に属する一部の仮想サーバへ集中的にリソースを割当てるスケールアップであるかを示す情報、各仮想サーバが集中的にリソースを割当てる役割であるか、分散的にリソースを割当てる役割であるかを示す情報、各仮想サーバの使用リソース量の情報、高負荷状態の判断基準を示す情報、及び、前記仮想サーバの負荷の状態を示す負荷状況通知情報を記憶する記憶部に書き込む負荷状況収集ステップと、
前記記憶部から読み出した前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記高負荷状態の判断基準とを比較して、前記仮想サーバが高負荷であるか否かを判断する負荷判定ステップと、
前記記憶部を参照して、前記負荷判定ステップにおいて高負荷であると判断された前記仮想サーバが所属する仮想サーバ群である高負荷仮想サーバ群を特定し、特定した高負荷仮想サーバ群とは異なる仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出する空きリソース計算ステップと、
前記記憶部に記憶されている、前記高負荷仮想サーバ群のリソース配分の方法と、当該高負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の追加リソース量が前記空きリソース計算ステップにおいて算出された総リソース量となるように、前記高負荷仮想サーバ群に所属する仮想サーバへの追加リソース量の配分を決定する追加リソース計算ステップと、
前記追加リソース計算ステップにおける決定に従って、前記仮想サーバへ配分されたリソース量のリソースを追加するよう前記サーバ装置へ指示する指示ステップと、
を実行させることを特徴とするコンピュータプログラム。
【請求項１８】
前記コンピュータに、
前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した低負荷状態の判断基準とを比較して、前記仮想サーバが低負荷であるか否かを判断する低負荷判定ステップと、
前記記憶部を参照して、前記低負荷判定ステップにおいて低負荷であると判断された仮想サーバが所属する仮想サーバ群である低負荷仮想サーバ群を特定し、特定した低負荷仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出し、さらに、当該低負荷仮想サーバ群のリソース配分の方法と、当該低負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該低負荷仮想サーバ群に属する前記仮想サーバの削減リソース量の割当てを決定する低負荷仮想サーバ空きリソース計算ステップと、
前記低負荷仮想サーバ空きリソース計算ステップにおける決定に従って、前記低負荷仮想サーバ群に属する前記仮想サーバから割当てられた削減リソース量のリソースを削減するよう前記サーバ装置へ指示するリソース削減指示ステップと、
をさらに実行させることを特徴とする請求項１７に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想サーバを用いたシステムにおいて、仮想サーバへのリソース追加及び削除を動的に行なう仮想サーバリソース調整システム、仮想サーバリソース調整装置、仮想サーバリソース調整方法、及び、コンピュータプログラムに関する。
【背景技術】
【０００２】
近年、１台の物理サーバを仮想的な複数台のサーバとしてとして使用可能な仮想サーバが普及してきている。仮想サーバでは、負荷の状況に応じてリソースをダイナミックに割当てるためリソースの効率化が可能であり、このような仮想サーバの技術を用いて、例えば、データセンタなどのアプリケーションサービスを提供することが考えられている。
データセンタなどで稼動している、様々な負荷を持つ複数の仮想サーバについて最適な運用を考えた場合、なるべく少ない数の仮想サーバにリソースを集中的に投下し、処理を実行するサーバをなるべく少なくするスケールアップや、仮想サーバを実現する処理サーバの台数を増やして処理を分散させるスケールアウトなどの方法が考えられる。特許文献１及び２には、システムの負荷やシステム使用量によって、サーバのスケールアップまたはスケールアウトを行う技術が記載されている。
【特許文献１】特開２００６−３４３８９９号公報
【特許文献２】特開２００７−２１３２８６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
仮想サーバを用いたシステムにおいて、サーバの電源効率を重視した運用を行いたい場合は、稼動しているサーバ台数を減らすために、スケールアップにより、なるべく少ない数の仮想サーバへリソースを集中的に投下することが必要になる。また、電源効率よりも可用性を高めたサーバ運用を行いたい場合は、スケールアウトにより、仮想サーバとして動作するサーバの台数を増やし、処理を分散させる必要がある。しかし、例えば、全体的にはサーバの電源効率を重視し、稼動しているサーバ台数を減らすような運用を行なうが、ある特定のアプリケーションについては、信頼性を確保するように複数の物理サーバで分散処理する運用を行いたい、というようにスケールアップとスケールアウトを柔軟に行ないたいという要望がある。
しかし上記の特許文献１、２に記載された技術では、スケールアップまたはスケールアウトのいずれかのみを行なうものであり、サーバの運用方針を考慮して最適なリソース配置を行うことはできない。
【０００４】
本発明は、このような事情を考慮してなされたもので、その目的は、サーバの運用方針及び負荷状況に基づいて仮想サーバのスケールアップまたはスケールアウトを動的に行なうことができる仮想サーバリソース調整システム、仮想サーバリソース調整装置、仮想サーバリソース調整方法、及び、コンピュータプログラムを提供することにある。
【課題を解決するための手段】
【０００５】
前記課題を解決するために、本発明は、仮想サーバとして動作するサーバ装置と、前記仮想サーバへの割当リソース量を調整するリソース調整装置とからなる仮想サーバリソース調整システムであって、前記リソース調整装置は、仮想サーバ群と、当該仮想サーバ群に所属する仮想サーバとを対応付けた情報と、前記仮想サーバ群に適用されるリソース配分の方法が、前記仮想サーバ群に属する仮想サーバへリソースを分散的に割当てるスケールアウト、または、前記仮想サーバ群に属する一部の仮想サーバへ集中的にリソースを割当てるスケールアップであるかを示す情報と、各仮想サーバが集中的にリソースを割当てる役割であるか、分散的にリソースを割当てる役割であるかを示す情報と、各仮想サーバの使用リソース量の情報と、高負荷状態の判断基準を示す情報と、前記仮想サーバの負荷の状態を示す負荷状況通知情報とを記憶する記憶部と、前記サーバ装置から負荷状況通知情報を受信して前記記憶部に書き込む負荷状況収集部と、前記記憶部から読み出した前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記高負荷状態の判断基準とを比較して、前記仮想サーバが高負荷であるか否かを判断する負荷判定部と、前記記憶部を参照して、前記負荷判定部により高負荷であると判断された前記仮想サーバが所属する仮想サーバ群である高負荷仮想サーバ群を特定し、特定した高負荷仮想サーバ群とは異なる仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出する空きリソース計算部と、前記記憶部に記憶されている、前記高負荷仮想サーバ群のリソース配分の方法と、当該高負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の追加リソース量が前記空きリソース計算部により算出された総リソース量となるように、前記高負荷仮想サーバ群に所属する仮想サーバへの追加リソース量の配分を決定する追加リソース計算部と、前記追加リソース計算部の決定に従って、前記仮想サーバへ配分されたリソース量のリソースを追加するよう前記サーバ装置へ指示する指示部とを備え、前記サーバ装置は、当該サーバ装置で動作している仮想サーバの負荷の状態を示す負荷状況通知情報を前記リソース調整装置に送信する負荷状況出力部と、前記リソース調整装置からの指示を受け、前記高負荷仮想サーバ群に所属する前記仮想サーバに配分された追加リソース量のリソースを追加する管理部とを備える、ことを特徴とする仮想サーバリソース調整システムである。
【０００６】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記空きリソース計算部は、前記記憶部に記憶されている、前記高負荷仮想サーバ群とは異なる仮想サーバ群のリソース配分の方法と、当該仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該仮想サーバ群に所属する前記仮想サーバの削減リソース量の割当てを決定し、前記指示部は、前記空きリソース計算部による決定に従って、割当てられた削減リソース量のリソースを前記仮想サーバから削減するよう前記サーバ装置へ指示し、前記管理部は、前記リソース調整装置からの指示を受け、リソース削減対象の前記仮想サーバから、割当てられた削減リソース量のリソースを削減する、ことを特徴とする。
【０００７】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記記憶部は、前記サーバ装置の備えるリソース量の情報を記憶しており、前記リソース調整装置は、前記高負荷仮想サーバ群とは異なる仮想サーバ群に所属する前記仮想サーバそれぞれについて、前記記憶部から読み出した当該仮想サーバの使用リソース量から当該仮想サーバに割当てられた削減リソース量を減算して得たリソース削減後の使用リソース量と、前記高負荷仮想サーバ群に所属する各仮想サーバについて前記記憶部から読み出したリソース追加前の当該仮想サーバの使用リソース量と、当該仮想サーバに配分された追加リソース量と、前記記憶部から読み出した前記サーバ装置の備えるリソース量とに基づいて、前記サーバ装置それぞれに配置される仮想サーバを決定する再配置計算部をさらに備え、前記指示部は、再配置計算部による決定に従って、前記サーバ装置に仮想サーバの配置の変更を指示し、前記管理部は、前記リソース調整装置からの指示を受け、前記仮想サーバの配置を変更する、ことを特徴とする。
【０００８】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記高負荷状態の判断基準は、前記仮想サーバの使用リソース量を示す高負荷閾値であり、前記負荷状況通知情報には、前記仮想サーバにおける実際のリソース使用量を示す情報が含まれており、前記負荷判定部は、前記負荷状況通知情報により示される前記仮想サーバのリソース使用量と、前記記憶部から読み出した当該仮想サーバの高負荷閾値とを比較して、当該仮想サーバが高負荷であるか否かを判断し、前記空きリソース計算部は、リソースを削減する対象の仮想サーバの高負荷閾値を、当該仮想サーバの削減リソース量を減算した値により更新し、前記追加リソース計算部は、リソースを追加する対象の仮想サーバの高負荷閾値を、当該仮想サーバの追加リソース量を加算した値により更新する、ことを特徴とする。
【０００９】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記記憶部は、低負荷状態の判断基準を示す情報をさらに記憶し、前記負荷判定部は、前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記低負荷状態の判断基準とを比較して、前記仮想サーバが低負荷であるか否かを判断し、前記空きリソース計算部は、前記記憶部を参照して、前記負荷判定部により低負荷であると判断された仮想サーバが所属する仮想サーバ群である低負荷仮想サーバ群を特定し、特定した低負荷仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出し、さらに、当該低負荷仮想サーバ群のリソース配分の方法と、当該低負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該低負荷仮想サーバ群に属する前記仮想サーバの削減リソース量の割当てを決定し、前記指示部は、前記空きリソース計算部による決定に従って、前記低負荷仮想サーバ群に属する前記仮想サーバから割当てられた削減リソース量のリソースを削減するよう前記サーバ装置へ指示し、前記管理部は、前記リソース調整装置からの指示を受け、リソース削減が決定された前記低負荷仮想サーバ群に属する前記仮想サーバから、割当てられた削減リソース量のリソースを削減する、ことを特徴とする。
【００１０】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記記憶部は、前記サーバ装置の備えるリソース量の情報を記憶しており、前記低負荷仮想サーバ群に所属する前記仮想サーバそれぞれについて、前記記憶部から読み出した当該仮想サーバの使用リソース量から当該仮想サーバに割当てられた削減リソースを減算して得たリソース削減後の使用リソース量と、前記記憶部から読み出した低負荷仮想サーバ群とは異なる仮想サーバ群に所属する前記仮想サーバの使用リソース量、及び、前記サーバ装置の備えるリソース量とに基づいて、前記サーバ装置それぞれに配置される仮想サーバを決定する再配置計算部をさらに備え、前記指示部は、再配置計算部による決定に従って、前記サーバ装置に仮想サーバの配置の変更を指示し、前記管理部は、前記リソース調整装置からの指示を受け、前記仮想サーバの配置を変更する、ことを特徴とする。
【００１１】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記高負荷状態の判断基準は、前記仮想サーバの使用リソース量を示す高負荷閾値であり、前記低負荷状態の判断基準は、前記仮想サーバの想定される低負荷時のリソース使用量を示す低負荷閾値であり、前記負荷状況通知情報には、前記仮想サーバにおける実際のリソース使用量を示す情報が含まれており、前記負荷判定部は、前記負荷状況通知情報により示される前記仮想サーバのリソース使用量と、前記記憶部から読み出した当該仮想サーバの低負荷閾値とを比較して、当該仮想サーバが低負荷であるか否かを判断し、前記空きリソース計算部は、前記低負荷仮想サーバ群に所属する前記仮想サーバの高負荷閾値を、当該仮想サーバの削減リソース量を減算した値により更新するとともに、当該仮想サーバの低負荷閾値を、更新した当該高負荷閾値に対応した値に更新する、ことを特徴とする。
【００１２】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記記憶部は、アクセス負荷とリソース使用量との関連を示す負荷リソース特性データを記憶しており、前記負荷状況通知情報には、前記仮想サーバにおけるアクセス負荷を示す情報が含まれており、前記空きリソース計算部は、リソース削減対象の仮想サーバそれぞれについて、前記記憶部から当該仮想サーバの負荷状況通知情報を読み出し、所定の算出式により、読み出した負荷状況通知情報で示されるアクセス負荷から想定される高アクセス負荷を算出し、さらに、前記記憶部から読み出した前記負荷リソース特性データを用いて、前記想定される高アクセス負荷に対応したリソース量を取得し、取得したリソース量を、前記記憶部から読み出した当該仮想サーバの前記高負荷閾値から減算して空きリソース量を算出し、前記仮想サーバそれぞれについて算出した空きリソース量を合計して総空きリソース量を算出する、ことを特徴とする。
【００１３】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記空きリソース計算部は、リソース削減対象の仮想サーバの属する仮想サーバ群のリソース配分の方法がスケールアウトである場合、当該仮想サーバ群に所属する全ての仮想サーバの使用リソース量が均等になるように当該仮想サーバの削減リソース量の割当てを決定し、リソース削減対象の仮想サーバの属する仮想サーバ群のリソース配分の方法がスケールアップである場合、当該仮想サーバ群に所属する仮想サーバのうち、分散的にリソースを割当てる役割の仮想サーバのリソース削減割合が高くなるように削減リソース量の割当てを決定する、ことを特徴とする。
【００１４】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記追加リソース計算部は、前記高負荷仮想サーバ群のリソース配分の方法がスケールアウトである場合、当該高負荷仮想サーバ群に所属する全ての仮想サーバの使用リソース量が均等になるように当該仮想サーバの追加リソース量の配分を決定し、前記高負荷仮想サーバ群のリソース配分の方法がスケールアップである場合、当該高負荷仮想サーバ群に所属する仮想サーバのうち、集中的にリソースを割当てる役割の仮想サーバのリソース追加後の使用リソース割合が高くなるように追加リソース量の配分を決定する、ことを特徴とする。
【００１５】
また、本発明は、上述する仮想サーバリソース調整システムであって、ユーザ端末から、アクセス先の仮想サーバ群の情報を受信し、前記仮想サーバの負荷の状態に応じて、当該仮想サーバ群に属する仮想サーバのうちいずれにアクセスすべきかを決定して、当該ユーザ端末へ通知するアクセス振分装置をさらに備えることを特徴とする。
【００１６】
また、本発明は、上述する仮想サーバリソース調整システムであって、前記リソースは、ＣＰＵ、メモリ、ディスクＩ／Ｏ、ネットワークＩ／Ｏのいずれかまたは複数であることを特徴とする。
【００１７】
また、本発明は、仮想サーバとして動作するサーバ装置と、前記仮想サーバへの割当リソース量を調整するリソース調整装置とからなる仮想サーバリソース調整システムにおける前記リソース調整装置であって、仮想サーバ群と、当該仮想サーバ群に所属する仮想サーバとを対応付けた情報と、前記仮想サーバ群に適用されるリソース配分の方法が、前記仮想サーバ群に属する仮想サーバへリソースを分散的に割当てるスケールアウト、または、前記仮想サーバ群に属する一部の仮想サーバへ集中的にリソースを割当てるスケールアップであるかを示す情報と、各仮想サーバが集中的にリソースを割当てる役割であるか、分散的にリソースを割当てる役割であるかを示す情報と、各仮想サーバの使用リソース量の情報と、高負荷状態の判断基準を示す情報と、前記仮想サーバの負荷の状態を示す負荷状況通知情報とを記憶する記憶部と、前記サーバ装置から負荷状況通知情報を受信して前記記憶部に書き込む負荷状況収集部と、前記記憶部から読み出した前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記高負荷状態の判断基準とを比較して、前記仮想サーバが高負荷であるか否かを判断する負荷判定部と、前記記憶部を参照して、前記負荷判定部により高負荷であると判断された前記仮想サーバが所属する仮想サーバ群である高負荷仮想サーバ群を特定し、特定した高負荷仮想サーバ群とは異なる仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出する空きリソース計算部と、前記記憶部に記憶されている、前記高負荷仮想サーバ群のリソース配分の方法と、当該高負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の追加リソース量が前記空きリソース計算部により算出された総リソース量となるように、前記高負荷仮想サーバ群に所属する仮想サーバへの追加リソース量の配分を決定する追加リソース計算部と、前記追加リソース計算部の決定に従って、前記仮想サーバへ配分されたリソース量のリソースを追加するよう前記サーバ装置へ指示する指示部と、を備えることを特徴とするリソース調整装置である。
【００１８】
また、本発明は、上述するリソース調整装置であって、前記記憶部は、低負荷状態の判断基準を示す情報をさらに記憶し、前記負荷判定部は、前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した低負荷状態の判断基準とを比較して、前記仮想サーバが低負荷であるか否かを判断し、前記空きリソース計算部は、前記記憶部を参照して、前記負荷判定部により低負荷であると判断された仮想サーバが所属する仮想サーバ群である低負荷仮想サーバ群を特定し、特定した低負荷仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出し、さらに、当該低負荷仮想サーバ群のリソース配分の方法と、当該低負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該低負荷仮想サーバ群に属する前記仮想サーバの削減リソース量の割当てを決定し、前記指示部は、前記空きリソース計算部による決定に従って、前記低負荷仮想サーバ群に属する前記仮想サーバから割当てられた削減リソース量のリソースを削減するよう前記サーバ装置へ指示する、ことを特徴とする。
【００１９】
また、本発明は、仮想サーバとして動作するサーバ装置と、前記仮想サーバへの割当リソース量を調整するリソース調整装置とからなる仮想サーバリソース調整システムに用いられる仮想サーバ調整方法であって、前記リソース調整装置は、仮想サーバ群と、当該仮想サーバ群に所属する仮想サーバとを対応付けた情報と、前記仮想サーバ群に適用されるリソース配分の方法が、前記仮想サーバ群に属する仮想サーバへリソースを分散的に割当てるスケールアウト、または、前記仮想サーバ群に属する一部の仮想サーバへ集中的にリソースを割当てるスケールアップであるかを示す情報と、各仮想サーバが集中的にリソースを割当てる役割であるか、分散的にリソースを割当てる役割であるかを示す情報と、各仮想サーバの使用リソース量の情報と、高負荷状態の判断基準を示す情報と、前記仮想サーバの負荷の状態を示す負荷状況通知情報とを記憶する記憶部を備えており、前記サーバ装置の負荷状況出力部が、当該サーバ装置で動作している仮想サーバの負荷の状態を示す負荷状況通知情報を前記リソース調整装置に送信する負荷状況出力過程と、前記リソース調整装置において、負荷状況収集部が、前記サーバ装置から前記負荷状況通知情報を受信して前記記憶部に書き込む負荷状況収集過程と、負荷判定部が、前記記憶部から読み出した前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記高負荷状態の判断基準とを比較して、前記仮想サーバが高負荷であるか否かを判断する負荷判定過程と、空きリソース計算部が、前記記憶部を参照して、前記負荷判定過程において高負荷であると判断された前記仮想サーバが所属する仮想サーバ群である高負荷仮想サーバ群を特定し、特定した高負荷仮想サーバ群とは異なる仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出する空きリソース計算過程と、追加リソース計算部が、前記記憶部に記憶されている、前記高負荷仮想サーバ群のリソース配分の方法と、当該高負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の追加リソース量が前記空きリソース計算過程において算出された総リソース量となるように、前記高負荷仮想サーバ群に所属する仮想サーバへの追加リソース量の配分を決定する追加リソース計算過程と、指示部が、前記追加リソース計算過程における決定に従って、前記仮想サーバへ配分されたリソース量のリソースを追加するよう前記サーバ装置へ指示する指示過程と、前記サーバ装置の管理部が、前記リソース調整装置からの指示を受け、前記高負荷仮想サーバ群に所属する前記仮想サーバに配分された追加リソース量のリソースを追加するリソース追加過程と、を有することを特徴とする仮想サーバリソース調整方法である。
【００２０】
また、本発明は、上述する仮想サーバリソース調整方法であって、前記リソース調整装置の前記記憶部は、低負荷状態の判断基準を示す情報をさらに記憶しており、前記リソース調整装置において、前記負荷判定部が、前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記低負荷状態の判断基準とを比較して、前記仮想サーバが低負荷であるか否かを判断する低負荷判定過程と、前記空きリソース計算部が、前記記憶部を参照して、前記低負荷判定過程において低負荷であると判断された仮想サーバが所属する仮想サーバ群である低負荷仮想サーバ群を特定し、特定した低負荷仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出し、さらに、当該低負荷仮想サーバ群のリソース配分の方法と、当該低負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該低負荷仮想サーバ群に属する前記仮想サーバの削減リソース量の割当てを決定する低負荷仮想サーバ空きリソース計算過程と、前記指示部が、前記低負荷仮想サーバ空きリソース計算過程における決定に従って、前記低負荷仮想サーバ群に属する前記仮想サーバから割当てられた削減リソース量のリソースを削減するよう前記サーバ装置へ指示するリソース削減指示過程と、前記サーバ装置の前記管理部が、前記リソース調整装置からの指示を受け、リソース削減が決定された前記低負荷仮想サーバ群に属する前記仮想サーバから、割当てられた削減リソース量のリソースを削減するリソース削減過程と、をさらに有することを特徴とする。
【００２１】
また、本発明は、仮想サーバとして動作するサーバ装置と、前記仮想サーバへの割当リソース量を調整するリソース調整装置とからなる仮想サーバリソース調整システムにおける前記リソース調整装置として用いられるコンピュータに、前記サーバ装置から負荷状況通知情報を受信して、仮想サーバ群と、当該仮想サーバ群に所属する仮想サーバとを対応付けた情報、前記仮想サーバ群に適用されるリソース配分の方法が、前記仮想サーバ群に属する仮想サーバへリソースを分散的に割当てるスケールアウト、または、前記仮想サーバ群に属する一部の仮想サーバへ集中的にリソースを割当てるスケールアップであるかを示す情報、各仮想サーバが集中的にリソースを割当てる役割であるか、分散的にリソースを割当てる役割であるかを示す情報、各仮想サーバの使用リソース量の情報、高負荷状態の判断基準を示す情報、及び、前記仮想サーバの負荷の状態を示す負荷状況通知情報を記憶する記憶部に書き込む負荷状況収集ステップと、前記記憶部から読み出した前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した前記高負荷状態の判断基準とを比較して、前記仮想サーバが高負荷であるか否かを判断する負荷判定ステップと、前記記憶部を参照して、前記負荷判定ステップにおいて高負荷であると判断された前記仮想サーバが所属する仮想サーバ群である高負荷仮想サーバ群を特定し、特定した高負荷仮想サーバ群とは異なる仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出する空きリソース計算ステップと、前記記憶部に記憶されている、前記高負荷仮想サーバ群のリソース配分の方法と、当該高負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の追加リソース量が前記空きリソース計算ステップにおいて算出された総リソース量となるように、前記高負荷仮想サーバ群に所属する仮想サーバへの追加リソース量の配分を決定する追加リソース計算ステップと、前記追加リソース計算ステップにおける決定に従って、前記仮想サーバへ配分されたリソース量のリソースを追加するよう前記サーバ装置へ指示する指示ステップと、を実行させることを特徴とするコンピュータプログラムである。
【００２２】
また、本発明は、上述するコンピュータプログラムであって、前記コンピュータに、
前記負荷状況通知情報により示される前記仮想サーバの負荷の状態と、前記記憶部から読み出した低負荷状態の判断基準とを比較して、前記仮想サーバが低負荷であるか否かを判断する低負荷判定ステップと、前記記憶部を参照して、前記低負荷判定ステップにおいて低負荷であると判断された仮想サーバが所属する仮想サーバ群である低負荷仮想サーバ群を特定し、特定した低負荷仮想サーバ群に属する仮想サーバの負荷の状態及び使用リソース量を読み出し、読み出した負荷の状態に対応した使用リソース量と、読み出した使用リソース量との差から削減可能な総リソース量を算出し、さらに、当該低負荷仮想サーバ群のリソース配分の方法と、当該低負荷仮想サーバ群に所属する仮想サーバの役割とに基づいて、合計の削減リソース量が前記総リソース量となるように、当該低負荷仮想サーバ群に属する前記仮想サーバの削減リソース量の割当てを決定する低負荷仮想サーバ空きリソース計算ステップと、前記低負荷仮想サーバ空きリソース計算ステップにおける決定に従って、前記低負荷仮想サーバ群に属する前記仮想サーバから割当てられた削減リソース量のリソースを削減するよう前記サーバ装置へ指示するリソース削減指示ステップと、をさらに実行させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、システムの運用方針として予め負荷を共有する仮想サーバ群及びそのリソース配分方法と、当該仮想サーバ群の中で集中的または分散的にリソースを割当てる役割を担う仮想サーバを定義しておき、ある仮想サーバの負荷が高くなった場合、あるいは、負荷が低くなった場合に、定義した運用方針に従って、リソースを投入または削減する仮想サーバと、そのリソース量を決定して、リソース割当てを変更することが可能となる。また、仮想サーバ自体の追加・削除・起動・停止を行なうことなく、一定数の仮想サーバにより、相対的なスケールアップ及びスケールアウトが実現可能となる。
このように、本発明によれば、システムの運用方針に従い、負荷状況に応じて仮想サーバのスケールアップまたはスケールアウトを動的かつ容易に行なうことができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を用いて本発明の一実施の形態について詳細に説明する。
図１は、本発明の一実施の形態による仮想サーバリソース調整システムの全体構成を示す接続図である。同図において、ＩＰ（Internet Protocol）等を利用した保守ネットワーク７に、リソース調整装置１と、仮想サーバを実現する複数の物理サーバ３−１〜３−ｎと、負荷分散装置５が接続されている。また、物理サーバ３−１〜３−ｎ（以下、総称して物理サーバ３と記載）及び負荷分散装置５は、ＩＰ等を利用したエンドユーザ向けネットワーク８を介してユーザ端末６と接続されている。
【００２５】
図２は、仮想サーバ群について説明するための図である。仮想サーバ群は、特定の負荷を共有する仮想サーバ、すなわち、同じアプリケーション（ＡＰ）を提供している１または複数の仮想サーバからなる。同図において、物理サーバ３−１には、仮想サーバＡ及び仮想サーバＡＡが配置されており、物理サーバ３−２には、仮想サーバＢ及び仮想サーバＢＢが配置されており、物理サーバ３−ｎには仮想サーバＨ及び仮想サーバＨＨが配置されている。このように、一つの仮想サーバは、いずれか１つの物理サーバ３に配置される。ここで、仮想サーバ群αには、同じアプリケーションを提供している仮想サーバＡ、仮想サーバＢ、仮想サーバＨが所属しており、仮想サーバ群βには、同じアプリケーションを提供している仮想サーバＡＡ及び仮想サーバＢＢが所属しており、仮想サーバ群γには、仮想サーバＨＨのみが所属している。なお、ユーザ端末６からのアクセスを、同一の仮想サーバ群に属しているどの仮想サーバへ振り分けるかは、各仮想サーバの負荷の状態に基づいて負荷分散装置５が決定し、ユーザ端末６へ指示するものとする。
【００２６】
図３は、リソース配分方式について説明するための図である。リソース配分方式には、リソースを分散的に投入するスケールアウト方式と、リソースを集中的に投入するスケールアップ方式とがある。
図３（ａ）は、スケールアウト方式を示す図である。図３（ａ）に示すように、スケールアウト方式では、例えば、仮想サーバＡと仮想サーバＢとが同一の仮想サーバ群に属しており、当該仮想サーバ群の負荷が上昇したために割当てリソースを増やさなければならないとき、仮想サーバＡ、仮想サーバＢとも割当て量増加後のリソース量がほぼ同じになるようにして、当該仮想サーバ群全体のリソース割当て量を増やす。
図３（ｂ）は、スケールアップ方式を示す図である。図３（ｂ）に示すように、スケールアップ方式では、例えば、仮想サーバＡと仮想サーバＢとが同一の仮想サーバ群に属しており、当該仮想サーバ群の負荷が上昇したために割当てリソースを増やさなければならないとき、特定の仮想サーバ、ここでは仮想サーバＢに集中的にリソースを割当てるようにして、当該仮想サーバ群全体のリソース割当て量を増やす。
【００２７】
図４は、仮想サーバの役割について説明するための図である。各仮想サーバには、スケールアウトの役割を担う「仮想サーバ役割：ＯＵＴ」、スケールアップの役割を担う「仮想サーバ役割：ＵＰ」のうちいずれかが割当てられる。そして、仮想サーバ群にスケールアウト方式が適用される時には（図３（ａ））、当該仮想サーバ群に所属する仮想サーバ役割ＯＵＴの仮想サーバ及び仮想サーバ役割ＵＰの仮想サーバの全てに割当て量増加後のリソース量が均等となるように追加リソースを割当てる。また、仮想サーバ群にスケールアップ方式が適用される時には（図３（ｂ））、当該仮想サーバ群に所属する仮想サーバ役割ＵＰの仮想サーバに追加リソースを相対的に多く割当てる。
これにより、仮想サーバ群に所属する仮想サーバ間において、リソースが相対的に集中しているか、分散しているかの状態に分かれるため、仮想サーバ自体の追加・削除・起動・停止などを行なわずにスケールアウト（サーバの台数を増やす）及びスケールアップ（集中的リソース配分）の概念を実現することができる。
【００２８】
次に、仮想サーバリソース調整システムの動作概要について説明する。
図５〜８は、高負荷発生時の仮想サーバリソース調整システムの動作概要を示す図である。
図５は、負荷がかかっていない仮想サーバ群からの空きリソース削減についての動作概要を示す図である。同図において、リソース調整装置１が、仮想サーバ群αに所属する仮想サーバＡに高負荷が発生したことを検出したとする。リソース調整装置１は、仮想サーバ群αに所属する仮想サーバＡ、Ｂ、Ｈ以外の仮想サーバＡＡ、ＢＢ、・・・、ＨＨそれぞれについて、現在割当てられているリソース量から削減可能なリソース量である空きリソース量を算出し、この算出した各空きリソース量を合計して総空きリソース量ＵＲを算出する。リソース調整装置１は、総空きリソース量ＵＲを算出したのち、各仮想サーバから削減するリソース量を、当該仮想サーバが所属する仮想サーバ群にスケールアウト方式またはスケールアップ方式のいずれが採用されているかのリソース方式と、各仮想サーバの役割とに基づいて決定する。
【００２９】
図６は、高負荷が発生した仮想サーバ群におけるリソース追加対象仮想サーバの決定についての動作概要を示す図である。同図において、リソース調整装置１は、高負荷が発生した仮想サーバＡの負荷から追加が必要なリソース量ＮＲを算出し、総空きリソース量ＵＲと比較する。リソース調整装置１は、総空きリソース量ＵＲのほうが多ければ、リソース追加が可能であると判断し、仮想サーバ群αのリソース配分方式と、仮想サーバ群αに所属する仮想サーバＡ、Ｂ、Ｈの役割とに基づいてリソースを追加すべき仮想サーバと、それぞれの仮想サーバに追加するリソース量ＡＲｍ（ｍはいずれの仮想サーバであるかを示す）を決定する。このとき、リソース調整装置１は、（各仮想サーバの追加リソース量ＡＲｍの合計）＝（総空きリソース量ＵＲ）となるように配分する。ここでは、仮想サーバ群αのリソース配分方式がスケールアップ方式であるため、「仮想サーバ役割：ＵＰ」の仮想サーバＢに優先してリソース追加すると決定する。
【００３０】
なお、高負荷が検出された仮想サーバと、リソース追加が決定された仮想サーバとは必ずしも同じにならなくても良い。これは、仮想サーバ毎の負荷状況に応じて、仮想サーバ群内のどの仮想サーバへアクセスさせるかを決定する負荷分散装置５が、リソース追加された仮想サーバへアクセスを多く振り分け、実際に負荷が検出された仮想サーバへのアクセス負荷を減少させるよう調整するためである。つまり、ここでは、仮想サーバＢのリソース割当を増加させ、それに伴って再度負荷分散を行うことにより、仮想サーバＡのアクセス負荷が仮想サーバＢへ移行されることになる。
【００３１】
図７は、仮想サーバの再配置の組み合わせ問題について説明する図である。リソース調整装置１は、リソース追加対象の仮想サーバが配置される物理サーバ３上の空きリソースが、当該仮想サーバの追加リソース量ＡＲｍとなるように、全物理サーバ３への再配置を決定する。同図においては、リソース追加する仮想サーバＢが配置される物理サーバ３上の空きリソースがＡＲｍ（ｍ＝仮想サーバＢ）となるように再配置されている。この再配置は、全物理サーバ３それぞれのリソース量に対する、全仮想サーバ毎の使用リソース量とリソース追加のための追加リソース量ＡＲｍの組み合わせ配置問題となる。
【００３２】
図８は、仮想サーバ再配置の動作概要を示す図である。リソース調整装置１は、仮想サーバの再配置の位置を計算した後、物理サーバ３−１〜３−ｎ間で仮想サーバ群α以外の仮想サーバ群に所属する仮想サーバから空きリソースを削減し、仮想サーバを稼動させながら移動して配置する。そして、再配置実施後に、仮想サーバ群αの仮想サーバへ追加リソース量ＡＲｍの空きリソースを追加する。ここでは、物理サーバ３−２に配置されている仮想サーバＢＢを物理サーバ３−１に移動するとともに、物理サーバ３−２に配置されている仮想サーバＢに、追加リソース量ＡＲｍ（ｍ＝仮想サーバＢ）のリソースを追加している。
【００３３】
図９は、低負荷検出時の仮想サーバリソース調整システムの動作概要を示す図である。リソース調整装置１は、仮想サーバの低負荷状態を検出した場合、物理サーバ３の仮想サーバ配置状況の適正化と仮想サーバ群毎のリソース配分方式に沿ったリソースの適正化のために、低負荷が検出された仮想サーバ群全体の空きリソースを計算して、全仮想サーバを対象にした再配置や、仮想サーバ群毎のリソース配分方式に沿ったリソース調整を行う。
【００３４】
例えば、リソース調整装置１が、仮想サーバ群αに所属する仮想サーバＡの低負荷を検出した場合、仮想サーバ群αに所属する全仮想サーバＡ、Ｂ、Ｈそれぞれについて削減可能なリソース量である空きリソース量を算出し、この算出した各空きリソース量を合計して総空きリソース量を算出する。リソース調整装置１は、当該仮想サーバ群αにスケールアウト方式またはスケールアップ方式のうちいずれが採用されているかのリソース配分方式と、仮想サーバ群αに所属する仮想サーバＡ、Ｂ、Ｈの役割とに基づいて、合計が総空きリソース量となるように、リソースを削減すべき仮想サーバと、その仮想サーバにおいて削減するリソース量とを決定し、リソースを削減する。リソース調整装置１は、全仮想サーバを対象にして、全物理サーバ３上への再配置を決定し、物理サーバ３−１〜３−ｎ間で仮想サーバを稼動させながら移動して配置する。ここでは、物理サーバ３−ｎに配置されている仮想サーバＨが物理サーバ３−１に、仮想サーバＨＨが物理サーバ３−２にそれぞれ配置され、物理サーバ３−ｎは仮想サーバが配置されていない状態になり、電源ＯＦＦが可能となる。
【００３５】
続いて、仮想サーバリソース調整システムを構成する装置について説明する。
図１０は、物理サーバ３の構成を示す構成を示すブロック図であり、本発明と関係する機能ブロックのみ抽出して示してある。同図において、物理サーバ３は、サーバ装置のハードウェア本体であり、仮想的なサーバコンピュータとして動作する。物理サーバ３において実現される仮想的なサーバコンピュータが仮想サーバ３５である。当該物理サーバ３全体を管理する管理部３１は、仮想サーバ３５が使用するＣＰＵ、メモリ等の各種リソースの割当てを行なう。
【００３６】
管理部３１は、負荷状況出力部３２、通知部３３、及び、リソース状態監視部３４を備える。リソース状態監視部３４は、各仮想サーバ３５の各種リソースについての負荷状態を定期的に収集する。負荷状況出力部３２は、リソース状態監視部３４により収集された各仮想サーバ３５のリソース負荷状態と、当該仮想サーバ３５におけるアクセス負荷の情報とを示す負荷状況通知情報、リソース調整装置１へ定期的に通知する。通知部３３は、仮想サーバ３５の負荷状態を負荷分散装置５に通知する。仮想サーバ３５は、管理部３１により割当てられた各種リソースを使用して動作するが、自身の実行するプロセスのみにアクセス可能であり、他の仮想サーバ３５のプロセスにはアクセスできない。
【００３７】
なお、各種リソースとしてはＣＰＵ（Central Processing Unit）、メモリ、ディスクＩ／Ｏ、ネットワークＩ／Ｏなどを用いるものとする。また、リソースの総合的な消費状況を表す指標となるスループット（単位時間当たりの処理件数）を、リソースの一種として用いる。なお、異なる物理サーバ３間においてもリソースの増減量を標準的に扱うため、各種リソースのリソース使用量の単位は標準化する。具体的には、ＣＰＵはコアやＣＰＵ数を考慮した総周波数を用いてＨｚ（ヘルツ）単位で、メモリはメモリサイズとしてＢｙｔｅ（バイト）単位で、ディスクＩ／Ｏはｂｐｓ（bits per second）またはＩＯＰＳ（Input Output per Second）単位で、ネットワークＩ／Ｏはｂｐｓまたはｐｐｓ（Packet Per Second）単位で扱うものとする。
【００３８】
図１１は、リソース調整装置１の構成を示すブロック図であり、本発明と関係する機能ブロックのみ抽出して示してある。同図において、リソース調整装置１は、負荷状況収集部１１、負荷判定部１２、空きリソース計算部１３、追加リソース計算部１４、再配置計算部１５、移動実施部１６、及び、記憶部２０を備える。記憶部２０は、負荷状況表記憶部２１、負荷特性表記憶部２２、閾値表記憶部２３、空きリソース表記憶部２４、追加リソース表記憶部２５、仮想サーバ群表記憶部２６、移動表記憶部２７、物理サーバ表記憶部２８、仮想サーバ表記憶部２９を備える。リソース調整装置１は、１または複数台のサーバなどのコンピュータ装置により実現することができる。
【００３９】
負荷状況表記憶部２１は、各仮想サーバ３５の負荷状況を記録するためのデータである負荷状況表を記憶する。負荷特性表記憶部２２は、負荷と消費される各種リソースのリソース量との相関関係を示す負荷リソース特性データをアプリケーション毎に記憶する。閾値表記憶部２３は、各仮想サーバ３５のリソース毎の高負荷閾値、低負荷閾値を記録するためのデータである閾値表を記憶する。空きリソース表記憶部２４は、各仮想サーバ３５の各種リソースの空きリソース量を記録するためのデータである空きリソース表を記憶する。追加リソース表記憶部２５は、仮想サーバ３５に追加すべき各種リソースのリソース量を記録するためのデータである追加リソース表を記憶する。仮想サーバ群表記憶部２６は、仮想サーバ群のリソース配分方式及び所属する仮想サーバ３５、当該仮想サーバ３５の役割等を示すデータである仮想サーバ群表を記憶する。移動表記憶部２７は、現在とは異なる物理サーバ３に配置すべき仮想サーバ３５を記録するためのデータである移動表を記憶する。物理サーバ表記憶部２８は、各物理サーバ３が実装している各種リソースの最大リソース量を示すデータである物理サーバ表を記憶する。仮想サーバ表記憶部２９は、各仮想サーバ３５が配置されている物理サーバ３、及び、当該仮想サーバ３５が使用しているリソースを記録するためのデータである仮想サーバ表を記憶する。
【００４０】
負荷状況収集部１１は、物理サーバ３から受信した負荷状況通知情報により、負荷状況表を更新する。負荷判定部１２は、負荷状況表及び閾値表を参照して、いずれかの仮想サーバ３５が高負荷状態または低負荷状態であるかを判定する。空きリソース計算部１３は、高負荷状態が検出された仮想サーバ３５が属する仮想サーバ群以外の仮想サーバ群に所属する仮想サーバ３５について、あるいは、低負荷状態が検出された仮想サーバ３５について、負荷リソース特性データを参照して総空きリソース量を計算し、さらに、仮想サーバ群表を参照して、その総空きリソース量をどのように仮想サーバ３５へ割り振るかを決定して、その結果により空きリソース表と、閾値表の高負荷閾値、低負荷閾値とを更新する。追加リソース計算部１４は、仮想サーバ群表を参照し、高負荷が検出された仮想サーバ３５が属する仮想サーバ群においてリソースを追加する仮想サーバ３５と、追加するリソース量とを決定して、追加リソース表を更新する。再配置計算部１５は、閾値表、追加リソース表、物理サーバ表、仮想サーバ表を参照して、仮想サーバをどの物理サーバ３にて実行させるかの再配置計算を行い、その計算結果により再配置表を更新する。移動実施部１６は、再配置計算部１５により更新された移動表を参照して、物理サーバ３に仮想サーバ３５の配置を移動させるためのコマンドを発行する。また、再配置計算部１５は、仮想サーバ３５の使用リソースの削減や追加を物理サーバ３へ指示するためのコマンドを発行する。
【００４１】
図１２は、負荷状況表記憶部２１に記憶される負荷状況表のデータ構成例を示す。負荷状況表は、仮想サーバ３５を一意に特定する仮想サーバＩＤ、当該仮想サーバ３５におけるアクセス負荷、当該仮想サーバ３５の各種リソースの使用状況、等の情報からなるレコードで構成される。各種リソースの使用状況は、例えば、各種リソース（ＣＰＵ、メモリディスクＩ／Ｏ、ネットワークＩ／Ｏ、スループット等）のリソースＩＤと、リソースの使用量の情報からなる。
【００４２】
図１３は、負荷特性表記憶部２２に記憶される負荷特性表のデータ構成例を示す。負荷特性表は、予め作成されて負荷特性表記憶部２２に記憶させておくものとする。負荷特性表は、アプリケーションを一意に特定するアプリケーションＩＤ、リソースの種類を特定するリソースＩＤ、当該リソースの負荷リソース特性データ、当該リソースの最大アクセス負荷量、等の情報からなるレコードで構成される。
【００４３】
図１４は、閾値表記憶部２３に記憶される閾値表のデータ構成例を示す。閾値表は、仮想サーバＩＤ、リソースＩＤ、高負荷閾値、及び、低負荷閾値の情報からなるレコードで構成される。
【００４４】
図１５は、空きリソース表記憶部２４に記憶される空きリソース表のデータ構成例を示す。空きリソース表は、仮想サーバ３５を特定する仮想サーバＩＤ、リソースＩＤ、空きリソース量、等の情報からなるレコードで構成される。
【００４５】
図１６は、追加リソース表記憶部２５に記憶される追加リソース表のデータ構成例を示す。追加リソース表は、リソースを追加すべき仮想サーバ３５のＩＤである追加仮想サーバＩＤ、使用リソース量追加対象のリソースを特定するリソースＩＤ、当該仮想サーバ３５の当該リソースへ追加すべきリソース量を示す追加リソース量ＡＲｍ、等の情報からなるレコードで構成される。
【００４６】
図１７は、仮想サーバ群表記憶部２６に記憶される仮想サーバ群表のデータ構成例を示す。仮想サーバ群表は、仮想サーバ群を特定する仮想サーバ群ＩＤ、当該仮想サーバ群に所属する仮想サーバ３５のＩＤを示す所属仮想サーバＩＤリスト、当該仮想サーバ群のポリシーがスケールアップ方式かスケールアウト方式かを特定するリソース配分方式ＩＤ、当該仮想サーバ群の最大アクセス負荷量、所属仮想サーバＩＤリストで特定される各仮想サーバ３５の役割がＵＰ／ＯＵＴのいずれであるかの仮想サーバ役割等の情報からなるレコードで構成される。なお、ここでは、仮想サーバ群ＩＤは、アプリケーションＩＤと同一であるとするが、異なるものを使用してもよい。その場合、アプリケーションＩＤと仮想サーバ群ＩＤとは対応付けがなされているものとする。
【００４７】
図１８は、移動表記憶部２７に記憶される移動表のデータ例を記憶する。移動表は、現在仮想サーバ３５が動作している物理サーバ３のＩＤを示す移動元物理サーバＩＤ、再配置によって当該仮想サーバ３５の移動先となる物理サーバ３のＩＤを示す移動先物理サーバＩＤ、移動対象の仮想サーバ３５を特定する仮想サーバＩＤ、等の情報からなるレコードで構成される。
【００４８】
図１９は、物理サーバ表記憶部２８に記憶される物理サーバ表のデータ構成例を示す。物理サーバ表は、物理サーバ３を特定する物理サーバＩＤ、当該物理サーバ３において実装されている各種リソース毎のリソース量を示す物理サーバリソースデータ、等の情報からなるレコードで構成される。
【００４９】
図２０は、仮想サーバ表記憶部２９に記憶される仮想サーバ表のデータ構成例を示す。仮想サーバ表は、仮想サーバＩＤ、仮想サーバ３５が配置されている物理サーバ３を示す配置物理サーバＩＤ、当該物理サーバ３において当該仮想サーバ３５が使用しているリソースのＩＤを示すリソースＩＤリスト、等の情報からなるレコードで構成される。
【００５０】
次に、仮想サーバリソース調整システムの事前準備について説明する。
仮想サーバリソース調整システムの運用者は、各アプリケーションを実現する仮想サーバ群と、その仮想サーバ群に所属する仮想サーバ３５を定義する。そして、各仮想サーバ群にリソース配分方式を定義するとともに、仮想サーバ群に所属する各仮想サーバ３５について、仮想サーバ役割ＵＰ／ＯＵＴを定義する。運用者は、これらの定義に基づいて仮想サーバ群表を作成し、仮想サーバ群表記憶部２６に登録する。この仮想サーバ群表を書き換えることにより、仮想サーバ群にスケールアップ方式を採用するかスケールアウト方式を採用するかのポリシーや、仮想サーバ３５の役割を動的に変更することが可能になる。
【００５１】
さらに、運用者は、仮想サーバ３５上で動作するアプリケーション毎に、アクセス負荷に対する各種リソース（ＣＰＵ、メモリ、ディスクＩ／Ｏ、ネットワークＩ／Ｏ）の使用量の増減の変動を示す負荷リソース特性データを取得する。この負荷リソース特性データは、開発−検証段階などで事前に計測されているものとする。運用者は、取得した情報に基づいて負荷特性表を作成し、負荷特性表記憶部２２に登録する。
【００５２】
また、運用者は、仮想サーバ３５の高負荷状態と低負荷状態を判断するために、仮想サーバ３５の各種リソースについての高負荷閾値と低負荷閾値を設定する。各種リソースの使用量の増減はアクセス負荷に対して連動して変化するため（例えば、ＣＰＵが閾値を超えると、同時にメモリも閾値を超えることは推測できるため）、通常は一つのリソースの高負荷閾値と低負荷閾値を監視するだけでよい。ただし、この時に設定すべき各種リソースそれぞれの閾値は、単位負荷あたりのリソース消費量を負荷リソース特性データに基づいて判断し、ほぼ同時に閾値を越えるような値に設定しておく必要がある。なお、高負荷閾値が示す値は、その仮想サーバ３５において使用される見込みがあるために予め囲い込んでいるリソース値と考え、「仮想サーバの高負荷閾値」＝「仮想サーバの使用リソース量」とする。運用者は、設定した各仮想サーバ３５のリソース毎の高負荷閾値及び低負荷閾値に基づいて閾値表を作成し、閾値表記憶部２３に登録する。
【００５３】
また、運用者は、各種リソース毎に使用可能な最大リソース量を物理サーバ３毎に定義する。通常この全物理サーバ３の最大リソース量の合計は、仮想サーバ３５のために使用可能な合計総リソース量となる。運用者は、各物理サーバ３が備える各種リソースのリソース量に基づいて物理サーバ表を作成し、物理サーバ表記憶部２８に書き込む。
【００５４】
さらに、運用者は、仮想サーバ３５のリソース調整の際に用いられる、仮想サーバ群毎のアクセス負荷の最大許容量として、最大アクセス負荷量を定義する。通常この最大アクセス負荷量は、全物理サーバの合計総リソース量において許容できる最大アクセス負荷となる。運用者は、定義した各仮想サーバ群の最大アクセス負荷量を、仮想サーバ群表記憶部２６に記憶されている仮想サーバ群表に登録する。
また、運用者は、仮想サーバ３５をどの物理サーバ３において配置するかに基づいて仮想サーバ表を生成し、仮想サーバ表記憶部２９に登録する。
【００５５】
図２１は、負荷リソース特性データと、高負荷閾値及び低負荷閾値との関係を示す図である。同図に示すように、負荷リソース特性データは、各種リソース（同図においては、ＣＰＵ，メモリ、スループットのみ記載）毎の、アクセス負荷と、必要リソース量との相関関係を示すものである。
仮想サーバ３５への実負荷が、現在想定している低アクセス負荷及び高アクセス負荷との間にあるとき、つまり、リソースの使用量が高負荷閾値と低負荷閾値との間にあるときには、仮想サーバ３５のリソース調整や再配置は行なわれず、実負荷が想定される高アクセス負荷よりも高くなった、すなわち、リソースの使用量が高負荷閾値を超えたとき、あるいは、実負荷が想定される低アクセス負荷よりも低くなった、すなわち、リソースの使用量が低負荷閾値を下回ったときに、仮想サーバ３５のリソース調整及び再配置が行なわれる。
【００５６】
次に、仮想サーバリソース調整システムの詳細な処理について説明する。
図２２は、リソース調整装置１の動作を示す処理フローである。ここでは、上述した定義が行なわれ、各表が記憶部２０に登録されているものとする。
物理サーバ３の負荷状況出力部３２は、自身に配置されている各仮想サーバ３５のＩＤと、リソース状態監視部３４が収集した、当該仮想サーバ３５の各種リソースのリソース使用状況と、当該仮想サーバ３５から取得した、当該仮想サーバ３５のアクセスログとを設定した負荷状況通知情報を定期的に通知している。リソース調整装置１の負荷状況収集部１１は、物理サーバ３から通知された負荷状況通知情報に基づいて、負荷状況表記憶部２１に負荷状況表を書き込む。ことのき、アクセスログからアクセス負荷を算出して書き込むが、アクセス負荷自体を物理サーバ３から受信することでもよい。また、負荷状況通知情報の各種リソースの使用状況として、リソース使用量自体を設定せず、リソース使用量を算出可能な情報、例えば、リソースの使用率を設定することでもよい。
【００５７】
［ステップＳ１０５：高負荷状態の検出］
リソース調整装置１の負荷判定部１２は、所定の時間毎、あるいは、負荷状況表が更新される度に、仮想サーバ群に高負荷状態が発生していないかを判断する。
負荷判定部１２は、負荷状況表記憶部２１に記憶されている負荷状況表から、全ての仮想サーバ３５について順に、あるいは、負荷状況表が更新された仮想サーバ３５について、仮想サーバＩＤと、当該仮想サーバＩＤの各種リソース使用量との情報を読み出し、さらに、閾値表記憶部２３に記憶されている閾値表から、当該仮想サーバＩＤに対応したリソースＩＤと、高負荷閾値との組みの情報を読み出す。そして、同一の仮想サーバＩＤについてのリソース使用量と高負荷閾値をリソース毎に比較し、いずれかの仮想サーバ３５のリソースについて、現在のリソース使用量が高負荷閾値を超えているかを判断する。なお、所定の種類のリソースのみについて使用量が高負荷閾値を超えているかを判断することでもよく、いずれか１つ、あるいは、所定数以上の任意の種類のリソースについて使用量が高負荷閾値を超えているかを判断することでもよい。リソースの使用量が高負荷閾値を超えている場合、負荷判定部１２は、高負荷が発生しており、この高負荷が発生している仮想サーバ３５が所属する仮想サーバ群にリソース追加が必要であると判断する。
【００５８】
以下、高負荷が検出された仮想サーバ３５を「高負荷検出仮想サーバ」、高負荷検出仮想サーバが所属する仮想サーバ群を「高負荷仮想サーバ群」、高負荷仮想サーバ群に所属する仮想サーバ３５を「高負荷群所属仮想サーバ」と記載する。また、高負荷仮想サーバ群以外の仮想サーバ群を「通常負荷仮想サーバ群」、通常負荷仮想サーバ群に所属する仮想サーバ３５を「通常負荷群所属仮想サーバ」と記載する。
【００５９】
［ステップＳ１１０：空きリソースの計算］
負荷判定部１２により高負荷が発生していると判断された場合、高負荷仮想サーバ群に所属しない全ての仮想サーバ３５、すなわち、全ての通常負荷群所属仮想サーバについて各種リソースの削減（スケールダウン・イン）を行う。そこでまず、空きリソース計算部１３は、全通常負荷群所属仮想サーバの空きリソース量を合計した総空きリソース量ＵＲを各種リソース毎に算出する。
【００６０】
具体的には、空きリソース計算部１３は、仮想サーバ群表記憶部２６に記憶されている仮想サーバ群表を参照して、高負荷検出仮想サーバの仮想サーバＩＤに対応した仮想サーバ群ＩＤ（以下、「高負荷仮想サーバ群ＩＤ」と記載）を特定すると、この特定した高負荷仮想サーバ群ＩＤ以外の仮想サーバ群ＩＤ（以下、「通常負荷仮想サーバ群ＩＤ」と記載）に対応した所属仮想サーバＩＤリストを読み出す。そして、読み出した所属仮想サーバＩＤリストに含まれる通常負荷群所属仮想サーバの仮想サーバＩＤ（以下、「通常負荷群所属仮想サーバＩＤ」）を取得すると、以下のように、通常負荷群所属仮想サーバ毎に各種リソースの空きリソース量を算出する。
【００６１】
図２３は、空きリソース量の算出について説明するための図である。
空きリソース計算部１３は、負荷状況表記憶部２１に記憶されている負荷状況表から、通常負荷群所属仮想サーバＩＤに対応した各種リソースの使用量及びアクセス負荷の情報を読み出し、さらに、閾値表記憶部２３に記憶されている閾値表から、当該通常負荷群所属仮想サーバＩＤに対応したリソースＩＤ及び高負荷閾値の組みの情報を読み出すと、リソース毎にリソース使用量と高負荷閾値とを比較する。空きリソース計算部１３は、リソース使用量と高負荷閾値とに差がある場合は、余分を見て高負荷閾値を下げることが可能であると判断する。この高負荷閾値を下げた分はリソース削減が可能となり、削減したリソース量が「空きリソース量」となる。
【００６２】
そこで、空きリソース計算部１３は、負荷特性表記憶部２２に記憶されている負荷特性表から、上記の通常負荷群所属仮想サーバＩＤがアプリケーションＩＤとして設定されているレコードのリソースＩＤ、及び、負荷リソース特性データの組を読み出す。空きリソース計算部１３は、アクセス負荷情報により示される、通常負荷群所属仮想サーバの現在のアクセス負荷量に基づいて、想定される高アクセス負荷を求める。想定される高アクセス負荷は、以下の（１）または（２）のように算出される負荷範囲の上限値として得ることができる。
【００６３】
（１）負荷範囲を負荷分布の信頼区間により決定：空きリソース計算部１３は、アクセス平均の標本平均をｍ、アクセス平均の標本標準偏差をσとしたときに、想定される負荷範囲を、（負荷範囲）＜（ｍ＋２．２６σ）により算出する。この負荷範囲の上限が想定される高アクセス負荷となる。なお、アクセス平均は、現在空きリソース量の計算対象としている通常負荷群所属仮想サーバＩＤに対応した負荷状況表内のアクセス負荷の情報から取得する。
【００６４】
（２）負荷範囲を分布の最大値より決定：空きリソース計算部１３は、想定される負荷範囲を、（負荷範囲）＜（アクセス負荷分布の最大値）×（猶予）により算出する。この負荷範囲の上限が想定される高アクセス負荷となる。なお、（猶予）は、あらかじめ決められた１以上の定数である。アクセス負荷分布の最大値は、通常負荷群所属仮想サーバＩＤに対応した負荷状況表内のアクセス負荷の情報から取得する。
【００６５】
空きリソース計算部１３は、負荷リソース特性データが示す負荷とリソース量の関係に基づいて、想定される高アクセス負荷に対応した各種リソースのリソース使用量を取得し、空きリソース量算出用の高負荷閾値とする。空きリソース計算部１３は、各種リソースについて、空きリソース量算出用の高負荷閾値から、現在の高負荷閾値を減算することにより、削減可能なリソース量、すなわち、空きリソース量を算出する。空きリソース計算部１３は、全ての通常負荷群所属仮想サーバについて、各種リソースの空きリソース量を算出すると、リソース毎に、全ての通常負荷群所属仮想サーバについて算出した空きリソース量を合計し、各種リソースの総空きリソース量ＵＲを算出する。
【００６６】
各種リソースの総空きリソース量ＵＲが算出されると、空きリソース計算部１３は、通常負荷仮想サーバ群のリソース配分方式と、通常負荷群所属仮想サーバそれぞれの仮想サーバ役割とに従って、以下のように、通常負荷群所属仮想サーバにおける各種リソースのリソース削減量の高低を決定する。
【００６７】
空きリソース計算部１３は、各通常負荷仮想サーバ群ＩＤに対応したリソース配分方式、及び、当該通常負荷仮想サーバ群ＩＤに所属する通常負荷群所属仮想サーバの仮想サーバＩＤ及びその仮想サーバ役割を、仮想サーバ群表記憶部２６に記憶されている仮想サーバ群表から読み出す。また、各通常負荷群所属仮想サーバの各種リソースの現在の使用リソース量を、閾値表記憶部２３に記憶されている閾値表の高負荷閾値から読み出す。
【００６８】
読み出した通常負荷仮想サーバ群のリソース配分方式がスケールアップ方式の場合、当該通常負荷仮想サーバ群に所属する仮想サーバ役割ＵＰの通常負荷群所属仮想サーバのリソースの削減量を低く、仮想サーバ役割ＯＵＴの通常負荷群所属仮想サーバのリソースの削減量を高くすることにより、通常負荷仮想サーバ群内で相対的に仮想サーバ役割ＵＰの通常負荷群所属仮想サーバの残リソースが高く、仮想サーバ役割ＯＵＴの通常負荷群所属仮想サーバの残リソースが低くなるようにする。例えば、仮想サーバ役割ＯＵＴの通常負荷群所属仮想サーバについて、全て均等になるように、あるいは、優先度をつけてリソース量を削減し、さらにリソース量が削減可能な場合は、仮想サーバ役割ＵＰの通常負荷サーバについて、全て均等に、あるいは、仮想サーバ役割ＵＰの中でも優先度をつけてリソースを削減する。
【００６９】
一方、読み出した通常負荷仮想サーバ群のリソース配分方式がスケールアップ方式の場合、当該通常負荷仮想サーバ群に所属する仮想サーバ役割ＵＰであるかＯＵＴであるかにかかわらず、通常負荷群所属仮想サーバの使用リソース量に対応したリソース量が均等になるようにリソースを削減する。
【００７０】
空きリソース計算部１３は、このようにして通常負荷群所属仮想サーバそれぞれの各種リソースについてリソース削減量に高低をつけると、これを最終的な、全通常負荷群所属仮想サーバのリソース毎の空きリソース量として決定し、続いて、通常負荷群所属仮想サーバの各種リソースについての新たな高負荷閾値を決定する。空きリソース計算部１３は、各種リソースについて、現在の通常負荷群所属仮想サーバの高負荷閾値から、当該通常負荷群所属仮想サーバにおける空きリソース量を減算することによって、新たな高負荷閾値、すなわち、新たな使用リソース量を算出する。
【００７１】
さらに、空きリソース計算部１３は、新たな高負荷閾値が、現在の低負荷閾値より低くなる事を避けるために、各種リソース毎の低負荷閾値も下げる。空きリソース計算部１３は、負荷リソース特性データを用い、各通常負荷群所属仮想サーバの現状のアクセス負荷量から想定される低アクセス負荷を決定し、この決定した想定される低アクセス負荷に対応する各種リソースのリソース量を新たな低負荷閾値として決定する。
例えば、負荷リソース特性データから得られる新たな高負荷閾値に対応した想定される高アクセス負荷量と、負荷リソース特性データから得られる新たな低負荷閾値に対応した想定される低アクセス負荷量との平均が、実際のアクセス負荷の標本平均となるように、各リソースの新たな低負荷閾値を決定する。
【００７２】
空きリソース計算部１３は、上記のようにして、通常負荷群所属仮想サーバ全てについて、リソースを削減するか否か、リソースを削減する場合はその各種リソースについて削減する空きリソース量と、新たな高負荷閾値及び低負荷閾値とを算出すると、通常負荷群所属仮想サーバＩＤと、リソースＩＤと、当該リソースＩＤのリソースについての空きリソース量とを対応づけた情報を示すレコードを、空きリソース表記憶部２４に記憶されている空きリソース表に書き込む。さらに、空きリソース計算部１３は、通常負荷群所属仮想サーバＩＤと、リソースＩＤと、リソースの高負荷閾値及び低負荷閾値とにより、閾値表記憶部２３に記憶されている閾値表を更新する。
【００７３】
［ステップＳ１１５：必要リソースの計算］
次に、追加リソース計算部１４は、高負荷仮想サーバ群において追加が必要とされるリソース量である必要リソース量ＮＲを各種リソース毎に算出するが、その前に、高負荷検出仮想サーバにおける現状のアクセス負荷量が最大アクセス負荷量を超えているかを判断する。これは、負荷特性表記憶部２２に記憶されている負荷特性表の負荷リソース特性データから、高負荷検出仮想サーバの仮想サーバＩＤ（以下、「高負荷検出仮想サーバＩＤ」と記載）に対応した最大アクセス負荷量を読み出すとともに、負荷状況表記憶部２１に記憶されている負荷状況表から当該高負荷検出仮想サーバＩＤに対応した現状のアクセス負荷量とを読み出して比較することにより判断する。
【００７４】
図２４は、必要リソース量ＮＲの算出方法を示す図である。現状のアクセス負荷量が最大アクセス負荷量を超えていない場合、追加リソース計算部１４は、負荷特性表記憶部２２に記憶されている負荷特性表から、高負荷検出仮想サーバＩＤに対応して読み出した負荷リソース特性データと、負荷状況表記憶部２１に記憶されている負荷状況表から当該高負荷検出仮想サーバＩＤに対応して読み出したアクセス負荷とに基づいて、想定される高アクセス負荷を求める。想定される高アクセス負荷は、上述とステップＳ１１０と同様に算出した負荷範囲の上限値として得ることができる。（１）負荷範囲を負荷分布の信頼区間により決定する場合は、アクセス平均の標本平均をｍ、アクセス平均の標本標準偏差をσとしたときに、想定される負荷範囲を、（負荷範囲）＜（ｍ＋２．２６σ）により算出する。あるいは、（２）負荷範囲を分布の最大値より決定する場合は、想定される負荷範囲を、（負荷範囲）＜（アクセス負荷分布の最大値）×（猶予）により算出する。（猶予）は、あらかじめ決められた１以上の定数である。追加リソース計算部１４は、各種リソースついて、負荷リソース特性データから、想定される高アクセス負荷に対応したリソース量を取得し、この取得したリソース量と現状の高負荷閾値との差から必要リソース量ＮＲを算出する。
【００７５】
［Ｓ１２０：空きリソースが十分かの判断］
追加リソース計算部１４は、空きリソースが十分かを判断する。ステップＳ１１５において、高負荷検出仮想サーバにおける現状のアクセス負荷量が最大アクセス負荷量を超えていると判断した場合、リソースのいずれかについて、算出した必要リソース量ＮＲが空きリソース量ＵＲより小さいと判断した場合、あるいは、リソースのいずれかについて、算出した必要リソース量ＮＲと高負荷仮想サーバ群の使用リソース量（＝高負荷閾値）との和が、全物理サーバ３の最大リソース量を超えた場合、空きリソースが十分ではないと判断する。各種リソース毎の全物理サーバ３の最大リソース量は、物理サーバ表記憶部２８に記憶されている物理サーバ表から取得した、各物理サーバ３のリソース量を各種リソース毎に合計することにより得られる。
【００７６】
［Ｓ１２５：リソース追加サーバの決定］
追加リソース計算部１４は、総空きリソースＵＲの全てを高負荷仮想サーバ群に所属する高負荷群所属仮想サーバに割り振る。そこで、まず高負荷仮想サーバ群のリソース配分方式と、各高負荷群所属仮想サーバの仮想サーバ役割とに基づいて、リソースを追加する高負荷群所属仮想サーバを決定し、当該高負荷群所属仮想サーバに追加すべき各種リソースそれぞれの追加リソース量ＡＲｍを決定する。つまり、追加リソース量ＡＲｍは総空きリソース量ＵＲより配分される。具体的には、以下のように動作する。
【００７７】
追加リソース計算部１４は、高負荷仮想サーバ群ＩＤに対応したリソース配分方式、及び、当該高負荷仮想サーバ群ＩＤに所属する高負荷群所属仮想サーバの仮想サーバＩＤ及びその仮想サーバ役割を仮想サーバ群表記憶部２６の仮想サーバ群表から読み出す。また、各通常負荷群所属仮想サーバの各種リソースの現在の使用リソース量を、閾値表記憶部２３に記憶されている閾値表の高負荷閾値から読み出す。
【００７８】
読み出した高負荷仮想サーバ群のリソース配分方式がスケールアップ方式の場合、仮想サーバ役割ＵＰの高負荷群所属仮想サーバのみに総空きリソース量ＵＲを追加するものとして、仮想サーバ役割ＵＰの高負荷群所属仮想サーバの各種リソースの追加リソース量ＡＲｍを決定する。このとき、仮想サーバ役割ＵＰの高負荷群所属仮想サーバのリソース追加後のリソース量が均等になるように空きリソース量ＵＲを配分することでもよく、所定の順序で配分することでもよい。また、追加リソース量ＡＲｍと、リソース追加する高負荷群所属仮想サーバの使用リソース量、すなわち、高負荷閾値の合計量が、最も大きいリソース量を持つ物理サーバ３のリソース量を超える場合は、超えた分は仮想サーバ役割ＯＵＴの高負荷群所属仮想サーバに空きリソースを配分するものとする。各物理サーバ３のリソース量は、物理サーバ表記憶部２８に記憶されている物理サーバ表から取得する。
【００７９】
一方、通常負荷仮想サーバ群のリソース配分方式がスケールアウト方式ならば、総空きリソース量ＵＲを、高負荷仮想サーバ群に所属する高負荷群所属仮想サーバの使用リソース量が均等になるように配分追加するものとして、高負荷群所属仮想サーバのリソース毎に追加リソース量ＡＲｍを決定する。この時、高負荷群所属仮想サーバの追加リソース量ＡＲｍと、当該高負荷群所属仮想サーバの使用リソース（＝高負荷閾値）の合計量が、最も小さいリソース量を持つ物理サーバ３のリソース量を超える場合は、必ずしも高負荷群所属仮想サーバ毎のリソース量が均等になるように配分されなくても良い。
【００８０】
追加リソース計算部１４は、各高負荷群所属仮想サーバの各種リソース毎に追加リソース量を決定すると、高負荷群所属仮想サーバの仮想サーバＩＤと、リソースＩＤと、当該高負荷群所属仮想サーバにおける当該リソースＩＤで特定されるリソースの追加リソース量ＡＲｍとを示すレコードを追加リソース表記憶部２５に記憶されている追加リソース表に書き込む。
【００８１】
［Ｓ１３０：再配置の計算］
リソース調整装置１の再配置計算部１５は、リソース追加する高負荷群所属仮想サーバが配置されている物理サーバ３上の空きリソース量が、当該高負荷群所属仮想サーバの追加リソース量ＡＲｍとなるように、全仮想サーバ３５を対象に全物理サーバ３上への再配置を考える。つまり、再配置計算部１５は、全物理サーバ３それぞれのリソース量に対する、全仮想サーバ３５毎の使用リソース量（＝高負荷閾値）と、追加リソース量ＡＲｍとの組み合わせ配置問題の解を得る。全物理サーバ３それぞれのリソース量は、物理サーバ表記憶部２８に記憶される物理サーバ表から読み出す。また、全仮想サーバ３５それぞれの使用リソース量は、閾値表記憶部２３に記憶される閾値表の高負荷閾値から読み出す。このとき、閾値表には、高負荷群所属仮想サーバについては、現在の高負荷閾値が、通常負荷群所属仮想サーバについては、空きリソース削減を行なった後の高負荷閾値が設定されている。リソース量ＡＲｍは、追加リソース表記憶部２５に記憶されている追加リソース表から読み出す。この再配置における組み合わせ配置問題を解く手法には、全組み合わせを計算する方法や、従来からあるグリーディ法や動的計画法、線形計画法などのアルゴリズムを用いる事ができる。
【００８２】
なお、この再配置における組み合わせ配置問題を解く際に、同じ仮想サーバ群に所属する仮想サーバ３５は同一の物理サーバ３に配置しないことを問題の制約条件に加えてもよい。また、再配置における組み合わせ配置問題を解く際に、物理サーバ３間の仮想サーバ３５の移動を最小にする条件を加えてもよい。また、再配置における組み合わせ配置問題を解く際に、高負荷仮想サーバ群に所属する仮想サーバ３５を移動させないことを問題の制約条件に加えてもよい。また、再配置における組み合わせ配置問題を解く際に、物理サーバ３の使用効率を上げるために、一つの物理サーバ３に仮想サーバ３５を集約することを問題の制約条件に加えてもよい。
【００８３】
再配置計算部１５は、どの仮想サーバ３５をどの物理サーバ３に配置するかの再配置問題の解を得ると、この得られた解によって、配置される物理サーバ３が変更される仮想サーバ３５について、当該仮想サーバ３５が現在配置されている物理サーバ３のＩＤを示す移動元物理サーバＩＤ、再配置される物理サーバ３のＩＤを示す移動先物理サーバＩＤ、及び、当該仮想サーバ３５の仮想サーバＩＤを示す移動表を、移動表記憶部２７に書き込む。
【００８４】
［Ｓ１３５：再配置が可能かの判断］
再配置計算部１５は、ステップＳ１２５において、再配置における組み合わせ配置問題が解けたかを判断する。なお、組み合わせ配置問題が解けない場合、ステップＳ１１５に戻り、再度、各種リソース毎に、総空きリソース量ＵＲから分配される各高負荷群所属仮想サーバの追加リソース量ＡＲｍを調整し、再度の再配置問題を解くことも可能である。
【００８５】
［Ｓ１４０：再配置の実施］
移動実施部１６は、再配置計算部１５により各仮想サーバ３５が再配置される物理サーバ３が決定された後、その決定に従って、物理サーバ３間で仮想サーバ３５を稼動させながら移動させ、配置する。移動実施部１６は、物理サーバ３に、リソース削減指示、移動指示、及び、リソース追加指示のコマンドを送信する。リソース削減指示コマンドには、空きリソース表記憶部２４に記憶されている空きリソース表から読み出した、リソース削減対象の仮想サーバ３５のＩＤと、当該仮想サーバ３５から削減すべきリソース量（空きリソース量）との情報が含まれる。移動指示コマンドは、移動表記憶部２７に記憶されている移動表から読み出した、移動元物理サーバＩＤ、移動先物理サーバＩＤ、及び、移動する仮想サーバ３５の仮想サーバＩＤの情報が含まれる。リソース追加指示コマンドには、追加リソース表記憶部２５に記憶されている追加リソース表から読み出した、リソースを追加すべき仮想サーバ３５のＩＤと、当該仮想サーバ３５に追加すべきリソース量（追加リソース量ＡＲｍ）との情報が含まれる。なお、全物理サーバ３に、全物理サーバ３及び仮想サーバ３５に関わる移動指示、リソース削減指示、及び、リソース追加指示を送信してもよく、送信先の物理サーバ３個別に、当該物理サーバ３が関わる移動指示、リソース削減指示、及び、リソース追加指示を送信してもよい。
【００８６】
物理サーバ３の管理部３１は、他の物理サーバ３と連携して、リソース削減指示に従って、該当する仮想サーバ３５のリソース量を削減するとともに、仮想サーバ３５を稼動させながら、再配置する。この仮想サーバ３５が物理サーバ３間を移動する方法としては、仮想サーバマイグレーション機能（ホットマイグレーション、ライブマイグレーションとも言う）などの従来技術を使用することができる（例えば、VMWare社のVMotion機能など）。そして、物理サーバ３の管理部３１は、再配置実施後にリソース追加指示コマンドに従って、該当する仮想サーバ３５のリソース量の削減及び追加リソース量ＡＲｍの追加を行なう。
リソース調整装置１の追加リソース計算部１４は、リソースが追加された高負荷群所属仮想サーバについて、当該高負荷群所属仮想サーバのＩＤと、リソースＩＤと、当該リソースＩＤのリソースについての新たな高負荷閾値及び低負荷閾値とにより、閾値表記憶部２３に記憶されている閾値表を更新する。また、再配置計算部１５は、仮想サーバ表記憶部２９に記憶されている仮想サーバ表の配置物理サーバ情報を、移動後の物理サーバ３のＩＤにより更新する。
【００８７】
閾値表の更新の際、追加リソース計算部１４は、各種リソース毎に、現在閾値表に登録されている各高負荷群所属仮想サーバの高負荷閾値を、追加リソース表記憶部２５に記憶されている当該各高負荷群所属仮想サーバの追加リソース量ＡＲｍを加算した値に書き換える。また、追加リソース計算部１４は、低負荷閾値を新たな高負荷閾値に対応した値に更新する。例えば、高負荷仮想サーバ群の負荷リソース特性データから得られる新たな高負荷閾値に対応した高アクセス負荷量と、負荷リソース特性データから得られる新たな低負荷閾値に対応した低アクセス負荷量との平均が、実際のアクセス負荷の標本平均となるように、各リソースの新たな低負荷閾値を決定する。
【００８８】
［Ｓ１４５：警報出力］
リソース調整装置１は、ステップＳ１２０において、十分な空きリソースがないと判断された場合に警報を出力する。また、リソース調整装置１は、ステップＳ１３５において、再配置計算部１５により、再配置が不可と判断された場合に、警報を出力する。警報は、例えば、リソース調整装置１の備えるディスプレイに表示したり、警報を知らせるランプを点等させたり、リソース調整装置１と保守ネットワーク７を介して接続されるコンピュータ装置へ警報発生を通知するなどして出力する。
【００８９】
［ステップＳ１５０：低負荷状態の検出］
ステップＳ１０５において、リソース調整装置１の負荷判定部１２が、高負荷が発生していないと判断した場合、続いて、低負荷が発生しているかを判断する。
負荷判定部１２は、全ての仮想サーバ３５について順に、あるいは、負荷状況表が更新された仮想サーバ３５について、閾値表記憶部２３に記憶されている閾値表から、仮想サーバＩＤに対応したリソースＩＤと、低負荷閾値との組みの情報を読み出し、ステップＳ１０５において読み出した当該仮想サーバ３５の各種リソース使用量と比較し、いずれかの仮想サーバ３５のリソースについて、現在のリソース使用量が低負荷閾値を下回っているかを判断する。なお、このとき、所定の種類のリソースのみについて使用量が低負荷閾値より小さいかを判断することでもよく、いずれか１つ、あるいは、所定数以上の任意の種類のリソースについて使用量が低負荷閾値より小さいかを判断することでもよい。リソースの使用量が低負荷閾値より小さい場合、負荷判定部１２は、低負荷が発生していると判断する。そして、以下のように、物理サーバ３への仮想サーバ３５の配置状況の適正化と仮想サーバ群毎のリソース配分方式に沿ったリソースの適正化のために、低負荷が検出された仮想サーバ３５が所属する仮想サーバ群全体の空きリソースを計算し、仮想サーバ３５の再配置や仮想サーバ群毎のリソース配分方式に沿ったリソース調整を行う。
【００９０】
以下、低負荷が発生している仮想サーバ３５を「低負荷検出仮想サーバ」、低負荷検出仮想サーバの所属する仮想サーバ群を「低負荷仮想サーバ群」、低負荷仮想サーバ群に所属する仮想サーバ３５を「低負荷群所属仮想サーバ」と記載する。また、低負荷仮想サーバ群以外の仮想サーバ群を「通常負荷仮想サーバ群」、通常負荷仮想サーバ群に所属する仮想サーバ３５を「通常負荷群所属仮想サーバ」と記載する。
【００９１】
［ステップＳ１５５：空きリソース計算］
ステップ１５０において、低負荷が発生していると判断された場合、リソース調整装置１は、低負荷仮想サーバ群のリソース削減が必要であると判断する。そこで、リソース調整装置１は、まず低負荷仮想サーバ群に所属する低負荷群所属仮想サーバ毎にリソースの削減（スケールダウン・イン）を行う。
【００９２】
空きリソース計算部１３は、仮想サーバ群表記憶部２６に記憶されている仮想サーバ群表を参照して、低負荷検出仮想サーバの仮想サーバＩＤが含まれている仮想サーバＩＤリストを読み出す。そして、読み出した所属仮想サーバＩＤリストに含まれる低負荷群所属仮想サーバの仮想サーバＩＤ（以下、「低負荷群所属仮想サーバＩＤ」）を取得すると、以下のように、低負荷群所属仮想サーバ毎に各種リソースの空きリソース量を算出する。
【００９３】
空きリソース計算部１３は、負荷状況表記憶部２１に記憶されている負荷状況表から、低負荷群所属仮想サーバＩＤに対応したリソース使用量及びアクセス負荷情報を読み出し、さらに、閾値表記憶部２３に記憶されている閾値表から、当該低負荷群所属仮想サーバＩＤに対応したリソースＩＤと高負荷閾値の組みの情報を読み出すと、リソース毎にリソース使用量と高負荷閾値を比較する。空きリソース計算部１３は、アクセス負荷情報で示される実際のリソース使用量と高負荷閾値とに差がある場合は、余分を見て高負荷閾値を下げることが可能であると判断する。この高負荷閾値を下げた分はリソース削減が可能となり、削減したリソースが「空きリソース量」となる。
【００９４】
空きリソース計算部１３は、負荷特性表記憶部２２に記憶されている負荷特性表から、上記の低負荷群所属仮想サーバＩＤがアプリケーションＩＤとして設定されているレコードに対応したリソースＩＤ、及び、負荷リソース特性データの組みを読み出す。空きリソース計算部１３は、アクセス負荷情報により示される、低負荷群所属仮想サーバの現在のアクセス負荷量に基づいて、想定される高アクセス負荷を求める。想定される高アクセス負荷の算出は、ステップＳ１１０と同様に算出した負荷範囲の上限値として得ることができる。（１）負荷範囲を負荷分布の信頼区間により決定する場合は、アクセス平均の標本平均をｍ、アクセス平均の標本標準偏差をσとしたときに、想定される負荷範囲を、（負荷範囲）＜（ｍ＋２．２６σ）により算出する。あるいは、（２）負荷範囲を分布の最大値より決定する場合は、想定される負荷範囲を、（負荷範囲）＜（アクセス負荷分布の最大値）×（猶予）により算出する。（猶予）は、あらかじめ決められた１以上の定数である。アクセス平均、アクセス負荷分布の最大値は、低負荷群所属仮想サーバＩＤをキーにして、負荷状況表記憶部２１に記憶されている負荷状況表内のアクセス負荷情報から取得する。
【００９５】
空きリソース計算部１３は、負荷リソース特性データが示す負荷とリソース量の関係に基づいて、上記の想定される高アクセス負荷に対応した各種リソースの使用量を、空きリソース量算出用の高負荷閾値とする。空きリソース計算部１３は、各種リソースについて、空きリソース量算出用の高負荷閾値から、現在の高負荷閾値を減算することにより、削減可能なリソース量、すなわち、空きリソース量を算出する。
【００９６】
上記のように、各低負荷群所属仮想サーバについて空きリソース量を算出すると、算出した空きリソース量をリソース毎に合計して、低負荷仮想サーバ群の各種リソースの総空リソースを算出する。続いて、空きリソース計算部１３は、低負荷仮想サーバ群のリソース配分方式と、低負荷群所属仮想サーバそれぞれの仮想サーバ役割とに従って、以下のように、低負荷群所属仮想サーバにおける各種リソースのリソース削減量の高低を決定する。このとき、各種リソースについて、高低をつけた結果の低負荷群所属仮想サーバのリソース削減量の合計が、算出した総空リソース量となるように割当てる。
【００９７】
空きリソース計算部１３は、低負荷仮想サーバ群ＩＤに対応したリソース配分方式、及び、当該低負荷仮想サーバ群ＩＤに所属する低負荷群所属仮想サーバＩＤ及びその仮想サーバ役割を、仮想サーバ群表記憶部２６に記憶されている仮想サーバ群表から読み出す。また、各低負荷群所属仮想サーバの各種リソースの現在の使用リソース量を、閾値表記憶部２３に記憶されている閾値表の高負荷閾値から読み出す。
【００９８】
読み出した低負荷仮想サーバ群のリソース配分方式がスケールアップ方式の場合、当該低負荷仮想サーバ群に所属する仮想サーバ役割ＯＵＴの低負荷群所属仮想サーバのリソースの削減量を高く、仮想サーバ役割ＵＰの低負荷群所属仮想サーバのリソースの削減量を低くすることにより、低負荷仮想サーバ群内で相対的に仮想サーバ役割ＵＰの低負荷群所属仮想サーバの残リソースが高く、仮想サーバ役割ＯＵＴの低負荷群所属仮想サーバの残リソースが低くなるようリソース削減量を割当てる。例えば、仮想サーバ役割ＯＵＴの低負荷群所属仮想サーバについて、全て均等になるように、あるいは、仮想サーバ役割ＵＰの中でも優先度をつけてリソース量を削減し、さらにリソース量が削減可能な場合は、仮想サーバ役割ＵＰの通常負荷サーバについて、全て均等に、あるいは、優先度をつけてリソース量を削減する。
【００９９】
一方、読み出した低負荷仮想サーバ群のリソース配分方式がスケールアップ方式の場合、当該低負荷仮想サーバ群に所属する仮想サーバ役割ＵＰであるかＯＵＴであるかにかかわらず、低負荷群所属仮想サーバの使用リソース量が均等になるようにリソース削減量を決定する。
【０１００】
空きリソース計算部１３は、このようにして低負荷群所属仮想サーバそれぞれの各種リソースについてリソース削減量に高低をつけると、これを最終的な、全低負荷群所属仮想サーバのリソース毎の空きリソース量として決定し、続いて、低負荷群所属仮想サーバの各種リソースについての新たな高負荷閾値を決定する。空きリソース計算部１３は、各種リソースについて、現在の低負荷群所属仮想サーバの高負荷閾値から、当該低負荷群所属仮想サーバにおける空きリソース量を減算することによって、新たな高負荷閾値、すなわち、新たな使用リソース量を算出する。
【０１０１】
さらに、空きリソース計算部１３は、新たな高負荷閾値が、現在の低負荷閾値より低くなる事を避けるために、各種リソース毎の低負荷閾値も下げる。空きリソース計算部１３は、負荷リソース特性データを用い、各低負荷群所属仮想サーバの現状のアクセス負荷量から想定される低アクセス負荷を決定し、この決定した想定される低アクセス負荷に対応する各種リソースのリソース量を新たな低負荷閾値として決定する。例えば、負荷リソース特性データから得られる新たな高負荷閾値に対応した想定される高アクセス負荷量と、負荷リソース特性データから得られる新たな低負荷閾値に対応した想定される低アクセス負荷量との平均が、実際のアクセス負荷の標本平均となるように、各リソースの新たな低負荷閾値を決定する。
【０１０２】
空きリソース計算部１３は、上記のようにして、低負荷群所属仮想サーバ全てについて、リソースを削減するか否か、リソースを削減する場合はその各種リソースについて削減可能な空きリソース量と、新たな高負荷閾値及び低負荷閾値とを算出すると、低負荷群所属仮想サーバＩＤと、リソースＩＤと、当該リソースＩＤのリソースについての空きリソース量とを対応づけた情報を示すレコードを、空きリソース表記憶部２４に記憶されている空きリソース表に書き込む。また、空きリソース計算部１３は、低負荷群所属仮想サーバＩＤと、リソースＩＤと、リソースの高負荷閾値及び低負荷閾値とにより、閾値表記憶部２３に記憶されている閾値表を更新する。
【０１０３】
［Ｓ１６０：再配置の計算］
リソース調整装置１の再配置計算部１５は、全仮想サーバ３５を対象に全物理サーバ３上への再配置を考える。つまり、再配置計算部１５は、全物理サーバ３それぞれのリソース量に対する、全仮想サーバ３５毎の使用リソース量（＝高負荷閾値）の組み合わせ配置問題の解を得る。全物理サーバ３それぞれのリソース量は、物理サーバ表記憶部２８に記憶される物理サーバ表から読み出す。全仮想サーバ３５それぞれの使用リソース量は、閾値表記憶部２３に記憶される閾値表の高負荷閾値から読み出す。このとき、閾値表には、低負荷群所属仮想サーバについては、空きリソース削減を行なった後の高負荷閾値が設定されている。この再配置における組み合わせ配置問題を解く手法には、全組み合わせを計算する方法や、従来からあるグリーディ法や動的計画法、線形計画法などのアルゴリズムを用いる事ができる。
【０１０４】
なお、この再配置における組み合わせ配置問題を解く際に、同じ仮想サーバ群に所属する仮想サーバ３５は同一の物理サーバ３に配置しないことを問題の制約条件に加えてもよい。また、再配置における組み合わせ配置問題を解く際に、物理サーバ３間の仮想サーバ３５の移動を最小にする条件を加えてもよい。また、再配置における組み合わせ配置問題を解く際に、低負荷仮想サーバ群に所属する仮想サーバ３５を移動させないことを問題の制約条件に加えてもよい。また、再配置における組み合わせ配置問題を解く際に、物理サーバ３の使用効率を上げるために、一つの物理サーバ３に仮想サーバ３５を集約することを問題の制約条件に加えてもよい。
【０１０５】
再配置計算部１５は、どの仮想サーバ３５をどの物理サーバ３に配置するかの再配置問題の解を得ると、この得られた解によって、配置される物理サーバ３が変更される仮想サーバ３５について、当該仮想サーバ３５が現在配置されている物理サーバ３のＩＤを示す移動元物理サーバＩＤ、再配置される物理サーバ３のＩＤを示す移動先物理サーバＩＤ、及び、当該仮想サーバ３５の仮想サーバＩＤを示す移動表を、移動表記憶部２７に書き込む。なお、再配置における組み合わせ配置問題が解けない場合は、警報を出力する。
【０１０６】
［Ｓ１６５：再配置の実施］
移動実施部１６は、再配置計算部１５により各仮想サーバ３５が再配置される物理サーバ３が決定された後、その決定に従って、物理サーバ３間で仮想サーバ３５を稼動させながら移動させ、配置する。そこで、移動実施部１６は、物理サーバ３に、リソース削減指示、移動指示のコマンドを送信する。リソース削減指示コマンドには、空きリソース表記憶部２４に記憶されている空きリソース表から読み出した、リソース削減対象の低負荷群所属仮想サーバのＩＤと、当該低負荷群所属仮想サーバから削減すべきリソース量（空きリソース量）との情報が含まれる。移動指示のコマンドには、移動表記憶部２７に記憶されている移動表から読み出した、移動元物理サーバＩＤ、移動先物理サーバＩＤ、及び、移動する仮想サーバ３５の仮想サーバＩＤの情報が含まれる。なお、全物理サーバ３に、全物理サーバ３及び仮想サーバ３５に関わる移動指示及びリソース削減指示を送信してもよく、送信先の物理サーバ３個別に、当該物理サーバ３が関わるリソース削減指示及び移動指示を送信してもよい。
【０１０７】
物理サーバ３の管理部３１は、他の物理サーバ３と連携して、リソース削減指示に従って、該当する仮想サーバ３５のリソース量を削減するとともに、仮想サーバ３５を稼動させながら、再配置する。リソース調整装置１の再配置計算部１５は、仮想サーバ表記憶部２９に記憶されている仮想サーバ表の配置物理サーバ情報を、移動後の物理サーバ３のＩＤにより更新する。
【０１０８】
なお、仮想サーバ群毎のリソース配分方式を切り替えた際に、強制的に低負荷状態として仮想サーバ群に所属する仮想サーバ３５のリソース調整を行うことも可能である。
【０１０９】
なお、負荷分散装置５には、既存の任意の負荷分散装置を用いることができるが、ここでは一例を説明する。負荷分散装置５は、ＦＱＤＮ（Fully Qualified Domain Name：完全修飾ドメイン名）と、当該ＦＱＤＮのアプリケーションサービスを提供する仮想サーバ３５のＩＰアドレスと、当該ＩＰアドレスを有する仮想サーバ３５が現在アプリケーションサービス提供可能か否かの状態とを対応付けた情報を示す振分情報を記憶している。物理サーバ３の通知部３３は、リソース状態監視部３４から仮想サーバ３５のリソース状態のデータを取得し、取得したデータから得られる仮想サーバ３５の負荷状態を負荷分散装置５へ通知する。負荷分散装置５は、物理サーバ３からの通知により、仮想サーバ３５に負荷がかかってない場合はアプリケーションサービス提供可を、負荷がかかっている場合はアプリケーションサービス提供不可を振分情報に書き込む。ユーザ端末６は、ウェブにアクセスする際に、アクセス先のＦＱＤＮを負荷分散装置５へ通知し、負荷分散装置５は、振分情報を参照して、受信したＦＱＤＮに対応した、アクセス可能な仮想サーバ３５のＩＰアドレスを読み出して、ユーザ端末６へ返送する。これにより、ユーザ端末６は、受信したＩＰアドレスを宛先としてアプリケーションサービス要求を物理サーバ３の仮想サーバ３５へ送信する。アクセスを受けた物理サーバ３の仮想サーバ３５は、要求されたアプリケーションサービスを実行する。これにより、各仮想サーバ３５の負荷に応じて、アクセス数を制御することが可能となる。
【０１１０】
本実施形態によれば、仮想サーバ群毎のリソース配分方式に応じて動的な仮想サーバのリソース調整が可能になり、仮想サーバ群が高負荷であるか低負荷であるかの状態にあわせて物理サーバの利用効率を上げることができる。また、スケールアウトとスケールアップの仕組みを容易に実現することができるため、ユーザは戦略的にスケールアップとスケールアウトを選択可能となり、その選択による効果を得ることが可能となる。つまり、スケールアップによってリソース配分を行なうことにより、待ち行列理論の考えからレスポンスの改善度が高くなる。また、リソースの使用効率も高く、電力の効率がよくなる。一方、スケールアウトによってリソース配分を行なうことにより、処理が分散して実行されることになる。従って、障害に強く、信頼性も高まり、可用性が向上する。また、従来の仕組みでは、スケールアウトを実現するためには、新たな仮想サーバの起動や停止等の仕組みが必要となってしまうが、本実施形態によれば、仮想サーバの数を変化させずにスケールアウトを行なうことが可能となる。
【０１１１】
なお、上述のリソース調整装置１、物理サーバ３、負荷分散装置５、及び、ユーザ端末６は、内部にコンピュータシステムを有している。そして、リソース調整装置１の負荷状況収集部１１、負荷判定部１２、空きリソース計算部１３、追加リソース計算部１４、再配置計算部１５、及び、移動実施部１６、物理サーバ３の管理部３１及び仮想サーバ３５、負荷分散装置５、ならびに、ユーザ端末６の動作の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータシステムが読み出して実行することによって、上記処理が行われる。ここでいうコンピュータシステムとは、ＣＰＵ及び各種メモリやＯＳ、周辺機器等のハードウェアを含むものである。
【０１１２】
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【図面の簡単な説明】
【０１１３】
【図１】本発明の一実施形態による仮想サーバリソース調整システムの全体構成図である。
【図２】仮想サーバ群について説明するための図である。
【図３】リソース配分方式について説明するための図である。
【図４】仮想サーバの役割について説明するための図である。
【図５】負荷がかかっていない仮想サーバ群からの空きリソース削減についての動作概要を示す図である。
【図６】高負荷が発生した仮想サーバ群におけるリソース追加対象仮想サーバの決定についての動作概要を示す図である。
【図７】仮想サーバの再配置の組み合わせ問題について説明する図である。
【図８】高負荷発生時の仮想サーバ再配置についての動作概要を示す図である。
【図９】低負荷検出時の動作概要を示す図である。
【図１０】物理サーバの構成を示すブロック図である。
【図１１】リソース調整装置の構成を示す構成を示すブロック図である。
【図１２】負荷状況表のデータ構成例を示す図である。
【図１３】負荷リソース特性データのデータ構成例を示す図である。
【図１４】閾値表のデータ構成例を示す図である。
【図１５】空きリソース表のデータ構成例を示す図である。
【図１６】追加リソース表のデータ構成例を示す図である。
【図１７】仮想サーバ群表のデータ構成例を示す図である。
【図１８】移動表のデータ構成例を示す図である。
【図１９】物理サーバ表のデータ構成例を示す図である。
【図２０】仮想サーバ表のデータ構成例を示す図である。
【図２１】負荷リソース特性データと、高負荷閾値及び低負荷閾値との関係を示す図である。
【図２２】リソース調整システムの処理フローである。
【図２３】空きリソース量の算出について説明するための図である。
【図２４】必要リソース量ＮＲの算出方法について説明するための図である。
【符号の説明】
【０１１４】
１…リソース調整装置
３、３−１、３−２、３−ｎ…物理サーバ（サーバ装置）
５…負荷分散装置
１１…負荷状況収集部
１２…負荷判定部
１３…空きリソース計算部
１４…追加リソース計算部
１５…再配置計算部
１６…移動実施部（指示部）
２０…記憶部
２１…負荷状況表記憶部
２２…負荷特性表記憶部
２３…閾値表記憶部
２４…空きリソース表記憶部
２５…追加リソース表記憶部
２６…仮想サーバ群表記憶部
２７…移動表記憶部
２８…物理サーバ表記憶部
２９…仮想サーバ表記憶部
３１…管理部
３２…負荷状況出力部
３３…通知部
３４…リソース状態監視部
３５…仮想サーバ
【図１】
2010033292.tif 000003
【図２】
2010033292.tif 000004
【図３】
2010033292.tif 000005
【図４】
2010033292.tif 000006
【図５】
2010033292.tif 000007
【図６】
2010033292.tif 000008
【図７】
2010033292.tif 000009
【図８】
2010033292.tif 000010
【図９】
2010033292.tif 000011
【図１０】
2010033292.tif 000012
【図１１】
2010033292.tif 000013
【図１２】
2010033292.tif 000014
【図１３】
2010033292.tif 000015
【図１４】
2010033292.tif 000016
【図１５】
2010033292.tif 000017
【図１６】
2010033292.tif 000018
【図１７】
2010033292.tif 000019
【図１８】
2010033292.tif 000020
【図１９】
2010033292.tif 000021
【図２０】
2010033292.tif 000022
【図２１】
2010033292.tif 000023
【図２２】
2010033292.tif 000024
【図２３】
2010033292.tif 000025
【図２４】
2010033292.tif 000026