(57)【要約】【課題】サービスに関する負荷の変化に柔軟に対応すること。【解決手段】ネットワークを介して提供される所定のサービスを仮想マシンに実行させる情報処理装置であって、前記所定のサービスに関する負荷の変化に応じて、前記所定のサービスを第一の仮想マシンに実行させるためのサービス実行環境に基づいて、第二の仮想マシンを起動させる動的起動部と、前記第二の仮想マシンのアドレス情報を、前記第二の仮想マシンに設定する仮想マシン設定部と、前記第二の仮想マシンの前記アドレス情報を、複数の前記仮想マシンに関する負荷分散部に、負荷分散の対象として設定する負荷分散対象変更部とを有する。【選択図】図３
2012037935.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して提供される所定のサービスを仮想マシンに実行させる情報処理装置であって、
前記所定のサービスに関する負荷の変化に応じて、前記所定のサービスを第一の仮想マシンに実行させるためのサービス実行環境に基づいて、第二の仮想マシンを起動させる動的起動部と、
前記第二の仮想マシンのアドレス情報を、前記第二の仮想マシンに設定する仮想マシン設定部と、
前記第二の仮想マシンの前記アドレス情報を、複数の前記仮想マシンに関する負荷分散手段に、負荷分散の対象として設定する負荷分散対象変更部と
を有する情報処理装置。
【請求項２】
前記所定のサービスに関する負荷の変化に応じて、前記第一の仮想マシン又は前記第二の仮想マシンを停止させる動的停止部を有し、
前記負荷分散対象変更部は、停止対象とされた前記仮想マシンの前記アドレス情報の設定の解除を前記負荷分散手段に実行させる請求項１記載の情報処理装置。
【請求項３】
前記仮想マシン設定部は、デフォルトゲートウェイのアドレス情報を前記第二の仮想マシンに設定する請求項１又は２記載の情報処理装置。
【請求項４】
前記仮想マシン設定部は、前記第二の仮想マシンに関するリソースのスペック情報を前記第二の仮想マシンに設定する請求項１乃至３いずれか一項記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特にネットワークを介して所定のサービスを提供する情報処理装置に関する。
【背景技術】
【０００２】
インターネットの普及により、ネットワークを介して各種のサービスが提供されている。斯かるサービスの提供に利用されるサーバコンピュータ（以下、単に「サーバ」という。）には、高い負荷がかかる一方、高い信頼性が要求される。そこで、従来、サーバの負荷軽減や、信頼性の向上等を目的とした技術が検討されている（例えば、特許文献１、特許文献２）。
【０００３】
斯かる技術の共通的な点として、予め冗長的なサーバが設置される点が挙げられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２１９９６４号公報
【特許文献２】特開２００７−１８３７０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、サーバに対する負荷は、必ずしも一定ではない。したがって、冗長的なサーバは、常に必要であるとは限らない。それにも拘わらず、冗長的なサーバを設置しておくことは、費用の増加を固定的にもたらすという問題がある。
【０００６】
また、もし、冗長的なサーバを必要に応じて事後的に設置することを考えた場合、設置後の複数のサーバ間での負荷を分散させる設定を行わなければ、冗長的なサーバを設置しても既存サーバに対する負荷軽減を果たせない。
【０００７】
本発明は、上記の点に鑑みてなされたものであって、サービスに関する負荷の変化に柔軟に対応することのできる情報処理装置の提供を目的とする。
【課題を解決するための手段】
【０００８】
そこで上記課題を解決するため、ネットワークを介して提供される所定のサービスを仮想マシンに実行させる情報処理装置であって、前記所定のサービスに関する負荷の変化に応じて、前記所定のサービスを第一の仮想マシンに実行させるためのサービス実行環境に基づいて、第二の仮想マシンを起動させる動的起動部と、前記第二の仮想マシンのアドレス情報を、前記第二の仮想マシンに設定する仮想マシン設定部と、前記第二の仮想マシンの前記アドレス情報を、複数の前記仮想マシンに関する負荷分散部に、負荷分散の対象として設定する負荷分散対象変更部とを有する。
【発明の効果】
【０００９】
サービスに関する負荷の変化に柔軟に対応することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態のシステム構成例を示す図である。
【図２】本発明の実施の形態におけるサーバ装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態におけるサーバ装置のソフトウェア構成例を示す図である。
【図４】仮想サーバ、仮想ロードバランサ、及び仮想ファイアウォールの論理的な関係を説明するための図である。
【図５】サービス実行環境の構成例を示す図である。
【図６】サーバ装置が実行する処理手順を説明するためのフローチャートである。
【図７】サービス実行環境のスナップショットの生成及び子仮想サーバの起動を説明するための図である。
【図８】本発明の実施の形態の第二のシステム構成例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態のシステム構成例を示す図である。同図において、サーバ装置１０は、インターネット等のネットワーク３０を介して、一以上のクライアント装置２０と通信可能に接続されている。
【００１２】
サーバ装置１０は、ネットワーク３０を介して、所定のサービスを提供するコンピュータである。本実施の形態において、サーバ装置１０は、情報処理装置の一例である。
【００１３】
クライアント装置２０は、サーバ装置１０によって提供される所定のサービスのユーザインタフェースをユーザに提供するＰＣ（Personal Computer）、ＰＤＡ（Personal Digital Assistance）、又は携帯電話等である。
【００１４】
図２は、本発明の実施の形態におけるサーバ装置のハードウェア構成例を示す図である。図２のサーバ装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５とを有する。
【００１５】
サーバ装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１６】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってサーバ装置１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００１７】
図３は、本発明の実施の形態におけるサーバ装置のソフトウェア構成例を示す図である。同図に示される各ブロックは、サーバ装置１０にインストールされたプログラムがＣＰＵ１０４に実行させる処理により実現される。
【００１８】
同図において、サーバ装置１０は、ＶＭ（Virtual Machine）マネージャ１１を有する。ＶＭマネージャ１１は、ハイパーバイザ又は仮想マシンモニタ等とも呼ばれるソフトウェアである。ＶＭマネージャ１１によって、一以上の仮想マシンがサーバ装置１０において起動される。
【００１９】
同図では、仮想サーバ１２、仮想ロードバランサ１３、及び仮想ファイアウォール１４の３種類の仮想マシンが起動された状態が示されている。仮想サーバ１２は、サービス実行環境１２１がロードされる、サービス実行環境（サービス実行手段）として機能する仮想マシンである。サービス実行環境１２１とは、仮想サーバ１２が、クライアント装置２０にサービスを提供するために必要な処理を実行するプログラム群の集合をいう。必要に応じて、当該プログラムが利用するデータ群等もサービス実行環境１２１に含まれうる。仮想サーバ１２は、起動中の仮想サーバ１２に対する負荷、すなわち、当該仮想サーバ１２が提供するサービスに関する負荷の変化に応じて、自動的にスケールアウト又はスケールシュリンクされる。
【００２０】
すなわち、一般的に、スケールアウト及びスケールシュリンクは、物理的なリソースの増減が必要とされ、人手による作業を除去するのが困難である。一方、仮想化技術によれば、工夫することにより、人手の介入を除去できる可能性が有ることに、本願発明者は着眼した。そこで、本願発明者は、仮想サーバ１２をスケールアウト又はスケールシュリンクさせることにより、負荷の変化に柔軟に対応せることに着想したのである。
【００２１】
仮想ロードバランサ１３は、ロードバランサ１３１がロードされる、ロードバランサ（負荷分散装置）として機能する仮想マシンである。仮想ロードバランサ１３（ロードバランサ１３１）は、負荷分散手段の一例である。ロードバランサ１３１は、仮想サーバ１２間の負荷分散を制御する。
【００２２】
仮想ファイアウォール１４は、ファイアウォール１４１がロードされる、ファイアウォールとして機能する仮想マシンである。本実施の形態において、仮想ファイアウォール１４は、ファイアウォールとして機能すると共に、仮想サーバ１２等のデフォルトゲートウェイとして位置付けられる。
【００２３】
同図において、ＶＭマネージャ１１は、負荷監視部１１１、動的起動部１１２、動的停止部１１３、仮想サーバ設定部１１４、負荷分散対象変更部１１５、及びスクリプト実行部１１６等を有する。負荷監視部１１１は、サーバ装置１０に関する負荷として、例えば仮想サーバ１２によって提供されるサービスに関する負荷を監視する。負荷監視部１１１は、例えば、負荷の値が予め設定された第一の閾値を超えたこと、又は第二の閾値を下回ったことを検知する。第一の閾値と第二の閾値とは同じであってもよいし、異なっていてもよい。
【００２４】
負荷を示す指標の一例として、サーバ装置１０におけるパケット通信量、ＣＰＵ１０４の負荷、各仮想サーバ１２に割り当てられた仮想的なＣＰＵの負荷、補助記憶装置１０２へのアクセス負荷、セッション数、及びレスポンス時間等が挙げられる。閾値は、監視対象とされる負荷に応じて、適切な値が設定されればよい。
【００２５】
パケット通信量は、ＶＭマネージャ１１が把握することができる。例えば、ＶＭマネージャ１１は、インタフェース装置１０５と、各仮想マシンの仮想的なネットワークインタフェースとの中継を行っている。したがって、ＶＭマネージャ１１の一部である負荷監視部１１１は、当該中継に係るパケットを監視することで、パケット通信量を把握することができる。
【００２６】
ＣＰＵ１１０４の負荷は、サーバ装置１０上で動作するプログラムであれば、容易に取得可能である。ＶＭマネージャ１１の負荷監視部１１１は、サーバ装置１０上で動作するプログラムである。したがって、負荷監視部１１１は、ＣＰＵ１０４の負荷を監視することができる。
【００２７】
各仮想サーバ１２に割り当てられた仮想的なＣＰＵの負荷は、ＶＭマネージャ１１の公知の機能によって取得可能である。すなわち、ＶＭマネージャ１１は、全ての仮想マシンの状態等を管理している。したがって、ＶＭマネージャ１１の一部である負荷監視部１１１は、当該仮想的なＣＰＵの負荷を監視することができる。
【００２８】
補助記憶装置１０２へのアクセス負荷は、ＶＭマネージャ１１が把握することができる。例えば、各仮想マシンによる補助記憶装置１０２へのアクセスは、ＶＭマネージャ１１によって中継される通信（例えば、ＩＰ通信）によって実現される。したがって、ＶＭマネージャ１１の一部である負荷監視部１１１は、当該通信を監視することにより、補助記憶装置１０２へのアクセス負荷を監視することができる。
【００２９】
セッション数とは、仮想サーバ１２がクライアント装置２０へのサービスの提供のために開設しているセッションの数である。当該セッション数は、仮想ロードバランサ１３が把握している。したがって、負荷監視部１１１は、仮想ロードバランサ１３に対してセッション数を問い合わせることにより、セッション数を監視することができる。但し、仮想ロードバランサ１３から負荷監視部１１１に対してセッション数が通知されてもよい。
【００３０】
レスポンス時間とは、例えば、仮想ロードバランサ１３が、クライアント装置２０からのリクエストを仮想マシン１２に振り分けてから、当該リクエストに対する応答が仮想ロードバランサ１３に返信されるまでの時間である。当該レスポンス時間は、仮想ロードバランサ１３が把握（計測）することができる。したがって、負荷監視部１１１は、仮想ロードバランサ１３に対してレスポンス時間を問い合わせることにより、レスポンス時間を監視することができる。但し、仮想ロードバランサ１３から負荷監視部１１１に対してレスポンス時間が通知されてもよい。
【００３１】
なお、いずれか一つの負荷が監視対象とされてもよいし、複数の負荷が監視対象とされてもよい。また、上記に例示した以外のパラメータであって、負荷を示すものとして適切なものが監視対象とされてもよい。
【００３２】
複数の負荷が監視対象とされる場合、負荷ごとの閾値が設定されればよい。この場合、どのような状態を「サービスに関する負荷の値が第一の閾値を超えた」とするか、又は「サービスに関する負荷の値が第二の閾値を下回った」とするかについては、適宜定めればよい。例えば、複数の負荷の値の全てがそれぞれの第一閾値を超えた場合に、「サービスに関する負荷の値が第一の閾値を超えた」と判定してもよい。又は、いずれか一つの負荷の値が当該負荷に対する第一の閾値を超えた場合に、「サービスに関する負荷の値が第一の閾値を超えた」と判定してもよい。第二の閾値との比較についても同様である。
【００３３】
動的起動部１１２は、サービスに関する負荷が第一の閾値を超えたことが負荷監視部１１１によって検知された場合に、仮想サーバ１２を自動的にスケールアウトさせる。すなわち、新たに仮想サーバ１２が起動される。
【００３４】
動的停止部１１３は、サービスに関する負荷が第二の閾値を下回ったことが負荷監視部１１１によって検知された場合に、仮想サーバ１２を自動的にスケールシュリンクさせる。すなわち、既に起動されている仮想サーバ１２のいずれかが停止される。
【００３５】
仮想サーバ設定部１１４は、スケールアウトにより新たに起動された仮想サーバ１２を、ネットワーク３０を介して通信可能とするための各種のパラメータを当該仮想サーバ１２に設定する。
【００３６】
負荷分散対象変更部１１５は、仮想サーバ１２のスケールアウト又はスケールシュリンクに応じて、仮想ロードバランサ１３による負荷分散の対象を変更する。すなわち、スケールアウトが発生した場合、新たに起動された仮想サーバ１２が、負荷分散の対象として追加される。スケールシュリンクが発生した場合、停止された仮想サーバ１２が、負荷分散の対象から除外される。
【００３７】
スクリプト実行部１１６は、仮想サーバ１２のスケールアウト時に、予め決められたファイル名によって生成されているスクリプトファイルに記述されたスクリプトプログラムを実行する。例えば、スクリプトファイルによって、特定のサービス実行環境１２１に特化した処理をＶＭマネージャ１１に実行させることができる。すなわち、ＶＭマネージャ１１は、特定のサービス実行環境１２１を意識せずに汎用的に実装されていることが望ましい。換言すれば、ＶＭマネージャ１１に、特定のサービス実行環境１２１に特化した実装が行われるのは望ましくない。そこで、斯かる実装をＶＭマネージャ１１の外部ファイルであるスクリプトファイル内に定義し、ＶＭマネージャ１１には、当該スクリプトファイル内の定義（スクリプトプログラム）を実行させる。そうすることにより、ＶＭマネージャ１１に対する、特定のサービス実行環境１２１に特化した実装を回避することができる。
【００３８】
続いて、仮想サーバ１２、仮想ロードバランサ１３、及び仮想ファイアウォール１４の論理的な関係について説明する。
【００３９】
図４は、仮想サーバ、仮想ロードバランサ、及び仮想ファイアウォールの論理的な関係を説明するための図である。
【００４０】
それぞれ仮想マシンとして、ＶＭマネージャ１１上において並列的な関係にある仮想サーバ１２、仮想ロードバランサ１３、及び仮想ファイアウォール１４は、それぞれの機能に基づいて図４に示されるような関係を有する。
【００４１】
仮想ファイアウォール１４は、仮想サーバ１２とクライアント装置２０との通信経路上に、いわゆるファイアウォール１４１を形成する。ロードバランサ１３１は、クライアント装置２０からリクエスト（サービスに関する要求）を、各仮想サーバ１２に振り分けることにより、仮想サーバ１２間の負荷分散を実現する。
【００４２】
リクエストを振り分けられた仮想サーバ１２は、サービスの一環又は一部として、リクエストに応じた処理を実行し、当該処理結果に基づく応答を返信する。当該応答は、仮想ロードバランサ１３及び仮想ファイアウォール１４を経て、リクエストの送信元のクライアント装置２０に返信される。
【００４３】
続いて、参考として、サービス実行環境１２１の構成例を示す。図５は、サービス実行環境の構成例を示す図である。
【００４４】
同図において、サービス実行環境１２１は、ＯＳ１２１１、Ｗｅｂサーバプログラム１２１２、及びＷｅｂアプリケーション１２１３等を含む。ＯＳ１２１１は、いわゆるＯＳ１２１１（Operating System）である。Ｗｅｂサーバプログラム１２１２は、ｈｔｔｐｄとも呼ばれるプログラムである。Ｗｅｂサーバプログラム１２１２は、クライアント装置１０より送信されるＨＴＴＰリクエストを受信すると、当該ＨＴＴＰリクエストに対応するＷｅｂアプリケーション１２１３を起動する。Ｗｅｂアプリケーション１２１３は、ＨＴＴＰリクエストに応じた処理を実行し、当該処理結果としてのＨＴＭＬ（HyperText Markup Language）データをＷｅｂサーバプログラム１２１２に出力する。Ｗｅｂサーバプログラム１２１２は、Ｗｅｂアプリケーション１２１３より出力されたＨＴＭＬデータを、ＨＴＴＰリクエストの送信元のクライアント装置２０宛に返信する。
【００４５】
以下、サーバ装置１０の処理手順について説明する。図６は、サーバ装置が実行する処理手順を説明するためのフローチャートである。同図の処理の実行前に、サーバ装置１０上には、サービスを提供するための初期状態が構築されていることとする。すなわち、サーバ装置１０上では、仮想サーバ１２、仮想ロードバランサ１３、及び仮想ファイアウォール１４が起動されていることとする。なお、初期状態における仮想サーバ１２の数は、予め設定された数に従えばよい。すなわち、初期状態における仮想サーバ１２の数は、一つでもよいし、二以上でもよい。なお、初期状態において当初より起動される仮想サーバ１２を、特に、「親仮想サーバ１２」という。また、スケールアウトにより起動される仮想サーバ１２を、特に、「子仮想サーバ１２」という。
【００４６】
ステップＳ１０１において、負荷監視部１１１は、サーバ装置１０が提供するサービスに関する負荷を監視する。負荷の値が第一の閾値を超えた場合（Ｓ１０２でＹｅｓ）、動的起動部１１２は、親仮想サーバ１２のサービス実行環境１２１のディスクイメージのスナップショットを補助記憶装置１０２に生成する（Ｓ１０３）。サービス実行環境１２１のディスクイメージとは、補助記憶装置１０２に保存されている状態のサービス実行環境１２１をいう。すなわち、ここで生成されるスナップショットは、サービス実行環境１２１に含まれるファイル群がメモリ装置１０４にロードされた状態のスナップショットではない。したがって、ステップＳ１０３では、補助記憶装置１０２に保存されている、親仮想サーバ１２のサービス実行環境１２１のコピーが補助記憶装置１０２内に生成される。
【００４７】
続いて、動的起動部１１２は、生成されたスナップショットに基づいて、新たな仮想マシン（子仮想サーバ１２）を起動する（Ｓ１０４）。すなわち、スナップショットとしてのサービス実行環境１２１が展開された新たな仮想マシン（子仮想サーバ１２）が起動される。
【００４８】
図７は、サービス実行環境のスナップショットの生成及び子仮想サーバの起動を説明するための図である。図７中、図６に対応するステップには同一ステップ番号を付している。
【００４９】
同図に示されるように、ステップＳ１０３では、補助記憶装置１０２内のサービス実行環境１２１（のディスクイメージ）のスナップショットが、補助記憶装置１０２内に生成される。ステップＳ１０４では、当該スナップショットをロード対象として、新たな仮想マシンが起動される。したがって、当該仮想マシンは、仮想サーバ１２（子仮想サーバ１２）として機能する。
【００５０】
なお、一度に起動される子仮想サーバ１２は、一つでなくてもよい。例えば、二つずつ起動するという規則が補助記憶装置１０２に記録されている場合、二つの仮想サーバ１２が起動されてもよい。その場合、ステップＳ１０３では、二つのスナップショットが生成される。ここでは、説明の便宜上、一つの子仮想サーバ１２が起動されたこととする。
【００５１】
続いて、スクリプト実行部１１６は、スクリプトファイルに記述されているスクリプトプログラムに基づいて、新たに起動された子仮想サーバ１２に対する設定等を行う（Ｓ１０５）。例えば、サービス実行環境１２１に、Ｗｅｂアプリケーション１２１３の設定ファイル（コンフィギュレーションファイル）等が含まれている場合、スクリプト実行部１１６は、当該設定ファイルの所定のパラメータを、当該スクリプトプログラムに従って更新する。そうすることにより、当該子仮想サーバ１２の振る舞いを、親仮想サーバ１２と多少異なるもとのすることができる。
【００５２】
続いて、仮想サーバ設定部１１４は、新たに起動された子仮想サーバ１２に対して、アドレス情報を設定する（Ｓ１０６）。アドレス情報は、例えば、ＩＰアドレス、ＭＡＣアドレス等である。設定される値は、例えば、ＤＨＣＰ（Dynamic ＨＯＳ１２１１t Configuration Protocol）に基づいて決定さればよい。例えば、補助記憶装置１０２には、予め設定可能なＩＰアドレス及びＭＡＣアドレスの範囲又は候補が記録されている。仮想サーバ設定部１１４は、当該範囲又は候補の中から未使用の一つのＩＰアドレス、一つのＭＡＣアドレスを選択し、選択されたＩＰアドレス、ＭＡＣアドレスを、新たに起動された子仮想サーバ１２に設定する。ＩＰアドレス及びＭＡＣアドレスを子仮想サーバ１２に設定するのは、例えば、子仮想サーバ１２が、パケット又はフレームの送出する際に、送信元のＩＰアドレス又はＭＡＣアドレスを指定可能するためである。
【００５３】
仮想サーバ設定部１１４は、また、ルーティング情報、子仮想サーバ１２のハードウェアリソースのスペック情報等を子仮想サーバ１２に設定する。ルーティング情報とは、いわゆるデフォルトゲートウェイのＩＰアドレスである。本実施の形態において、仮想ファイアウォール１４がデフォルトゲートウェイに相当する。したがって、仮想ファイアウォール１４サーバのＩＰアドレスがルーティング情報として子仮想サーバ１２に設定される。子仮想サーバ１２に起動時に、ルーティング情報が設定されることにより、仮想ファイアウォール１４のＩＰアドレスもＤＨＣＰによって付与される場合であっても、子仮想サーバ１２は、適切に通信を行うことができる。
【００５４】
子仮想サーバ１２のハードウェアリソースのペック情報とは、例えば、子仮想サーバ１２上の仮想的なＣＰＵのスペック（性能）、仮想的なディスクの容量等を示す情報である。当該スペック情報が、子仮想サーバ１２に設定されることにより、子仮想サーバ１２の性能等を親仮想サーバ１２と異なるものとすることができる。なお、子仮想サーバ１２に設定されるスペック情報は、予め定められていればよい。
【００５５】
続いて、負荷分散対象変更部１１５は、新たに起動された子仮想サーバ１２のアドレス情報（ＩＰアドレス）を、仮想ロードバランサ１３に設定する（Ｓ１０７）。これにより、子仮想サーバ１２を、負荷分散の対象（制御対象又は管理対象）として仮想ロードバランサ１３に認識させることができる。
【００５６】
以上で、仮想サーバ１２が実質的にスケールアウトされたことになる。したがって、今まで親仮想サーバ１２にかかっていた負荷が、子仮想サーバ１２に分散される。その結果、サーバ装置１０全体として、クライアント装置２０に対する応答性を向上させることができる。
【００５７】
なお、ステップＳ１０５〜Ｓ１０７に関しては、親仮想サーバ１２の起動時においても、親仮想サーバ１２を対象として実行される。
【００５８】
一方、負荷の値が第一の閾値以下である場合（Ｓ１０２でＮｏ）、負荷監視部１１１は、負荷の値が第二の閾値未満であるか否かを判定する（Ｓ１１１）、負荷の値が第二の閾値未満である場合（Ｓ１１１でＹｅｓ）、動的停止部１１３は、子仮想サーバ１２は起動されているか否かを判定する（Ｓ１１２）。当該判定は、ＶＭマネージャ１１によって仮想マシンごとに管理されている管理情報を参照することにより行われてもよい。又は、子仮想サーバ１２の起動数を記憶するカウンタをメモリ装置１０３に設け、当該カウンタを参照することにより当該判定が行われてもよい。更に、子仮想サーバ１２に対応するサービス実行環境１２１のスナップショットが補助記憶装置１０２内に存在するか否かに基づいて、当該判定が行われてもよい。
【００５９】
子仮想サーバ１２が起動している場合（Ｓ１１２でＹｅｓ）、負荷分散対象変更部１１５は、停止対象とする子仮想サーバ１２を所定の規則に従って選択し、選択された子仮想サーバ１２のアドレス情報（ＩＰアドレス）の設定の解除を仮想ロードバランサ１３に実行させる（Ｓ１１３）。これにより、当該子仮想サーバ１２は、負荷分散の対象から除去される。所定の規則とは、例えば、起動時期の昇順又は降順等である。また、一度に停止される子仮想サーバ１２は、２以上であってもよい。
【００６０】
続いて、動的停止部１１３は、停止対象として選択された子仮想サーバ１２を停止させる（Ｓ１１４）。停止された子仮想サーバ１２に対して設定された（割り当てられた）アドレス情報（ＩＰアドレス、ＭＡＣアドレス等）は、回収される。すなわち、当該アドレス情報は、未使用の状態とされる。したがって、当該アドレス情報は、以降に子仮想サーバ１２が起動される場合に、当該子仮想サーバ１２に対して設定可能となる。
【００６１】
続いて、動的停止部１１３は、当該子仮想サーバ１２に対応するサービス実行環境１２１のディスクイメージ（スナップショット）を補助記憶装置１０２より削除する（Ｓ１１５）。
【００６２】
以上で、仮想サーバ１２が実質的にスケールシュリンクされたことになる。したがって、リソースの消費量が削減された状態でサービスが提供することができる。
【００６３】
なお、ステップＳ１１３及びＳ１１４は、親仮想サーバ１２の停止時にも実行される。
【００６４】
また、上記では、便宜上、親仮想サーバ１２と子仮想サーバ１２とを区別したが、停止対象として、親仮想サーバ１２が選択されてもよい。但し、この場合、最後に停止対象とされる、子仮想サーバ１２のサービス実行環境１２１のディスクイメージは削除されないようにしなければならない。当該ディスクイメージが削除されてしまうと、仮想サーバ１２を起動することができなくなってしまうからである。
【００６５】
また、新たな子仮想サーバ１２の起動に際し、サービス実行環境１２１のスナップショットの生成は、必ずしも実行されなくてもよい。この場合、各子仮想サーバ１２は、親仮想サーバ１２と同じサービス実行環境１２１のディスクイメージに基づいて起動されればよい。これは、一つの実行ファイルに関して、複数のプロセスを起動可能であることと類似する。但し、例えば、仮想サーバ１２のが、状態の変化（処理の進行）等に応じて、当該サービス実行環境１２１のディスクイメージを更新する場合は注意が必要である。この場合、複数の仮想サーバ１２によって、同一のデータに対して更新が行われ、各仮想サーバ１２が認識している状態と、当該ディスクイメージの内容との間に不整合が発生する可能性がある。したがって、このような場合は、斯かる不整合が発生しないようにする工夫が必要である。本実施の形態のように、スナップショットを生成することも一つの解決策である。換言すれば、本実施の形態では、斯かる不整合の発生を防止することを考慮して、スナップショットが生成されている。
【００６６】
また、スクリプト実行部１１６によるスクリプトの実行において、実行すべきスクリプトファイルが存在しない場合には、Ｓ１０５の処理ステップを実行しなくても良い。
【００６７】
更に、負荷の値と閾値との比較は、瞬間的なものでなくてもよい。例えば、ステップＳ１０２又はＳ１１１の判定は、負荷の値が第一の閾値を超える状態、又は第二の閾値未満である状態が一定期間継続するか否かによって行われてもよい。又は、一定期間に対おいて、負荷の値が第一の閾値を超える時間の割合、若しくは負荷の値が第二の閾値未満である時間の割合が所定値を超えるか否か等によって、当該判定が行われてもよい。
【００６８】
上述したように、本実施の形態によれば、仮想サーバ１２のスケールアウト又はスケールシュリンクを自動的に実行することにより、サーバ装置１０が提供するサービスに関する負荷の変化に対して柔軟に対応することができる。
【００６９】
すなわち、負荷が高くなると、仮想サーバ１２がスケールアウトされ、負荷分散の効果が大きくなる。したがって、高負荷による、応答性の劣化を低減させることができる。また、負荷が低くなると、仮想サーバ１２がスケールシュリンクされ、リソースの消費量を削減することができる。
【００７０】
このような動作は、例えば、サーバ装置１０におけるハードウェアリソースの使用に関して、従量制によって課金する場合に、ユーザ（当該ハードウェアリソースのレンタルを受ける者）にとって好都合である。すなわち、固定的にサーバ装置１０がスケールアウトされた場合、スケールアウト分において消費されるリソース量に対する課金は固定的に発生する。一方、本実施の形態によれば、負荷の変化に応じて必要性が高いときにスケールアウトが行われる。したがって、リソースの消費量が変動的なものとなる。その結果、リソースの消費量が固定的な場合に比べて、課金量が減少する可能性を高めることができる。
【００７１】
なお、本実施の形態では、ロードバランサ１３１及びファイアウォール１４１についても仮想化されている例を示したが、これらは、サーバ装置１０とは別のハードウェアであってもよい。
【００７２】
図８は、本発明の実施の形態の第二のシステム構成例を示す図である。同図において、ロードバランサ１３１ａ及びファイアウォール１４１ａは、それぞれ、サーバ装置１０とは別のハードウェアである。ロードバランサ１３１ａは、サーバ装置１０において動作する仮想サーバ１２間の負荷分散を制御する。この場合、ロードバランサ１３１ａに対する子仮想サーバ１２のアドレス情報の設定又は解除は、ネットワーク通信を介して行われればよい。
【００７３】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００７４】
１０          サーバ装置
１１          ＶＭマネージャ
１２          仮想サーバ
１３          仮想ロードバランサ
１４          仮想ファイアウォール
２０          クライアント装置
３０          ネットワーク
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１１１        負荷監視部
１１２        動的起動部
１１３        動的停止部
１１４        仮想サーバ設定部
１１５        負荷分散対象変更部
１１６        スクリプト実行部
１２１        サービス実行環境
１３１        ロードバランサ
１４１        ファイアウォール
１２１１      ＯＳ
１２１２      Ｗｅｂサーバプログラム
１２１３      Ｗｅｂアプリケーション
Ｂ            バス
【図１】
2012037935.tif 000003
【図２】
2012037935.tif 000004
【図３】
2012037935.tif 000005
【図４】
2012037935.tif 000006
【図５】
2012037935.tif 000007
【図６】
2012037935.tif 000008
【図７】
2012037935.tif 000009
【図８】
2012037935.tif 000010