(57)【特許請求の範囲】
【請求項１】
複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置であって、
前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集する負荷情報収集部と、
前記負荷値に関する閾値、前記負荷値の目標値である目標負荷値、前記処理ノードクラスタにおいて稼働中の前記処理ノードの数、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数が記憶されるデータ記憶部と、
前記負荷値及び前記データ記憶部に記憶された前記閾値を用いて、前記処理ノードの追加又は削除を判定する判定部と、
前記判定部の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御部と、
前記処理ノードの追加又は削除を行うと判定された場合に、前記データ記憶部に記憶された前記処理ノードの前記負荷値の目標値である目標負荷値、前記処理ノードクラスタにおいて稼働中の前記処理ノードの数、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて前記閾値を更新し、更新された前記閾値を前記データ記憶部に記憶させる閾値算出部と、
を備えることを特徴とする管理サーバ装置。
【請求項２】
前記判定部は、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、
前記閾値算出部は、稼働中の前記処理ノードの数が小さいほど、前記上限閾値及び前記下限閾値が小さくなるように当該上限閾値及び当該下限閾値を更新する
ことを特徴とする請求項１に記載の管理サーバ装置。
【請求項３】
前記判定部は、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、
稼働中の前記処理ノードの数をＮ、追加又は削除される前記処理ノードの数をＭ、稼働中の前記処理ノードの目標負荷値をＰ、０よりも大きく１以下の定数をαとしたとき、
更新後の前記上限閾値ＴＵ及び前記下限閾値ＴＬは、
ＴＵ＝{１＋α・Ｎ／（Ｎ＋Ｍ）}Ｐ
ＴＬ＝{α・Ｎ／（Ｎ＋Ｍ）}Ｐ
によって表される
ことを特徴とする請求項１又は請求項２に記載の管理サーバ装置。
【請求項４】
複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置であって、
前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集するとともに、収集された前記負荷値に基づいて、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値の一定期間における初期値と最終値との差分に関連する値である負荷変動関連値を測定する負荷情報収集部と、
収集された前記負荷値に関する閾値、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数が記憶されるデータ記憶部と、
収集された前記負荷値及び前記データ記憶部に記憶された前記閾値を用いて、前記処理ノードの追加又は削除を判定する判定部と、
前記判定部の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御部と、
測定された前記負荷変動関連値に応じて前記閾値を補正し、補正された前記閾値を前記データ記憶部に記憶させる閾値算出部と、
を備え、
前記判定部は、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、
前記閾値算出部は、測定された前記負荷変動関連値が大きいほど、補正後の前記上限閾値及び前記下限閾値が補正前の前記上限閾値及び前記下限閾値に対してより小さくなるように、当該上限閾値及び当該下限閾値を補正する
ことを特徴とする管理サーバ装置。
【請求項５】
複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置であって、
前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集するとともに、収集された前記負荷値に基づいて、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値の一定期間における初期値と最終値との差分に関連する値である負荷変動関連値を測定する負荷情報収集部と、
収集された前記負荷値に関する閾値、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数が記憶されるデータ記憶部と、
収集された前記負荷値及び前記データ記憶部に記憶された前記閾値を用いて、前記処理ノードの追加又は削除を判定する判定部と、
前記判定部の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御部と、
測定された前記負荷変動関連値に応じて前記閾値を補正し、補正された前記閾値を前記データ記憶部に記憶させる閾値算出部と、
を備え、
前記判定部は、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、
前記上限閾値及び前記下限閾値の補正前の値をＴＡ、−１以上１以下の値をとるように正規化された前記負荷変動関連値をＲ、負荷変動枠の上限値をＣＭＡＸ、負荷変動枠の下限値をＣＭＩＮ、ＣＭＡＸ−ＣＭＩＮよりも小さい所定値である負荷変動測定幅をｘ、ａを自然数としたとき、
前記上限閾値及び前記下限閾値の補正後の値ＴＢは、
Ｒ＞ＣＭＡＸの場合、
ＴＢ＝ＴＡ（１−ＣＭＡＸ）
ＣＭＩＮ＜Ｒ≦ＣＭＡＸである場合において、ＣＭＡＸ−ａ・ｘ＜Ｒ≦ＣＭＡＸ−（ａ−１）・ｘである場合に、
ＴＢ＝ＴＡ（１−ＣＭＡＸ＋ａ・ｘ）
Ｒ≦ＣＭＩＮの場合、
ＴＢ＝ＴＡ（１−ＣＭＩＮ＋ｘ）
によって表されることを特徴とする管理サーバ装置。
【請求項６】
複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置としてのコンピュータを、
前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集する負荷情報収集手段、
前記負荷値及びデータ記憶部に記憶された前記負荷値に関する閾値を用いて、前記処理ノードの追加又は削除を判定する判定手段、
前記判定手段の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御手段、
前記処理ノードの追加又は削除を行うと判定された場合に、前記データ記憶部に記憶された前記処理ノードの前記負荷値の目標値である目標負荷値、前記処理ノードクラスタにおいて稼働中の前記処理ノードの数、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて前記閾値を更新し、更新された前記閾値を前記データ記憶部に記憶させる閾値算出手段、
として機能させるための管理プログラム。
【請求項７】
複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置としてのコンピュータを、
前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集するとともに、収集された前記負荷値に基づいて、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値の一定期間における初期値と最終値との差分に関連する値である負荷変動関連値を測定する負荷情報収集手段、
収集された前記負荷値及びデータ記憶部に記憶された前記負荷値に関する閾値を用いて、前記処理ノードの追加又は削除を判定する判定手段、
前記判定手段の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御手段、
測定された前記負荷変動関連値に応じて前記閾値を補正し、補正された前記閾値を前記データ記憶部に記憶させる閾値算出手段、
として機能させるための管理プログラムであって、
前記判定手段により、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、
前記閾値算出手段により、測定された前記負荷変動関連値が大きいほど、補正後の前記上限閾値及び前記下限閾値が補正前の前記上限閾値及び前記下限閾値に対してより小さくなるように、当該上限閾値及び当該下限閾値を補正する
ことを特徴とする管理プログラム。
【請求項８】
複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置としてのコンピュータを、
前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集するとともに、収集された前記負荷値に基づいて、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値の一定期間における初期値と最終値との差分に関連する値である負荷変動関連値を測定する負荷情報収集手段、
収集された前記負荷値及びデータ記憶部に記憶された前記負荷値に関する閾値を用いて、前記処理ノードの追加又は削除を判定する判定手段、
前記判定手段の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御手段、
測定された前記負荷変動関連値に応じて前記閾値を補正し、補正された前記閾値を前記データ記憶部に記憶させる閾値算出手段、
として機能させるための管理プログラムであって、
前記判定手段により、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、
前記上限閾値及び前記下限閾値の補正前の値をＴＡ、−１以上１以下の値をとるように正規化された前記負荷変動関連値をＲ、負荷変動枠の上限値をＣＭＡＸ、負荷変動枠の下限値をＣＭＩＮ、ＣＭＡＸ−ＣＭＩＮよりも小さい所定値である負荷変動測定幅をｘ、ａを自然数としたとき、
前記上限閾値及び前記下限閾値の補正後の値ＴＢは、
Ｒ＞ＣＭＡＸの場合、
ＴＢ＝ＴＡ（１−ＣＭＡＸ）
ＣＭＩＮ＜Ｒ≦ＣＭＡＸである場合において、ＣＭＡＸ−ａ・ｘ＜Ｒ≦ＣＭＡＸ−（ａ−１）・ｘである場合に、
ＴＢ＝ＴＡ（１−ＣＭＡＸ＋ａ・ｘ）
Ｒ≦ＣＭＩＮの場合、
ＴＢ＝ＴＡ（１−ＣＭＩＮ＋ｘ）
によって表されることを特徴とする管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラウド環境において、複数の処理ノードによって構成される処理ノードクラスタを管理する技術に関する。
【背景技術】
【０００２】
近年、サーバ仮想化技術をはじめとしたクラウド技術の進展に伴い、仮想化されたサーバをリモートで利用するWebサービスが一般的になっている。かかるWebサービスでは、プール化された汎用サーバを需要に応じて払い出すＩａａＳ（Infrastructure as a Service）が知られている。
クラウドサービスの提供者は、ＩａａＳサービスを利用することによって、需要（クラウド上で提供するサービスに対するトラフィック、換言すると、処理ノードクラスタにおいて稼働中の処理ノードの負荷）に応じてサーバ規模（処理ノードクラスタの構成、すなわち、処理ノードとして機能するサーバ又は仮想マシンの台数）を柔軟に増減させ、ハードウェアリソースの利用効率を最適化することが可能である。
【０００３】
サーバ規模の変更を可能とする方法としては、クラウドサービスの提供者側で需要変化から予測を行い、オペレータが手動で操作する手法、一定のポリシーを事前に設定し、そのポリシーに従って自動的に操作する手法（オートスケーリング）が挙げられる。
【０００４】
オートスケーリングの具体例としては、負荷状態（ＣＰＵ使用率、メモリ使用率等）を監視し、負荷状態の値が設定した閾値を上回ったり下回ったりした場合に、所定台数や稼働中の仮想マシンに対する所定割合の仮想マシン（例えば、所定割合２０％、仮想マシン数１０で運用していた場合には、２台の仮想マシン）を追加又は削除するといった手法が挙げられる（非特許文献１，２参照）。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】「Getting Started with Auto Scaling」、［on line］、［平成２７年８月１７日検索］、インターネット（URL : http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/GettingStartedTutorial.html）
【非特許文献２】「ニフティクラウドのオートスケール仕様詳細」、［on line］、［平成２７年８月１７日検索］、インターネット（URL : http://cloud.nifty.com/service/autoscale_detail.htm）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
前記した手法において、オートスケーリングの実行後には、処理ノードクラスタ内部でクラスタ構成の変更に伴う処理が実施される。かかるクラスタ構成の変更は、処理ノードクラスタを有するシステムに対してリクエスト処理以外の負荷がかかる処理である。特に、statefulな情報を扱うシステムにおいては、オートスケーリングの実行後に処理ノードクラスタ内部でデータの移行処理を行う必要があるため、追加又は削除される仮想マシンの台数が多い場合には、移行すべきデータが多くなり、データ移行処理の負荷が大きくなってしまい、通常のリクエスト処理が妨げられるおそれがある。
【０００７】
本発明は、前記事情に鑑みて創案されたものであり、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することが可能な管理サーバ装置及び管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
前記目的を達成するために、本発明の管理サーバ装置は、複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置であって、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集する負荷情報収集部と、前記負荷値に関する閾値、前記負荷値の目標値である目標負荷値、前記処理ノードクラスタにおいて稼働中の前記処理ノードの数、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数が記憶されるデータ記憶部と、前記負荷値及び前記データ記憶部に記憶された前記閾値を用いて、前記処理ノードの追加又は削除を判定する判定部と、前記判定部の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御部と、前記処理ノードの追加又は削除を行うと判定された場合に、前記データ記憶部に記憶された前記処理ノードの前記負荷値の目標値である目標負荷値、前記処理ノードクラスタにおいて稼働中の前記処理ノードの数、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて前記閾値を更新し、更新された前記閾値を前記データ記憶部に記憶させる閾値算出部と、を備えることを特徴とする。
【０００９】
かかる構成によると、構成変更前の処理ノードの数及び追加又は削除される処理ノードの数に基づいて閾値を更新するので、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することができる。
【００１０】
前記判定部は、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、前記閾値算出部は、稼働中の前記処理ノードの数が小さいほど、前記上限閾値及び前記下限閾値が小さくなるように当該上限閾値及び当該下限閾値を更新する構成であってもよい。
【００１１】
かかる構成によると、稼働中の前記処理ノードの数が小さいほど閾値が小さくなるように当該閾値を更新するので、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することができる。
【００１２】
前記判定部は、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、稼働中の前記処理ノードの数をＮ、追加又は削除される前記処理ノードの数をＭ、稼働中の前記処理ノードの目標負荷値をＰ、０よりも大きく１以下の定数をαとしたとき、更新後の前記上限閾値ＴＵ及び前記下限閾値ＴＬは、
ＴＵ＝{１＋α・Ｎ／（Ｎ＋Ｍ）}Ｐ
ＴＬ＝{α・Ｎ／（Ｎ＋Ｍ）}Ｐ
によって表される構成であってもよい。
【００１３】
かかる構成によると、構成変更前の処理ノードの数及び追加又は削除される処理ノードの数を用いた前記式に基づいて上限閾値及び下限閾値を更新するので、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することができる。
【００１４】
また、本発明の管理サーバ装置は、複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置であって、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集するとともに、収集された前記負荷値に基づいて、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値の一定期間における初期値と最終値との差分に関連する値である負荷変動関連値を測定する負荷情報収集部と、収集された前記負荷値に関する閾値、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数が記憶されるデータ記憶部と、収集された前記負荷値及び前記データ記憶部に記憶された前記閾値を用いて、前記処理ノードの追加又は削除を判定する判定部と、前記判定部の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御部と、測定された前記負荷変動関連値に応じて前記閾値を補正し、補正された前記閾値を前記データ記憶部に記憶させる閾値算出部と、を備え、前記判定部は、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、前記閾値算出部は、測定された前記負荷変動関連値が大きいほど、補正後の前記上限閾値及び前記下限閾値が補正前の前記上限閾値及び前記下限閾値に対してより小さくなるように、当該上限閾値及び当該下限閾値を補正することを特徴とする。
【００１５】
かかる構成によると、処理ノードの負荷変動関連値に応じて閾値を補正するので、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することができる。
また、かかる構成によると、負荷変動関連値が大きいほど、補正後の上限閾値及び下限閾値が補正前の上限閾値及び下限閾値に対してより小さくなるように、当該上限閾値及び当該下限閾値を補正するので、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することができる。
【００１８】
また、本発明の管理サーバ装置は、複数の処理ノードによって構成される処理ノードクラスタに対して前記処理ノードの追加及び削除を指示する管理サーバ装置であって、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値を収集するとともに、収集された前記負荷値に基づいて、前記処理ノードクラスタにおいて稼働中の前記処理ノードの負荷値の一定期間における初期値と最終値との差分に関連する値である負荷変動関連値を測定する負荷情報収集部と、収集された前記負荷値に関する閾値、及び、前記処理ノードクラスタに追加又は削除される前記処理ノードの数が記憶されるデータ記憶部と、収集された前記負荷値及び前記データ記憶部に記憶された前記閾値を用いて、前記処理ノードの追加又は削除を判定する判定部と、前記判定部の判定結果、及び、前記データ記憶部に記憶された前記処理ノードクラスタに追加又は削除される前記処理ノードの数に基づいて、前記処理ノードクラスタに対して前記処理ノードの追加及び削除のいずれかを指示するリソース制御部と、測定された前記負荷変動関連値に応じて前記閾値を補正し、補正された前記閾値を前記データ記憶部に記憶させる閾値算出部と、を備え、前記判定部は、前記負荷値が前記閾値の一つである上限閾値以上である場合に、前記処理ノードを追加すると判定するとともに、前記負荷値が前記閾値の一つである下限閾値以下である場合に、前記処理ノードを削除すると判定し、前記上限閾値及び前記下限閾値の補正前の値をＴＡ、−１以上１以下の値をとるように正規化された前記負荷変動関連値をＲ、負荷変動枠の上限値をＣＭＡＸ、負荷変動枠の下限値をＣＭＩＮ、ＣＭＡＸ−ＣＭＩＮよりも小さい所定値である負荷変動測定幅をｘ、ａを自然数としたとき、前記上限閾値及び前記下限閾値の補正後の値ＴＢは、
Ｒ＞ＣＭＡＸの場合、
ＴＢ＝ＴＡ（１−ＣＭＡＸ）
ＣＭＩＮ＜Ｒ≦ＣＭＡＸである場合において、ＣＭＡＸ−ａ・ｘ＜Ｒ≦ＣＭＡＸ−（ａ−１）・ｘである場合に、
ＴＢ＝ＴＡ（１−ＣＭＡＸ＋ａ・ｘ）
Ｒ≦ＣＭＩＮの場合、
ＴＢ＝ＴＡ（１−ＣＭＩＮ＋ｘ）
によって表されることを特徴とする。
【００１９】
かかる構成によると、処理ノードの負荷変動関連値に応じて閾値を補正するので、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することができる。
また、かかる構成によると、負荷変動関連値の大きさに応じて上限閾値及び下限閾値を段階的に補正するので、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することができる。
【００２０】
また、本発明は、コンピュータを前記した管理サーバ装置として機能させる管理プログラムとしても具現化可能である。
【発明の効果】
【００２１】
本発明によれば、処理ノードクラスタに対する処理ノードの追加又は削除に伴う処理負荷を一定化した状態において、処理ノードの負荷変動に柔軟に対応することができる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態に係る管理サーバ装置を備える処理ノードクラスタ管理システムを示す模式図である。
【図２】本発明の実施形態に係る処理ノードとしての仮想マシンを構成する処理ノード用サーバ装置を示す模式図である。
【図３】閾値設定の第一の動作例を説明するためのフローチャートである。
【図４】閾値設定の第二の動作例を説明するためのフローチャートである。
【図５】第二の動作例における負荷変動関連値と閾値との関係を示す図である。
【図６】処理ノードの追加（スケールアウト）の動作例を説明するためのフローチャートである。
【図７】処理ノードの削除（スケールイン）の動作例を説明するためのフローチャートである。
【発明を実施するための形態】
【００２３】
続いて、本発明の実施形態について図面を参照して説明する。以下の説明では、各装置の本発明に関連する機能部のみを説明しているが、各装置は、それ以外の機能部を備えることも可能である。
【００２４】
図１に示すように、本発明の実施形態に係る処理ノードクラスタ管理システム１は、処理ノードクラスタ２が複数のクライアント装置１０からのリクエストをロードバランサ２０を介して受信して処理し、処理結果をレスポンスとしてロードバランサ２０を介してクライアント装置１０へ返信するに際して、需要（処理ノード３０の負荷）変動に応じて処理ノードクラスタ２の規模（すなわち、稼働中の処理ノード３０の数）を増減させる（オートスケーリング）ためのサーバ管理装置５０を備えるシステムである。
【００２５】
［クライアント装置］
クライアント装置１０は、処理ノードクラスタ２が提供するサービスを要求するためのリクエストを送信する。クライアント装置１０は、入力部１１と、表示部１２と、制御部１３と、を備える。
【００２６】
入力部１１は、キーボード、マウス等によって構成されている。表示部１２は、モニタである。制御部１３は、ユーザによる入力部１１の操作に基づいてリクエストを生成し、生成されたリクエストをネットワーク（例えば、インターネット）ＮＷ及びロードバランサ２０を介して処理ノードクラスタ２へ送信する。また、制御部１３は、処理ノードクラスタ２によるリクエストの処理結果（サービス）を受信し、受信した処理結果を表示部１２に表示させる。
【００２７】
［ロードバランサ］
ロードバランサ２０は、ネットワークＮＷを介して複数のクライアント装置１０と通信可能に接続されており、クライアント装置１０によって送信されたリクエストを、ネットワークＮＷを介して受信し、受信したリクエストを処理ノードクラスタ２内の稼働中の１台の処理ノード３０へ転送する。また、ロードバランサ２０は、処理ノード３０による処理結果を受信し、受信した処理結果を、ネットワークＮＷを介して、対応するクライアント装置１０へ送信する。クライアント装置１０からは、ロードバランサ２０という出入口を介して、処理ノードクラスタ２があたかも単一の装置として動作しているように見えるため、処理ノードクラスタ管理システム１は、処理ノードクラスタ２の構成を柔軟に変更することができる。
【００２８】
ロードバランサ２０がリクエストを処理ノードクラスタ２内の複数の処理ノード３０に振り分ける手法としては、負荷分散の観点から複数の処理ノード３０間の負荷が均等になる手法が望ましく、簡単な手法としては、リクエストを複数の処理ノード３０に対して順番に振り分けるラウンドロビン法等が挙げられる。１台の処理ノード３０が１台のクライアント装置１０のセッション状態を保持する（stateful）場合、換言すると、１台の処理ノード３０が１台のクライアント装置１０からのリクエストを処理している場合には、関連リクエストは同一の処理ノード３０によって処理されることが望ましいため、ロードバランサ２０は、クライアント装置１０に固有の情報（例えば、ＩＰアドレス等）、cookieの登録情報等に基づいて、関連リクエストを同一の処理ノード３０へ振り分けて送信する構成であってもよい。
【００２９】
（処理ノードクラスタ）
処理ノードクラスタ２は、複数の処理ノード３０によって構成されている。図１では１つのロードバランサ２０及び処理ノードクラスタ２のセットが図示されているが、管理サーバ装置５０は、複数の複数のロードバランサ２０及び処理ノードクラスタ２のセットを管理することも可能である。
【００３０】
［処理ノード］
処理ノード３０は、ロードバランサ２０によって振り分けられたリクエストを受信し、受信したリクエストを処理し、処理結果をレスポンスとして、ロードバランサ２０及びネットワークＮＷを介して、対応するクライアント装置１０へ返信する。なお、処理ノード３０は、他のデータベース装置（図示せず）等にアクセスし、リクエストの処理に必要なデータの取得、及び、リクエストの処理に伴うデータの更新を行う構成であってもよい。
【００３１】
処理ノード３０は、１台のサーバ装置が１台の処理ノード３０として機能するように実現されてもよく、仮想化技術を用いることによって、１台のサーバ装置内に設定される複数の仮想マシンがそれぞれ処理ノード３０として機能するように実現されてもよい。後者の場合には、１台のサーバ装置内に設定される複数の仮想マシンが、それぞれ異なる処理ノードクラスタ２に所属する（すなわち、異なるサービスに使用される）構成であってもよい。以下、仮想マシンが１台の処理ノード３０として機能する場合を例にとって説明する。
【００３２】
［処理ノード用サーバ装置］
本実施形態において、処理ノードクラスタ２は、１台以上の処理ノード用サーバ装置６０（図２参照）を備える。
【００３３】
図２に示すように、処理ノード用サーバ装置６０は、ＣＰＵ（Central Processing Unit）、メモリ（ＲＯＭ（Read-Only Memory）、ＲＡＭ（Random Access Memory）等）、ハードディスク（記憶手段）、入出力回路等といったハードウェアリソース６１によって構成されている。かかる処理ノード用サーバ装置６０は、ハードウェアリソース６１上に仮想化層６２として仮想化ソフトウェア（Hypervisor等）が実装されることによって仮想化されており、機能部として、１つの管理用仮想マシン６３と、複数の仮想マシン６４と、を備える。
【００３４】
＜管理用仮想マシン＞
管理用仮想マシン６３は、仮想リソース（仮想ＣＰＵ、仮想メモリ、仮想ディスク、仮想ネットワークインターフェース）６３ａに、管理用ＯＳ（Operating System）６３ｂ及び管理用モジュール６３ｃが実装されることによって実現される。
【００３５】
管理用仮想マシン６３は、複数の仮想マシン６４のゲストＯＳ６４ｂを管理するための管理用ＯＳ６３ｂを用いて、ゲストＯＳ６４ｂのリソース（仮想リソース６４ａ）割り当て及び割り当てられたリソースに対するゲストＯＳ６４ｂのインストールを実行する。
【００３６】
また、管理用仮想マシン６３は、管理用モジュール６３ｃを用いて、ゲストＯＳ６４ｂのリソース情報を表示するためのコマンドを処理ノード用サーバ装置６０に接続された入力部及び表示部（図示せず）に提供したり、ゲストＯＳ６４ｂのリソース情報のグラフを表示部に表示させたりする。
【００３７】
また、管理用仮想マシン６３は、複数の仮想マシン６４のリソース情報を管理サーバ装置５０へ送信する。
【００３８】
＜仮想マシン＞
仮想マシン６４は、仮想リソース（仮想ＣＰＵ、仮想メモリ、仮想ディスク、仮想ネットワークインターフェース）６４ａに、ゲストＯＳ６４ｂ及び処理アプリケーション６４ｃが実装されることによって実現される。１つの仮想マシン６４は、１台の処理ノード３０として機能する。
【００３９】
（処理ノードクラスタ管理システム）
図１に示すように、処理ノードクラスタ管理システム１は、処理ノードクラスタ２を管理してオートスケーリングを指示するためのシステムであって、管理端末装置４０と、管理サーバ装置５０と、を備える。なお、ロードバランサ２０、処理ノードクラスタ２、管理端末装置４０及び管理サーバ装置５０は、クライアント装置１０からのリクエストを処理するとともに処理ノードクラスタの自動的な構成変更（オートスケーリング）を実行するオートスケーリングシステムを構成しているといえる。
【００４０】
［管理端末装置］
管理端末装置４０は、オペレータによって使用される端末装置である。管理端末装置４０は、入力部４１と、表示部４２と、制御部４３と、を備える。
【００４１】
入力部４１は、キーボード、マウス等によって構成されている。表示部４２は、モニタである。制御部４３は、ＣＰＵ、メモリ（ＲＯＭ、ＲＡＭ等）、ハードディスク（記憶手段）等、入出力回路等といったハードウェアリソースによって構成されている。
【００４２】
制御部４３は、オペレータによる入力部４１の操作に基づいて各種情報を生成し、生成された各種情報を管理サーバ装置５０へ送信する。また、制御部４３は、管理サーバ装置５０による処理ノードクラスタ２の管理状況を受信し、受信した管理状況を表示部４２に表示させる。
【００４３】
［管理サーバ装置］
管理サーバ装置５０は、複数の処理ノード３０によって構成される処理ノードクラスタ２を管理するものであって、処理ノードクラスタ２に対してオートスケーリングを指示する装置である。オートスケーリングとしては、処理ノードクラスタ２に対して処理ノード３０を追加するスケールアウト、及び、処理ノードクラスタ２から処理ノード３０を削除するスケールインが挙げられる。管理サーバ装置５０は、ＣＰＵ、メモリ（ＲＯＭ、ＲＡＭ等）、ハードディスク（記憶手段）等、入出力回路等といったハードウェアリソースによって構成されている。管理サーバ装置５０は、機能部として、管理端末装置インターフェース部５１と、リソース管理部５２と、クラスタ構成判定部５３と、リソース制御部５４と、を備える。
【００４４】
＜管理端末装置インターフェース部＞
管理端末装置インターフェース部５１は、管理端末装置４０とのインターフェースであって、管理端末装置４０に対してサービス管理用のポータルサイトを提供する。管理端末装置インターフェース部５１は、管理端末装置４０の制御部４３によって送信された各種情報を受信し、受信した各種情報を後記する記憶部５２ａ，５３ａ，５４ａに記憶させる。また、管理端末装置インターフェース部５１は、記憶部５２ａ，５３ａに記憶された各種情報に基づいて、処理ノードクラスタ２の管理状況を管理端末装置４０へ送信する。
【００４５】
＜リソース管理部＞
リソース管理部５２は、処理ノードクラスタ２のリソース情報を管理する。リソース管理部５２は、機能部として、リソース情報記憶部５２ａと、リソース情報収集部５２ｂと、を備える。
【００４６】
≪リソース情報記憶部≫
リソース情報記憶部５２ａには、処理ノードクラスタ２のリソース情報が記憶されている。リソース情報は、処理ノード３０のハードウェアリソースに関する情報と、当該処理ノード３０の現在の使用状況（処理ノードクラスタ２に追加されて稼働中であるか、処理ノードクラスタ２から削除されて停止中であるか、処理ノード３０である仮想マシン６４とハードウェアリソースとのマッピングの情報等）と、を含む。すなわち、リソース情報は、処理ノードクラスタ２において稼働中の処理ノード３０の数Ｎを含む。
【００４７】
≪リソース情報収集部≫
リソース情報収集部５２ｂは、リソース情報を処理ノードクラスタ２（本実施形態では、処理ノード用サーバ装置６０の管理用仮想マシン６３）から収集し、収集されたリソース情報をリソース情報記憶部５２ａに記憶させる。また、リソース情報収集部５２ｂは、収集されたリソース情報のうち、処理ノードクラスタ２において稼働中の処理ノード３０の数Ｎを後記するデータ記憶部５３ａに記憶させる。
【００４８】
＜クラスタ構成判定部＞
クラスタ構成判定部５３は、処理ノードクラスタ２に対して処理ノード３０を追加するか削除するか現状維持とするかを判定する。クラスタ構成判定部５３は、機能部として、データ記憶部５３ａと、負荷情報収集部５３ｂと、判定部５３ｃと、閾値算出部５３ｄと、を備える。
【００４９】
≪データ記憶部≫
データ記憶部５３ａには、閾値を用いた判定及び閾値の算出のための情報が記憶されている。かかる情報としては、後記する第一の動作例及び第二の動作例で用いられる情報として、閾値Ｔ、すなわち、スケールアウトのための閾値である上限閾値ＴＵ、及び、スケールインのための閾値である下限閾値ＴＬが挙げられる。
【００５０】
また、後記する第一の動作例で用いられる情報として、各処理ノード３０の目標負荷値Ｐ（例えば、処理ノード３０のＣＰＵの使用率７０％）、稼働中の処理ノード３０の数Ｎ、及び、追加又は削除される処理ノード３０の数Ｍが挙げられる。追加又は削除される処理ノード３０の数Ｍは、所定値（予め定められた一定の値）であってもよく、追加又は削除の前の処理ノード３０の数Ｎをパラメータとする式（例えば、Ｎの所定割合、Ｍ＝０．２Ｎ等）であってもよい。
【００５１】
また、後記する第二の動作例で用いられる情報として、負荷変動枠上限値ＣＭＡＸ、負荷変動枠下限値ＣＭＩＮ、負荷変動測定幅ｘ、及び、負荷情報Ｑが上限閾値ＴＵと下限閾値ＴＬとの間の範囲から外れた回数をカウントするためのカウンタ閾値Ｋが挙げられる。負荷変動枠上限値ＣＭＡＸ、負荷変動枠下限値ＣＭＩＮ、及び、負荷変動測定幅ｘについては、後記する第二の動作例において詳細に説明する。
【００５２】
≪負荷情報収集部≫
負荷情報収集部５３ｂは、稼働中の処理ノード３０の負荷に関する情報である負荷情報Ｑ（負荷値、例えば、処理ノード３０のＣＰＵ使用率）を処理ノードクラスタ２（本実施形態では、処理ノード用サーバ装置６０の管理用仮想マシン６３又は、各処理ノード３０としての仮想マシン６４）から収集し、収集された負荷情報Ｑを判定部５３ｃへ出力する。
【００５３】
負荷情報Ｑとしては、稼働中の処理ノード３０の負荷情報Ｑの平均値、稼働中の処理ノード３０の負荷情報Ｑの最大値及び最小値、代表の処理ノード３０の負荷情報Ｑの値、等が挙げられる。
また、負荷情報Ｑの平均値が採用される場合には、負荷情報収集部５３ｂは、稼働中の処理ノード３０の負荷情報Ｑを収集し、収集された負荷情報Ｑに基づいて平均値を算出する構成であってもよく、処理ノードクラスタ２（本実施形態では、処理ノード用サーバ装置６０の管理用仮想マシン６３）によって算出されて送信された平均値としての負荷情報Ｑを収集する構成であってもよい。
【００５４】
また、負荷情報収集部５３ｂは、収集された負荷情報Ｑに基づいて、所定期間における負荷情報Ｑの初期値と最終値との差分に関連する値である負荷変動関連値Ｒを測定し、測定された負荷変動関連値Ｒを閾値算出部５３ｄへ出力する。
【００５５】
負荷変動関連値Ｒは、負荷情報Ｑの増減傾向を示す値であって、負荷情報Ｑの初期値（所定期間の開始時刻ＴＳの値）と最終値（所定期間の終了時刻ＴＥの値）との差分を用いたものであって、所定期間において負荷情報Ｑが増加傾向にある場合は正の値をとり、負荷情報Ｑが減少傾向にある場合は負の値をとる。負荷情報Ｑは、その絶対値が大きいほど、、増加傾向又は減少傾向が大きいということを示す。かかる負荷情報Ｒは、所定期間をＴ（＝ＴＥ−ＴＳ）、負荷情報Ｑの初期値をＱＳ、負荷情報Ｑの最終値をＱＥとしたとき、
Ｒ＝ＱＥ−ＱＳ
Ｒ＝（ＱＥ−ＱＳ）／Ｔ
等とすることができる。
【００５６】
また、負荷変動関連値Ｒは、第二の動作例で用いるために、−１以上１以下の値をとるように正規化されたものであってもよく、例えば、前記したものを所定期間Ｔ内の負荷情報Ｑの平均値ＱＡ等で割った値を採用することも可能である。
例えば、平均値ＱＡが初期値ＱＳ及び最終値ＱＥを用いて算出される場合（ＱＡ＝（ＱＥ＋ＱＳ）／２）には、正規化された負荷変動関連値Ｒは、
Ｒ＝（ＱＥ−ＱＳ）／ＱＡ
＝２（ＱＥ−ＱＳ）／（ＱＥ＋ＱＳ）
又は、
Ｒ＝（ＱＥ−ＱＳ）／（Ｔ・ＱＡ）
＝２（ＱＥ−ＱＳ）／｛Ｔ（ＱＥ＋ＱＳ）｝
等となる。
【００５７】
≪判定部≫
判定部５３ｃは、負荷情報収集部５３ｂから出力された負荷情報Ｑを取得し、取得された負荷情報Ｑ及びデータ記憶部５３ａに記憶された閾値Ｔ（上限閾値ＴＵ及び下限閾値ＴＬ）に基づいて処理ノード３０の追加又は削除を判定し、判定結果をリソース制御部５４へ出力する。
Ｑ≧ＴＵであれば、判定部５３ｃは、処理ノードクラスタ２に対してＭ台の処理ノード３０を追加すると判定する。
ＴＬ＜Ｑ＜ＴＵであれば、判定部５３ｃは、処理ノードクラスタ２に対する処理ノード３０の追加も削除も必要ない（現状維持）と判定する。
Ｑ≦ＴＬであれば、判定部５３ｃは、処理ノードクラスタ２からＭ台の処理ノード３０を削除すると判定する。
【００５８】
≪閾値算出部≫
閾値算出部５３ｄは、処理ノードクラスタ２に対する処理ノード３０の追加又は削除が行われた場合に、処理ノード３０の目標負荷値Ｐ、処理ノードクラスタ２において稼働中の処理ノード３０の数Ｎ、及び、処理ノードクラスタ２に追加又は削除される処理ノード３０の数Ｍに基づいて、新たな閾値ＴＵ，ＴＬを算出し、算出された閾値ＴＵ，ＴＬをデータ記憶部５３ａに記憶させる（構成変更前の稼働中の処理ノードの数Ｎ及び追加又は削除される処理ノードの数Ｍに基づいた閾値ＴＵ，ＴＬの更新）。本実施形態において、閾値算出部５３ｄは、稼働中の処理ノード３０の数Ｎが小さいほど、上限閾値ＴＵ及び下限閾値ＴＬが小さくなるように上限閾値ＴＵ及び下限閾値ＴＬを更新する。かかる閾値ＴＵ，ＴＬの設定手法については、第一の動作例において詳細に説明する。
【００５９】
また、閾値算出部５３ｄは、負荷変動関連値Ｒに基づいて閾値Ｔ（ＴＵ,ＴＬ）を算出し、算出された閾値Ｔ（ＴＵ，ＴＬ）をデータ記憶部５３ａに記憶させる（負荷変動関連値Ｒに応じた閾値ＴＵ，ＴＬの補正）。すなわち、閾値算出部５３ｄは、第一の動作例後に処理ノード３０の追加も削除も行われない状態が続く場合に、負荷変動関連値Ｒに応じて閾値Ｔ（ＴＵ,ＴＬ）を補正する。本実施形態において、閾値算出部５３ｄは、測定された負荷変動関連値Ｒが大きいほど、補正後の上限閾値ＴＵ及び下限閾値ＴＬが補正前の上限閾値ＴＵ及び下限閾値ＴＬに対してより小さくなるように、当該上限閾値ＴＵ及び当該下限閾値ＴＬを補正する。かかる閾値Ｔの設定手法については、第二の動作例において詳細に説明する。
【００６０】
＜リソース制御部＞
リソース制御部５４は、判定部５３ｃの判定結果に基づいて、処理ノードクラスタ２に対する処理ノード３０の追加及び削除を実行する。リソース制御部５４は、機能部として、イメージファイル記憶部５４ａと、処理ノード選択部５４ｂと、処理ノード設定部５４ｃと、通知部５４ｄと、を備える。
【００６１】
≪イメージファイル記憶部≫
イメージファイル記憶部５４ａには、処理ノード３０の起動、及び、config等の設定に必要な情報がイメージファイルとして記憶されている。
【００６２】
≪処理ノード選択部≫
処理ノード選択部５４ｂは、判定部５３ｃの判定結果を取得し、取得された判定結果に基づいてリソース情報記憶部５２ａを参照し、追加又は削除される処理ノード３０を選択し、選択結果を処理ノード設定部５４ｃ又は通知部５４ｄへ出力する。処理ノード３０を追加する場合には、処理ノード選択部５４ｂは、リソース情報記憶部５２ａを参照することによって、停止中の処理ノード３０の中から追加対象の処理ノード３０を選択する。処理ノード３０を削除する場合には、処理ノード選択部５４ｂは、リソース情報記憶部５２ａを参照することによって、稼働中の処理ノード３０の中から削除対象の処理ノード３０を選択する。処理ノード選択部５４ｂは、事前に設定されたAffinityルール等のポリシーに基づいて、追加又は削除される処理ノード３０を選択することができる。
【００６３】
≪処理ノード設定部及び通知部≫
処理ノード３０を追加する場合には、処理ノード設定部５４ｃは、処理ノード選択部５４ｂの選択結果を取得し、取得された選択結果及びイメージファイル記憶部５４ａに記憶されたイメージファイルに基づいて、追加対象として選択された処理ノード３０の起動及びConfig等の設定を実行し、実行した旨を通知部５４ｄへ出力する。続いて、通知部５４ｄは、起動及び設定を実行した旨を取得し、取得された情報に基づいて、処理ノードクラスタ２に対して、追加する処理ノード３０の通知を実行し、かかる通知を受信した処理ノードクラスタ２からのレスポンスを待つ。処理ノードクラスタ２は、通知を受信すると、受信した通知に基づいて、追加対象の処理ノード３０が処理ノードクラスタ２に追加されているかを確認し、追加されている場合にレスポンスを返信するとともに、追加された処理ノード３０に対するデータ移行等を実行する。また、通知部５４ｄ又は処理ノードクラスタ２は、処理ノード３０の追加をロードバランサ２０に対して通知し、ロードバランサ２０は、かかる通知に基づいて自装置内の設定変更を実行する。かかる通知の受信、レスポンスの返信等は、処理ノードクラスタ２の代表処理ノード、又は、管理用仮想マシン６３が行う。
【００６４】
処理ノード３０を削除する場合には、通知部５４ｄは、処理ノード選択部５４ｂの選択結果を取得し、取得された選択結果に基づいて、処理ノードクラスタ２に対して、削除対象として選択された処理ノード３０の通知を実行し、かかる通知を受信した処理ノードクラスタ２からのレスポンスを待つ。処理ノードクラスタ２は、通知を受信すると、受信した通知に基づいて、処理ノード３０の削除を実行し、レスポンスを返信する。ここで、処理ノードクラスタ２は、削除対象の処理ノード３０で実行中のリクエスト処理を他の稼働中の処理ノード３０に移行してから削除対象の処理ノード３０を停止させ、その後、削除対象の処理ノード３０を停止させ、当該処理ノード３０を処理ノードクラスタ２から削除する。また、通知部５４ｄ又は処理ノードクラスタ２は、処理ノード３０の削除をロードバランサ２０に対して通知し、ロードバランサ２０は、かかる通知に基づいて自装置内の設定変更を実行する。かかる通知の受信、レスポンスの返信等は、処理ノードクラスタ２の代表処理ノード、又は、管理用仮想マシン６３が行う。
【００６５】
通知部５４ｄは、処理ノード３０の追加又は削除後の処理ノードクラスタ２からのレスポンスを受信すると、リソース情報収集部５２ｂに対して、処理ノードクラスタ２に対する処理ノード３０の追加又は削除の処理が完了した旨を通知する。
【００６６】
また、通知部５４ｄは、かかる通知を受信した後に、データ記憶部５３ａに記憶された稼働中の処理ノード３０の数Ｎを、追加の場合はＮ＋Ｍ、削除の場合はＮ−Ｍに更新する。なお、データ記憶部５３ａに記憶された稼働中の処理ノード３０の数Ｎの更新は、判定部５３ｃ又は閾値算出部５３ｄが行う構成であってもよい。また、追加又は削除される処理ノード３０の数Ｍが稼働中の処理ノード３０の数Ｎの所定割合である場合には、通知部５４ｄ、判定部５３ｃ又は閾値算出部５３ｄがＭを算出し、算出されたＭをデータ記憶部５３ａに記憶させる構成であってもよい。
【００６７】
（閾値設定の第一の動作例）
続いて、クラスタ構成判定部５３における閾値Ｔ（ＴＵ，ＴＬ）の設定手法の第一の動作例について、図１及び図３を参照して説明する。第一の動作例において、閾値ＴＵ，ＴＬは、処理ノードクラスタ２に対して追加又は削除される処理ノード３０の数Ｍに応じて変更される。本動作例において、追加又は削除される処理ノードの数Ｍは、所定値である。
【００６８】
なお、閾値ＴＵ，ＴＬの初期値は、最初に稼働される処理ノード３０の数がＮ＋Ｍ又はＮ−Ｍであるとして、後記する式を用いて算出することが可能である。これは、最初の稼働前に０回目の稼働があってＮ台の処理ノード３０が稼働していたと仮定し、そこにＭ台の処理ノード３０が追加されて最初の稼働台数（Ｎ＋Ｍ）となった、又は、Ｍ台の処理ノード３０が削除されて最初の稼働台数（Ｎ−Ｍ）となった、と考えて閾値ＴＵ，ＴＬの初期値を決定したものである。
【００６９】
まず、判定部５３ｃが、負荷情報収集部５３ｂから出力された負荷情報Ｑを取得し、取得された負荷情報Ｑ及びデータ記憶部５３ａに記憶された閾値ＴＵ，ＴＬに基づいて処理ノード３０の追加又は削除を判定する（ステップＳ１）。
Ｑ≧ＴＵであれば、判定部５３ｃは、処理ノードクラスタ２に対してＭ台の処理ノード３０を追加すると判定する（ステップＳ１でＹｅｓ）。
ＴＬ＜Ｑ＜ＴＵであれば、判定部５３ｃは、処理ノードクラスタ２に対する処理ノード３０の追加も削除も必要ないと判定する（ステップＳ１でＮｏ）。
Ｑ≦ＴＬであれば、判定部５３ｃは、処理ノードクラスタ２からＭ台の処理ノード３０を削除すると判定する（ステップＳ１でＹｅｓ）。
【００７０】
なお、負荷情報Ｑが稼働中の処理ノード３０の負荷情報の最大値及び最小値である場合には、判定部５３ｃは、負荷情報の最大値と上限閾値ＴＵとを比較するとともに、負荷情報の最小値と下限閾値ＴＬとを比較する構成であってもよい。
【００７１】
処理ノード３０の追加又は削除を実行すると判定された場合（ステップＳ１でＹｅｓ、処理ノードクラスタ２の構成変更）には、閾値算出部５３ｄが、処理ノード３０の目標負荷値Ｐ、変更前の稼働中の処理ノード３０の数Ｎ、及び、追加又は削除される処理ノード３０の数Ｍをデータ記憶部５３ａから読み出す（ステップＳ２）。
【００７２】
続いて、閾値算出部５３ｄが、読み出された処理ノード３０の目標負荷値Ｐ、処理ノードクラスタ２において稼働中の処理ノード３０の数Ｎ、及び、処理ノードクラスタ２に対して追加又は削除される処理ノード３０の数Ｍに基づいて、閾値ＴＵ，ＴＬを算出する（ステップＳ３）。
本動作例では、閾値算出部５３ｄは、下記式に基づいて新たな上限閾値ＴＵ又は下限閾値ＴＬを算出する。
ＴＵ＝{１＋α・Ｎ／（Ｎ＋Ｍ）}Ｐ
ＴＬ＝{α・Ｎ／（Ｎ＋Ｍ）}Ｐ
【００７３】
ここで、αは、処理ノードクラスタ２ごとに設定された定数である。
定数αは、０よりも大きく１以下の値であって、上限閾値ＴＵが１００％を超えないように設定される。
定数αは、閾値ＴＵ，ＴＬの変更の度合い、すなわち、処理ノードクラスタ２の構成変更の起こりやすさを決めるものであって、オペレータによる管理端末装置４０の入力部４１の操作によって設定され、データ記憶部５３ａに記憶されている。
【００７４】
続いて、閾値算出部５３ｄが、算出された閾値ＴＵ，ＴＬをデータ記憶部５３ａに記憶させる（ステップＳ４、閾値ＴＵ，ＴＬの設定）。
【００７５】
このように、Ｍ台の処理ノード３０が追加された場合には、閾値算出部５３ｄは、新たな上限閾値ＴＵを算出し、算出された上限閾値ＴＵをデータ記憶部５３ａに記憶させる（上限閾値ＴＵの設定）。また、Ｍ台の処理ノード３０が削除された場合には、閾値算出部５３ｄは、新たな下限閾値ＴＬを算出し、算出された下限閾値ＴＬをデータ記憶部５３ａに記憶させる（下限閾値ＴＬの設定）。
【００７６】
なお、閾値算出部５３ｄによる閾値Ｔの設定更新は、処理ノード３０が追加された場合には上限閾値ＴＵのみを更新する（下限閾値ＴＬは更新せず）とともに、処理ノード３０が削除された場合には下限閾値ＴＬのみを更新する（上限閾値ＴＵは更新せず）構成であってもよく、処理ノードが追加された場合にも削除された場合にも上限閾値ＴＵ及び下限閾値ＴＬの両方を更新する構成であってもよい。
【００７７】
構成変更前の稼働中の処理ノード３０の数Ｎが小さい場合には、追加又は削除される処理ノード３０の数Ｍの比率が相対的に大きいので、追加又は削除に伴うデータ移行等の処理による影響を受けやすい。したがって、管理サーバ装置５０は、構成変更前の稼働中の処理ノード３０の数Ｎが小さい場合には、上限閾値ＴＵを小さく設定することによって、負荷情報Ｑが上限閾値ＴＵ以上となりやすい状況を作り、処理ノード３０の追加を早い段階で実行することが可能となり、処理ノードクラスタ２の構成変更時に追加される処理ノード３０の数Ｍを一定又は所定割合に保った状況でも処理ノードクラスタ２の構成変更を速やかに実行することができる。また、管理サーバ装置５０は、構成変更前の稼働中の処理ノード３０の数Ｎが小さい場合には、下限閾値ＴＬを小さく設定することによって、負荷情報Ｑが下限閾値ＴＬ以下となりにくい状況を作り、処理ノード３０の削除の開始タイミングを遅らせて実行することが可能となり、処理ノードクラスタ２の構成変更時に削除される処理ノード３０の数Ｍを一定又は所定割合に保った状況でも処理ノードクラスタ２の構成変更をリソースに余裕がある状況で実行することができる。すなわち、管理サーバ装置５０は、負荷変動に応じた柔軟な処理ノードクラスタ２の構成変更を実現することができる。
【００７８】
（閾値設定の第二の動作例）
続いて、クラスタ構成判定部５３における閾値ＴＬ，ＴＵの設定手法の第二の動作例について、図１、図４及び図５を参照して説明する。第二の動作例において、閾値Ｔ（ＴＵ，ＴＬ）は、所定期間の負荷情報Ｑの差分に関連する負荷変動関連値Ｒに応じて変更される。
【００７９】
まず、負荷情報収集部５３ｂが、負荷情報Ｑを収集し、収集された負荷情報Ｑに基づいて、所定期間の負荷変動関連値Ｒを算出し（負荷変動関連値Ｒの測定、ステップＳ１１）、算出された負荷変動関連値Ｒを閾値算出部５３ｄへ出力する。ここで、算出された負荷変動関連値Ｒは、−１以上１以下の値となるように正規化されている。
【００８０】
続いて、閾値算出部５３ｄが、負荷変動関連値Ｒを取得するとともに、補正前の閾値ＴＡ（ＴＵ，ＴＬ）をデータ記憶部５３ａから読み出し、取得された負荷変動関連値Ｒ及び読み出された補正前の閾値ＴＡ（ＴＵ，ＴＬ）に基づいて、補正後の閾値ＴＢ（ＴＵ，ＴＬ）を算出する。
【００８１】
ここで、Ｒ＞ＣＭＡＸである場合（ステップＳ１２でＹｅｓ）には、閾値算出部５３ｄは、下記式に基づいて補正後の閾値ＴＢを算出する（ステップＳ１７）。
ＴＢ＝ＴＡ（１−ＣＭＡＸ）
ＣＭＡＸは、負荷変動枠の上限値であり、１未満の正の値である。負荷変動関連値ＲがＣＭＡＸよりも大きい場合には、前記した式によって閾値Ｔ（ＴＵ，ＴＬ）を補正する。
【００８２】
また、Ｒ≦ＣＭＡＸである場合（ステップＳ１２でＮｏ）には、閾値算出部５３ｄは、ＣＭＡＸをＣに代入し（ステップＳ１３）、Ｒ＞Ｃ−ｘである場合（ステップＳ１４でＹｅｓ）には、閾値算出部５３ｄは、下記式に基づいて補正後の閾値ＴＢを算出する（ステップＳ１８）。
ＴＢ＝ＴＡ（１−Ｃ＋ｘ）
ｘは、負荷変動測定幅であり、前記した負荷変動枠の上限値ＣＭＡＸと後記する負荷変動枠の下限値ＣＭＩＮとの差ＣＭＡＸ−ＣＭＩＮよりも小さい値に設定される所定値である。Ｃは、負荷変動枠であり、前記した負荷変動枠の上限値ＣＭＡＸと後記する負荷変動枠の下限値ＣＭＩＮとの間の値であって、負荷変動測定幅ｘごとに刻まれる値である。
【００８３】
また、Ｒ≦Ｃ−ｘである場合（ステップＳ１４でＮｏ）には、閾値算出部５３ｄは、Ｃ−ｘをＣに代入し（ステップＳ１５）、Ｃ≧ＣＭＩＮである場合（ステップＳ１６でＮｏ）には、本フローは、ステップＳ１４に戻る。すなわち、ステップＳ１５が繰り返されるたびに、後記する式における自然数ａが、１から順に２，３，４，…と１ずつ増えていく。
【００８４】
また、Ｃ≦ＣＭＩＮである場合（ステップＳ１６でＹｅｓ）には、閾値算出部５３ｄは、下記式に基づいて補正後の閾値ＴＢを算出する（ステップＳ１９）。
ＴＢ＝ＴＡ（１−ＣＭＩＮ＋ｘ）
ＣＭＩＮは、負荷変動枠の下限値であり、ＣＭＡＸよりも小さい値であって、−１よりも大きいマイナスの値もとり得る（−１＜ＣＭＩＮ＜ＣＭＡＸ＜１）。負荷変動関連値ＲがＣＭＩＮ以下である場合には、前記した式によって閾値Ｔ（ＴＵ，ＴＬ）を補正する。
【００８５】
図５は、負荷変動関連値Ｒの数直線であって、当該数直線における負荷変動関連値Ｒの範囲と、当該範囲における補正後の閾値Ｔと、が記載されている。すなわち、図５に示すように、Ｒ＞ＣＭＡＸである場合には、
ＴＢ＝ＴＡ（１−ＣＭＡＸ）
となる。
【００８６】
また、Ｒ≦ＣＭＩＮである場合には、
ＴＢ＝ＴＡ（１−ＣＭＩＮ＋ｘ）
となる。
【００８７】
また、ＣＭＩＮ＜Ｒ≦ＣＭＡＸである場合には、ＣＭＡＸ−ａ・ｘ＜Ｒ≦ＣＭＡＸ−（ａ−１）・ｘである場合（ａは自然数）に、
ＴＢ＝ＴＡ（１−ＣＭＡＸ＋ａ・ｘ）
となる。
これらの式が上限閾値ＴＵ及び下限閾値ＴＬにそれぞれ適用されることによって、補正後の上限閾値ＴＵ及び下限閾値ＴＬが求められる。
【００８８】
第二の動作例によると、管理サーバ装置５０は、負荷変動関連値Ｒが大きいほど、補正後の閾値ＴＢ（上限閾値ＴＵ及び下限閾値ＴＬ）が補正前の閾値ＴＡ（上限閾値ＴＵ及び下限閾値ＴＬ）に対してより小さくなるように、当該上限閾値ＴＵ及び当該下限閾値ＴＬを補正する。管理サーバ装置５０は、負荷変動関連値Ｒが大きい場合には、処理ノードクラスタ２の負荷が増加傾向にあって処理ノード３０の追加を必要とする状況であるので、特に上限閾値ＴＵを小さく設定することによって、負荷情報Ｑが上限閾値ＴＵ以上となりやすい状況を作り、処理ノード３０の追加を早い段階で実行することが可能となり、処理ノードクラスタ２の構成変更時に追加される処理ノード３０の数Ｍを一定又は所定割合に保った状況でも処理ノードクラスタ２の構成変更を速やかに実行することができる。また、管理サーバ装置５０は、負荷変動関連値Ｒが小さい場合には、処理ノードクラスタ２の負荷が減少傾向にあって処理ノード３０の削除を行いやすい状況であるので、特に下限閾値ＴＬを大きく設定することによって、負荷情報Ｑが下限閾値ＴＬ以下となりやすい状況を作り、処理ノード３０の削除を早い段階で実行することが可能となり、処理ノードクラスタ２の構成変更時に削除される処理ノード３０の数Ｍを一定又は所定割合に保った状況でも処理ノードクラスタ２の構成変更を速やかに実行することができる。すなわち、管理サーバ装置５０は、負荷変動に応じた柔軟な処理ノードクラスタ２の構成変更を実現することができる。
【００８９】
（スケールアウトの動作例）
続いて、リソース制御部５４におけるスケールアウトの動作例について、図１及び図６を参照して説明する。
【００９０】
本フローにおいて、負荷情報Ｑが上限閾値ＴＵ以上である状態がどれだけ続いているかを示す値であるカウンタ値の初期値は０である。まず、処理ノード選択部５４ｂが、カウンタ値に１を足す（カウンタ更新、ステップＳ２１）。カウンタ値がＫ以下である場合（ステップＳ２２でＮｏ）には、処理ノード選択部５４ｂが、負荷情報収集部５３ｂから出力された負荷情報Ｑとデータ記憶部５３ａから読み出された上限閾値ＴＵとを比較する（ステップＳ２３）。負荷情報Ｑが上限閾値ＴＵ未満である場合（ステップＳ２３でＮｏ）には、処理ノード選択部５４ｂが、カウンタ値をリセットして０に戻す（ステップＳ２４）。負荷情報Ｑが上限閾値ＴＵ以上である場合（ステップＳ２３でＹｅｓ）、及び、ステップＳ２４の実行後には、処理ノード選択部５４ｂが、所定時間待機し（ステップＳ２５）、本フローは、ステップＳ２１に戻る。
【００９１】
一方、カウンタ値がＫよりも大きい場合（ステップＳ２２でＹｅｓ）には、処理ノード選択部５４ｂが、前記した手法によって追加する処理ノード３０を選択する（ステップＳ２６）。続いて、処理ノード設定部５４ｃが、追加する処理ノード３０を起動させ（ステップＳ２７）、さらに、追加する処理ノード３０の設定を実行する（ステップＳ２８）。続いて、通知部５４ｄが、処理ノードクラスタ２及びロードバランサ２０に対して、追加する処理ノード３０を通知する（ステップＳ２９）。
【００９２】
かかる動作例によると、負荷情報Ｑが上限閾値ＴＵ以上である状態が所定時間×カウンタ閾値Ｋを超える時間だけ継続した場合にのみ、処理ノードクラスタ２に対して処理ノード３０を追加するので、短時間だけ負荷情報Ｑが上限閾値ＴＵ以上となった場合等に処理ノード３０を追加することを抑制することができる。
【００９３】
（スケールインの動作例）
続いて、リソース制御部５４におけるスケールインの動作例について、図１及び図７を参照して説明する。
【００９４】
本フローにおいて、負荷情報Ｑが下限閾値ＴＬ以下である状態がどれだけ続いているかを示す値であるカウンタ値の初期値は０である。まず、処理ノード選択部５４ｂが、カウンタ値に１を足す（カウンタ更新、ステップＳ３１）。カウンタ値がＫ以下である場合（ステップＳ３２でＮｏ）には、処理ノード選択部５４ｂが、負荷情報収集部５３ｂから出力された負荷情報Ｑとデータ記憶部５３ａから読み出された下限閾値ＴＬとを比較する（ステップＳ３３）。負荷情報Ｑが下限閾値ＴＬよりも大きい場合（ステップＳ３３でＮｏ）には、処理ノード選択部５４ｂが、カウンタ値をリセットして０に戻す（ステップＳ３４）。負荷情報Ｑが下限閾値ＴＬ以下である場合（ステップＳ３３でＹｅｓ）、及び、ステップＳ３４の実行後には、処理ノード選択部５４ｂが、所定時間待機し（ステップＳ３５）、本フローは、ステップＳ３１に戻る。
【００９５】
一方、カウンタ値がＫよりも大きい場合（ステップＳ３２でＹｅｓ）には、処理ノード選択部５４ｂが、前記した手法によって削除する処理ノード３０を選択する（ステップＳ３６）。続いて、通知部５４ｄが、処理ノードクラスタ２及びロードバランサ２０に対して、削除する処理ノード３０を通知する（ステップＳ３７）。続いて、処理ノード設定部５４ｃが、前記通知に対するレスポンスを処理ノードクラスタ２から受信すると、削除する処理ノード３０を停止させる（ステップＳ３８）。
【００９６】
かかる動作例によると、負荷情報Ｑが下限閾値ＴＬ以下である状態が所定時間×カウンタ閾値Ｋを超える時間だけ継続した場合にのみ、処理ノードクラスタ２に対して処理ノード３０を削除するので、短時間だけ負荷情報Ｑが下限閾値ＴＬ以下となった場合等に処理ノード３０を削除することを抑制することができる。
【００９７】
本発明の実施形態に係る処理ノードクラスタ管理システム１における管理サーバ装置５０は、処理ノードクラスタ２の構成変更が行われる場合に、構成変更前の処理ノード３０の数Ｎ及び所定値又は所定割合である追加又は削除される処理ノード３０の数Ｍに基づいて閾値を更新するので、処理ノードクラスタ２に対する処理ノード３０の追加又は削除に伴う処理負荷を一定化した状態、すなわち、追加又は削除される処理ノード３０の数Ｍが所定値である場合にはかかる所定値に応じた一定の処理負荷量とした状態、また、追加又は削除される処理ノードの数３０が所定割合である場合には、かかる所定割合に応じて一定割合で増減する処理負荷量とした状態において、負荷変動に応じた柔軟な処理ノードクラスタ２の構成変更を実現することができる。
【００９８】
以上、本発明の実施形態について説明したが、本発明は前記実施形態に限定されず、本発明の要旨を逸脱しない範囲で適宜変更可能である。例えば、処理ノード３０の負荷情報Ｑは、ＣＰＵ使用率に限定されず、メモリ使用率等であってもよい。
【００９９】
また、第一の動作例及び第二の動作例における閾値の算出手法は、前記したものに限定されない。
例えば、第一の動作例において、処理ノード３０を削除する場合には、更新後の閾値ＴＵ，ＴＬを
ＴＵ＝{１＋α・（Ｎ−Ｍ）／Ｎ}Ｐ
ＴＬ＝{α・（Ｎ−Ｍ）／Ｎ}Ｐ
とする構成であってもよく、処理ノード３０を追加する場合には、
ＴＵ＝{１＋α・Ｎ／（Ｎ＋Ｍ）}Ｐ
とする（下限閾値ＴＬは更新せず）とともに、処理ノード３０を削除する場合には、
ＴＬ＝{α・（Ｎ−Ｍ）／Ｎ}Ｐ
とする（上限閾値ＴＵは更新せず）構成であってもよい。
【０１００】
また、第一の動作例において、追加又は削除される処理ノード３０の数Ｍが所定割合である場合における閾値ＴＵ，ＴＬの更新式は、稼働中の処理ノード３０の数Ｎが小さいほど、上限閾値ＴＵ及び下限閾値ＴＬが小さくなるように当該上限閾値ＴＵ及び当該下限閾値ＴＬを更新可能な式に適宜設定することが可能である。
【０１０１】
また、本発明は、コンピュータを前記した管理サーバ装置５０として機能させる管理プログラムとしても具現化可能である。
【符号の説明】
【０１０２】
１      処理ノードクラスタ管理システム
２      処理ノードクラスタ
１０    クライアント装置
２０    ロードバランサ
３０    処理ノード
４０    管理端末装置
５０    管理サーバ装置
５３ａ  データ記憶部
５３ｂ  負荷情報収集部
５３ｃ  判定部
５３ｄ  閾値算出部
５４    リソース制御部
【図１】
0006387330.tif 000002
【図２】
0006387330.tif 000003
【図３】
0006387330.tif 000004
【図４】
0006387330.tif 000005
【図５】
0006387330.tif 000006
【図６】
0006387330.tif 000007
【図７】
0006387330.tif 000008