(57)【特許請求の範囲】
【請求項１】
１つ以上の計算装置において仮想計算機を実行するシステムであって、
複数のホスト計算装置と、
前記ホスト計算装置と通信して連結された管理装置とを備え、
前記管理装置は、
前記ホスト計算装置によってホストを務められる仮想計算機（ＶＭ）により実行されるソフトウェア・アプリケーションの１つ以上のインスタンスの性能を表すアプリケーション性能メトリクを決定し、
前記アプリケーション性能メトリクに基づいて伸縮性動作を決定し、前記伸縮性動作は、スケールアップ動作、スケールダウン動作、展開動作、及び破壊動作の内の１つ以上を含み、そして
１つ以上の仮想計算機に対してターゲット・ホスト計算装置による前記決定された伸縮性動作を適用するために、前記決定された伸縮性動作を前記複数のホスト計算装置の前記ターゲット・ホスト計算装置に送信し、前記仮想計算機は、作業仮想計算機の作業プール及び作動可能仮想計算機の作動可能プールの内に配置されており、前記作業プールは実行する仮想計算機を含み、前記作動可能なプールは実行しない仮想計算機を含み、
前記ターゲット・ホスト計算装置は、前記スケールアップ動作を受信するのに応じて、１つ以上の仮想計算機を、前記作動可能プールから前記作業プールに起動させ、
前記ターゲット・ホスト計算装置は、前記スケールダウン動作を受信するのに応じて、１つ以上の仮想計算機を、前記作業プールから前記作動可能プールに非能動化させ、
前記ターゲット・ホスト計算装置は、前記展開動作を受信するのに応じて、１つ以上の追加の仮想計算機を前記作動可能プールに展開させ、
前記ターゲット・ホスト計算装置は、前記破壊動作を受信するのに応じて、前記作動可能プールの１つ以上の仮想計算機を破壊するように構成されたシステム。
【請求項２】
前記管理装置が、前記展開動作を前記ターゲット・ホスト計算装置に送信することによって前記伸縮性動作を送信するように構成され、前記ターゲット・ホスト計算装置は、前記展開動作を受信するのに応じて、追加の１つ以上の仮想計算機を生成するために既存の仮想計算機をクローンする請求項１記載のシステム。
【請求項３】
前記スケールアップ動作が、起動させる仮想計算機の目標数に関連し、そして前記管理装置が、
仮想計算機の前記目標数及び前記作動可能プールにおける現在の作動可能仮想計算機の数に基づいて、作動可能仮想計算機の予測される数を算出し、そして
作動可能仮想計算機の前記予測される数が作動可能仮想計算機の所定の最小数より少ないときに、展開動作を前記複数のホスト計算装置の内の１つ以上のホスト計算装置に送信するように更に構成されて、前記１つ以上のホスト計算装置は、前記展開動作に応答して仮想計算機を前記作動可能プールに加える請求項１記載のシステム。
【請求項４】
前記スケールダウン動作が、非能動化させる仮想計算機の目標数に関連し、そして前記管理装置が、
仮想計算機の前記目標数及び前記作動可能プールにおける現在の作動可能仮想計算機の数に基づいて、作動可能仮想計算機の予測数を算出し、そして
作動可能仮想計算機の前記予測数が作動可能仮想計算機の所定の最大数より多いときに、前記破壊動作を前記複数のホスト計算装置の内の１つ以上のホスト計算装置に送信するように更に構成され、前記１つ以上のホスト計算装置は、前記破壊動作に応答して仮想計算機を前記作動可能プールから除去する請求項１記載のシステム。
【請求項５】
前記管理装置が、複数のアプリケーション・モニタリング・サービスに対応する複数のインタフェース構成要素を含むアプリケーション・モニタリング構成要素を実行し、そして前記管理装置は、
前記複数のアプリケーション・モニタリング・サービスの１つのアプリケーション・モニタリング・サービスからアプリケーション性能メトリクを受信し、そして
アプリケーション・モニタリング・サービスから受信された前記アプリケーション性能メトリクが所定の閾値を超えると決定することに基づいて、前記伸縮性動作を決定するように構成された請求項１記載のシステム。
【請求項６】
前記伸縮性動作が、起動させる仮想計算機の目標数と関連したスケールアップ動作であり、そして前記管理装置が、
仮想計算機の前記目標数及び現在の作業仮想計算機の数に基づいて作業仮想計算機の予測数を算出し、そして
作業仮想計算機の前記予測数が作業仮想計算機の所定の最大数より多いときに、仮想計算機の前記目標数を減らすように更に構成された請求項１記載のシステム。
【請求項７】
ソフトウェア・アプリケーションの１つ以上のインスタンスの性能を表すアプリケーション性能メトリクに基づいて、管理装置によって伸縮性動作を決定する段階であって、前記伸縮性動作はスケールアップ動作、スケールダウン動作、展開動作及び破壊動作の内の１つ以上を含む段階と、
ホスト計算装置の性能を表すホスト性能メトリクスに基づいて、前記管理装置によって複数のホスト計算装置から１つ以上のターゲット・ホスト計算装置を選択する段階と、
前記管理装置によって前記決定された伸縮性動作を前記選択された１つ以上のターゲット・ホスト計算装置に送信する段階と、
を含む１つ以上の計算装置において仮想計算機を実行する方法であって
前記送信する段階では、前記選択されたターゲット・ホスト計算装置は、前記決定された伸縮性動作を１つ以上の仮想計算機に適用することによって前記伸縮性動作に基づいて１つ以上のソフトウェア・アプリケーション・インスタンスの動作を制御し、
前記仮想計算機は、作業仮想計算機の作業プール及び作動可能仮想計算機の作動可能プールの内に配置されており、前記作業プールは実行する仮想計算機を含み、前記作動可能なプールは実行しない仮想計算機を含み、
前記ターゲット・ホスト計算装置は、前記スケールアップ動作を受信するのに応じて、１つ以上の仮想計算機を、前記作動可能プールから前記作業プールに起動させ、
前記ターゲット・ホスト計算装置は、前記スケールダウン動作を受信するのに応じて、１つ以上の仮想計算機を、前記作業プールから前記作動可能プールに非能動化させ、
前記ターゲット・ホスト計算装置は、前記展開動作を受信するのに応じて、１つ以上の追加の仮想計算機を前記作動可能プールに展開させ、
前記ターゲット・ホスト計算装置は、前記破壊動作を受信するのに応じて、前記作動可能プールの１つ以上の仮想計算機を破壊することを特徴とする方法。
【請求項８】
前記展開動作を受信するのに応じて、追加の１つ以上の仮想計算機を生成するために、前記ターゲット・ホスト計算装置によって既存の仮想計算機をクローンすることを含む請求項７記載の方法。
【請求項９】
前記ターゲット・ホスト計算装置が、前記ホスト計算装置と関連したコンピューティング資源利用を表すホスト性能メトリクスに基づいて選択された請求項７記載の方法。
【請求項１０】
前記ターゲット・ホスト計算装置が、プロセッサ利用及びメモリ利用の内の１つ以上を含むホスト性能メトリクスに基づいて選択された請求項７記載の方法。
【請求項１１】
前記伸縮性動作が前記スケールダウン動作であり、そして前記ターゲット・ホスト計算装置を選択する段階が、
前記ソフトウェア・アプリケーション・インスタンスと関連したクライアント・セッションの数に基づいて、前記管理装置によってソフトウェア・アプリケーション・インスタンスを選択する段階と、
前記管理装置によって前記選択されたソフトウェア・アプリケーション・インスタンスを実行しているホスト計算装置を識別する段階と、
を含む請求項７記載の方法。
【請求項１２】
前記伸縮性動作が前記スケールダウン動作であり、そして前記ターゲット・ホスト計算装置を選択する段階が、
前記ソフトウェア・アプリケーション・インスタンスと関連したコンピューティング資源利用に基づいて、前記管理装置によってソフトウェア・アプリケーション・インスタンスを選択する段階と、
前記管理装置によって前記選択されたソフトウェア・アプリケーション・インスタンスを実行しているホスト計算装置を識別する段階と、
を含む請求項７記載の方法。
【請求項１３】
前記ターゲット・ホスト計算装置が第１のターゲット・ホスト計算装置であり、そして前記伸縮性動作が前記スケールアップ動作であり、該方法は更に、
前記管理装置によって、前記スケールアップ動作及び現在の作動可能ソフトウェア・アプリケーション・インスタンスの数に基づいて、作動可能ソフトウェア・アプリケーション・インスタンスの予測数を算出する段階と、
作動可能ソフトウェア・アプリケーション・インスタンスの前記予測数が作動可能ソフトウェア・アプリケーション・インスタンスの所定の最小数より少ないときに、第２のターゲット・ホスト計算装置を前記複数のホスト計算装置から選択する段階であって、前記第２のターゲット・ホスト計算装置は、前記第２のターゲット・ホスト計算装置と関連したコンピューティング資源利用及び前記第２のターゲット・ホスト計算装置により実行されている前記ソフトウェア・アプリケーションのインスタンスの数の内の１つ以上に基づいて選択される段階と、
前記展開動作を前記第２のターゲット・ホスト計算装置に送信する段階と、
を含む請求項７記載の方法。
【請求項１４】
前記ターゲット・ホスト計算装置が第１のターゲット・ホスト計算装置であり、そして前記伸縮性動作が前記スケールダウン動作であり、該方法は更に、
前記管理装置によって、前記スケールダウン動作及び現在の作動可能ソフトウェア・アプリケーション・インスタンスの数に基づいて、作動可能ソフトウェア・アプリケーション・インスタンスの予測数を算出する段階と、
作動可能ソフトウェア・アプリケーション・インスタンスの前記予測数が作動可能ソフトウェア・アプリケーション・インスタンスの所定の最大数より多いときに、第２のターゲット・ホスト計算装置を前記複数のホスト計算装置から選択する段階であって、前記第２のターゲット・ホスト計算装置は、前記第２のターゲット・ホスト計算装置と関連した作動可能ソフトウェア・アプリケーション・インスタンスの数及び前記第２のターゲット・ホスト計算装置と関連したコンピューティング資源利用の内の１つ以上に基づいて選択される段階と、
前記破壊動作を前記第２のターゲット・ホスト計算装置に送信する段階と、
を含む請求項７記載の方法。
【請求項１５】
コンピュータ実行可能構成要素を有する１つ以上のコンピュータ可読記憶媒体であって、
実行されるときに、少なくとも１つのプロセッサに、
アプリケーション性能メトリクに基づいて伸縮性動作を決定させ、前記伸縮性動作はスケールアップ動作、スケールダウン動作、展開動作及び破壊動作の内の１つ以上を含み、そして
前記決定された伸縮性動作をターゲット・ホスト計算装置に送信させ、前記決定された伸縮性動作を前記ターゲット・ホスト計算装置によって１つ以上の仮想計算機に適用することによって、前記ターゲット・ホスト計算装置は、前伸縮性動作に基づいてソフトウェア・アプリケーションのインスタンスの動作を制御し、前記仮想計算機は、作業仮想計算機の作業プール及び作動可能仮想計算機の作動可能プールの内に配置されており、前記作業プールは実行する仮想計算機を含み、前記作動可能なプールは実行しない仮想計算機を含む、伸縮性制御構成要素と、
実行されるときに、少なくとも１つのプロセッサに、前記伸縮性制御構成要素により決定された前記伸縮性動作に基づいてクライアント要求を受信するために前記ソフトウェア・アプリケーション・インスタンスの可用性を調整させるロード・バランシング構成要素と、
を備え、
前記ターゲット・ホスト計算装置は、前記スケールアップ動作を受信するのに応じて、１つ以上の仮想計算機を、前記作動可能プールから前記作業プールに起動させ、
前記ターゲット・ホスト計算装置は、前記スケールダウン動作を受信するのに応じて、１つ以上の仮想計算機を、前記作業プールから前記作動可能プールに非能動化させ、
前記ターゲット・ホスト計算装置は、前記展開動作を受信するのに応じて、１つ以上の追加の仮想計算機を前記作動可能プールに展開させ、
前記ターゲット・ホスト計算装置は、前記破壊動作を受信するのに応じて、前記作動可能プールの１つ以上の仮想計算機を破壊するコンピュータ可読記憶媒体。
【請求項１６】
前記伸縮性動作が前記展開動作であり、そして前記ロード・バランシング構成要素が、前記プロセッサに、既存の仮想計算機をクローンすることによって前記ソフトウェア・アプリケーション・インスタンスをロード・バランシング・クラスタに加えることによって、前記ソフトウェア・アプリケーション・インスタンスの前記可用性を調整させる請求項１５記載のコンピュータ可読記憶媒体。
【請求項１７】
前記伸縮性動作が前記スケールダウン動作であり、そして前記ロード・バランシング構成要素が、前記プロセッサに、前記ソフトウェア・アプリケーション・インスタンスをロード・バランシング・クラスタから取り除くことによって、前記ソフトウェア・アプリケーション・インスタンスの前記可用性を調整させる請求項１５記載のコンピュータ可読記憶媒体。
【請求項１８】
実行されるときに、少なくとも１つのプロセッサに、前記ソフトウェア・アプリケーションと関連したコンピューティング資源利用、前記ソフトウェア・アプリケーションと関連した応答時間、前記ソフトウェア・アプリケーションと関連したクライアント要求率、及び前記ソフトウェア・アプリケーションと関連したクライアント・セッションの数の内の１つ以上に基づいて、少なくとも１つのプロセッサに前記アプリケーション性能メトリクを決定させるアプリケーション・モニタリング構成要素を更に備える請求項１５記載のコンピュータ可読記憶媒体。
【請求項１９】
前記伸縮性制御構成要素が更に、前記前記アプリケーション性能メトリクが所定の閾値を超えると決定することに基づいて、前記プロセッサに前記伸縮性動作を決定させる請求項１５記載のコンピュータ可読記憶媒体。
【請求項２０】
前記ロード・バランシング構成要素が、複数のロード・バランシング・サービスに対応する複数のインタフェース構成要素を含み、前記複数のインタフェース構成要素の各インタフェース構成要素が、少なくとも１つのプロセッサにより実行されるときに、プロセッサに、インスタンス起動事象及びインスタンス非能動化事象の内の１つ以上をロード・バランシング・サービスに伝えさせる請求項１５記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]仮想計算機（ＶＭ）のようなソフトウェア・アプリケーションは、ホスト計算装置のグループ即ち「クラスタ」により実行することができる。各仮想計算機は、仮想計算機を実行するホストの物理的なコンピューティング資源、例えばプロセッサ及びメモリの抽象概念を生成し、そして「ゲスト」オペレーティング・システムを実行し、そして次に、それは１つ以上のソフトウェア・アプリケーションを実行する。抽象化された資源は、根底にある物理的な資源からゲスト・オペレーティング・システム及びソフトウェア・アプリケーションまで機能的に区別がつかない場合がある。
【背景技術】
【０００２】
[0002]ホストの各仮想計算機に割り当てられるコンピューティング資源の量は、クラスタの管理人によって、手動で、及び／又は管理人によってセットされる資源ポリシーによって自動的に指定されることができる。いくつかのクラスタにおいて、オペレータは、複数のホストにわたってコンピューティング資源（別名コンピューティング「負荷」）の使用を分散することを試みる。例えば、ホストの一定数は仮想計算機を実行するように構成され、次に仮想計算機はソフトウェア・アプリケーションを実行できる。
【発明の概要】
【課題を解決するための手段】
【０００３】
[0003]本願明細書に記載されている１つ以上の実施形態は、ソフトウェア・アプリケーションに対する仮想計算機の割当てにおいて伸縮性を提供する。いくつかの実施形態では、ソフトウェア・アプリケーションの性能を表す性能メトリクスは、１つ以上の所定の規則に従ってモニターされて評価される。この種の規則に基づいて、伸縮性動作、例えば、電源投入動作、電源遮断動作、展開動作、及び／又は破壊動作を決定することができる。  
【０００４】
[0004]伸縮性動作は１つ以上のターゲット・ホストに送信されて、それは伸縮性動作を実行し、それによってソフトウェア・アプリケーション・インスタンス及び／又は仮想計算機（ＶＭ）の動作を制御する。例えば、作動可能状態の仮想計算機の電源が入り、それにより、仮想計算機により実行されるソフトウェア・アプリケーション・インスタンスはクライアント要求に応じるために利用できる。ターゲット・ホストは、ホスト性能メトリクス、例えばコンピューティング資源利用に基づいて選択されることができる。
【０００５】
[0005]いくつかの実施形態では、ロード・バランシング・サービスは、複数のソフトウェア・アプリケーション・インスタンスにわたってコンピューティング資源利用を分配するために使用される。仮想計算機の電源が投入されるとき、これらの仮想計算機はロード・バランシング・サービスに加えられる。同様に、仮想計算機が非能動化する（例えば、電源を切られるか又は停止する）とき、これらの仮想計算機はロード・バランシング・サービスから取り除かれる。
【０００６】
[0006]この概要は、以下で更に詳細に説明される概念の選択を導く。この概要は、基本的特徴を識別することも、またいかなる形であれ請求された内容の範囲を制限することも目的としない。
【図面の簡単な説明】
【０００７】
【図１】[0007]典型的な計算装置のブロック図である。
【図２】[0008]計算装置、例えば図１に示される計算装置でインスタンスを生成される仮想計算機のブロック図である。
【図３】[0009]計算装置及び仮想計算機を含む典型的なクラスタ・システムのブロック図である。
【図４】[0010]図３に示されたクラスタ・システム内の典型的なデータフローのブロック図である。
【図５】[0011]管理装置、例えば図３及び４に示された管理装置により実行される典型的な方法のフローチャートである。
【図６】[0012]伸縮性規則に基づいて伸縮性動作を決定する典型的な方法のフローチャートである。
【発明を実施するための形態】
【０００８】
[0013]本願明細書に記載されている実施形態は、仮想アプリケーション・スケーリング、ロード・バランシング、ならびにアプリケーション正常性及び性能モニタリングの組合せを容易にする。この種の組合せは、観察された作業負荷当たりの仮想ネットワーク・アプリケーションの自動知能スケーリングを可能にする。この種の実施形態は、さまざまなモニタリング及び／又はバランシング・サービスにインタフェースするフレームワークとして実施することができる。
【０００９】
[0014]例示的な実施形態は、１つ以上の伸縮性規則、及びコンピューティング・クラスタのコンピューティング資源利用又は「負荷」を表す１つ以上の性能メトリクスに従って、コンピューティング・クラスタのコンピューティング資源の動的な割当て及び割当て解除を用いる。例えば、ソフトウェア・アプリケーションの複数のインスタンスは、コンピューティング・クラスタにおいて実行されることが可能であり、そしてソフトウェア・アプリケーションと関連した性能メトリクが所定の閾値を超えるときに、伸縮性動作、例えば、スケールアップ動作又はスケールダウン動作を実行できる。いくつかの実施形態では、アプリケーション性能メトリクが、不十分なコンピューティング資源がソフトウェア・アプリケーションに割り当てられていることを示すときに、スケールアップ動作が１つ以上のターゲット・ホストに送信される。応答して、各ターゲット・ホストはソフトウェア・アプリケーションのインスタンスを起動するか、又は「電源投入する」。同様に、アプリケーション性能メトリクが、過剰なコンピューティング資源がソフトウェア・アプリケーションに割り当てられていることを示すときに、スケールダウン動作が、ソフトウェア・アプリケーションのインスタンスを実行している１つ以上のターゲット・ホストに送信される。応答して、各ターゲット・ホストはソフトウェア・アプリケーションのインスタンスを非能動化させるか、又は「電源遮断する」。
【００１０】
[0015]このような実施形態では、ソフトウェア・アプリケーションのインスタンスの数は、ソフトウェア・アプリケーションが充分な、しかし過剰でないコンピューティング資源を割り当てられることを確実にするように絶えず調整することができる。従って、この種の実施形態は、コンピューティング資源の伸縮割当てをソフトウェア・アプリケーションに提供すると理解することができる。この種の伸縮資源割当ては、全体のコンピューティング負荷が比較的小さいときに電力消費を自動的に減らして、全体のコンピューティング負荷が比較的大きいときに利用できるコンピューティング資源を増大させるのを容易にし、それによりコンピューティング・クラスタはクライアント要求に応答する状態を維持する。
【００１１】
[0016]１つの実施例において、ウェブ・アプリケーションは、複数の仮想計算機（ＶＭ）により実行されるステートレスなウェブサーバを使用してウェブ・サービスを提供するＩｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  ｓｅｒｖｉｃｅ（ＩａａＳ）クラウドに展開される。ウェブサーバはデータを読み込んで、共有データベースに保持する。ウェブ・サービスは、特定の領域（例えば、タイムゾーン又は地理的領域）の顧客に適応して、夜間に比較的少ないクライアント要求を受信するのに対して、昼間に比較的多数のクライアント要求を受信すると想定できる。本願明細書に提供されている実施形態は、観察又は測定された作業負荷に従ってウェブ・アプリケーション・インスタンスの数を自動的且つ動的に基準化して、作業負荷をすべてのウェブサーバに分散するのを容易にする。この種の動的な基準化は、エネルギー及び資源の消費、従って、忙しくない時間に（例えば、クライアント要求の受信が少ないとき）コストを節約することができ、その一方で、繁忙期に（例えば、多くのクライアント要求が受信されるとき）サービス要件及び／又はユーザの期待を満足させる。
【００１２】
[0017]任意に、記載されている実施形態は、作業（例えば、電源投入）及び作動可能（例えば、電源遮断）インスタンスの最小及び最大数を実施できる。更に、複数のアプリケーション・モニタリング・サービスに対するインタフェースを含めてもよく、それにより、性能メトリクスは、既存のアプリケーション性能モニタリング・システムを使用して得られる。同様に、複数のロード・バランシング・サービスに対するインタフェースを含めてもよく、それにより、起動（例えば、電源投入及び／又は再開）及び非能動化（例えば、電源遮断、及び／又は停止）事象は、既存のロード・バランシング・システムに伝えられ、それにより受け入れられる。
【００１３】
[0018]図１は、典型的な計算装置１００のブロック図である。計算装置１００は、命令を実行するためのプロセッサ１０２を含む。いくつかの実施形態では、実行可能な命令はメモリ１０４に格納される。メモリ１０４は、情報、例えば、実行可能な命令、アプリケーション性能メトリクス、ホスト性能メトリクス、伸縮性規則、伸縮性動作、構成オプション（例えば、閾値）、及び／又は他のデータが格納されて検索されることを可能にするいかなる装置であってもよい。例えば、メモリ１０４は、１つ以上のランダム・アクセス・メモリ（ＲＡＭ）モジュール、フラッシュ・メモリモジュール、ハードディスク、ソリッド・ステート・ディスク、及び／又は光ディスクを含むことができる。
【００１４】
[0019]計算装置１００はまた、ユーザ１０８に情報を提示するための少なくとも１つの提示装置１０６を含む。提示装置１０６は、ユーザ１０８に情報を伝達できる任意の構成要素である。提示装置１０６は、限定されずに、表示装置（例えば、液晶ディスプレイ（ＬＣＤ）、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、又は「電子インク」ディスプレイ）及び／又は音声出力装置（例えば、スピーカ又はヘッドホン）を含むことができる。いくつかの実施形態では、提示装置１０６は、出力アダプタ、例えば、ビデオ・アダプタ及び／又は音声アダプタを含む。出力アダプタは、プロセッサ１０２に動作可能なように連結されて、出力装置、例えば、表示装置又は音声出力装置に動作可能なように連結されるように構成される。
【００１５】
[0020]計算装置１００は、ユーザ１０８から入力を受信するためのユーザ入力装置１１０を含むことができる。ユーザ入力装置１１０は、例えば、キーボード、ポインティング・デバイス、マウス、タッチペン、タッチパネル（例えば、タッチパッド又はタッチスクリーン）、ジャイロスコープ、加速度計、位置検出器、及び／又は音声入力装置を含むことができる。単一の構成要素、例えばタッチスクリーンは、提示装置１０６の出力装置及びユーザ入力装置１１０の両方として機能することができる。
【００１６】
[0021]計算装置１００はまた、ネットワーク通信インタフェース１１２を含み、それにより、計算装置１００は、有線又は無線パケット網のような通信媒体を介して遠隔装置（例えば、他の計算装置１００）と通信できる。例えば、計算装置１００は、ネットワーク通信インタフェース１１２を介してデータを送信及び／又は受信できる。ユーザ入力装置１１０及び／又はネットワーク通信インタフェース１１２は、入力インタフェース１１４と呼ばれることがあり、そして構成オプション（例えば、伸縮性規則及び／又は閾値）のような情報をユーザから受信するように構成することができる。
【００１７】
[0022]計算装置１００は、計算装置１００が１つ以上のデータ・ストアと通信することを可能にするストレージ・インタフェース１１６を更に含み、それは、仮想ディスク画像、ソフトウェア・アプリケーション、及び／又は本願明細書に記載されている方法での使用に適した他のいかなるデータをも格納する。例示的な実施形態において、ストレージ・インタフェース１１６は、計算装置１００をストレージ・エリア・ネットワーク（ＳＡＮ）（例えば、ファイバー・チャネル・ネットワーク）に、及び／又はネットワーク接続ストレージ（ＮＡＳ）システム（例えば、パケット・ネットワークを介して）に連結する。ストレージ・インタフェース１１６は、ネットワーク通信インタフェース１１２と統合することができる。
【００１８】
[0023]例示的な実施形態において、メモリ１０４は、本願明細書に記載されている動作の１つ以上を実行するためのコンピュータ実行可能命令を格納する。メモリ１０４は、それに組み入れられるコンピュータ実行可能構成要素を備える１つ以上のコンピュータ可読記憶媒体を含むことができる。図１の実施例において、メモリ１０４は、アプリケーション・モニタリング構成要素１２０、伸縮性制御構成要素１２２、及びロード・バランシング構成要素１２４を含む。
【００１９】
[0024]プロセッサ１０２により実行されるときに、アプリケーション・モニタリング構成要素１２０によって、プロセッサ１０２が、ソフトウェア・アプリケーションと関連したコンピューティング資源使用、ソフトウェア・アプリケーションと関連した応答時間、ソフトウェア・アプリケーションと関連したクライアント要求率、及び／又はソフトウェア・アプリケーションと関連したクライアント・セッションの数に基づいて、アプリケーション性能メトリクを決定する。プロセッサ１０２により実行されるときに、伸縮性制御構成要素１２２によって、プロセッサ１０２が、アプリケーション性能メトリクに基づいて、スケールアップ動作及び／又はスケールダウン動作を含む伸縮性動作を決定して、伸縮性動作をターゲット・ホスト計算装置に送信する。ターゲット・ホスト計算装置は、伸縮性動作をソフトウェア・アプリケーションの１つ以上のインスタンスに適用する。例えば、ターゲット・ホスト計算装置は、伸縮性動作に基づいてソフトウェア・アプリケーションのインスタンスの動作（例えば、インスタンスの電源を投入又は遮断する）を制御できる。プロセッサ１０２により実行されるときに、ロード・バランシング構成要素１２４によって、プロセッサ１０２が、伸縮性動作に基づいてクライアント要求を受信するために、ソフトウェア・アプリケーション・インスタンスの可用性を調整する。図示の構成要素のいかなる部分も、計算装置１００の機能に基づいてメモリ１０４に含められる。
【００２０】
[0025]図２は、計算装置１００（それはホスト計算装置又は単にホストと呼ばれる）でインスタンス化される仮想計算機２３５１、２３５２、．．．２３５Ｎのブロック図を示す。計算装置１００は、ハードウェア・プラットフォーム２０５、例えばｘ８６アーキテクチャ・プラットフォームを含む。ハードウェア・プラットフォーム２０５は、プロセッサ１０２、メモリ１０４、ネットワーク通信インタフェース１１２、ユーザ入力装置１１０、及び他の入出力（Ｉ／Ｏ）装置、例えば提示装置１０６（図１に示す）を含むことができる。仮想化ソフトウェア・レイヤ（以下、ハイパーバイザ２１０と称される）は、ハードウェア・プラットフォーム２０５の上にインストールされる。
【００２１】
[0026]仮想化ソフトウェア・レイヤは仮想計算機実行空間２３０をサポートし、実行空間２３０内で複数の仮想計算機（ＶＭ２３５１〜２３５Ｎ）が並行してインスタンス化されて、実行されることができる。ハイパーバイザ２１０はデバイス・ドライバ・レイヤ２１５を含み、そして仮想計算機２３５１〜２３５Ｎの各々がそれ自体の仮想ハードウェア・プラットフォーム（例えば、仮想ハードウェア・プラットフォーム２４０１〜２４０Ｎの対応する１つ）を有するように、ハードウェア・プラットフォーム２０５の物理資源（例えば、プロセッサ１０２、メモリ１０４、ネットワーク通信インタフェース１１２、及び／又はユーザ入力装置１１０）を仮想計算機２３５１〜２３５Ｎの各々の「仮想」資源にマップし、各仮想ハードウェア・プラットフォームは、それ自体のエミュレートされたハードウェア（例えば、プロセッサ２４５、メモリ２５０、ネットワーク通信インタフェース２５５、ユーザ入力装置２６０、及び仮想計算機２３５１の他のエミュレートされた入出力装置）を有する。
【００２２】
[0027]いくつかの実施形態では、第１の仮想ハードウェア・プラットフォーム２４０１のメモリ２５０は、計算装置１００のメモリ１０４（例えば、ハードディスク又はソリッド・ステート・ディスク）に格納された１つ以上の仮想ディスク画像と関連付けられているか又はそれに「マップされた」仮想ディスクを含む。仮想ディスク画像は、単一のファイル又は複数のファイルで第１の仮想計算機２３５１により用いられるファイルシステム（例えば、ディレクトリ及びファイルの階層）を表し、それらの各々はファイルシステムの一部を含む。加えて、又は代わりに、仮想ディスク画像は、１つ以上の遠隔計算装置１００のメモリ１０４、例えばストレージ・エリア・ネットワーク（ＳＡＮ）構成に格納されてもよい。このような実施形態では、仮想ディスク画像のいかなる量も、遠隔計算装置１００により格納されることができる。
【００２３】
[0028]デバイス・ドライバ・レイヤ２１５は、例えば、計算装置１００に接続しているローカル・エリア・ネットワーク（ＬＡＮ）からデータを送受信するために、ネットワーク通信インタフェース１１２と相互に作用する通信インタフェース・ドライバ２２０を含む。通信インタフェース・ドライバ２２０はまた仮想ブリッジ２２５を含み、仮想ブリッジ２２５は、１つの通信インタフェース（例えば、ネットワーク通信インタフェース１１２）から受信した物理ネットワークのデータパケットの他の通信インタフェース（例えば、仮想計算機２３５１〜２３５Ｎの仮想通信インタフェース）への同報通信をシミュレートする。各仮想計算機２３５１〜２３５Ｎの各仮想通信インタフェース、例えば、第１の仮想計算機２３５１のネットワーク通信インタフェース２５５は、仮想ブリッジ２２５がネットワーク通信インタフェース１１２から入って来るデータパケットのフォワーディングをシミュレートすることを可能にする固有の仮想媒体アクセス制御（ＭＡＣ）アドレスを割り当てられることが可能である。実施形態において、ネットワーク通信インタフェース１１２は、それが受信するすべてのイーサネット（登録商標）・パケット（まさにそれ自体の物理的なＭＡＣアドレスにアドレスされたイーサネット（登録商標）・パケットよりはむしろ）が仮想ブリッジ２２５に伝えられ、仮想ブリッジ２２５は、次に、イーサネット（登録商標）・パケットを仮想計算機２３５１〜２３５Ｎに更に転送することが可能であるように、「無差別モード」で構成されるイーサネット（登録商標）・アダプタである。この構成は、この種の仮想ＭＡＣアドレスに対応する仮想通信インタフェースによって、その宛先アドレスとして仮想ＭＡＣアドレスを有するイーサネット（登録商標）・パケットを計算装置１００の仮想計算機に適切に到達させることを可能にする。
【００２４】
[0029]いかなるｘ８６互換のデスクトップ・オペレーティング・システム（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）ブランド・オペレーティング・システム、ＬＩＮＵＸ（登録商標）ブランド・オペレーティング・システム、ＳＯＬＡＲＩＳ（登録商標）ブランド・オペレーティング・システム、ＮＥＴＷＡＲＥ（登録商標）、又はＦＲＥＥＢＳＤ（登録商標））も、インスタンス化された仮想計算機、例えば第１の仮想計算機２３５１のためのアプリケーション２７０を実行するために、ゲスト・オペレーティング・システム（ＯＳ）２６５としてインストールされることができるように、仮想ハードウェア・プラットフォーム２４０１は、標準ｘ８６ハードウェア・アーキテクチャ相当品として機能できる。仮想ハードウェア・プラットフォーム２４０１〜２４０Ｎは、ハイパーバイザ２１０と対応する仮想計算機２３５１〜２３５Ｎの間の動作を調整するために仮想システム・サポートを実行する仮想計算機モニター（ＶＭＭ）２７５１〜２７５１の一部であるとみなすことができる。当業者は、図２の仮想化構成要素を説明するために用いられるさまざまな用語、レイヤ、及びカテゴリー化が、それらの機能あるいは本開示の精神又は範囲を逸脱せずに異なって言及されることがあると認識する。例えば、仮想ハードウェア・プラットフォーム２４０１〜２４０Ｎは仮想計算機モニター２７５１〜２７５Ｎと別であるとみなすこともできて、仮想計算機モニター２７５１〜２７５Ｎはハイパーバイザ２１０と別であるとみなすことができる。本開示の実施形態において用いられ得るハイパーバイザ２１０の１つの実施例は、ＶＭｗａｒｅ社から市販されているＶＭｗａｒｅのＥＳＸブランド・ソフトウェアに構成要素として含まれる。
【００２５】
[0030]図３は、ホスト３０５及び仮想計算機（ＶＭ）２３５の典型的なクラスタ・システム３００のブロック図である。クラスタ・システム３００は、第１のホスト３０５１、第２のホスト３０５２、第３のホスト３０５３、及び第４のホスト３０５４を備えた障害ドメイン３１０を含む。各ホスト３０５は、１つ以上のソフトウェア・アプリケーション・インスタンスを実行する。例えば、第１のホスト３０５１は、第１の仮想計算機２３５１、第２の仮想計算機２３５２、及び第３の仮想計算機２３５３を実行し、そして第４のホスト３０５４は第４の仮想計算機２３５４を実行する。障害ドメイン３１０は、ソフトウェア・アプリケーション・インスタンスのいかなる数も実行するホスト３０５のいかなる数も含むことができると考えられる。更に、ホスト３０５によってホストをつとめられる仮想計算機２３５は、他のソフトウェア・アプリケーション・インスタンス、例えば、ネットワーク・サービス（例えば、ウェブ・アプリケーション及び／又はウェブ・サービス）のインスタンス、分散コンピューティング・ソフトウェア、及び／又はホスト３０５のような計算装置によって実行可能であるその他のタイプのソフトウェアも実行できる。
【００２６】
[0031]ホスト３０５はネットワーク３１５経由で互いに通信する。クラスタ・システム３００はまた管理装置３２０を含み、それはネットワーク３１５経由でホスト３０５と通信して連結されている。例示的な実施形態において、管理装置３２０はホスト３０５をモニターして、制御する。例えば、管理装置３２０は、ホスト３０５と関連した性能メトリクス（例えば、アプリケーション性能メトリクス及び／又はホスト性能メトリクス）をモニターすることができて、性能メトリクスに基づいてホスト３０５によって、仮想計算機及び／又は他のソフトウェア・アプリケーションの実行を更に調整できる。１つ以上のクライアント装置３２５はネットワーク３１５と通信して連結され、それにより、クライアント装置３２５は要求をホスト３０５に依頼できる。例えば、ホスト３０５は、クライアント装置３２５からの要求に応答してデータを提供するソフトウェア・アプリケーションのインスタンスを実行できる。
【００２７】
[0032]いくつかの実施形態では、クラスタ・システム３００はまた、管理装置３２０と通信するロード・バランス装置３３０、ソフトウェア・アプリケーション・インスタンス（例えば、仮想計算機２３５及び／又は仮想計算機２３５により実行されるソフトウェア・アプリケーション・インスタンス）、ホスト３０５、及び／又はクライアント装置３２５を含む。ロード・バランス装置３３０は、クライアント装置３２５から要求を受け取って、ホスト３０５によってホストを務められるソフトウェア・アプリケーション・インスタンスに受け取った要求を転送するように構成される。例示的な実施形態において、要求は、コンピューティング資源利用、又は要求に応答することと関連した「負荷」を仮想計算機２３５及び／又はホスト３０５にわたって分散する方法で仮想計算機２３５に転送される。例えば、ロード・バランス装置３３０は、例えば、第１の要求を第１の仮想計算機２３５１に、第２の要求を第２の仮想計算機２３５２に、その他いろいろ転送することによって、要求を仮想計算機２３５にローテーション（例えば、「ラウンドロビン」ローテーション）で転送できる。別の例として、ロード・バランス装置３３０は要求をホスト３０５にローテーションで転送できる。加えて、又は代わりに、ロード・バランス装置３３０は、仮想計算機２３５に対応するホスト性能メトリクスに基づいて、要求を仮想計算機２３５に転送できる。例えば、ロード・バランス装置３３０は、要求がクライアント装置３２５から受信される時に、仮想計算機２３５の中で最も小さいホスト負荷と関連した仮想計算機２３５に要求を転送できる。
【００２８】
[0033]管理装置３２０が障害ドメイン３１０の外側に示されるけれども、管理装置３２０の機能は障害ドメイン３１０に組み込まれることができる。例えば、管理装置３２０は障害ドメイン３１０に含まれることができる。あるいは、管理装置３２０に関して述べられている機能は、障害ドメイン３１０の１つ以上のホスト３０５により、又は１つ以上のホスト３０５により実行される仮想計算機２３５により、実行することができる。即ち、管理装置３２０の機能は、処理能力を有する１つ以上の装置で動作する実行可能なコードにより実施することができる。ホスト３０５、管理装置３２０、クライアント装置３２５、及び／又はロード・バランス装置３３０は、計算装置１００（図１に示す）でもよい。
【００２９】
[0034]例示的な実施形態において、障害ドメイン３１０の各ホスト３０５はホスト情報を管理装置３２０に提供する。ホスト情報は、例えば、ホスト３０５により実行されているソフトウェア・アプリケーション・インスタンス、アプリケーション性能メトリクス、ホスト３０５により実行されているソフトウェア・アプリケーション・インスタンスに割り当てられたコンピューティング資源、ホスト３０５と関連した１つ以上のホスト性能メトリクス、及び／又は事象、例えば、ソフトウェア・アプリケーション・インスタンスの実行の開始（例えば、インスタンス電源投入事象）又はホスト３０５によるソフトウェア・アプリケーション・インスタンスの終了（例えば、インスタンス電源遮断事象）を含む。管理装置３２０は、障害ドメイン３１０のホスト３０５からホスト情報を受信して、後で詳しく述べるように、１つ以上の伸縮性動作を実行するべきかどうか決定するために、伸縮性規則を適用する。
【００３０】
[0035]図４は、クラスタ・システム３００内の典型的なデータフローのブロック図４００である。図５は、管理装置、例えば管理装置３２０により実行されている典型的な方法５００のフローチャートである。方法５００の動作が管理装置３２０を参照して説明されるけれども、この種の動作のいかなる部分も、いかなる計算装置１００（図１に示す）によっても実行することができると考えられる。
【００３１】
[0036]図３及び４を参照すると、管理装置３２０は、アプリケーション・モニタリング構成要素１２０、伸縮性制御構成要素１２２、及びロード・バランシング構成要素１２４を実行する。例示的な実施形態において、管理装置３２０は、仮想ソフトウェア・アプリケーション４０５即ち仮想アプリケーション（ｖＡｐｐ）の実行をモニターし、及び／又は制御し、それらのインスタンスは、ホスト３０５によってホストを務められる仮想計算機（ＶＭ）２３５により実行することができる。例えば、管理装置３２０は、仮想アプリケーション・インスタンス４１５を作業させる（例えば、実行する）作業プール４１０及び仮想アプリケーション・インスタンス４２５を作動可能にする（例えば、実行しない）作動可能プール４２０を維持できる。いくつかの実施形態では、仮想計算機２３５は仮想アプリケーション４０５を実行するように構成されている。従って、非能動化された（例えば、「電源を切られた」か又は停止された）仮想計算機２３５は、作動可能仮想アプリケーション・インスタンス４２５を含むことができて、作動可能仮想アプリケーション・インスタンス４２５は、対応する仮想計算機２３５を起動させるか又は「電源投入する」ことによって、作業仮想アプリケーション・インスタンス４１５に変換されることができる。同様に、作業仮想アプリケーション・インスタンス４１５は、対応する仮想計算機２３５を非能動化する（例えば、電源遮断するか又は停止させる）ことによって、作動可能仮想アプリケーション・インスタンス４２５に変換されることができる。
【００３２】
[0037]また図５を参照すると、例示的な実施形態で、管理手段３２０は、アプリケーション性能メトリクス及び／又はホスト性能メトリクスを含む、性能メトリクスを決定する（例えば、収集し、及び／又は算出する）（５０５）。例えば、アプリケーション・モニタリング構成要素１２０は、作業プール４１０の作業仮想アプリケーション・インスタンス４１５、この種の作業仮想アプリケーション・インスタンス４１５を実行している仮想計算機２３５、及び／又はこの種の仮想計算機２３５を実行しているホスト３０５からアプリケーション性能メトリクスを受信できる。アプリケーション性能メトリクスは、１つ以上の作業仮想アプリケーション・インスタンス４１５の性能を表す。例えば、アプリケーション・インスタンスに対応するアプリケーション性能メトリクスは、アプリケーション・インスタンスと関連したコンピューティング資源（例えば、プロセッサ、メモリ、ストレージ、及び／又はネットワーク）利用、アプリケーション・インスタンスと関連した応答時間、アプリケーション・インスタンスと関連したクライアント要求率、インスタンスと関連した並行ネットワーク接続（例えば、伝送制御プロトコル接続）の数、及び／又はアプリケーション・インスタンスと関連したクライアント・セッションの数を含むことができる。
【００３３】
[0038]いくつかの実施形態では、アプリケーション性能メトリクスを決定する（５０５）ことは、仮想アプリケーション４０５と関連した１つ以上の複合アプリケーション性能メトリクスを生成するために、個々の作業仮想アプリケーション・インスタンス４１５と関連したアプリケーション性能メトリクスを結合することを含む。例えば、管理装置３２０は、個々のアプリケーション性能メトリクスの合計又は平均（例えば、平均値又は中央値）として複合アプリケーション性能メトリクスを算出できる。
【００３４】
[0039]管理装置３２０はまた、１つ以上のホスト３０５の性能及び／又は作業負荷を表すホスト性能メトリクスを決定することもできる（５０５）。例えば、管理装置３２０はホスト３０５からホスト性能メトリクスを受信できる。例示的な実施形態において、ホスト性能メトリクスはホスト３０５と関連したコンピューティング資源利用を表す。例えば、ホスト性能メトリクスは、対応するホスト３０５のメモリ利用、プロセッサ利用、ネットワーク利用、及び／又はストレージ利用を表すことができる。
【００３５】
[0040]例示的な実施形態において、性能メトリクスは数値的に表される。例えば、プロセッサ利用は、ホスト３０５により実行されているソフトウェア・アプリケーション・インスタンス（例えば、仮想計算機２３５又は作業仮想アプリケーション・インスタンス４１５）により用いられているプロセッサ容量のパーセンテージとして表すことができて、そしてネットワーク利用は、ネットワーク（例えば、ネットワーク３１５）を経由してホスト３０５によって送受信されているデータの量として表すことができる。更に、ホスト負荷メトリクスは、絶対値（例えば、プロセスを実行することにより用いられているプロセッサ・メガヘルツ）として、及び／又は相対値（例えば、プロセスを実行することにより用いられている利用できるプロセッサ・メガヘルツの比率）として表すことができる。性能メトリクスは、瞬間値、例えば、ホスト３０５により実行されている資源モニタリング・ソフトウェア（例えば、オペレーティング・システム及び／又はアプリケーション・ソフトウェア）により提供された１回の測定値でもよい。あるいは、性能メトリクスは、所定の期間（例えば、１秒、５秒、又は３０秒）にわたって与えられるこの種の測定値の移動平均として算出することができる。
【００３６】
[0041]いくつかの実施形態では、アプリケーション・モニタリング構成要素１２０は、アプリケーション性能メトリクスをすぐに決定する（５０５）（例えば、受信し、及び／又は算出する）。加えて、又は代わりに、アプリケーション・モニタリング構成要素１２０は、１つ以上のアプリケーション・モニタリング・サービスからアプリケーション性能メトリクスを受信することによって、アプリケーション性能メトリクスを決定する（５０５）１つ以上のインタフェース構成要素４３０を含むことができる。この種のアプリケーション・モニタリング・サービスは、ロード・バランス装置３３０及び／又はネットワーク３１５に接続しているその他の計算装置１００（図１に示す）により実行することができる。アプリケーション・モニタリング構成要素１２０は、複数のアプリケーション・モニタリング・サービスに対応する複数のインタフェース構成要素４３０を含むことができて、それにより、アプリケーション・モニタリング・サービスは、アプリケーション・モニタリング構成要素１２０の機能に関して交換可能であり得る。更に、アプリケーション・モニタリング構成要素１２０は、ロード・バランシング構成要素１２４からアプリケーション性能メトリクス及び／又はホスト性能メトリクス（例えば、クライアント・セッションのネットワーク利用、応答時間、及び／又は数）を受信できる。
【００３７】
[0042]例示的な実施形態において、各インタフェース構成要素４３０は、同じアプリケーション・モニタリング・アプリケーション・プログラミング・インタフェース（ＡＰＩ）を実施する。アプリケーション・モニタリングＡＰＩは、構成機能、報告機能、及び登録機能を含む。
【００３８】
[0043]構成機能は、入力パラメータとして、１）インスタンス識別子、例えば仮想計算機識別子（例えば、名前又は数字の識別子）又はネットワーク・アドレス（例えば、インターネット・プロトコル・アドレス）及び２）１つ以上のメトリク・頻度対を受け入れることができる。メトリク・頻度対は、モニターされなければならない性能メトリク（例えば、アプリケーション・インスタンスと関連したプロセッサ利用）の識別子（例えば、名前又は数字の識別子）と、性能メトリクが収集されなければならない頻度とを含む。
【００３９】
[0044]報告機能は、入力パラメータとして１組のメトリク・値対を受け入れることができる。メトリク・値対は、性能メトリクの識別子と、性能メトリクに対応する検出値を表す値とを含む。
【００４０】
[0045]登録機能は、入力パラメータとして、１）１つ以上のメトリク・頻度対として表されるモニタリング能力のリスト、及び２）対応するアプリケーション・モニタリング・サービスの利用と関連した任意の価格を受け入れることができる。メトリク・頻度対の頻度部分は、対応するアプリケーション・モニタリング・サービスが関連する性能メトリクを提供できる最大頻度を含むことができる。
【００４１】
[0046]例示的な実施形態において、管理装置３２０は複数の伸縮性規則を格納する。各伸縮性規則は、条件及び条件が満たされる場合に実行される伸縮性動作を含む。条件は、例えば、アプリケーション性能メトリクを所定の閾値と比較することによってアプリケーション性能メトリクを試験できる。いくつかの実施形態では、アプリケーション・モニタリング構成要素１２０は、少なくとも１つの伸縮性規則の条件により試験されるアプリケーション性能メトリクスを決定する（５０５）。更に、性能メトリクスが決定される（５０５）頻度は、管理装置３２０により格納された構成パラメータとして指定することができる。
【００４２】
[0047]条件は、閾値を超えているかどうか決定するために、アプリケーション性能メトリクを所定の閾値と比較できる。閾値は最小値又は最大値として表すことができる。アプリケーション性能メトリクが最大閾値より大きいときに、最大閾値を超えているとみなされる。アプリケーション性能メトリクが最小閾値より小さいときに、最小閾値を超えているとみなされる。
【００４３】
[0048]例示的な実施形態において、伸縮性動作はスケールアップ動作又はスケールダウン動作であり、そのいずれもインスタンスの目標数と任意に関連付けられることが可能である。スケールアップ動作は、作動可能プール４２０の１つ以上の作動可能仮想アプリケーション・インスタンス４２５が起動（例えば電源投入）されるべきであることを示す。スケールダウン動作は、１つ以上の作業仮想アプリケーション・インスタンス４１５が非能動化（例えば電源遮断）すべきであることを示す。加えて、以下に更に詳細に説明される、展開動作及び破壊動作は伸縮性動作と考えられ得る。
【００４４】
[0049]一例として、伸縮性規則は、「平均要求率≦1秒につき１０００回の要求」及び「スケールダウン１」の伸縮性動作の条件を含むことができる。この例では、作業仮想アプリケーション・インスタンス４１５に対する平均クライアント要求率が、所定の最小閾値（例えば、1秒につき１０００回の要求）を超えるときに、作業仮想アプリケーション・インスタンス４１５の数は、目標数（例えば、１）によって、例えば、仮想計算機２３５の目標数の電源を切ることによって減少することである。別の例として、伸縮性規則は、「平均プロセッサ利用＞９０％又は平均応答時間＞１秒」及び「スケールアップ２」の伸縮性動作の複合条件を含むことができる。この例では、作業仮想アプリケーション・インスタンス４１５と関連した平均プロセッサ利用が所定の最大閾値（例えば、９０パーセント）を超えるときに、又は、作業仮想アプリケーション・インスタンス４１５と関連した平均応答時間が所定の最大閾値（例えば、１秒）を超えるときに、作業仮想アプリケーション・インスタンス４１５の数は、目標数（例えば、２）によって、例えば、目標数の仮想計算機２３５に電力を供給することによって増加することである。
【００４５】
[0050]管理装置３２０は、アプリケーション性能メトリク及び伸縮性規則に基づいて伸縮性動作を決定する。例示的な実施形態において、伸縮性制御構成要素１２２は、いかなる伸縮性規則の条件も満たされるかどうかを決定する（５１０）ために各伸縮性規則を評価する。例えば、管理装置３２０は、伸縮性動作が、アプリケーション性能メトリクが対応する所定の閾値を超えることを決定する（５１０）ことに基づいて実行されるべきであると決定できる。
【００４６】
[0051]伸縮性規則条件が満たされない場合、いかなる伸縮性動作も実行されず、そして方法５００の現在の繰り返しは終わる。例示的な実施形態において、方法５００は、繰り返し（例えば、周期的に、継続的に、又は要求に応じて）実行される。従って、伸縮性規則は方法５００の次の繰り返しにおいて再び評価されることができる。
【００４７】
[0052]スケールアップ動作又はスケールダウン動作に関連した伸縮性規則が満たされるときに、管理装置３２０は、実行する１つ以上の伸縮性動作を決定する（５１５）。図６は、伸縮性規則に基づいて伸縮性動作を決定するための典型的な方法６００のフローチャートである。条件が満たされると決定された（５１０）（図５に示す）伸縮性規則は、伸縮性動作、例えばスケールアップ動作又はスケールダウン動作に関連する。例示的な実施形態において、伸縮性動作は、電源投入又は電源遮断するインスタンス（例えば、仮想計算機）の目標数に関連する。
【００４８】
[0053]図４及び６を参照すると、管理装置３２０（例えば、伸縮性制御構成要素１２２を経由して）は、インスタンスの目標数及び現在の作動可能インスタンス４２５の数に基づいて、作動可能インスタンス（例えば、仮想計算機）の予測数を算出する（６０５）。例えば、伸縮性動作がスケールアップ動作であるときには、作動可能インスタンスの予測数は、インスタンスの目標数を現在の作動可能インスタンスの数から減算することにより算出することができる（６０５）。伸縮性動作がスケールダウン動作であるときに、作動可能インスタンスの予測数は、インスタンスの目標数を現在の作動可能インスタンスの数に加えることにより算出することができる（６０５）。
【００４９】
[0054]いくつかの実施形態では、予測値は、作動可能ソフトウェア・アプリケーション・インスタンスの数が、作動可能ソフトウェア・アプリケーション・インスタンスの所定の最小数と作動可能ソフトウェア・アプリケーション・インスタンスの所定の最大数の間にあることを確実にするために、及び／又は作業ソフトウェア・アプリケーション・インスタンスの数が、作業ソフトウェア・アプリケーション・インスタンスの所定の最小数と作業ソフトウェア・アプリケーション・インスタンスの所定の最大数の間にあることを確実にするために、管理装置３２０によって用いられることが可能である。
【００５０】
[0055]管理装置はまた、インスタンスの目標数及び現在の作業インスタンス４１５の数に基づいて作業インスタンス（例えば、仮想計算機）の予測数を算出する（６１０）。例えば、伸縮性動作がスケールアップ動作であるときに、作業インスタンスの予測数は、インスタンスの目標数を現在の作業インスタンスの数に加えることにより算出することができる（６１０）。伸縮性動作がスケールダウン動作であるときに、作業インスタンスの予測数は、目標数を現在の作業インスタンスの数から減算することにより算出することができる（６１０）。
【００５１】
[0056]伸縮性動作がスケールアップ動作であるときに、管理装置３２０は、インスタンスの予測作業数を作業インスタンスの所定の最大数と比較する（６１５）。インスタンスの予測作業数が最大数より大きいときに、管理装置３２０は、例えば、目標数を（作業インスタンスの最大数−作業インスタンスの予測される数）に設定する（６２０）ことによってインスタンスの目標数を減らす。
【００５２】
[0058]管理装置３２０はまた、現在の作動可能インスタンスの数をインスタンスの目標数と比較する（６２５）。作動可能インスタンスの数が目標数より少ないときに、管理装置３２０は、目標数を現在の作動可能インスタンスの数に等しいように設定する（６３０）。この種の調整は、すべての利用できる作動可能インスタンスをアプリケーションに割り当てるのを容易にする。
【００５３】
[0059]管理装置３２０は更に、作動可能インスタンスの予測数を作動可能インスタンスの所定の最小数と比較する（６３５）。作動可能インスタンスの予測数が作動可能インスタンスの最小数より少ないときに、管理装置３２０は、１つ以上の付加的なインスタンス（例えば、仮想計算機）が作動可能プール４２０に加えられるべきであることを示す展開動作を生成する（６４０）。例示的な実施形態において、展開するインスタンスの目標数は、作動可能インスタンスの予測数を作動可能インスタンスの最小数から減算することにより決定される。この種の実施形態は、作動可能プール４２０の作動可能インスタンスの最小数を維持するのを容易にする。
【００５４】
[0059]伸縮性動作がスケールダウン動作であるときに、管理装置３２０は作業インスタンスの予測数を作業インスタンスの所定の最小数と比較する（６４５）。作業インスタンスの予測数が作業インスタンスの最小数より少ないときに、管理装置３２０は、例えば、目標数を（最初の目標数−作業インスタンスの最小数）に設定する（６５０）ことによって、インスタンスの目標数を減らす。
【００５５】
[0060]管理装置３２０はまた、作動可能インスタンスの予測数を作動可能インスタンスの所定の最大数と比較する（６５５）。作動可能インスタンスの予測数が作動可能インスタンスの最大数より大きいときに、管理装置３２０は、１つ以上のインスタンス（例えば、仮想計算機）が作動可能プール４２０から取り除かれるべきであることを示す破壊動作を生成する（６６０）。例示的な実施形態において、破壊するインスタンスの目標数は、作動可能インスタンスの最大数を作動可能インスタンスの予測数から減算することにより決定される。この種の実施形態は、作動可能プール４２０の作動可能インスタンスの最大数を維持するのを容易にする。
【００５６】
[0061]図４及び５を参照すると、管理装置は、いかなる決定された伸縮性動作も実行するために１つ以上のターゲット・ホスト３０５を選択する（５２０）。仮想ソフトウェア・アプリケーション４０５が１つのホストでだけ作動可能インスタンス４２５及び／又は作業インスタンス４１５と関連している場合、管理装置３２０は、伸縮性動作を実行するためにそのホストを選択する（５２０）。
【００５７】
[0062]例示的な実施形態において、仮想ソフトウェア・アプリケーション４０５は、複数のホストによってホストを務められる作動可能インスタンス４２５及び／又は作業インスタンス４１５と関連している。管理装置３２０は、ホスト性能メトリクス、例えば、ホストと関連したコンピューティング資源利用（例えば、プロセッサ利用及び／又はメモリ利用）に基づいて、ターゲット・ホストを複数のホストから選択する（５２０）。例えば、伸縮性動作がスケールアップ動作であるときに、管理装置３２０は、ホストの中で最も小さいコンピューティング資源利用と関連しているホスト上の作動可能なインスタンス４２５を識別して、そのホストを選択する（５２０）ことができる。
【００５８】
[0063]伸縮性動作がスケールダウン動作であるときに、ターゲット・ホストを選択する（５２０）ことは、ソフトウェア・アプリケーション・インスタンスと関連したクライアント・セッションの数（例えば、ゼロ・クライアント・セッション、又は作業インスタンス４１５の中のクライアント・セッションの最小数）に基づいて、ソフトウェア・アプリケーション・インスタンスを識別して、選択されたソフトウェア・アプリケーション・インスタンスを実行しているホストを選択する（５２０）ことを含むことができる。例えば、管理装置３２０は、ゼロ・クライアント・セッションと関連したソフトウェア・アプリケーション・インスタンスを実行している１つ以上のホストを選択する（５２０）ことができる。いくつかの実施形態では、ロード・バランシング構成要素１２４がセッション持続をサポートするときに、クライアント・セッションのゼロ以外の数を有する作業インスタンス４１５を選択することができる。
【００５９】
[0064]加えて、又は代わりに、スケールダウン動作のために、管理装置３２０は、ソフトウェア・アプリケーション・インスタンスと関連したコンピューティング資源利用（例えば、作業インスタンス４１５の中の最低のコンピューティング資源利用）に基づいて、ソフトウェア・アプリケーション・インスタンスを識別して、識別されたソフトウェア・アプリケーション・インスタンスを実行しているホスト計算装置を選択する（５２０）ことができる。更に、管理装置３２０は、ソフトウェア・アプリケーション・インスタンスのインスタンスを実行していて、比較的大きいコンピューティング資源利用（例えば、ホストの中の最高のコンピューティング資源利用）と関連するホストを選択する（５２０）ことができる。
【００６０】
[0065]伸縮性動作がスケールアップ動作であるときに、管理装置３２０は、スケールアップ動作のために第１ターゲット・ホストを選択する（５２０）ことができる。更に、図６を参照して説明されるように、管理装置３２０は、１つ以上の作動可能インスタンス４２５を加えるために展開動作を生成する（６４０）ことができる。管理装置３２０は、ホストと関連したコンピューティング資源利用及び／又はホストにより実行されているソフトウェア・アプリケーションのインスタンスの数に基づいて、展開動作のために第１のターゲット・ホスト又は第２のターゲット・ホストを選択（５２０）できる。例えば、最低のコンピューティング資源利用及び／又は作業インスタンス４１５の最小数と関連したホストが、展開動作のために選択（５２０）できる。展開動作のためのターゲット・ホストを選択するときに（５２０）、管理装置３２０は、ソフトウェア・アプリケーションのインスタンスのために不十分な記憶容量を有するホストを除外することができる。更に、管理装置３２０は、ホストによってホストを務められるソフトウェア・アプリケーションのインスタンスの数に基づいて、展開動作のためのターゲット・ホストを選択する（５２０）ことができる。例えば、インスタンスを他のホストに展開することが、後述するように、別のホストからインスタンスのクローンを作ることを必要とすることがあり得るので、管理装置３２０は、ソフトウェア・アプリケーションの少なくとも１つのインスタンスを既に含むホストを選択する（５２０）ことができる。
【００６１】
[0066]同様に、伸縮性動作がスケールダウン動作であるときに、管理装置３２０は破壊動作を生成する（６６０）ことができる（図６に示す）。管理装置３２０は、ホストと関連した作動可能ソフトウェア・アプリケーション・インスタンス４２５の数及びホストと関連したコンピューティング資源利用に基づいて、破壊動作のためのターゲット・ホスト（例えば、スケールダウン動作のために選択された（５２０）同じホスト又は異なるホスト）を選択する（５２０）ことができる。例えば、作動可能インスタンス４２５の最大数及び／又は最高のコンピューティング資源利用に関連したホストが、破壊動作のために選択（５２０）できる。
【００６２】
[0067]伸縮性動作が展開動作を含むときに、管理装置３２０は、ソフトウェア・アプリケーション・インスタンス（例えば、仮想計算機）のクローニングを展開動作と関連させる（５２５）ことができる。いくつかの実施形態では、展開動作のために選択された（５２０）ホストが、ソフトウェア・アプリケーションのインスタンスを実行するローカル資源仮想計算機のホストを務めている場合、管理装置３２０は、選択されたホスト上のローカル資源仮想計算機のクローニングを展開動作と関連させる（５２５）。さもなければ、管理装置３２０は、ターゲット・ホスト計算装置以外のホスト計算装置でソフトウェア・アプリケーションのインスタンスを実行している遠隔資源仮想計算機の選択されたホストに対するクローニングを展開動作と関連させる（５２５）。
【００６３】
[0068]管理装置３２０は伸縮性動作を選択されたターゲット・ホストへ送信する（５３０）。この種の伸縮性動作を受信することに応答して、各ターゲット・ホストは受信した伸縮性動作を実行し、それによって、１つ以上のソフトウェア・アプリケーション・インスタンスの動作を制御する。例示的な実施形態において、ホストがスケールアップ動作を受信する場合、ホストは仮想計算機の電源を投入して、作動可能インスタンス４２５を作業インスタンス４１５に変換することができる。同様に、ホストがスケールダウン動作を受信する場合、ホストは仮想計算機の電源を遮断して、作業インスタンス４１５を作動可能インスタンス４２５に変換することができる。ホストが展開動作を受信するときに、ホストは、上述のように、既存の仮想計算機インスタンスのクローンを作って、作動可能インスタンス４２５を作動可能プール４２０に加える。ホストが破壊動作を受信するときに、ホストは、作動可能プール４２０から作動可能インスタンス４２５を除去する。
【００６４】
[0069]例示的な実施形態において、伸縮性動作に基づいて、管理装置３２０は、クライアント要求を受信するためにソフトウェア・アプリケーション・インスタンスの可用性を調整する（５３５）。例えば、伸縮性動作がスケールアップ動作を含むときに、ロード・バランシング構成要素１２４は、例えば、新しく電源投入されるインスタンスをロード・バランス装置３３０（図３に示す）に通知することによって、ソフトウェア・アプリケーション・インスタンスをロード・バランシング・クラスタに加えることができる。アプリケーション・モニタリング構成要素１２０が、作業インスタンス４１５から通知（例えば、インスタンス電源投入事象又はインスタンス電源遮断事象）を受信して、次に、ロード・バランシング構成要素１２４に通知するときに、この種の通知を開始することができる。伸縮性動作がスケールダウン動作を含むときに、ロード・バランシング構成要素１２４は、例えば、ロード・バランス装置３３０に新しく電源を遮断したインスタンスを通知することによって、ロード・バランシング・クラスタからソフトウェア・アプリケーション・インスタンスを除去することができる。アプリケーション・モニタリング構成要素１２０は、作業インスタンス４１５がもはや応答しないと決定し、次に、ロード・バランシング構成要素１２４に通知するときに、この種の通知を開始することができる。
【００６５】
[0070]いくつかの実施形態では、ロード・バランシング構成要素１２４は、直接、アプリケーション・インスタンスの可用性を調整する（５３５）。例えば、ロード・バランシング構成要素１２４は、クライアント装置３２５から要求を受信し、ロード・バランシング構成要素１２４が利用できると決定したアプリケーション・インスタンスにこの種の要求を転送することができる。加えて、又は代わりに、ロード・バランシング構成要素１２４は、伸縮性動作及び／又は事象（例えば、電源投入事象及び／又は電源遮断事象）をロード・バランス装置３３０により実行される１つ以上のロード・バランシング・サービスに伝える１つ以上のインタフェース構成要素４３５を含むことができる。ロード・バランシング構成要素１２４は、複数のロード・バランシング・サービスに対応する複数のインタフェース構成要素４３５を含むことができ、それにより、ロード・バランシング・サービスはロード・バランシング構成要素１２４の機能に関して互換性がある。
【００６６】
[0071]例示的な実施形態において、各インタフェース構成要素４３５は、同じロード・バランシング・アプリケーション・プログラミング・インタフェース（ＡＰＩ）を実施する。ロード・バランシングＡＰＩは、登録機能、構成機能、生成機能、破壊機能、追加機能、及び除去機能を含む。インタフェース構成要素４３５は、正常性チェック機能及び性能問合わせ機能を更に含むことができる。典型的な機能及び説明が表１に示される。
【００６７】
【表１】
0005632493.tif 000002
【００６８】
[0072]登録機能は、ロード・バランシング・サービス・タイプを受け入れる。例示的な実施形態において、ロード・バランシング・サービス・タイプは、直接ルーティング（例えば、そこにおいて、アプリケーション・インスタンスは仮想ネットワーク・アドレスを割り当てられる）、ネットワーク・アドレス変換（ＮＡＴ、そこにおいて、各アプリケーション・インスタンスはクライアント装置３２５によってアクセスできない内部ネットワーク・アドレスを割り当てられ、そして負荷バランサー３３０はクラスタの仮想ネットワーク・アドレスを割り当てられる）、ＩＰトンネリング（そこにおいて、各アプリケーション・インスタンスは内部ネットワーク・アドレスを割り当てられ、そして負荷バランサー３３０はクラスタの仮想ネットワーク・アドレスを割り当てられる）、プロキシ（そこにおいて、各アプリケーション・インスタンスは内部ネットワーク・アドレスを割り当てられ、そして負荷バランサー３３０はクラスタの仮想ネットワーク・アドレスを割り当てられる）、ＤＮＳ（そこにおいて、アプリケーション・インスタンスは同じＤＮＳ名を割り当てられ、そして各々はクライアント装置３２５によってアクセス可能な外部ネットワーク・アドレスを割り当てられる）、ゲスト・レベルの分散ロード・バランシング（そこにおいて、アプリケーション・インスタンスは、仮想ネットワーク・アドレス及び仮想媒体アクセス制御アドレスを共有する）、及びハイパーバイザ・レベルの分散ロード・バランシング（そこにおいて、アプリケーション・インスタンスは仮想ネットワーク・アドレスを共有する）を含むことができる。
【００６９】
[0073]性能リストは、１つ以上の性能・値対として表される。性能は、例えば、最大スループット、スケーラビリティ（例えば、ロード・バランシング・クラスタのアプリケーション・インスタンスの最大数）、ロード・バランシングが実行されるネットワーク層（例えば、層３、層４、及び／又は層７）、サポートされているか又は最適化されているプロトコル、ロード・バランシング・アルゴリズム、セッション持続、セッション持続技術、サーバ正常性チェック、サーバ正常性チェック技術、コンテンツ・キャッシング、ウェブ加速（例えば、データ圧縮、並列転送、及び／又はハイパーテキスト転送プロトコル・パイプライン方式）、及び／又は暗号化（例えば、セキュア・ソケット・レイヤー）加速を含むことができる。
【００７０】
[0074]拡張パラメータは、特定のロード・バランシング・サービスに特有であって、すべてのロード・バランシング・サービスのためのロード・バランシングＡＰＩによってサポートされていないパラメータを含むことができる。拡張パラメータは、仮想ソフトウェア・アプリケーション４０５と関連した構成に含まれて、ロード・バランシング構成要素１２４によってロード・バランシング装置３３０に提供されることができる。
【００７１】
[0075]構成機能によって受け入れられたパラメータは、インタフェース４３５に対応するロード・バランシング・サービスのタイプに基づいて変動することがある。例えば、ロード・バランシング・サービスが複数のセッション持続技術をサポートする場合、構成機能を呼び出すときに、サポートされたセッション持続技術の内の１つを特定することができる。
【００７２】
[0076]記載されている方法は、計算装置、例えばクラスタ２００のホスト２０１により実行されることができる（図３に示す）。計算装置は、メッセージ及び／又は格納データの交換によって互いに通信する。計算装置は、同報メッセージ（例えば、全ネットワーク及び／又はデータバスに対して）、マルチキャスト・メッセージ（例えば、複数の他の計算装置にアドレス指定される）、及び／又は複数のユニキャスト・メッセージとしてメッセージを送信することができて、それらの各々は個々の計算装置にアドレス指定される。更に、いくつかの実施形態において、メッセージは、引渡しを保証しないネットワーク・プロトコル、例えばユーザ・データグラム・プロトコル（ＵＤＰ）を使用して送信される。その結果、メッセージを送信するときに、計算装置はメッセージの複数のコピーを送信することができ、計算装置が不着のリスクを低下させることを可能にする。
【００７３】
[0077]本願明細書に記載されている動作は、コンピュータ又は計算装置により実行されることができる。コンピュータ又は計算装置は、１つ以上のプロセッサ又は処理ユニット、システム・メモリ、及びなんらかのコンピュータ可読媒体を含むことができる。典型的なコンピュータ可読媒体は、フラッシュ・メモリ・ドライブ、デジタル多用途ディスク（ＤＶＤ）、コンパクト・ディスク（ＣＤ）、フロッピー（登録商標）・ディスク、及びテープ・カセットを含む。例えば、この例に限らないが、コンピュータ可読媒体はコンピュータ可読記憶媒体及び通信媒体を備える。コンピュータ可読記憶媒体は、情報、例えばコンピュータ可読命令、データ構造、プログラム・モジュール、又は他のデータを格納する。通信媒体は、通常、搬送波又は他の搬送機構のような変調データ信号内のコンピュータ可読命令、データ構造、プログラム・モジュール、又は他のデータに具体化され、そしていかなる情報提供媒体も含む。上記のいずれの組合せもコンピュータ可読媒体の範囲内に含まれる。
【００７４】
[0078]典型的なコンピュータ・システム環境に関連して説明されているけれども、本開示の実施形態は、多数の他の汎用又は専用のコンピューティング・システム環境又は構成によって有効である。本開示の態様での使用に適している周知のコンピュータ・システム、環境、及び／又は構成の実施例は、モバイル計算装置、パーソナル・コンピュータ、サーバ・コンピュータ、ハンドヘルド又はラップトップ装置、マルチプロセッサ・システム、ゲーム・コンソール、マイクロプロセッサ・ベースのシステム、セットトップボックス、プログラム可能な家電、携帯電話、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又は装置のいずれをも含む分散コンピューティング環境などを含むが、これに限定されるものではない。
【００７５】
[0079]本開示の実施形態は、１つ以上のコンピュータ又は他の装置により実行されるコンピュータ実行可能な命令、例えばプログラム・モジュールとの一般的な関連で説明することができる。コンピュータ実行可能な命令は、１つ以上のコンピュータ実行可能構成要素又はモジュールに編成されることができる。通常、プログラム・モジュールは、特定のタスクを実行するか又は特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、構成要素、及びデータ構造を含むが、これに限定されるものではない。本開示の態様は、この種の構成要素又はモジュールのいかなる数及び編成によっても実施することができる。例えば、本開示の態様は、本願明細書に図示されて説明されている特定のコンピュータ実行可能な命令あるいは特定の構成要素又はモジュールに限定されるものではない。本開示の他の実施形態は、本願明細書に図示されて説明されているものと同程度の機能を有するいろいろなコンピュータ実行可能な命令又は構成要素を含むことができる。
【００７６】
[0080]本開示の態様は、本願明細書に記載されている命令を実行するようにプログラムされるときに、汎用コンピュータを専用コンピュータに変える。
【００７７】
[0081]本願明細書に図示されて説明されている動作は、コンピュータ可読媒体にコード化されるソフトウェア命令として、動作を実行するようにプログラムされたか又は設計されたハードウェアにおいて、又は両方ともで実施することができる。例えば、本開示の態様はチップ上のシステムとして実施することができる。
【００７８】
[0082]本願明細書に図示されて説明されている実施形態のほかに本願明細書に特に説明されていないが本開示の態様の範囲内にある実施形態もまた、ソフトウェア・アプリケーション・インスタンスの高い可用性を維持するための典型的な手段、例えば仮想計算機を構成する。
【００７９】
[0083]特に明記しない限り、本願明細書に図示されて説明されている本開示の実施形態における動作の実行又は遂行の順序は、重要ではない。即ち、特に明記しない限り、動作はいかなる順序でも実行でき、本開示の実施形態は、付加的であるか又は本願明細書に開示されるより少ない動作を含むことができる。例えば、特定の動作を、別の動作の前に、それと同時に、又はそれの後に実行又は遂行することは、本開示の態様の範囲内であると考えられる。
【００８０】
[0084]本開示の態様又はその実施形態の要素を紹介するときに、冠詞「ａ」、「ａｎ」、「ｔｈｅ」、及び「ｓａｉｄ」は、１つ以上の要素があることを意味することを目的とする。用語「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、及び「有する（ｈａｖｉｎｇ）」は、包括的であり、そしてリストされた要素以外の追加要素があり得ることを意味することを目的とする。
【００８１】
[0085]本開示の態様を詳細に説明したので、変更態様及び変形例が、添付の請求の範囲に記載の本開示の態様の範囲を逸脱せずに可能であることは明らかである。さまざまな変更が、本開示の態様の範囲を逸脱せずに上記の構造、製品、及び方法で行われることができるので、上記説明に含まれて添付図面に示されるすべての事項が例示であり、そして限定的でないとして解釈されるべきであることが意図されている。
【図１】
0005632493.tif 000003
【図２】
0005632493.tif 000004
【図３】
0005632493.tif 000005
【図４】
0005632493.tif 000006
【図５】
0005632493.tif 000007
【図６】
0005632493.tif 000008