(57)【要約】      （修正有）【課題】仮想マシン群の適切な冗長度を決定し、仮想マシン管理サーバに負荷が集中するのを防止する。【解決手段】コンピュータシステムは、自身に設定されたフローエントリに従って、受信パケットの中継処理を行い、また前記フローエントリ毎のトラフィック情報を記録する、通信経路上のスイッチ４と、前記スイッチに対して前記フローエントリを設定し、また前記トラフィック情報を前記スイッチから収集するコントローラ３と、前記スイッチを介して自身に接続されたクライアント端末１０のそれぞれに対して、同一のサービスを提供する、複数の仮想マシン６１〜６ｍ、７１〜７ｎ、８１〜８ｏから構成された仮想マシン群と、前記仮想マシン群に対する前記クライアント端末からのトラフィック情報を前記コントローラから収集し、該収集したトラフィック情報に基づいて、前記仮想マシン群を構成する仮想マシンの適切な台数を決定する統合管理サーバ１と、を有する。【選択図】図１
2017045301.tif 000002
【特許請求の範囲】
【請求項１】
自身に設定されたフローエントリに従って、受信パケットの中継処理を行い、また前記フローエントリ毎のトラフィック情報を記録する、通信経路上のスイッチと、
前記スイッチに対して前記フローエントリを設定し、また前記トラフィック情報を前記スイッチから収集するコントローラと、
前記スイッチを介して自身に接続されたクライアント端末のそれぞれに対して、同一のサービスを提供する、複数の仮想マシンから構成された仮想マシン群と、
前記仮想マシン群に対する前記クライアント端末からのトラフィック情報を前記コントローラから収集し、該収集したトラフィック情報に基づいて、前記仮想マシン群を構成する仮想マシンの適切な台数を決定する統合管理サーバと、
を有するコンピュータシステム。
【請求項２】
前記統合管理サーバは、前記トラフィック情報の区分毎に、前記仮想マシン群を構成する仮想マシンの適切な台数を記述した表を参照して、前記仮想マシン群を構成する仮想マシンの適切な台数を決定する、
請求項１に記載のコンピュータシステム。
【請求項３】
仮想マシンの起動を行う仮想マシン管理サーバを備え、
前記統合管理サーバは、前記仮想マシン群の実際の台数が前記決定した適切な台数より少ない場合、前記仮想マシン管理サーバを利用して、前記仮想マシン群のための仮想マシンを新たに起動する、
請求項２に記載のコンピュータシステム。
【請求項４】
前記統合管理サーバは、前記新たに起動した仮想マシンのためのフローエントリを前記コントローラおよび前記スイッチに設定する、
請求項３に記載のコンピュータシステム。
【請求項５】
仮想マシンの停止を行う仮想マシン管理サーバを備え、
前記統合管理サーバは、前記仮想マシン群の実際の台数が前記決定した適切な台数より多い場合、前記仮想マシン管理サーバを利用して、前記仮想マシン群を構成する何れかの仮想マシンを停止する、
請求項２に記載のコンピュータシステム。
【請求項６】
前記統合管理サーバは、前記停止した仮想マシンのためのフローエントリを前記コントローラおよび前記スイッチから無効にする、
請求項５に記載のコンピュータシステム。
【請求項７】
自身に設定されたフローエントリに従って、受信パケットの中継処理を行い、また前記フローエントリ毎のトラフィック情報を記録する、通信経路上のスイッチと、前記スイッチに対して前記フローエントリを設定し、また前記トラフィック情報を前記スイッチから収集するコントローラと、前記スイッチを介して自身に接続されたクライアント端末のそれぞれに対して、同一のサービスを提供する、複数の仮想マシンから構成された仮想マシン群と、統合管理サーバとを有するコンピュータシステムの監視方法であって、
前記統合管理サーバが、前記仮想マシン群に対する前記クライアント端末からのトラフィック情報を前記コントローラから収集し、
前記統合管理サーバが、前記収集したトラフィック情報に基づいて、前記仮想マシン群を構成する仮想マシンの適切な台数を決定する、
コンピュータシステムの監視方法。
【請求項８】
自身に設定されたフローエントリに従って、受信パケットの中継処理を行い、また前記フローエントリ毎のトラフィック情報を記録する、通信経路上のスイッチと、前記スイッチに対して前記フローエントリを設定し、また前記トラフィック情報を前記スイッチから収集するコントローラと、前記スイッチを介して自身に接続されたクライアント端末のそれぞれに対して、同一のサービスを提供する、複数の仮想マシンから構成された仮想マシン群と、統合管理サーバとを有するコンピュータシステムの前記統合管理サーバであって、
前記仮想マシン群に対する前記クライアント端末からのトラフィック情報を前記コントローラから収集する制御部と、
前記収集したトラフィック情報に基づいて、前記仮想マシン群を構成する仮想マシンの適切な台数を決定する判定部と、
を有する統合管理サーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステム、その監視方法および統合管理サーバ装置に関する。
【背景技術】
【０００２】
処理能力の向上と耐障害性の向上などを目的として、１乃至複数の物理サーバ上で動作する複数の仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）により同じサービスを提供する冗長構成のコンピュータシステムが提案乃至実用化されている。また、そのような冗長構成のサーバ群の適切な規模を決定し、また需要変化があった場合にはサーバ規模を自動的に増減させることが提案乃至実用化されている。
【０００３】
例えば特許文献１には、クラウド環境において、需要変化に応答してサーバ規模を増減させるオートスケーリング機能を実現するコンピュータシステムが記載されている。具体的には、コンピュータシステムは、複数の仮想マシンにより構成される処理サーバ群と、処理サーバ群に代替して応答するための代替サーバと、処理サーバ群にトラフィックを分散するとともに、処理サーバ群が過負荷状態となった際に代替サーバにトラフィックを転送するロードバランサと、上記仮想マシンの管理を行う管理サーバとを含む。管理サーバは、需要変化に対応させたオートスケーリングを行うために必要な情報を定期的または不定期に収集し、収集した情報に基づいて目標サーバ規模を演算し、現在のサーバ規模との差分に応じてサーバ規模の増減を行う。ここで、管理サーバが収集するオートスケーリングを行うために必要な情報は、ロードバランサが処理サーバ群へ単位時間当たりに転送するトラフィックの転送量、代替サーバへ単位時間当たりに転送するトラフィックの転送量、ロードバランサの平均応答時間、処理サーバ群の平均ＣＰＵ使用率、ローカルディスクへの入出力待ち時間の割合、ＣＰＵが使用されていないアイドル時間の割合などである。
【０００４】
また、例えば特許文献２には、クラウド環境において、需要変化に応じて仮想マシンをサスペンド制御するコンピュータシステムが記載されている。具体的には、コンピュータシステムは、ネットワークを通じてクライアント端末に対してサービスを提供する仮想マシンと、仮想マシンを管理する管理サーバとを含む。管理サーバは、クライアント端末から仮想マシンへのアクセスを監視する。アクセスが仮想マシンに直接送信される場合、管理サーバは、仮想化ソフトウェアが収集する仮想マシン情報から当該アクセスを検出する。またアクセスが管理サーバを経由する場合、管理サーバはそのアクセスの発生を検出する。そして、管理サーバは、クライアント端末からの仮想マシンへのアクセスが一定時間継続して発生しない場合、仮想化ソフトウェアに対して仮想マシンをサスペンドする指示を送信する。これにより、仮想化ソフトウェアは、仮想マシンの動作を停止させ、仮想マシンのメモリ内のデータやコンテキストをハードディスクに書き込み、仮想マシンに割当てられていたハードウェアリソースを解放する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２０８７８１号公報
【特許文献２】特開２０１４−１９１７７６号公報
【特許文献３】特許第５４４６０４０号公報
【特許文献４】特開２０１１−１７０７１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、仮想マシン群の適切な冗長度を決定し、需要変化があった際に仮想マシン群の冗長度を増減させることが実施されているけれども、そのためには仮想マシン群を管理する管理サーバに負荷が集中する、という課題があった。その理由は、管理サーバ自身が、クライアント端末から仮想マシン群へのアクセス状況を常時監視しなければならないためである。
【０００７】
本発明の目的は、上述した課題、即ち、仮想マシン群の適切な冗長度を決定するためには仮想マシン管理サーバに負荷が集中する、という課題を解決するコンピュータシステムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一実施形態に係るコンピュータシステムは、
自身に設定されたフローエントリに従って、受信パケットの中継処理を行い、また前記フローエントリ毎のトラフィック情報を記録する、通信経路上のスイッチと、
前記スイッチに対して前記フローエントリを設定し、また前記トラフィック情報を前記スイッチから収集するコントローラと、
前記スイッチを介して自身に接続されたクライアント端末のそれぞれに対して、同一のサービスを提供する、複数の仮想マシンから構成された仮想マシン群と、
前記仮想マシン群に対する前記クライアント端末からのトラフィック情報を前記コントローラから収集し、該収集したトラフィック情報に基づいて、前記仮想マシン群を構成する仮想マシンの適切な台数を決定する統合管理サーバと、
を有する。
【０００９】
また本発明の他の実施形態に係るコンピュータシステムの監視方法は、
自身に設定されたフローエントリに従って、受信パケットの中継処理を行い、また前記フローエントリ毎のトラフィック情報を記録する、通信経路上のスイッチと、前記スイッチに対して前記フローエントリを設定し、また前記トラフィック情報を前記スイッチから収集するコントローラと、前記スイッチを介して自身に接続されたクライアント端末のそれぞれに対して、同一のサービスを提供する、複数の仮想マシンから構成された仮想マシン群と、統合管理サーバとを有するコンピュータシステムの監視方法であって、
前記統合管理サーバが、前記仮想マシン群に対する前記クライアント端末からのトラフィック情報を前記コントローラから収集し、
前記統合管理サーバが、前記収集したトラフィック情報に基づいて、前記仮想マシン群を構成する仮想マシンの適切な台数を決定する。
【００１０】
また本発明の他の実施形態に係る統合管理サーバ装置は、
自身に設定されたフローエントリに従って、受信パケットの中継処理を行い、また前記フローエントリ毎のトラフィック情報を記録する、通信経路上のスイッチと、前記スイッチに対して前記フローエントリを設定し、また前記トラフィック情報を前記スイッチから収集するコントローラと、前記スイッチを介して自身に接続されたクライアント端末のそれぞれに対して、同一のサービスを提供する、複数の仮想マシンから構成された仮想マシン群と、統合管理サーバとを有するコンピュータシステムの前記統合管理サーバであって、
前記仮想マシン群に対する前記クライアント端末からのトラフィック情報を前記コントローラから収集する制御部と、
前記収集したトラフィック情報に基づいて、前記仮想マシン群を構成する仮想マシンの適切な台数を決定する判定部と、
を有する。
【発明の効果】
【００１１】
本発明は上述した構成を有するため、仮想マシン群の適切な冗長度を決定することができ、しかも仮想マシン管理サーバに負荷が集中するのを防止することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の第１の実施形態に係るコンピュータシステムの構成例を示す図である。
【図２】本発明の第１の実施形態における統合管理サーバの構成例を示す図である。
【図３】本発明の第１の実施形態における仮想マシン管理サーバの構成例を示す図である。
【図４】本発明の第１の実施形態におけるオープンフローコントローラの構成例を示す図である。
【図５】本発明の第１の実施形態におけるオープンフローコントローラが有するフローテーブルの構成例を示す図である。
【図６】本発明の第１の実施形態におけるオープンフロースイッチの構成例を示す図である。
【図７】本発明の第１の実施形態におけるオープンフロースイッチが有するフローテーブルを構成するフローエントリの構成例を示す図である。
【図８】本発明の第１の実施形態におけるコンピュータシステムにおける動作の一例を示す流れ図である。
【図９】本発明の第１の実施形態における冗長化された４台の仮想マシンの各々が受信するパケット数の一例を示す図である。
【図１０】本発明の第１の実施形態における統合管理サーバが記憶している冗長度基準表の一例を示す図である。
【図１１】本発明の第２の実施形態に係るコンピュータシステムの構成例を示す図である。
【発明を実施するための形態】
【００１３】
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第１の実施形態]
＜本実施形態の特徴＞
本実施形態では、冗長構成を組んだクラウドサービスにおいて、オープンフローコントローラ／スイッチ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ／Ｓｗｉｔｃｈ）によるトラフィック監視技術を利用して、仮想マシン群のためのリソース管理を行う。
【００１４】
データセンターでは、複数の仮想マシンで一つのサービスを提供する冗長構成が採られている。また、データセンターでは、通信方式としてオープンフローコントローラ／スイッチを使用する構成が採られている。このような環境では、オープンフローコントローラ／スイッチの機能によるトラフィック監視を活用することで、サービスを提供する仮想マシン群へのトラフィック情報を把握することができる。また、トラフィック情報から同一のサービスを提供する仮想マシン群の適切な規模、すなわち仮想マシン数を決定することができる。そして、現状の規模が過剰な場合、仮想マシン群を構成する何れかの仮想マシンを停止させ、当該仮想マシンが保持しているリソースを開放することによって、柔軟にリソース管理を実現し、また管理コストを削減することができる。
【００１５】
＜本実施形態が解決しようとする課題＞
データセンターソリューションにおけるリソース管理方式について、特許文献３では、物理サーバ上で動作する仮想マシンの移動を、仮想マシンを管理する仮想マシンモニタと移動先の仮想マシンモニタに指示する仮想マシン管理装置で実施することで、障害回避やシステムの負荷分散等を実現している。しかし、このシステム構成では冗長化構成におけるリソース管理を意識しておらず、効率的にリソースを運用する方式については考慮されていない。多くのクラウドサービスにおいては、データセンター内に複数のサーバ群を抱える必要がある。これはシステムを多くの利用者に対して使用してもらい、また、可用性などのサービス品質を向上させるために、障害発生時の代替機を用意する必要があるためである。これによって、稼働しているにも関わらずに使用されないリソースが大量に発生してしまうという問題がある。
【００１６】
＜本実施形態による解決手段＞
冗長構成を組んでいるクラウドサービスの場合、必ずしもそのリソースを効率よく全て使っているとは限らず、リソースを充分に使えないまま保持している場合が多い。また最近は、オープンフローの仕組みを利用した高度で動的な経路制御によってシステムを運用している場合が多い。そこで本実施形態では、オープンフローの仕組みを更に活用することによって、通信の管理だけでなく、リソースの管理をより効率的に運用する手法を提案する。
【００１７】
ＯＳＰＦやＲＩＰ等のルーティングプロトコルを実装したハードウェアによってパケットの経路制御、送信を行っていた従来の方式とは異なり、設計者や運用者の方針によって柔軟に制御できるようプログラムされたソフトウェアの動作でネットワークの制御を行っていくソフトウェア・デファインド・ネットワーキング（Ｓｏｆｔｗａｒｅ−Ｄｅｆｉｎｅｄ−Ｎｅｔｗｏｒｋｉｎｇ）の思想を実装したオープンフロープロトコルが２００９年に標準化された。
【００１８】
オープンフローは、従来のスイッチング技術における経路計算の機能を主として行うオープンフローコントローラ（ＯｐｅｎＦｌｏｗ  Ｃｏｎｔｒｏｌｌｅｒ：ＯＦＣ）と、フレーム送信機能を行うオープンフロースイッチ（ＯｐｅｎＦｌｏｗ  Ｓｗｉｔｃｈ：ＯＦＳ）とによって構成される。新たな仕組みとして、各オープンフロースイッチ（ＯＦＳ）にてパケット情報を統計でき、オープンフローコントローラはその情報を収集し、全体管理することができる。これによって仮想マシン単位でのトラフィックを監視し、オープンフローコントローラによって全体管理することができる。
【００１９】
本実施形態では、この仕組みを利用することで、トラフィックの少ない、すなわちアクセスの少ないサービスが稼働している仮想マシンを適正数停止させ、冗長化をしているサービスを残りの仮想マシンに集約させることによって、使用しているリソースを開放させる。空いたリソースは次に使用するユーザのために活用され、少ないリソースでも効率的な運用が可能になる。
【００２０】
＜本実施形態の構成＞
図１は、本実施形態に係るコンピュータシステムの構成を示す図である。このコンピュータシステムは、統合管理サーバ（Ｉｎｔｅｇｒａｔｅｄ  Ｍａｎａｇｅｍｅｎｔ）１、仮想マシン管理サーバ（ＶＭ  Ｍａｎａｇｅｍｅｎｔ）２、オープンフローコントローラ３、オープンフロースイッチ群４、物理マシン６〜８、この物理マシン６〜８で共有するディスク装置（Ｓｈａｒｅｄ  Ｄｉｓｋ）９、クライアント端末（Ｃｌｉａｎｔ）１０で構成されている。
【００２１】
物理マシン６〜８は、オープンフロースイッチ群４を通じて外部ネットワーク５に接続されている。また、物理マシン６は、ハイパーバイザ（Ｈｙｐｅｒｖｉｓｏｒ）６０と、このハイパーバイザ６０で管理されている仮想マシン６１〜６ｍとを有し、物理マシン７は、ハイパーバイザ７０と、このハイパーバイザ７０で管理されている仮想マシン７１〜７ｎとを有し、物理マシン８は、ハイパーバイザ８０と、このハイパーバイザ８０で管理されている仮想マシン８１〜８ｏとを有する。
【００２２】
仮想マシン６１〜６ｍ、７１〜７ｎ、８１〜８ｏは、処理能力の向上と耐障害性の向上などを目的として、複数の仮想マシンにより１つのサービスを提供する冗長構成を採っている。例えば、仮想マシン６１と仮想マシン６２とが１つのサービスを提供する１つの冗長構成を採っており、仮想マシン７１と仮想マシン７２とが他の１つのサービスを提供する１つの冗長構成を採っている。同じ物理マシン上の複数の仮想マシンによって冗長構成を採る以外に、異なる物理マシン上の複数の仮想マシンによって冗長構成を採るようにしてもよい。同じ冗長構成を採る複数の仮想マシンは、オープンフロースイッチ群４の少なくとも１つのオープンスイッチおよび外部ネットワーク５を通じて自身に接続されたクライアント端末１０に対して、同じサービスを提供する。図１には１つのクライアント端末１０が描かれているが、一般には複数のクライアント端末１０が存在する。複数の仮想マシンが同じサービスをクライアント端末１０に提供するための具体的な仕組みは任意である。例えば、特許文献１に記載されるようにロードバランサにより複数の仮想マシンに負荷を分散する方法、特許文献４に記載されるように、ＤＮＳ（Ｄｏｍａｉｎ  Ｎａｍｅ  Ｓｙｓｔｅｍ）サーバのラウンドロビン機能を使って複数の仮想マシンに負荷を分散する方法、オープンフロー技術を利用して負荷を分散する方法などがある。
【００２３】
図２は、統合管理サーバ１の構成例を示す図である。この例の統合管理サーバ１は、仮想マシン管理サーバ制御部（ＶＭＭ  Ｃｏｎｔｒｏｌ）１１、オープンフローコントローラ制御部（ＯＦＣ  Ｃｏｎｔｒｏｌ）１２、リソース管理部（Ｒｅｓｏｕｒｃｅ  Ｍａｎａｇｅｍｅｎｔ）１３、リソース効率性判定部（Ｒｅｓｏｕｒｃｅ  Ｅｆｆｉｃｉｅｎｃｙ  Ｃａｌｃｕｌａｔｉｏｎ）１４を有する。統合管理サーバ１は、例えば、ＣＰＵ及び記憶装置を備えるコンピュータとプログラムとによって実現することができる。プログラムは、半導体メモリや磁気ディスク装置等のコンピュータ読み取り可能な記録媒体に記録されて提供され、コンピュータの立ち上げ時等にコンピュータに読み取られ、コンピュータの動作を制御することにより、コンピュータ上に仮想マシン管理サーバ制御部１１、オープンフローコントローラ制御部１２、リソース管理部１３、リソース効率性判定部１４の各機能を実現する。
【００２４】
仮想マシン管理サーバ制御部１１は、仮想マシン管理サーバ２を制御する機能を有する。例えば仮想マシン管理サーバ制御部１１は、物理マシン６〜８で動作中の或る冗長構成を採っている複数の仮想マシンの中から１つの仮想マシンを指定して、その仮想マシンを停止するように仮想マシン管理サーバ２に指令を出す機能を有する。また、例えば仮想マシン管理サーバ制御部１１は、物理マシン６〜８で動作中の或る冗長構成を採っている複数の仮想マシンから構成される仮想マシン群に対して、新たな１つの仮想マシンを追加する指令を出す機能を有する。
【００２５】
リソース管理部１２は、物理マシン６〜８や共有ディスク装置９等のリソースの稼働状況を管理する機能を有する。
【００２６】
オープンフローコントローラ制御部１２は、仮想マシンがクライアント端末１０等から受信した受信パケットによるトラフィック情報をオープンフローコントローラ３から一定周期或いは不定期に収集する機能を有する。またオープンフローコントローラ制御部１２は、仮想マシンの停止或いは追加に伴って、オープンフローコントローラ３に対してフローテーブルの書き換えやオープンフロースイッチ群４へのフローテーブルの更新を行うように指令する機能を有する。
【００２７】
リソース効率性判定部１４は、オープンフローコントローラ制御部１２により収集した各仮想マシンの受信パケットによるトラフィック情報に基づいて、冗長化された仮想マシン群を構成する仮想マシン台数の適正数を算出する機能を有する。またリソース効率性判定部１４は、上記算出した適正数になるように仮想マシン台数を増減するために仮想マシン管理サーバ制御部１１を通じて仮想マシン管理サーバ２に対して仮想マシンの停止および起動を指令する機能を有する。さらにリソース効率性判定部１４は、仮想マシンの起動を指令する前に、リソース管理部１３により管理されている共有ディスク９の稼働状況を確認し、新たに起動する仮想マシンに使用可能な共有ディスク領域が確保できないと判断した場合は、仮想マシンの起動を保留する機能を有する。
【００２８】
図３は、仮想マシン管理サーバ２の構成を示す図である。仮想マシン管理サーバ２は、仮想マシン制御部（ＶＭ  Ｏｐｅｒａｔｉｏｎ）２１、仮想マシン情報管理部（ＶＭ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｍａｎａｇｅｍｅｎｔ）２２、仮想マシン情報データベース（ＶＭ  Ｉｎｆｏｒｍａｔｉｏｎ）２３で構成されている。仮想マシン管理サーバ２は、例えば、ＣＰＵ及び記憶装置を備えるコンピュータとプログラムとによって実現することができる。プログラムは、半導体メモリや磁気ディスク装置等のコンピュータ読み取り可能な記録媒体に記録されて提供され、コンピュータの立ち上げ時等にコンピュータに読み取られ、コンピュータの動作を制御することにより、コンピュータ上に仮想マシン制御部２１、仮想マシン情報管理部２２の各機能を実現する。
【００２９】
仮想マシン情報管理部２２は、物理マシン６〜８上に存在する仮想マシン６１〜６ｍ、７１〜７ｎ、８１〜８ｏに関する情報を仮想マシンデータベース２３に記録して管理する機能を有する。記録する仮想マシンに関する情報は、仮想マシンを構成するＯＳやメモリ、確保している共有ディスク９のサイズ、冗長構成を採る仮想マシンの情報（仮想マシン名や提供するサービス名など）などである。また仮想マシン情報管理部２２は、統合管理サーバ１からの要求に応じて、仮想マシンデータベース２３に記録されている情報を統合管理サーバ１へ送信する機能を有する。
【００３０】
仮想マシン制御部２１は、統合管理サーバ１からの要求に応じて、物理マシン６〜８上に存在する仮想マシンの停止や新たな仮想マシンの起動等を行う機能を有する。
【００３１】
即ち、仮想マシン管理サーバ１１は、仮想マシン情報管理部１１２および仮想マシン制御部１１１を使用して、統合管理サーバ１と連携をして、仮想マシン情報の送信や、仮想マシンの起動／停止処理を行う。
【００３２】
図４はオープンフローコントローラ３の構成例を示す図である。オープンフローコントローラ３は、スイッチ制御部（Ｓｗｉｔｃｈ  Ｃｏｎｔｒｏｌ）３１、フロー管理部（Ｆｌｏｗ  Ｍａｎａｇｅｍｅｎｔ）３２、フロー生成部（Ｆｌｏｗ  Ｇｅｎｅｒａｔｉｏｎ）３３、トポロジ情報（Ｔｏｐｏｌｏｇｙ  Ｉｎｆｏｒｍａｔｉｏｎ）３４、フローテーブル（Ｆｌｏｗ  Ｔａｂｌｅ）３５で構成されている。オープンフローコントローラ３は、例えば、ＣＰＵ及び記憶装置を備えるコンピュータとプログラムとによって実現することができる。プログラムは、半導体メモリや磁気ディスク装置等のコンピュータ読み取り可能な記録媒体に記録されて提供され、コンピュータの立ち上げ時等にコンピュータに読み取られ、コンピュータの動作を制御することにより、コンピュータ上にスイッチ制御部３１、フロー管理部３２、フロー生成部３３の各機能を実現する。
【００３３】
スイッチ制御部３１は、フローテーブル３５に従ってスイッチやノード毎にフロー（ルール＋アクション）の設定又は削除を行う。ここで、スイッチは例えばオープンフロースイッチ群４であり、ノードは例えば物理マシン６〜８上の仮想マシン６１〜６ｍ等である。オープンフロースイッチ群４の各オープンフロースイッチは、設定されたフローを参照し、受信パケットのヘッダ情報に応じたルールに対応するアクション（例えばパケットデータの中継や破棄）を実行する。
【００３４】
またスイッチ制御部３１は、フロー毎の統計情報をオープンフロースイッチ群４から収集する機能を有する。具体的には、スイッチ制御部３１は、オープンフロースイッチ群４を構成する各オープンフロースイッチから送信される統計情報を、フロー毎（フロー識別子３５１毎）にフローテーブル３５に記録する。さらにスイッチ制御部３１は、統合管理サーバ１からの要求に従って、収集したフロー毎の統計情報を統合管理サーバ１に送信する機能を有する。
【００３５】
図５はオープンフローコントローラ３が保持するフローテーブル３５の構成の一例を示す図である。フローテーブル３５には、フローを特定するためのフロー識別子３５１、当該フローの設定対象（スイッチやノード）を識別する識別子（対象装置３５２）、経路情報３５３、ルール３５４、アクション情報３５５、設定情報３５６、統計情報３５７が対応付けられて設定される。フローテーブル３５には、オープンフローコントローラ３の制御対象となる全てのスイッチやノードに対するフロー（ルール３５４＋アクション情報３５５）が設定される。
【００３６】
ルール３５４には、例えば、ＴＣＰ／ＩＰのパケットデータにおけるヘッダ情報に含まれる、ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルのレイヤ１からレイヤ４のアドレスや識別子の組合せが規定される。
【００３７】
アクション情報３５５には、例えばＴＣＰ／ＩＰのパケットデータを処理する方法が規定される。例えば、受信パケットデータを中継するか否かを示す情報や、中継する場合はその送信先が設定される。
【００３８】
経路情報３５３は、フロー（ルール３５４＋アクション情報３５５）を適用する経路を特定する情報である。これは、後述する通信経路情報に対応付けられた識別子である。
【００３９】
設定情報３５６は、フロー（ルール３５４＋アクション情報３５５）が現在設定されているか否かを示す情報である。設定情報３５６は、対象装置３５２や経路情報３５３に対応付けられているため、通信経路毎にフローが設定されているか否かを確認できるとともに、通信経路上のスイッチやノード毎にフローが設定されているか否かを確認することができる。また、設定情報３５６は、生成されたフローが使用可能な状態（有効）か使用不可能な状態（無効）かを示す情報を含む。オープンフローコントローラ３は、設定情報３５６を参照し、有効なフローのみをオープンフロースイッチ群４に設定し、無効なフローは設定しない。
【００４０】
統計情報３５７は、スイッチ制御部３１がオープンフロースイッチ群４から収集した統計情報である。
【００４１】
フロー管理部３２は、フローテーブル３５を参照して、オープンフロースイッチから通知されたファーストパケットのヘッダ情報に対応するフロー（ルール３５４＋アクション情報３５５）を抽出し、スイッチ制御部３１に通知する。ここで、ファーストパケットとは、オープンフロースイッチで受信されるパケットのうち、当該オープンフロースイッチに設定されたフローに適合しないヘッダ情報を持つパケットを示す。オープンフロースイッチからファーストパケットの通知とともに送信されるヘッダ情報は、スイッチの受信ポート、ＶＬＡＮ番号、送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、Ｅｔｈｅｒｎｅｔ（登録商標）タイプ情報（上位プロトコルの種類。例示：ＩＰ、ＡＲＰ、ＩＰＸ等を識別する識別子）、送信元ＩＰアドレス、宛先ＩＰアドレス、Ｌ４プロトコル情報（上位プロトコルの種類。例示：ＩＰ、ＡＲＰ、ＩＰＸ等を識別する識別子）、送信元ＴＣＰ／ＩＰポート番号、宛先ＴＣＰ／ＩＰポート番号を含む。フロー管理部３２は、通知されたヘッダ情報内の送信元ＭＡＣアドレス、宛先ＭＡＣアドレス、送信元ＩＰアドレス、宛先ＩＰアドレスに基づいて、当該オープンフロースイッチが受信したファーストパケットの送信元と送信先の装置を特定する。そして、フロー管理部３２は、特定した装置間の通信経路やトポロジを参照してオープンフロースイッチの処理すべきアクションを決定し（アクションが中継動作の場合は送信先の決定を含む）、当該オープンフロースイッチに対応するフローをフローテーブル３５から抽出する。
【００４２】
フロー管理部３２は、オープンフロースイッチから通知されたヘッダ情報に基づいて特定した装置間の通信に関するフローがフローテーブル３５に存在しない場合、フロー生成部３３にフローの生成を指示してもよい。フロー管理部３２は、フロー生成部３３によって生成されたフロー（ルール３５４＋アクション情報３５５）にフロー識別子３５１をつけてフローテーブル３５に記録する。この際、フローを適用する通信経路の識別子（経路情報３５３）やフローを適用するスイッチやノードの識別子（対象装置３５２）が、フロー（ルール３５４＋アクション情報３５５）に付されて記録される。その後、フロー管理部３２は、新たに生成されたフローをオープンフロースイッチに設定するフローとしてスイッチ制御部３１に通知する。
【００４３】
スイッチ制御部３１は、フロー管理部３２によってフローテーブル３５から抽出されたフローを、ファーストパケットの通知元であるオープンフロースイッチに設定する。
【００４４】
またフロー管理部３２は、統合管理サーバ１のオープンフローコントローラ制御部１２からの指令に従って、フローテーブルの書き換えやオープンフロースイッチ群４へのフローテーブルの更新を行う機能を有する。
【００４５】
フロー生成部３３は、トポロジ情報３４を用いて通信経路を算出し、算出結果を通信経路情報として記憶装置に記録する。ここでは、通信経路の端点となるノードと、通信経路上のスイッチ及びノードが設定される。また、フロー生成部３３は、通信経路情報に基づいて通信経路上のスイッチやノードに設定するフロー（ルール３５４＋アクション情報３５５）を設定する。
【００４６】
トポロジ情報３４は、オープンフロースイッチやノード、外部ネットワーク等の接続状況に関する情報を含む。具体的には、トポロジ情報として、スイッチやノードを特定する装置識別子に、当該装置のポート数やポート接続先情報が対応付けられて記憶装置に記録される。ポート接続先情報は、接続相手を特定する接続種別（スイッチ／ノード／外部ネットワーク）や接続先を特定する情報（スイッチの場合はスイッチＩＤ、ノードの場合はＭＡＣアドレス、外部ネットワークの場合は外部ネットワークＩＤ）が含まれる。
【００４７】
通信経路情報は、通信経路を特定するための情報である。具体的には、通信経路情報として、ノード群、あるいは、外部ネットワークインタフェースを端点として指定する端点情報と、通過するオープンフロースイッチとポートの対群を指定する通過スイッチ情報とが対応付けられて記憶装置に記録される。例えば、通信経路が仮想マシン６１とクライアント端末１０とを接続する経路である場合、仮想マシン６１とクライアント端末１０のそれぞれのＭＡＣアドレスが端点情報として記録される。通過スイッチ情報は、端点情報で示される端点間の通信経路上に設けられるオープンフロースイッチの識別子を含む。また、通過スイッチ情報は、オープンフロースイッチに設定されるフローと当該オープンフロースイッチとを対応付けるために情報を含んでもよい。
【００４８】
図６は、オープンフロースイッチ群４を構成する１つのオープンフロースイッチ４１の構成例を示す図である。オープンフロースイッチ４１は、転送管理部（Ｔｒａｎｓｆａｒ  Ｍａｎａｇｅｍｅｎｔ）４１１、フロー管理部（Ｆｌｏｗ  Ｍａｎａｇｅｍｅｎｔ）４１２、フローテーブル（Ｆｌｏｗ  Ｔａｂｌｅ）４１３で構成されている。オープンフロースイッチ４１は、例えば、ＣＰＵ及び記憶装置を備えるコンピュータとプログラムとによって実現することができる。プログラムは、半導体メモリや磁気ディスク装置等のコンピュータ読み取り可能な記録媒体に記録されて提供され、コンピュータの立ち上げ時等にコンピュータに読み取られ、コンピュータの動作を制御することにより、コンピュータ上に転送管理部４１１、フロー管理部４１２の各機能を実現する。
【００４９】
フローテーブル４１３は、１以上のフローエントリで構成される。１つのフローエントリは、図７に示すように、フローエントリＩＤ４１３０、ルール（Ｈｅａｄｅｒ  Ｆｉｅｌｄ）４１３１、アクション（Ａｃｔｉｏｎ）４１３２、統計情報（Ｃｏｕｎｔｅｒ）４１３３で構成される。ルール４１３１では、対象とする受信パケットの条件がレイヤ１からレイヤ４までの様々な情報を使用して定義される。アクション４１３２では、受信パケットに対する処理の内容が定義される。統計情報４１３３では、当該フローエントリに従って流れるパケットの数やバイト数などが記録される。
【００５０】
フロー管理部４１２は、オープンフローコントローラ３から取得したフロー（ルールとアクション）をフローテーブル４１３のフローエントリに設定する機能を有する。またフロー管理部４１２は、転送管理部４１１によって受信された受信パケットのヘッダ情報が、フローテーブル４１３に記録されたルールに適合する場合、当該ルールに対応するアクション情報を転送処理部４１１に通知する機能を有する。一方、フロー管理部４１２は、転送管理部４１１によって受信された受信パケットのヘッダ情報が、フローテーブル４１３に記録されたルールに適合しない場合、受信パケットをファーストパケットと認識し、当該ファーストパケットを受信したことをオープンフローコントローラ３に通知するとともに、当該ヘッダ情報をオープンフローコントローラ３に送信する。
【００５１】
またフロー管理部４１２は、或るフローエントリに従ってパケットが処理された場合、当該フローエントリの統計情報４１３３を最新の状態に更新する機能を有する。また、フロー管理部４１２は、オープンフローコントローラ３からの要求に応じて、フローテーブル４１３から統計情報１４３３を読み出してオープンフローコントローラ３に送信する機能を有する。
【００５２】
転送処理部４１１は、受信パケットのヘッダ情報に応じた転送処理を行う機能を有する。具体的には、転送処理部４１１は、受信したパケットデータからヘッダ情報を抽出し、フロー管理部４１２に通知する。それに応答してフロー管理部４１２からアクション情報を受け取ると、アクション情報に従って処理を行う。例えば、転送処理部４１１は、アクション情報に示された転送先のノードに受信パケットデータを転送する。さらに転送処理部４１１は、統計情報４１３３を更新するために、パケットのバイト数をフロー管理部４１２へ報告する。
【００５３】
例えば、フローテーブル４１３に次のようなフローエントリ、即ち、ルール４１３１に、ＭＡＣ送信元アドレス（Ｌ２）として“Ａ１”、ＩＰ宛先アドレス（Ｌ３）として“Ｂ１”、プロトコルとして“ｈｔｔｐ”、宛先ポート番号（Ｌ４）として“Ｃ１”がそれぞれ記述され、アクション１４３２に、“物理サーバ６の仮想マシン６１に中継”が記述され、統計情報１４３３に、受信パケット数として“１”、受信バイト数として“１ＫＢ”が記録されているフローエントリが存在しているとする。このとき、オープンフロースイッチ１４は、ＭＡＣ送信元アドレス（Ｌ２）が“Ａ１”、ＩＰ宛先アドレス（Ｌ３）が“Ｂ１”、プロトコルが“ｈｔｔｐ”、宛先ポート番号（Ｌ４）が“Ｃ１”であるパケットデータ（バイト数は１ＫＢ）を受信すると、上記フローエントリのルール４１３１に一致していると判断し、受信したパケットデータを仮想マシン６１に転送し、統計情報４１３３の受信パケット数を“２”、受信バイト数を“２ＫＢ”にそれぞれ更新する。
【００５４】
＜本実施形態の動作の説明＞
図８は、本実施形態のコンピュータシステムにおいて、トラフィック情報とストレージ情報を取得し、リソース効率性を計算してから、仮想マシンの起動／停止を処理する流れを示している。
【００５５】
図８を参照すると、オープンフローコントローラ３は、一定期間毎に、オープンフロースイッチ群４の各オープンフロースイッチ４１に対して、統計情報を送信するように要求する（ステップＳ１）。各オープンフロースイッチ４１は、この要求に従って、各フローエントリ４１からフローＩＤ４１３０と統計情報４１３３のペアを読み出してオープンフローコントローラ３へ送信し、読み出しの終えた統計情報４１３３をクリアする（ステップＳ１）。フローＩＤ４１３３と統計情報４１３３のペアを受信したオープンフローコントローラ３は、フローテーブル３５におけるフローＩＤ４１３３に一致するフロー識別子３５１に対応する統計情報３５７に、受信した統計情報４１３３を累積する。これにより、統計情報が仮想マシンの受信した受信パケット数である場合、オープンフローコントローラ３において、各仮想マシンの受信パケット数が集計されることになる。
【００５６】
統合管理サーバ１は、一定期間毎に、オープンフローコントローラ３に対して、統計情報を送信するように要求する（ステップＳ３）。オープンフロースイッチ３は、この要求に従って、フローテーブル３５からフロー識別子３５１と統計情報３５７のペアを読み出して統合管理サーバ１へ送信し、読み出しの終えた統計情報３５７をクリアする（ステップＳ４）。統合管理サーバ１は、受信したフロー識別子３５１と統計情報３５７のペアを記憶装置に記憶する。これにより、統計情報が仮想マシンの受信したパケット数である場合、統合管理サーバ１は、過去一定期間における各仮想マシンの受信パケット数を得ることができる。
【００５７】
一般に、オープンフロースイッチ群４の中には、クライアント端末１０から仮想マシン群（仮想マシン６１等）へ送るパケットが通過するオープンフロースイッチがある一方、そうでないオープンフロースイッチが存在する。このため、実際には、仮想マシン群が受信するパケット数によるトラフィック情報だけを選別して収集するか、あるいは全部収集した後、該当するものだけを抽出する必要がある。そのための方法としては、例えば、以下のａ、ｂ、ｃに示すようは方法がある。
（ａ）全てのオープンフロースイッチのトラフィック情報を統合管理サーバ１が収集した後、仮想マシン群が受信する受信パケットによるトラフィック情報だけを統合管理サーバ１において選別する方法。具体的には、統合管理サーバ１は、オープンフローコントローラ３を通じて全てのオープンフロースイッチから全フロー情報（全トラフィック情報）を収集した後、統合管理サーバ１自身で管理している仮想マシンのＩＰアドレスリストを参照し、受信アドレスが仮想マシン群のものに該当するもののみを選別する。
（ｂ）全てのオープンフロースイッチのうち、仮想マシン群が受信する受信パケットを中継するオープンフロースイッチだけがそのトラフィック情報を統計情報として収集する方法。具体的には、統合管理サーバ１で管理している仮想マシンのＩＰアドレスリストを参照し、そのアドレスが含まれるフローテーブルを持っているオープンフロースイッチのみ、そのトラフィック情報を収集する。
（ｃ）全てのオープンフロースイッチのトラフィック情報をオープンフローコントローラ３が収集した後、仮想マシン群が受信する受信パケットによるトラフィック情報だけをオープンフローコントローラ３において選別して統合管理サーバ１へ提供する方法。具体的には、オープンフローコントローラ３は、全てのオープンフロースイッチから全フロー情報（全トラフィック情報）を収集した後、オープンフローコントローラ３自身が保有する仮想マシンのＩＰアドレスリストを参照し、受信アドレスが仮想マシン群のものに該当するもののみを選別して、統合管理サーバ１へ提供する。
【００５８】
また統合管理サーバ１は、共有ディスク装置９に対して現在の稼働状況と割当て可能な空き領域の情報を要求する（ステップＳ５）。共有ディスク装置９は、この要求に従って、稼働状況と割当て可能な空き領域の情報を送信する（ステップＳ６）。統合管理サーバ１は、受信した共有ディスク装置９の稼働状況と割当て可能な空き領域の情報を記憶装置に記憶する。
【００５９】
その後、統合管理サーバ１は、ステップＳ４で受信した各仮想マシンの過去一定期間における各仮想マシンの受信パケット数に基づいて、冗長化された仮想マシン群の冗長度をリソースの効率性の観点で評価する（ステップＳ７）。具体的には、統合管理サーバ１は、冗長化された仮想マシン群毎に、以下のようにして評価を行う。
【００６０】
まず、統合管理サーバ１は、冗長化された仮想マシン群の１仮想マシン当たりの受信パケット数の平均値を算出する。例えば、仮想マシンＶＭ１、仮想マシンＶＭ２、仮想マシンＶＭ３、仮想マシンＶＭ４の合計４台の仮想マシンから構成される仮想マシン群があり、その各仮想マシンＶＭ１〜ＶＭ４が過去一定期間に受信したパケット数が図９の表１４１に示すものであったとすると、１仮想マシン当たりの受信パケット数の平均値は、（１０＋１５＋１０＋２０）／４＝１３．７５である。なお、図９の表１４１には、各仮想マシンの受信パケット数に加えて、各仮想マシンのＣＰＵ数とメモリ容量とが記載されている。
【００６１】
次に、統合管理サーバ１は、冗長化された仮想マシン群における１仮想マシン当たりの受信パケット数と予め設定された冗長度基準表から、当該冗長化された仮想マシン群の適切な冗長度である仮想マシン数を算出する。図１０は冗長度基準表１４２の一例を示す。この冗長度基準表１４２には、サービスの種類毎に、そのサービスを提供する冗長化された仮想マシン群の適切なマシン数が設定されている。例えば、冗長度基準表１４２の２〜４行目のエントリは、サービスＡを提供する冗長化された仮想マシン数の適切なマシン数は、受信パケット数の平均値が１０未満であれば２台、１５未満であれば３台、１５以上であれば４台、であることを表している。従って、統合管理サーバ１は、仮想マシンＶＭ１〜ＶＭ４がサービスＡを提供する場合、上記平均値１３．７５により冗長度基準表１４２を参照すると、適切な仮想マシンの台数は３台と決定する。
【００６２】
次に、統合管理サーバ１は、冗長化された仮想マシン群の現在の仮想マシン数と上記決定した適切な仮想マシン数とを比較し、仮想マシン数の過不足数を算出する。そして、統合管理サーバ１は、仮想マシン数の過不足数が０であれば、現状の冗長度は適切であると決定する。また統合管理サーバ１は、現在の仮想マシン数が適切な仮想マシン数より多ければ、現状の冗長度は過大であると決定し、過分な台数の仮想マシンを停止させることにより冗長度を小さくする制御を行う。また統合管理サーバ１は、現在の仮想マシン数が適切な仮想マシン数より少なければ、現状の冗長度は過小であると決定し、不足する台数の仮想マシン数を新たに起動することにより冗長度を大きくする制御を行う。
【００６３】
上述した仮想マシンＶＭ１〜ＶＭ４から構成される仮想マシン群の例では、現在の仮想マシン数は４台、適切なマシン数は３台であり、１台分の仮想マシンが過剰である。そのため、統合管理サーバ１は、仮想マシンＶＭ１〜ＶＭ４のうちの何れか１台を停止させることになる。統合管理サーバ１は、停止させる仮想マシンをランダムに選択しても良いし、一定の基準で選択しても良い。例えば、統合管理サーバ１は、消費電力量の最も多い或いはその逆に最も少ない仮想マシンを選択したり、性能の最も高い或いはその逆に最も低い仮想マシンを選択したり、受信パケット数の最も多い或いはその逆に最も少ない仮想マシンを選択して良い。
【００６４】
また統合管理サーバ１は、仮想マシンを新たに起動することを決定した場合、ステップＳ６で取得した共有ディスク装置９の割当て可能な空き領域に基づいて、起動する仮想マシンのための記憶領域を共有ディスク装置９から確保できるか否かを決定する。そして、統合管理サーバ１は、確保できなければ仮想マシンの起動は行わない。
【００６５】
続いて、図８を参照して、仮想マシンの起動／停止を処理する流れについて説明する。仮想マシンの起動／停止の処理は、以下のように、統合管理サーバ１→仮想マシン管理サーバ２、ハイパーバイザ６０、７０、８０という流れで実行される。
【００６６】
統合管理サーバ１は、仮想マシンの起動／停止を行う場合、仮想マシン管理サーバ２に対して、仮想マシンの起動／停止を指令する（ステップＳ８）。統合管理サーバ１は、仮想マシンの起動を行う場合、上記指令時に、起動する仮想マシンが属する冗長化された仮想マシン群を特定する情報（例えばサービス名）を仮想マシン管理サーバ２に通知する。また統合管理サーバ１は、仮想マシンの停止を行う場合、上記指令時に、停止させる仮想マシンを指定する情報（例えば仮想マシン名）を仮想マシン管理サーバ２に通知する。
【００６７】
仮想マシン管理サーバ２は、統合管理サーバ１から上記指令を受信すると、物理マシン６〜８上のハイパーバイザに対して、仮想マシンの起動／停止を指令する（ステップＳ９）。仮想マシン管理サーバ２は、仮想マシンの起動を行う場合、ハイパーバイザ６０、７０、８０から仮想マシンを新たに起動するハイパーバイザを選択し、この選択したハイパーバイザに対して、仮想マシンの起動を指令する。また仮想マシン管理サーバ２は、仮想マシンを起動する場合、起動する仮想マシンで提供するサービスを特定する情報（例えばサービス名）をハイパーバイザに通知する。一方、仮想マシン管理サーバ２は、仮想マシンの停止を行う場合、停止させる仮想マシンが稼働しているハイパーバイザに対して、仮想マシンの停止を指令する。また仮想マシン管理サーバ２は、仮想マシンを停止する場合、停止させる仮想マシンを指定する情報（例えば仮想マシン名）をハイパーバイザに通知する。
【００６８】
ハイパーバイザ６０、７０、８０は、仮想マシン管理サーバ２から上記指令を受信すると、仮想マシンの起動／停止の処理を実行し、その完了を仮想マシン管理サーバ２に通知する（ステップＳ１０）。仮想マシン管理サーバ２は、ハイパーバイザ６０、７０、８０から上記完了の通知を受信すると、統合管理サーバ１に対して仮想マシンの起動／停止の完了を通知する（ステップＳ１１）。また仮想マシン管理サーバ２は、仮想マシンを起動した場合、起動した仮想マシンを、統合管理サーバ１から通知された冗長化された仮想マシン群に組み入れる。
【００６９】
統合管理サーバ１は、仮想マシン管理サーバ２から仮想マシンの起動／停止の完了の通知を受信すると、仮想マシンの起動／停止によってアクセス可能／不可能になった仮想マシンへの経路変更を実施させ、フローテーブルの書き換え処理が必要なオープンフロースイッチに対して、変更後のフローテーブルを送信する。即ち、以下のような処理を実施する。
【００７０】
統合管理サーバ１は、オープンフローコントローラ３に対して、フローテーブルの書き換えを指令する（ステップＳ１２）。具体的には、統合管理サーバ１は、新たな仮想マシンが起動された場合、新たな仮想マシンの起動によって変更となったルーティングの変更情報をオープンフローコントローラ３へ送り、起動した仮想マシンが正しく通信できるよう、変更がある経路に該当するオープンフロースイッチ４１へフローテーブルの更新を行うよう指示する。また、統合管理サーバ１は、仮想マシンが停止された場合、統合管理サーバ１は、仮想マシンの停止によって変更となったルーティングの変更情報をオープンフローコントローラへ送り、停止した仮想マシンに対して通信が行われないよう、変更がある経路に該当するオープンフロースイッチ４１へフローテーブルの更新を行うよう指示する。
【００７１】
オープンフローコントローラ３は、統合管理サーバ１から上記指令を受信すると、オープンフロースイッチ群４に対して、フローテーブルの書き換えを指令する（ステップＳ１３）。具体的には、オープンフローコントローラ３は、新たな仮想マシンが起動された場合および仮想マシンが停止された場合、実際のフロー転送処理を行うオープンフロースイッチ４１に対して、フローテーブルの変更（送信元アドレス、送信先アドレス、送出ポート番号等）通知をする。
【００７２】
オープンフロースイッチ群４のオープンフロースイッチ４１は、オープンフローコントローラ３から上記指令を受信すると、自身のフローテーブルの書き換えを実施し、その完了をオープンフローコントローラ３に通知する（ステップＳ１４）。
【００７３】
オープンフローコントローラ３は、オープンフロースイッチ群４のオープンフロースイッチ４１から上記完了の通知を受信すると、統合管理サーバ１に対して、フローテーブルの書き換え完了を通知する（ステップＳ１５）。
【００７４】
以上の処理を一定期間毎に実施することによって、リソースの稼働状況とサービス利用頻度を自動的に収集し、管理することで、今まで冗長構成において、無駄に領域確保していたストレージを不使用時には解放することができる。そのため、必要以上にストレージなどのリソースを保持しておく必要がなく、効率的に運用を行い、それに伴い、運用コストを低減することができる。
【００７５】
＜本実施形態の効果＞
以上説明したように本実施形態によれば、需要変化に応じて仮想マシン群の冗長度を増減させることができ、しかも仮想マシン管理サーバに負荷が集中するのを防止することができる。
【００７６】
その理由は、自身に設定されたフローエントリに従って受信パケットの中継処理を行うオープンフロースイッチ群４でフローエントリ毎のトラフィック情報を記録し、オープンフローコントローラ３が上記トラフィック情報をオープンフロースイッチ群４から収集し、統合管理サーバ１が、冗長化された仮想マシン群に対するクライアント端末１０からのトラフィック情報をオープンフローコントローラ３から収集し、この収集したトラフィック情報に基づいて、冗長化された仮想マシン群の冗長度の評価を行うためである。
【００７７】
次に本発明の第２の実施形態に係るコンピュータシステムについて説明する。
【００７８】
図１１を参照すると、本発明の第２の実施形態に係るコンピュータシステムは、統合管理サーバ１とオープンフローコントローラ２とオープンフロースイッチ４１と仮想マシン群６００とクライアント端末１０とから構成されている。
【００７９】
スイッチ４１は、仮想マシン群とクライアント端末１０との間の通信経路上に存在し、自身に設定されたフローエントリに従って、受信パケットの中継処理を行う機能と、フローエントリ毎のトラフィック情報を記録する機能とを有する。
【００８０】
コントローラ２は、スイッチ４１に対して上記フローエントリを設定する機能と、また上記トラフィック情報をスイッチ４１から収集する機能とを有する。
【００８１】
仮想マシン群６００は、スイッチ４１を介して自身に接続されたクライアント端末１０のそれぞれに対して、同一のサービスを提供する、複数の仮想マシンから構成されている。
【００８２】
統合管理サーバ１は、仮想マシン群６００に対するクライアント端末１０からのトラフィック情報をコントローラ２から収集する機能と、収集したトラフィック情報に基づいて、仮想マシン群６００を構成する仮想マシンの適切な台数を決定する機能とを有する。
【００８３】
次に本実施形態に係るコンピュータシステムの動作を説明する。
【００８４】
クライアント端末１０から仮想マシン群６００に対してサービスの提供を要求するパケットデータが送信されると、通信経路上のスイッチ４１が、自身に設定されたフローエントリに従って、パケットの中継処理を行い、また上記フローエントリ毎のトラフィック情報を記録する。コントローラ２は、例えば定期的に、トラフィック情報をスイッチ４１から収集して自身の記憶装置に保存する。
【００８５】
統合管理サーバ１は、定期的または不定期に、仮想マシン群６００に対するクライアント端末１０からのトラフィック情報をコントローラ２から収集する。そして、統合管理サーバ１は、収集したトラフィック情報に基づいて、仮想マシン群６００を構成する仮想マシンの適切な台数を決定する。
【００８６】
このように本実施形態によれば、仮想マシン群の適切な冗長度を決定することができ、しかも仮想マシンを管理する図示しない仮想マシン管理サーバに負荷が集中するのを防止することができる。
【００８７】
その理由は、自身に設定されたフローエントリに従って受信パケットの中継処理を行うスイッチ４１でフローエントリ毎のトラフィック情報を記録し、コントローラ３が上記トラフィック情報をスイッチ４１から収集し、統合管理サーバ１が、仮想マシン群６００に対するクライアント端末１０からのトラフィック情報をコントローラ２から収集し、この収集したトラフィック情報に基づいて、仮想マシン群６００を構成する仮想マシンの適切な台数を決定するためである。
【産業上の利用可能性】
【００８８】
本発明は、冗長化された仮想マシン群によりサービスを提供するコンピュータシステム全般に利用できる。
【符号の説明】
【００８９】
１…統合管理サーバ
２…仮想マシン管理サーバ
３…オープンフローコントローラ
４…オープンフロースイッチ群
５…外部ネットワーク
６、７、８…物理マシン
９…共有ディスク装置
１０…クライアント装置
６１〜６ｍ、７１〜７ｎ、８１〜８ｏ…仮想マシン
【図１】
2017045301.tif 000003
【図２】
2017045301.tif 000004
【図３】
2017045301.tif 000005
【図４】
2017045301.tif 000006
【図５】
2017045301.tif 000007
【図６】
2017045301.tif 000008
【図７】
2017045301.tif 000009
【図８】
2017045301.tif 000010
【図９】
2017045301.tif 000011
【図１０】
2017045301.tif 000012
【図１１】
2017045301.tif 000013