(57)【要約】【課題】システムを安定稼働させる情報処理装置、情報処理システム及び情報処理方法を提供することを目的とする。【解決手段】仮想マシン管理部１３は、負荷分散が行われる複数のＷｅｂサーバ３０が属するオートスケーリンググループ３にＷｅｂサーバ３０を追加する。判定部１２は、仮想マシン管理部１３によるＷｅｂサーバ３０の追加が実行中でない場合、Ｗｅｂサーバ３０の負荷情報を基にオートスケーリンググループ３へのＷｅｂサーバ３０の追加を仮想マシン管理部１３に実行させ、仮想マシン管理部１３によるＷｅｂサーバ３０の追加が実行中の場合、オートスケーリンググループ３の負荷情報を基にオートスケーリンググループ３への新たなＷｅｂサーバ３０の追加を仮想マシン管理部１３に実行させる。【選択図】図３
2019117605.tif 000002
【特許請求の範囲】
【請求項１】
負荷分散が行われる複数の第１情報処理装置が属するグループに第２情報処理装置を追加する管理部と、
前記管理部による前記第２情報処理装置の追加が実行中でない場合、前記第１情報処理装置の負荷情報を基に前記グループへの前記第２情報処理装置の追加を前記管理部に実行させ、前記管理部による前記第２情報処理装置の追加が実行中の場合、前記グループの負荷情報を基に前記グループへの新たな前記第２情報処理装置の追加を前記管理部に実行させる判定部と
を備えたことを特徴とする情報処理装置。
【請求項２】
前記判定部は、前記管理部による前記第２情報処理装置の追加が実行中でない場合、前記第１情報処理装置のＣＰＵ使用率が使用率閾値を超えると、前記第２情報処理装置の追加を前記管理部に実行させ、前記管理部による前記第２情報処理装置の追加が実行中の場合、前記グループの通信量が通信量閾値をこえると、新たな前記第２情報処理装置の追加を前記管理部に実行させることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判定部は、前記管理部による前記第２情報処理装置の追加が実行中の場合に、前記グループへ新たな前記第２情報処理装置を追加させることを決定した場合、前記グループの負荷情報を用いて前記第２情報処理装置の追加を前記管理部に実行させるか否かを判定する際の判定基準を変更することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定部は、定期的に前記グループへの前記第２情報処理装置の追加を前記管理部に実行させるか否かを判定することを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
負荷分散が行われるグループに属する複数の第１情報処理装置及び管理装置を有する情報処理システムであって、
前記管理装置は、
前記グループに第２情報処理装置を追加する管理部と、
前記管理部による前記第２情報処理装置の追加が実行中でない場合、前記第１情報処理装置の負荷情報を基に前記グループへの前記第２情報処理装置の追加を前記管理部に実行させ、前記管理部による前記第２情報処理装置の追加が実行中の場合、前記グループの負荷情報を基に前記グループへの新たな前記第２情報処理装置の追加を前記管理部に実行させる判定部と
を備えたことを特徴とする情報処理システム。
【請求項６】
負荷分散が行われる複数の第１情報処理装置が属するグループへの第２情報処理装置の追加が実行中でない場合、前記第１情報処理装置の負荷情報を基に前記グループへの前記第２情報処理装置の追加を実行するか否かを判定し、
前記グループへの前記第２情報処理装置の追加を決定した場合、前記グループに前記第２情報処理装置を追加し、
前記グループへの前記第２情報処理装置の追加が行われている場合、前記グループの負荷情報を基に前記グループへさらに前記第２情報処理装置の追加を実行するか否かを判定し、
前記グループへの前記第２情報処理装置の追加を決定した場合、前記グループに前記第２情報処理装置をさらに追加する、
ことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム及び情報処理方法に関する。
【背景技術】
【０００２】
利用者の端末からの要求に応じてサービスを提供するクラウドシステムには、利用者の端末からのアクセス数の増減などによるサーバの負荷の変化に応じて、使用するサーバの台数を増やしたり減らしたりするオートスケールの機能を備えるものがある。オートスケールにおいて、サーバの台数を減らす処理はスケールインと呼ばれ、サーバの台数を増やす処理はスケールアウトと呼ばれる。オートスケールにおけるサーバは、仮想マシンであることが多い。
【０００３】
例えば、現存する仮想マシンが処理しきれないほどの量のアクセスを受けた場合、スケールアウトを行い、サーバの台数を増やすことで、処理能力を高めることで遅延を抑えてアクセスを処理することができる。その後、アクセスが減少した場合、スケールインを行い、サーバを減らすことで、リソースの最適化や無駄なコストを削減することができる。
【０００４】
スケールアウトを実行する場合、ＣＰＵ（Central  Processing  Unit）使用率などの個々のサーバの直接的な負荷に応じて実施判定が行われる。さらに、スケールアウトにおいては仮想マシンの生成や生成した仮想マシンに対する各種設定の追加といった処理が行われるため、サーバを追加するのにある程度の時間が掛かる。そのため、スケールアウトを開始したからと言って個々のサーバの直接的な負荷が突然低下するわけではない。このようなことから、スケールアウトを開始した後に、それまでと同様に直接的な負荷を監視してスケールアウトの実施判定を継続した場合、過剰なスケールアウトが為されるおそれがある。
【０００５】
そこで、過剰なスケールアウトを防ぐために、スケールアウト中の更なるオートスケールの実施を一定期間受け付けないクールダウンが行われる。このクールダウンを行う一定期間には、オートスケールが完了するのに十分な時間が設定される。
【０００６】
このようなオートスケールの技術として、サーバの負荷情報、クライアントからの処理要求数及び過去の最大処理要求数の関係から、使用するサーバ台数を計算してオートスケールを行う従来技術がある。また、全ての負荷分散対象計算機の負荷量からオートスケールを行う計算機の台数を決定する従来技術がある。さらに、トランザクション数と各サーバのＣＰＵ使用率から使用する最小サーバ台数を求める従来技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−１３８７０号公報
【特許文献２】特開２００５−１１３３１号公報
【特許文献３】特開２０１６−６６３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、スケールアウト中に負荷が増加傾向であれば、さらにサーバを追加することが好ましい場合がある。例えば、ＣＰＵ使用率が閾値を超えてサーバを１台分スケールアウトしたが、スケールアウト中にリクエスト数が増加傾向にあり、１台のサーバの追加では足りないといったケースが考えられる。このような場合、従来の技術ではクールダウン期間はスケールアウトの実施判定が行われないため追加依頼が受け付けられず、増え続ける負荷に即座に対応することが困難となる。そのため、スケールアウト完了後に負荷を安定させる適切な台数を確保することが困難である。
【０００９】
また、サーバの負荷情報、クライアントからの処理要求数及び過去の最大処理要求数の関係を基にオートスケールを行う従来技術を用いても、過剰なスケールアウトを抑制しつつ増え続ける負荷に即座に対応してシステムを安定稼働させることは困難である。また、全ての負荷分散対象計算機の負荷量を基にオートスケールを行う従来技術やトランザクション数と各サーバのＣＰＵ使用率を基にオートスケールを行う従来技術を用いても、スケールアウト完了後に負荷を安定させる適切な台数を確保することが困難である。
【００１０】
開示の技術は、上記に鑑みてなされたものであって、システムを安定稼働させる情報処理装置、情報処理システム及び情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本願の開示する情報処理装置、情報処理システム及び情報処理方法の一つの態様において、管理部は、負荷分散が行われる複数の第１情報処理装置が属するグループに第２情報処理装置を追加する。判定部は、前記管理部による前記第２情報処理装置の追加が実行中でない場合、前記第１情報処理装置の負荷情報を基に前記グループへの前記第２情報処理装置の追加を前記管理部に実行させ、前記管理部による前記第２情報処理装置の追加が実行中の場合、前記グループの負荷情報を基に前記グループへの新たな前記第２情報処理装置の追加を前記管理部に実行させる。
【発明の効果】
【００１２】
１つの側面では、本発明は、システムを安定稼働させることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施例１に係る情報処理システムの構成図である。
【図２】図２は、監視サーバのブロック図である。
【図３】図３は、スケールアウトの概略を説明するための図である。
【図４】図４は、監視情報取得処理のフローチャートである。
【図５】図５は、スケールアウト処理のフローチャートである。
【図６】図６は、監視サーバのハードウェア構成図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示する情報処理装置、情報処理システム及び情報処理方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム及び情報処理方法が限定されるものではない。
【実施例１】
【００１５】
図１は、実施例１に係る情報処理システムの構成図である。本実施例に係る情報処理システム１００は、監視サーバ１、Ｌ（Layer）２スイッチ２、オートスケーリンググループ３、データベース４及びルータ５を有する。
【００１６】
監視サーバ１、ルータ５、データベース４は、Ｌ２スイッチ２に接続される。また、オートスケーリンググループ３は、物理的には１つ又は複数の物理サーバ（不図示）に含まれる。そして、オートスケーリンググループ３は、物理サーバ上に生成された仮想マシンであるＷｅｂサーバ３０を複数有する。実際にはオートスケーリンググループ３に属する物理サーバがＬ２スイッチ２と接続されているが、図１では、説明の都合上、各Ｗｅｂサーバ３０がＬ２スイッチ２に接続されるように記載した。さらに、ルータ５は、インターネットなどの外部ネットワーク６に接続される。
【００１７】
Ｗｅｂサーバ３０は、Ｌ２スイッチ２及びルータ５を介して、外部ネットワーク６に接続する。そして、Ｗｅｂサーバ３０は、外部ネットワーク６を経由して受信した外部のクライアントからの要求に応じて、指定された情報を要求元のクライアントへ提供する。オートスケーリンググループ３に属する各Ｗｅｂサーバ３０は、それぞれＬ２スイッチ２によりロードバランスが行われる。
【００１８】
Ｌ２スイッチ２は、オートスケーリンググループ３に属するＷｅｂサーバ３０に対してロードバランスを実行するロードバランスサーバの機能を有する。具体的には、Ｌ２スイッチ２は、外部ネットワーク６を介して受信したクライアントからの要求を受信し、負荷が均等になるように選択したＷｅｂサーバ３０へ要求を送信する。例えば、Ｌ２スイッチ２は、ラウンドロビンなどでＷｅｂサーバ３０を選択する。その後、Ｌ２スイッチ２は、要求への応答をＷｅｂサーバ３０から受信して、受信した応答を要求の送信元のクライアントへ外部ネットワーク６を介して送信する。
【００１９】
また、Ｌ２スイッチ２は、オートスケーリンググループ３に対する単位時間あたりのリクエスト数を取得する。そして、Ｌ２スイッチ２は、取得したオートスケーリンググループ３の単位時間あたりのリクエスト数をデータベース４に保存する。このオートスケーリンググループ３に対する単位時間あたりのリクエスト数が、「グループの負荷情報」の一例にあたる。
【００２０】
また、Ｌ２スイッチ２は、オートスケーリンググループ３に属する各Ｗｅｂサーバ３０のＣＰＵ使用率をそれぞれのＷｅｂサーバ３０から取得する。そして、Ｌ２スイッチ２は、取得したオートスケーリンググループ３に属する各Ｗｅｂサーバ３０のＣＰＵ使用率をデータベース４に保存する。このＣＰＵ使用率が、「第１情報処理装置の負荷情報」の一例にあたる。
【００２１】
監視サーバ１は、Ｌ２スイッチ２を介して各Ｗｅｂサーバ３０及びデータベース４と通信する。監視サーバ１は、オートスケーリンググループ３に対する仮想マシンであるＷｅｂサーバ３０の構築及びオートスケールを行う。
【００２２】
図２は、監視サーバのブロック図である。監視サーバ１は、情報取得部１１、判定部１２及び仮想マシン管理部１３を有する。この監視サーバ１が、「管理装置」の一例にあたる。
【００２３】
情報取得部１１は、オートスケーリンググループ３に属する各Ｗｅｂサーバ３０のＣＰＵ使用率及びオートスケーリンググループ３の単位時間当たりのＷｅｂサーバ３０のリクエスト数を監視情報とする。情報取得部１１は、オートスケーリンググループ３に属する各Ｗｅｂサーバ３０に対してポーリングを行ってＣＰＵ使用率を取得する。そして、情報取得部１１は、取得した各Ｗｅｂサーバ３０のＣＰＵ使用率をデータベース４に保存する。また、情報取得部１１は、Ｌ２スイッチ２に対してポーリングを行い、オートスケーリンググループ３の単位時間当たりのＷｅｂサーバ３０のリクエスト数を取得する。そして、情報取得部１１は、取得したオートスケーリンググループ３の単位時間当たりのＷｅｂサーバ３０のリクエスト数をデータベース４に保存する。
【００２４】
また、情報取得部１１は、収集する判定情報の種類の入力を判定部１２から受ける。判定情報の種類には、各Ｗｅｂサーバ３０のＣＰＵ使用率及びオートスケーリンググループ３の単位時間あたりのリクエスト数が存在する。そして、情報取得部１１は、指定された種類の判定情報をデータベース４からＬ２スイッチ２を介して定期的に取得する。例えば、情報取得部１１は、１分間隔で判定情報の収集を行う。
【００２５】
具体的には、情報取得部１１は、Ｗｅｂサーバ３０のＣＰＵ使用率を収集する場合、各Ｗｅｂサーバ３０についてデータベース４に対して順次ポーリングを行い、各Ｗｅｂサーバ３０のＣＰＵ使用率の情報をそれぞれ取得する。これが定期的に行われる１回の判定情報の収集にあたる。また、オートスケーリンググループ３の単位時間あたりのリクエスト数を収集する場合、情報取得部１１は、オートスケーリンググループ３についてデータベース４に対してポーリングを行い、オートスケーリンググループ３の単位時間あたりのリクエスト数を収集する。
【００２６】
ここで、本実施例では、情報取得部１１は、予めスケールアウトの実行判定の判定情報となりうる監視情報を予め取得しデータベース４に格納し、判定情報の収集タイミングでそのデータベースから実際に使用する判定情報を取得する。ただし、情報取得部１１は、これ以外の手順で判定情報の取得を行ってもよい。例えば、情報取得部１１は、判定情報の収集タイミングで、直接Ｗｅｂサーバ３０又はＬ２スイッチ２からＣＰＵ使用率又はオートスケーリンググループ３の単位時間あたりのリクエスト数を取得してもよい。
【００２７】
また、ここでは、オートスケーリンググループ３が１つの場合で説明したが、オートスケーリンググループ３は複数存在してもよい。その場合、情報取得部１１は、各オートスケーリンググループ３について判定情報の種類の入力を判定部１２から受けて、各オートスケーリンググループ３に対して指定された判定情報の収集を行う。
【００２８】
そして、情報取得部１１は、判定部１２から指定された判定情報の収集の完了後、収集した判定情報を判定部１２へ出力する。
【００２９】
判定部１２は、スケールアウトを仮想マシン管理部１３に指示していない場合、スケールアウトの判定に用いるメトリックとしてＷｅｂサーバ３０のＣＰＵ使用率を使用するする。そして、判定部１２は、判定情報の種類としてＷｅｂサーバ３０のＣＰＵ使用率を情報取得部１１に通知する。
【００３０】
その後、判定部１２は、オートスケーリンググループ３に属するＷｅｂサーバ３０のＣＰＵ使用率の入力を情報取得部１１から受ける。判定部１２は、スケールアウトを実行するか否かを判定するためのＣＰＵ使用率閾値を予め有する。例えば、判定部１２は、ＣＰＵ使用率が８０％をＣＰＵ使用率閾値として記憶する。さらに、判定部１２は、いずれかのＷｅｂサーバ３０のＣＰＵ使用率がＣＰＵ使用率閾値以上の場合にスケールアウトを実行するという内容をスケールアウトの実行判定の条件として有する。スケールアウトの実行中でない状態でのオートスケーリンググループ３に属するＷｅｂサーバ３０が、「第１情報処理装置」の一例にあたる。
【００３１】
判定部１２は、オートスケーリンググループ３に属するＷｅｂサーバ３０の中にＣＰＵ使用率がＣＰＵ使用率閾値以上であるＷｅｂサーバ３０が存在するか否かを判定する。ＣＰＵ使用率がＣＰＵ使用率閾値以上であるＷｅｂサーバ３０が存在しない場合、判定部１２は、オートスケーリンググループ３に対するスケールアウトを行わずに次の情報取得部１１による情報収集タイミングまでオートスケールの実行判定を待機する。
【００３２】
これに対して、ＣＰＵ使用率がＣＰＵ使用率閾値以上であるＷｅｂサーバ３０が存在する場合、判定部１２は、Ｗｅｂサーバ３０の追加を決定する。ここで、判定部１２は、次のタイミングでのスケールアウトの実行判定の条件を変更する。具体的には、判定部１２は、スケールアウトの実行判定に用いるメトリックをオートスケーリンググループ３の単位時間あたりのリクエスト数に変更する。ここで、判定部１２は、スケールアウトの判定に用いるメトリックを変更する場合、次の情報取得部１１による判定情報の収集タイミングまでにメトリックの変更を行う。そして、判定部１２は、判定情報の種類としてオートスケーリンググループ３の単位時間あたりのリクエスト数を情報取得部１１に通知する。
【００３３】
ここで、本実施例では、オートスケールを実行していない場合にオートスケールの実行判定に用いる情報としてＷｅｂサーバ３０のＣＰＵ使用率を用いたが、各Ｗｅｂサーバ３０の直接的な負荷を表す情報であれば他の情報を用いてもよい。例えば、オートスケールを実行していない場合にオートスケールの実行判定に用いる情報として、メモリ使用率を用いることもできる。
【００３４】
さらに、判定部１２は、以下の数式（１）及び（２）を用いてオートスケーリンググループ３の単位時間あたりのリクエスト数を使用する場合のスケールアウトを実行判定に用いる閾値であるリクエスト数閾値を求める。ここで、Ｎは、オートスケーリンググループ３に属するＷｅｂサーバ３０の台数である。
【００３５】
［数１］
（オートスケーリンググループ３の単位時間あたりのリクエスト数）／Ｎ＝Ｗｅｂサーバ３０の１台当たりの単位時間あたりのリクエスト数  ・・・（１）
【００３６】
［数２］
（Ｗｅｂサーバ３０の１台当たりの単位時間あたりのリクエスト数）×（Ｎ＋１）＝リクエスト閾値  ・・・（２）
【００３７】
すなわち、判定部１２は、現在の単位時間あたりのリクエスト数を現在のＷｅｂサーバ３０の台数で除算して、現在のＷｅｂサーバ３０の１台あたりのリクエスト数を算出する。そして、判定部１２は、現在のＷｅｂサーバ３０の台数に１を加算した値に１台あたりのリクエスト数を乗算して、リクエスト数閾値を算出する。
【００３８】
そして、判定部１２は、スケールアウトの実行判定の条件を、オートスケーリンググループ３の単位時間あたりのリクエスト数がリクエスト数閾値を超えた場合にスケールアウトを実行するという内容に変更する。すなわち、判定部１２は、「現在のオートスケーリンググループ３の単位時間あたりのリクエスト数＞リクエスト閾値」となる場合にスケールアウトを実行する。
【００３９】
その後、判定部１２は、Ｗｅｂサーバ３０の追加を仮想マシン管理部１３に指示する。そして、判定部１２は、次の情報取得部１１による情報収集タイミングまでオートスケールの実行判定を待機する。
【００４０】
Ｗｅｂサーバ３０の追加を仮想マシン管理部１３に指示した場合、判定部１２は、以下の処理を行う。仮想マシン管理部１３からＷｅｂサーバ３０の追加完了の通知が未受信の状態で、情報取得部１１による情報収集タイミングが到来すると、判定部１２は、オートスケーリンググループ３の単位時間あたりのリクエスト数の入力を情報取得部１１から受ける。そして、判定部１２は、単位時間あたりのリクエスト数とリクエスト数閾値とを比較する。単位時間あたりのリクエスト数がリクエスト数閾値未満の場合、判定部１２は、オートスケーリンググループ３に対するＷｅｂサーバ３０のさらなる追加を行わずに次の情報取得部１１による情報収集タイミングまでオートスケールの実行判定を待機する。
【００４１】
単位時間あたりのリクエスト数がリクエスト数閾値以下の場合、判定部１２は、Ｗｅｂサーバ３０をさらに追加すること、すなわちオートスケールをさらに実行することを決定する。ここで、判定部１２は、次のタイミングでのスケールアウトの実行判定の条件を変更する。具体的には、判定部１２は、スケールアウトの実行判定に用いるメトリックはオートスケーリンググループ３の単位時間あたりのリクエスト数のまま維持する。
【００４２】
さらに、判定部１２は、数式（１）及び（２）を用いて、新たなリクエスト数閾値を算出する。具体的には、判定部１２は、現在の単位時間あたりのリクエスト数を現在のＷｅｂサーバ３０の台数で除算して、現在のＷｅｂサーバ３０の１台あたりのリクエスト数を算出する。そして、判定部１２は、現在のＷｅｂサーバ３０の台数に１を加算した値に１台あたりのリクエスト数を乗算して、次のリクエスト数閾値を算出する。その後、判定部１２は、スケールアウトの実行判定の条件を、オートスケーリンググループ３の単位時間あたりのリクエスト数が次のリクエスト数閾値を超えた場合にスケールアウトを実行するという内容に変更する。
【００４３】
その後、判定部１２は、Ｗｅｂサーバ３０の追加を仮想マシン管理部１３に指示する。そして、判定部１２は、次の情報取得部１１による情報収集タイミングまでオートスケールの実行判定を待機する。
【００４４】
その後、判定部１２は、仮想マシン管理部１３からＷｅｂサーバ３０の追加完了の通知が未受信の状態で、次の情報取得部１１による情報収集タイミングが到来する場合、オートスケーリンググループ３の単位時間あたりのリクエスト数を用いたスケールアウトの実行判定を繰り返す。そして、判定部１２は、Ｗｅｂサーバ３０の追加を決定する都度、スケールアウトの実行判定の条件の変更を行う。
【００４５】
ここで、本実施例では、スケールアウトによるＷｅｂサーバ３０の追加中のさらなるＷｅｂサーバ３０の追加の実行判定に用いる情報として、オートスケーリンググループ３の単位時間当たりのリクエスト数を用いた。ただし、この情報としては、ＣＰＵやメモリといった各Ｗｅｂサーバ３０における資源に依存しない情報であり、且つ、オートスケーリンググループ３の負荷を表す情報であれば他の情報を用いてもよい。特に、この情報は、オートスケーリンググループのボトルネックとなる部分に関する情報であると好ましい。例えば、ネットワークパケット数、ディスクＩＯ（Input  Output）又はＷｅｂサーバのコネクション数などでもよい。また、Ｗｅｂサーバに接続されるアプリケーションサーバやデータベースサーバといった他の処理を行うサーバの状態を考慮してもよい。例えば、他の処理を行うサーバの負荷率が低い場合にサーバの追加を行うと判定する方法などでもよい。
【００４６】
一方、スケールアウトを仮想マシン管理部１３に指示した後に、仮想マシン管理部１３からＷｅｂサーバ３０の追加完了の通知を受けた場合、判定部１２は、スケールアウトの判定に用いるメトリックを初期化してスケールアウトの実行判定の条件を変更する。すなわち、判定部１２は、スケールアウトの判定に用いるメトリックをＷｅｂサーバ３０のＣＰＵ使用率に変更する。この場合も、判定部１２は、次の情報取得部１１による判定情報の収集タイミングまでにメトリックの変更を行う。そして、判定部１２は、判定情報の種類としてＷｅｂサーバ３０のＣＰＵ使用率を情報取得部１１に通知する。さらに、判定部１２は、スケールアウトの実行判定の条件を、いずれかのＷｅｂサーバ３０のＣＰＵ使用率がＣＰＵ使用率閾値以上の場合にスケールアウトを実行するという内容に変更する。
【００４７】
判定部１２は、以上に説明したスケールアウトの実行判定を情報取得部１１による情報収集タイミング毎に実行する。スケールアウトによってオートスケーリンググループ３に新たに追加されるＷｅｂサーバ３０が、「第２情報処理装置」の一例にあたる。
【００４８】
また、判定部１２は、情報取得部１１による情報収集タイミングで、スケールインの判定も行う。判定部１２は、スケールインを実行するか否かを判定するためのスケールイン閾値を予め有する。このスケールイン閾値は、例えば、Ｗｅｂサーバ３０のＣＰＵ使用率である。そして、判定部１２は、いずれかのＷｅｂサーバ３０のＣＰＵ使用率がスケールイン閾値以下か否かを判定する。ＣＰＵ使用率がスケールイン閾値以下であるＷｅｂサーバ３０が存在しなければ、判定部１２は、スケールインの実行を行わず次の情報取得部１１による情報収集タイミングまで待機する。
【００４９】
これに対して、ＣＰＵ使用率がスケールイン閾値以下であるＷｅｂサーバ３０が存在する場合、判定部１２は、Ｗｅｂサーバ３０の削減を仮想マシン管理部１３に指示する。その後、判定部１２は、次の情報取得部１１による情報収集タイミングまで待機する。スケールインの場合、単にロードバランスのグループから対象となるＷｅｂサーバ３０を外すことは瞬時に行われるため、その間にオートスケーリンググループ３の状態が変化してさらにＷｅｂサーバ３０の削減が要求される可能性は低い。そのため、スケールインの場合、判定部１２は、スケールアウトの場合と異なり、スケールインの実行中にさらにＷｅｂサーバ３０を削除することは行わず、次の情報取得部１１による情報収集タイミングを待つ。
【００５０】
仮想マシン管理部１３は、管理者から指定された数のＷｅｂサーバ３０を生成してオートスケーリンググループ３とする。そして、仮想マシン管理部１３は、オートスケーリンググループ３のロードバランシングをＬ２スイッチ２に指示する。これにより、仮想マシン管理部１３は、ロードバランスを行うＷｅｂサーバ３０のグループを生成する。
【００５１】
その後、スケールアウトの実行が決定された場合、仮想マシン管理部１３は、Ｗｅｂサーバ３０の追加の指示を判定部１２から受ける。そして、仮想マシン管理部１３は、オートスケーリンググループ３に新たにＷｅｂサーバ３０を生成する。その後、仮想マシン管理部１３は、他のオートスケーリンググループ３に属するＷｅｂサーバ３０とロードバランスを行えるように新たに生成したＷｅｂサーバ３０の設定を行う。この仮想マシン管理部１３によるＷｅｂサーバ３０の生成及び設定が完了することで、Ｗｅｂサーバ３０の追加が完了する。Ｗｅｂサーバ３０は、オートスケーリンググループ３に追加されることで、Ｌ２スイッチ２によるロードバランスのグループに自動的に組み込まれる。
【００５２】
仮想マシン管理部１３は、実行中のＷｅｂサーバ３０の追加が完了する前に、Ｗｅｂサーバ３０の追加の指示を判定部１２から受けた場合、オートスケーリンググループ３にさらに新たなＷｅｂサーバ３０を生成する。これに対して、仮想マシン管理部１３は、実行中の全てのＷｅｂサーバ３０の追加が完了した場合、判定部１２にＷｅｂサーバ３０の追加完了を通知する。
【００５３】
また、スケールインの実行が決定された場合、仮想マシン管理部１３は、Ｗｅｂサーバ３０の削減の指示を判定部１２から受ける。そして、仮想マシン管理部１３は、オートスケーリンググループ３からＷｅｂサーバ３０を削除する。Ｗｅｂサーバ３０がオートスケーリンググループ３から削除されることで、Ｌ２スイッチ２によるロードバランスのグループから自動的に外れる。この仮想マシン管理部１３が、「管理部」の一例にあたる。
【００５４】
次に、図３を参照して、監視サーバ１によるスケールアウトの全体的な概略をさらに説明する。図３は、スケールアウトの概略を説明するための図である。図３において一点鎖線で囲われた情報はスケールアウトの実行判定で用いるメトリックである。また、破線で表されるＷｅｂサーバ３１及び３２は、追加されるＷｅｂサーバ３０を表す。
【００５５】
判定部１２は、Ｗｅｂサーバ３０の追加を指示していない場合、スケールアウトの実行判定で用いるメトリックとしてサーバ負荷であるＷｅｂサーバ３０のＣＰＵ使用率を用いる。判定部１２は、サーバ負荷であるＷｅｂサーバ３０のＣＰＵ使用率を取得する（ステップＳ１）。ここで、図３では、分かり易いようにＣＰＵ使用率を直接Ｗｅｂサーバ３０から取得するように図示したが、実際は、判定部１２は、Ｗｅｂサーバ３０のＣＰＵ使用率をデータベース４から取得する。
【００５６】
そして、判定部１２は、ＣＰＵ使用率がＣＰＵ使用率閾値以上か否かを判定する。ここでは、ＣＰＵ使用率がＣＰＵ使用率閾値以上である場合で説明する。判定部１２は、スケールアウトの実行を決定する。そして、判定部１２は、スケールアウトの実行判定で用いるメトリックをサーバ負荷からＷｅｂリクエスト負荷である単位時間あたりのＷｅｂリクエスト数に変更する（ステップＳ２）。さらに、判定部１２は、リクエスト閾値を算出する。
【００５７】
次に、判定部１２は、Ｗｅｂサーバ３０の追加を仮想マシン管理部１３に指示する（ステップＳ３）。仮想マシン管理部１３は、Ｗｅｂサーバ３０の追加の指示を判定部１２から受けて、新たにＷｅｂサーバ３１をオートスケーリンググループ３に追加する（ステップＳ４）。
【００５８】
その後、次の情報取得部１１による情報収集タイミングで、判定部１２は、Ｗｅｂリクエスト負荷であるオートスケーリンググループ３の単位時間あたりのＷｅｂリクエスト数を取得する（ステップＳ５）。この場合も、図３では、分かり易いようにＷｅｂリクエスト数を直接オートスケーリンググループ３から取得するように図示したが、実際は、判定部１２は、オートスケーリンググループ３の単位時間あたりのＷｅｂリクエスト数をデータベース４から取得する。
【００５９】
そして、判定部１２は、オートスケーリンググループ３の単位時間あたりのＷｅｂリクエスト数がリクエスト数閾値以上か否かを判定する。ここでは、オートスケーリンググループ３の単位時間あたりのＷｅｂリクエスト数がリクエスト数閾値以上である場合で説明する。判定部１２は、Ｗｅｂサーバ３０の追加を決定する。そして、判定部１２は、Ｗｅｂサーバ３０の追加を仮想マシン管理部１３に指示する（ステップＳ６）。
【００６０】
仮想マシン管理部１３は、Ｗｅｂサーバ３０の追加の指示を判定部１２から受けて、さらに新たなＷｅｂサーバ３２をオートスケーリンググループ３に追加する（ステップＳ７）。その後、仮想マシン管理部１３は、Ｗｅｂサーバ３０の追加完了を判定部１２に通知する（ステップＳ８）。
【００６１】
判定部１２は、Ｗｅｂサーバ３０の追加完了の通知を仮想マシン管理部１３から受けて、スケールアウトの実行判定で用いるメトリックをＷｅｂリクエスト負荷からサーバ負荷であるＷｅｂサーバ３０のＣＰＵ使用率に変更する（ステップＳ９）。
【００６２】
次に、図４を参照して、監視情報取得処理の流れについて説明する。図４は、監視情報取得処理のフローチャートである。
【００６３】
情報取得部１１は、オートスケーリンググループ３及びＷｅｂサーバ３０を監視の対象リソースとして、対象リソースの中から情報未取得の対象リソースを１つ選択する（ステップＳ１０１）。
【００６４】
次に、情報取得部１１は、選択した対象リソースに対して監視情報を問い合わせるポーリングを実行する（ステップＳ１０２）。ここで、選択した対象リソースがオートスケーリンググループ３であれば、情報取得部１１は、Ｌ２スイッチ２にポーリングを行う。
【００６５】
そして、情報取得部１１は、監視情報を選択した対象リソースから取得する（ステップＳ１０３）。具体的には、選択した対象リソースがＷｅｂサーバ３０であれば、情報取得部１１は、その選択したＷｅｂサーバ３０のＣＰＵ使用率を取得する。また、選択した対象リソースがオートスケーリンググループ３であれば、情報取得部１１は、その選択したオートスケーリンググループ３の単位時間あたりのリクエスト数をＬ２スイッチ２から取得する。
【００６６】
次に、情報取得部１１は、取得した監視情報をデータベース４に保存する（ステップＳ１０４）。
【００６７】
情報取得部１１は、全ての対象リソースの情報を取得したか否かを判定する（ステップＳ１０５）。情報を取得していない対象リソースがある場合（ステップＳ１０５：否定）、情報取得部１１は、ステップＳ１０１へ戻る。
【００６８】
これに対して、全ての対象リソースの情報を取得した場合（ステップＳ１０５：肯定）、情報取得部１１は、次のポーリングタイミングが到来したか否かを判定する（ステップＳ１０６）。次のポーリングタイミングが到来した場合（ステップＳ１０６：肯定）、情報取得部１１は、ステップＳ１０１へ戻る。
【００６９】
これに対して、次のポーリングタイミングが到来していない場合（ステップＳ１０６：否定）、情報取得部１１は、監視を停止するか否かを判定する（ステップＳ１０７）。情報取得部１１は、例えば、監視サーバ１がシャットダウンされた場合などに監視を停止する。
【００７０】
監視を停止しない場合（ステップＳ１０７：否定）、情報取得部１１は、ステップＳ１０６へ戻り、ポーリングタイミングの到来まで待機する。これに対して、監視を停止する場合（ステップＳ１０７：肯定）、情報取得部１１は、監視情報の取得処理を終了する。
【００７１】
次に、図５を参照して、スケールアウト処理の流れについて説明する。図５は、スケールアウト処理のフローチャートである。ここでは、オートスケーリンググループ３が複数ある場合で説明する。
【００７２】
情報取得部１１は、判定を実行していないオートスケーリンググループ３を１つ選択する（ステップＳ２０１）。
【００７３】
情報取得部１１は、選択したオートスケーリンググループ３の判定情報を問い合わせるポーリングをデータベース４に対して実行する（ステップＳ２０２）。ここで、選択したオートスケーリンググループ３においてＷｅｂサーバ３０の追加が実行中でなければ、情報取得部１１は、選択したオートスケーリンググループ３に属する各Ｗｅｂサーバ３０のＣＰＵ使用率を問い合わせる。一方、選択したオートスケーリンググループ３においてＷｅｂサーバ３０の追加が実行中であれば、情報取得部１１は、選択したオートスケーリンググループ３の単位時間あたりのリクエスト数を問い合わせる。
【００７４】
情報取得部１１は、選択したオートスケーリンググループ３の判定情報を取得する（ステップＳ２０３）。その後、情報取得部１１は、取得した判定情報を判定部１２へ出力する。
【００７５】
判定部１２は、判定情報の入力を情報取得部１１から受ける。そして、判定部１２は、取得した判定情報を用いてスケールアウトを実行するか否かを判定する（ステップＳ２０４）。スケールアウトを実行しない場合（ステップＳ２０４：否定）、スケールアウト処理は、ステップＳ２０９へ進む。
【００７６】
スケールアウトを実行する場合（ステップＳ２０４：肯定）、判定部１２は、スケールアウトの実行判定の条件であるスケールアウト条件を変更する（ステップＳ２０５）。具体的には、ＣＰＵ使用率をスケールアウトの実行判定のメトリックとしている場合、判定部１２は、スケールアウトの実行判定のメトリックをオートスケーリンググループ３の単位時間あたりのリクエスト数に変更する。さらに、判定部１２は、リクエスト数閾値を求める。そして、判定部１２は、スケールアウト条件をオートスケーリンググループ３の単位時間あたりのリクエスト数がリクエスト数閾値以上である場合とする。また、オートスケーリンググループ３の単位時間あたりのリクエスト数をスケールアウトの実行判定のメトリックとしている場合、判定部１２は、リクエスト数閾値を算出して変更する。
【００７７】
その後、判定部１２は、Ｗｅｂサーバ３０の追加を仮想マシン管理部１３に指示する。仮想マシン管理部１３は、判定部１２からの指示を受けて、選択したオートスケーリンググループ３にＷｅｂサーバ３０を追加する（ステップＳ２０６）。
【００７８】
その後、判定部１２は、仮想マシン管理部１３からのＷｅｂサーバ３０の追加完了の通知の有無により、Ｗｅｂサーバ３０の追加が完了したか否かを判定する（ステップＳ２０７）。Ｗｅｂサーバ３０の追加が完了していない場合（ステップＳ２０７：否定）、判定部１２は、ステップＳ２０９へ進む。
【００７９】
これに対して、Ｗｅｂサーバ３０の追加が完了した場合（ステップＳ２０７：肯定）、判定部１２は、スケールアウトの実行判定のメトリックをＷｅｂサーバ３０のＣＰＵ使用率に戻してスケールアウト条件を初期化する（ステップＳ２０８）。
【００８０】
その後、判定部１２は、全てのオートスケーリンググループ３についてスケールアウトの実行判定が終了したか否かを判定する（ステップＳ２０９）。スケールアウトの実行判定を行っていないオートスケーリンググループ３がある場合（ステップＳ２０９：否定）、判定部１２は、ステップＳ２０１へ戻る。
【００８１】
これに対して、全てのオートスケーリンググループ３についてスケールアウトの実行判定が終了した場合（ステップＳ２０９：肯定）、判定部１２は、次のポーリングタイミングが到来したか否かを判定する（ステップＳ２１０）。次のポーリングタイミングが到来した場合（ステップＳ２１０：肯定）、判定部１２は、ステップＳ２０１へ戻る。
【００８２】
これに対して、次のポーリングタイミングが到来していない場合（ステップＳ２１０：否定）、判定部１２は、スケールアウト処理を停止するか否かを判定する（ステップＳ２１１）。判定部１２は、例えば、監視サーバ１がシャットダウンされた場合などにスケールアウト処理を停止する。
【００８３】
スケールアウト処理を停止しない場合（ステップＳ２１１：否定）、判定部１２は、ステップＳ２１０へ戻り、ポーリングタイミングの到来まで待機する。これに対して、スケールアウト処理を停止する場合（ステップＳ２１１：肯定）、判定部１２は、スケールアウト処理を終了する。
【００８４】
ここで、本実施例では、ロードバランスされているＷｅｂサーバ３０を例にスケールアウトを説明したが、スケールアウトの対象となる情報処理装置が実行する処理はこれに限らない。スケールアウトの対象となる情報処理装置は、それぞれがロードバランスにより処理を並列に行っていればよく、データベースサーバやアプリケーションサーバであってもよい。
【００８５】
また、本実施例では、監視サーバ１がポーリングを行うことで、監視情報や判定情報を取得したがこれらの情報の取得方法はこれに限らず、例えば、監視の対象リソースであるＷｅｂサーバ３０やＬ２スイッチ２が監視サーバ１に情報を能動的に送信してもよい。
【００８６】
次に、図６を参照して、監視サーバ１のハードウェア構成について説明する。図６は、監視サーバのハードウェア構成図である。図６に示すように、監視サーバ１は、ＣＰＵ９１、メモリ９２、ハードディスク９３及びネットワークインタフェース９４を有する。
【００８７】
ＣＰＵ９１は、バスを介してメモリ９２、ハードディスク９３及びネットワークインタフェース９４と接続される。
【００８８】
ネットワークインタフェース９４は、ＣＰＵ９１がＬ２スイッチ２との間でデータを送受信するための通信インタフェースである。
【００８９】
ハードディスク９３は、図２に例示した、情報取得部１１、判定部１２及び仮想マシン管理部１３の機能を実現するプログラムを含む各種プログラムを格納する。また、ハードディスク９３は、情報取得部１１、判定部１２及び仮想マシン管理部１３の機能を実現する場合の各種情報を格納する。
【００９０】
ＣＰＵ９１は、各種プログラムをハードディスク９３から読み出してメモリ９２に展開して実行することで、図２に例示した、情報取得部１１、判定部１２及び仮想マシン管理部１３の機能を実現する。
【００９１】
以上に説明したように、本実施例に係る監視サーバは、スケールアウトによるサーバの追加を行っていない場合、サーバ負荷であるＣＰＵを用いてさらにサーバを追加するか否かを判定する。また、スケールアウトによるサーバの追加を実行中の場合、本実施例に係る監視サーバは、スケールアウトの判定対象のグループ全体の負荷であるオートスケーリンググループの単位時間当たりのリクエスト数を用いてさらにサーバを追加するか否かを判定する。これにより、クールダウン機能によりスケールアウトによる過剰なサーバの追加を抑えるとともに、スケールアウトによるサーバの追加中に負荷が上昇した場合にサーバを追加することができる。すなわち、スケールアウトによるサーバの追加中に負荷が上昇した場合にも適切な数のサーバを確保することができ、システムを安定稼働させることができる。
【００９２】
また、スケールアウト中に負荷が上昇しているか否かを人が確認しなくても、自動的にサーバを追加することができ、人手によるモニタリング作業を軽減することができる。
【符号の説明】
【００９３】
１  監視サーバ
２  Ｌ２スイッチ
３  オートスケーリンググループ
４  データベース
５  ルータ
６  外部ネットワーク
１１  情報取得部
１２  判定部
１３  仮想マシン管理部
３０  Ｗｅｂサーバ
１００  情報処理システム
【図１】
2019117605.tif 000003
【図２】
2019117605.tif 000004
【図３】
2019117605.tif 000005
【図４】
2019117605.tif 000006
【図５】
2019117605.tif 000007
【図６】
2019117605.tif 000008