この書類に開示されているもののいくつかの実施形態は、コンピューティング・ブロック・プラットフォーム(computing block platform、計算ブロック基礎技術、コンピューティングのためにブロック化されたプラットフォーム)であって、コンバージド・インフラストラクチャ(converged infrastructure、統合インフラストラクチャ、統合基盤、統合コンピューティング・プラットフォーム)と称されることがあるものを用いており、そのコンバージド・インフラストラクチャは、ITストラクチャを、コンピューティング・キャパシティ、ストレージ・キャパシティおよびネットワーキング・キャパシティはもとより仮想化されたフィジカルより成る1つのプール(a pool、1つのパッケージ)に統合するものであり、そのプールは、複数のアプリケーションによって共有され、方向性が異なる複数のビジネスが、サイロ型のアーキテクチュアおよびITスプロール(IT sprawl、ITの無計画な拡大)という問題に対処するために提案されてきている。ある企業がコンバージド・インフラストラクチャ・プラットフォームを使用する場合、その企業は、その新しいコンバージド・インフラストラクチャ・プラットフォームを、データ・センタのような既存の任意のコンピューティング・インフラストラクチャ内において統合する(integrate、合体させる、インテグレートする、複数の異なるコンポーネントを組み合わせ、一体として機能するようにする、コンバージド・インフラストラクチャ・プラットフォームの構成を、既存の任意のコンピューティング・インフラストラクチャと相互作動性を有するように、設定する)ことの困難性に直面する可能性がある。ある企業がコンバージド・インフラストラクチャ・プラットフォームを使用することが可能である段階の前段階においては、前記コンバージド・インフラストラクチャ・プラットフォームの「内部」に存在する複数の物理資源(例えば、ブレード・サーバ(blade server、複数のブレードすなわち基板より成るサーバ)、ネットワーク・スイッチ、ストレージ)および複数の仮想マシンを、前記コンバージド・インフラストラクチャ・プラットフォームの「外部」に存在する複数の物理資源および複数の仮想マシンと通信するとともに、その逆向きの通信を行うように設定することが必要である。さらに、コンバージド・インフラストラクチャ・プラットフォームを、複数の機能的コンポーネントを有するアプリケーション(例えば、複数の仮想マシン上で動作するもの)を実行するように設定することが可能である。それら機能的コンポーネントのうちの少なくとも一つが、前記コンバージド・インフラストラクチャ・プラットフォームの外部において動作する(running)既存の複数のサービス(services、プログラムなど)に依存することが可能であり、また、それら機能的コンポーネントのうちの少なくとも一つを、前記既存のデータ・センタ内で動作する(running)複数の任意の必要なサービス(any required services、プログラムなど)と通信するように設定することが必要である。
したがって、コンバージド・インフラストラクチャ・プラットフォームであってそれにあるアプリケーションがロード済みである(pre-loaded)ものをインストールするためには、前記コンバージド・インフラストラクチャ・プラットフォームのネットワーキング資源、ストレージ資源およびコンピューティング資源に対して多くの変更点を加えることが必要である可能性がある。例えば、前記コンバージド・インフラストラクチャ・プラットフォーム内のネットワークは、データ・センタにおいて既に機能しているネットワークを理解し、そのデータ・センタのネットワークのセットアップ(setup、設定、設定条件)を前記コンバージド・インフラストラクチャ・プラットフォーム内に展開し(extend into、前記コンバージド・インフラストラクチャ・プラットフォームのネットワーク構成を前記データ・センタのネットワーク構成と統合し)、そして、前記コンバージド・インフラストラクチャ・プラットフォームと、前記データ・センタ内のネットワークのうち残りの部分との間での通信を可能にすることが必要である。インストールを完了するために、前記コンバージド・インフラストラクチャ・プラットフォームが、複数の新しい仮想マシンの変更および複数の既存の仮想マシンの設定値(settings、初期設定、パラメータなど)の編集を始めとして、複数の新しいVLANおよび複数の新しいポート・グループ(port group、設定が共通の複数のポートの集まり)の生成を行うことが可能である。
しかし、前記インストールが失敗すると(例えば、既存のデータ・センタのネットワークに接続できないと)、前記システムに対してなされた変更点を、前記インストールがきれいな状態(clean state、変更のない状態)から再開されるように「ロールバック(rollback、後進復帰、巻戻し)」することが望ましい可能性がある。したがって、この書類に開示されているもののいくつかの実施形態によれば、管理アプリケーション(administrative application)であって、アプリケーションのための設定(configuration、環境設定、システムの環境変数の指定、コンフィギュレーション、物理/論理構成の設定、設定作業)の前および後に、前記コンバージド・インフラストラクチャの前述の種々の資源(例えば、ネットワーキング資源、ストレージ資源、コンピューティング資源、仮想資源)のスナップショット(snapshots、プログラムやデータのファイルを特定のタイミングで取得して保存したもの)を生成するものが提供される。その管理アプリケーションは、上述のネットワーキング資源、ストレージ資源、コンピューティング資源および仮想資源の複数の構成(configurations、設定状況、環境設定状態、構成態様、設定値、コンフィギュレーション値)を復元するロールバック・オペレーションを開始する可能性がある。前記アプリケーション(the application、今回のアプリケーション)のロールバックすなわちリセットは、前記仮想インフラストラクチャ(例えば、複数の仮想マシン)についての取得済の(known、既知の)スナップショットへのリバート(reverting、復帰)のみならず、複数の物理資源のためのスペースを将来のニーズに備えて確保する(free up)ためのそれら物理資源の設定変更(configurations changes)のロールバックをも意味する。
さらに、上述のようなコンバージド・インフラストラクチャ上のあるアプリケーションを手動で配備することは、エラーが発生し易いことであり、なぜなら、そのような行為は、一般に、前記コンバージド・インフラストラクチャと、配備されるべきその特定のアプリケーションとの双方について実際に役立つ知識(working knowledge、対象物を動作させるために必要な知識であって他の知識を必要としないもの)を必要とするからである。したがって、この書類に開示されているいくつかの実施形態は、それぞれが複数の機能的コンポーネントを有する複数のアプリケーションであってそれらアプリケーション自体、複雑な設定(configuration、環境設定作業、物理/論理構成の設定、設定作業、コンフィギュレーション)およびセットアップ(set up、設定作業、準備作業)を必要とするかもしれないものを配備するために、パッケージ型アプリケーション・デリバリ・メカニズム(packaged application delivery mechanism、パッケージ型アプリケーション配信メカニズム、パッケージ型アプリケーション(ウェブ・アプリケーションを構成する複数のファイルをパッケージにして一つにまとめたもの)を配信するメカニズム)を有する。例えば、一実施形態においては、決定論アプローチ(deterministic approach)が、複数の資源を、アプリケーションごとに、前記コンピューティング・ブロック・プラットフォームから選択される複数の資源より成るプールの範囲内で割り当てるために用いられる。前記アプリケーションは、前記割り当てられた複数の資源上にアプリケーション層として配置される(laminated、積層される、多層化される)とともに、事前にパッケージ化された(pre-packaged)状態で配信されることが可能である。前記パッケージ型アプリケーション・デリバリ・メカニズムは、利用可能な複数のコンバージド・インフラストラクチャ資源より成る1つのセットを発見し、前記コンピューティング・ブロック・プラットフォーム内に配備される予定の所与のアプリケーション(a given application、予め用意された、予め想定された1つのアプリケーション)に必要な複数の資源を決定する。このパッケージ型アプリケーション・デリバリ・メカニズムは、複数のサービス、複数の機能的コンポーネント、複数の層(tiers)、複数のノード(nodes)などであって、前記割り当てられた複数のサービスより上方に位置する前記アプリケーション層によって要求されるものを配備するモデルを提供する。
さらに、コンバージド・インフラストラクチャ・プラットフォームは、複数の機能的コンポーネントを有するアプリケーション(an application、1つのアプリケーション)を実行する(run、動作させる)ための設定が既に完了している(pre-configured、設定済み)ものである可能性がある。それら機能的コンポーネントのうちの少なくとも一つは、前記コンバージド・インフラストラクチャ・プラットフォームの外部において動作する(running)既存の複数のサービスに依存する可能性がある。したがって、前記コンバージド・インフラストラクチャ・プラットフォームの内部において動作する(running)特定のいくつかの機能的コンポーネントは、既存のデータ・センタ内において(例えば、前記コンバージド・インフラストラクチャ・プラットフォームの外部において)動作する(running)複数の任意の必要なサービス(any required services)と通信するように設定されることが必要である。この書類に開示されているいくつかの実施形態は、既存のコンピューティング環境(例えば、前記データ・センタ)を記述するインフラストラクチャ・テンプレートを用いる。前記コンバージド・インフラストラクチャ・プラットフォームは、前記インフラストラクチャ・テンプレート内において特定される(specifiy)情報を用い、その目的は、前記コンバージド・インフラストラクチャ・プラットフォームと前記データ・センタのうちの残りの部分との間での通信を可能にするために、前記コンバージド・インフラストラクチャ・プラットフォームの複数の物理資源および複数の仮想資源(例えば、複数のVM)を設定する(configure)ことにある。したがって、この書類に開示されているいくつかの実施形態によれば、コンバージド・インフラストラクチャの複数のコンポーネントをデータ・センタのサービスに統合する(integrate with、合体させる、と一体化する、インテグレートする)のに必要な時間が短縮される。さらに、この書類に開示されているいくつかの実施形態によれば、複数のネットワーク資源および複数のセキュリティ・サービスの設定中にエラーが発生するリスクが軽減される。
図1は、統合コンピューティング・プラットフォーム102であって、仮想化環境を実現するように構成されるとともに、この書類に開示されているものの一実施形態に従うものを示している。システム管理者(system administrator、システム・アドミニストレータ)150は、統合コンピューティング・プラットフォーム102を既存のコンピューティング環境(例えば、データ・センタ100)内に配備することを希望する。そのデータ・センタ100は、複数のサーバ(サーバ1041,1042,104Mとして図示されている)であって1または複数のサービス(service、プログラムなど)106を実行す(run)ものを有することが可能である。認識すべきことは、それらサーバ104は、従来のコンピューティング・コンポーネント(例えば、プロセッサ、メモリ、ストレージ)を有してもよいし、または、そのような物理ハードウエア上で実行される複数の仮想マシン(VM)であってもよいということである。それらサーバ104上で動作する(run)複数のサービス106は、前記データ・センタ内において1または複数のIT機能部(IT functions)を提供し、それらIT機能部は、ディレクトリ・サービス、ウェブ・サーバ、データベース・サーバ、アカウンティング、アプリケーション・サービング、ファイル管理、ストレージ、バックアップ・サービスなどを含む。後に詳述するように、システム管理者150は、統合コンピューティング・プラットフォーム102を、前記複数の物理資源および前記複数の仮想資源(例えば、複数のVM)であって統合コンピューティング・プラットフォーム102の内部において動作するものが既存のデータ・センタ100の複数のサービス106と通信するように、配備することを希望する。
図示されているように、コンピューティング・プラットフォーム102は、仮想化インフラストラクチャ120をサポートするように構成された物理インフラストラクチャ110を有する。図1に示すこの実施態様においては、物理インフラストラクチャ110が、複数のサーバ1161ないし116N(それらは「ホスト」と称されることがある)のような複数のハードウエア資源と、SAN118のような、1または複数のストレージ・アレイ・ネットワーク(SAN)とを有し、それらハードウエア資源とストレージ・アレイ・ネットワーク(SAN)とは、ネットワーク114によって互いに接続される。仮想化インフラストラクチャ120は、仮想化環境124であって、それ自身、1または複数の仮想マシン140を有するものを有することが可能である。コンピューティング・プラットフォーム102は、他の複数のコンピューティング・システム、例えば、複数のワークステーション、複数のパーソナル・コンピュータ、複数のデータ・センタ・サーバのようなものに、インターネットのようなネットワーク128を介して接続されることが可能である。一実施態様においては、コンピューティング・プラットフォーム102を構成する複数のコンポーネント(例えば、サーバ、ネットワーク、ストレージ、ソフトウエアなど)が、単一の統合フレームワークであって「コンバージド・インフラストラクチャ」と称されることがあるものに組織化されることが可能である。コンピューティング・プラットフォーム102を構成する前記複数のコンポーネントにより、仮想サーバ、仮想ストレージおよび仮想ネットワーク資源であって1つの企業内における複数のアプリケーションおよび/または複数の組織体によって共有されるものより成る1つのプールが提供される。
一実施態様によれば、物理インフラストラクチャ110を、「コンピューティング・ブロック」ベーズド(based、を基礎とする、系、関連)インフラストラクチャに組織化することが可能であり、ここに、複数の物理インフラストラクチャ・ユニットが、構成上の反復単位(repeatable units of construction、他の構成単位と接続されて一緒に動作することが可能な構成単位、相互作動性を有する複数の構成単位)によって特徴付けられ、それら反復単位は、性能と、動作特性と、パワー、スペースおよび冷却についてのディスクリートな複数の要求値とに関して互いに類似し、それにより、迅速な配備(deployment)、統合(integration)およびスケーラビリティを促進する。例えば、前記「コンピューティング・ブロック」は、物理インフラストラクチャ110上に置かれた複数の性能要求に基づき、複数のハードウエア資源のプロビジョン(provision、デバイスを運用可能な状態にするためのあらゆる作業、運用可能にするための準備)をダイナミックに(dynamically、動的に、状況に応じて変化する特性で)行うことが可能である。物理インフラストラクチャ110の一例は、VCE Company, LLC.(ブイシーイー カンパニー エルエルシー)から市販されているVblock(登録商標)Systemである。
物理インフラストラクチャ110は、さらに、インフラストラクチャ・マネージャ(manager、インフラストラクチャの種々の運用状態を統合管理するソフトウエア)112を有しており、そのインフラストラクチャ・マネージャ112は、物理インフラストラクチャ110の設定(configuration)と、プロビジョニング(provisioning、運用化のための準備)と、ポリシー・コンプライアンス(policy compliance、ポリシー(要望)の順守)とのそれぞれの管理を行うように構成されている。インフラストラクチャ・マネージャ112は、複数のハードウエア資源(例えば、コンピューティング資源、ネットワーキング資源、ストレージ資源)のプロビジョニングを管理するためのインタフェースを、ポリシー・ベーズド・オートメーション・アプローチ(policy-based automation、ポリシー(要望)駆動の自動化、ポリシーベースの自動化)を用いて提供する。一実施態様によれば、インフラストラクチャ・マネージャ112は、個別の複数のコンピューティング・ブロックのそれぞれの設定(configuration)と、プロビジョニング(provisioning、運用化のための準備)と、コンプライアンスとをそれぞれ管理するために、物理インフラストラクチャ110の各ユニット内に搭載されることが可能である。インフラストラクチャ・マネージャ112は、ITサービス・カタログ(IT service catalogs、顧客向けに利用可能なITサービスの一覧)およびワークフロー・エンジン(workflow engines、ルート上のフローを管理するソフトウエア・アプリケーション)への配備および統合を単純化し、さらに、トラブルシューティングおよびフォールト管理のために複数の個々のコンポーネントへの緻密なアクセス(granular access)を提供しつつ、前記プロビジョニングの全工程を抽象化することにより、コンピューティング・ブロック・プラットフォームの配備を劇的に単純化する。
一実施態様においては、インフラストラクチャ・マネージャ112が、複数のIPアドレスおよびシステム証明書(credentials、認証)から成るリストを、新たにプロビジョンされたシステムを割り当てるために有する構成(a configuration)を有することが可能である。プラットフォーム・マネージャ130および/または仮想化インフラストラクチャ120は、物理インフラストラクチャ110の管理および/または設定のために、物理インフラストラクチャ110のインフラストラクチャ・マネージャ112に接続されて通信することが可能である。インフラストラクチャ・マネージャの一例は、EMC Ionix Unified インフラストラクチャ・マネージャ(UIM)であってEMCコーポレーションから市販されているものを有する。同様に、ネットワーク114は、ネットワーク・マネージャを有することが可能であり、そのネットワーク・マネージャは、複数のネットワーク・デバイス(例えば、複数のスイッチ、複数のルータ)の設定と、複数の仮想ローカル・エリア・ネットワーク(VLAN)および他のネットワークについて、アドレッシング(addressing、アドレス割り当て)、複数のサブネット(subnets)、および複数の構成(configurations)を管理することとを行うように構成される。ネットワーク・マネージャの一例は、Cisco System, Inc.から市販されているCisc IOS コマンド・ライン・インタフェース(CLI)を介してアクセス可能なCisco Switchを有する。
仮想化インフラストラクチャ120は、バーチャライゼーション環境(virtualization environment、仮想化を行う環境、仮想化実現環境)124を有し、そのバーチャライゼーション環境124は、1つの従来のコンピューティング・デバイスの複数のコンポーネント、例えば、プロセッサ、システム・メモリ、ハード・ディスク・ドライブを、1または複数の仮想マシン140を実行するために模擬する(すなわち、仮想化する)ように構成されている。例えば、各仮想マシン140は、仮想プロセッサおよび仮想システム・メモリであってあるアプリケーションを実行するように構成されたものを有することが可能である。図1の実施態様と同様な実施態様の一実施例においては、バーチャライゼーション環境(virtualization environment)124が、サーバ1161ないし116n上にあるVMware vSphere(登録商標)ベーズドまたはVMware ESX(登録商標)ベーズドのハイパーバイザ(hypervisor)技術であってカリフォルニア州パロ・アルトに所在のVMware, Inc.によって提供されたものを動作することによって実現することが可能である(ただし、認識すべきことは、他の任意の仮想化技術であって、Xen(登録商標)およびマイクロソフト社のHyper-V仮想化技術を有するものを、この書類での教示に適合するように利用することが可能であるということである)。上述のように、ハイパーバイザ・アプリケーションは、仮想化インフラストラクチャ120のような仮想化ITインフラストラクチャを構築するとともに管理するファンデーション(a foundation、基礎)を提供することが可能である。そのハイパーバイザは、プロセッサ、メモリ、ストレージおよびネットワーキング資源を、複数の仮想マシンであって、変更されていない(unmodified、未修正の)複数のオペレーティング・システムおよび変更されていない(unmodified、未修正の)複数のアプリケーションを動作させるものに抽象化する(abstract、仮想化する)ことが可能である。
一実施態様においては、仮想化インフラストラクチャ120を、バーチャライゼーション・マネージャ(virtualization manager、仮想化を行うマネージャ、仮想化実行マネージャ)122(例えば、一実施態様においては、1つの仮想マシン内で動作するプロセスとして実現される)によって管理することが可能である。一実施態様においては、バーチャライゼーション・マネージャ122が、複数のサードパーティ(third-party)管理ツールと統合することを可能にする複数のAPIより成る1つのセットにより、エンドツーエンド(end-to-end、通信を行う二者間、通信を行う二者間を接続する経路全体)のデータセンタ管理を実現することが可能である。バーチャライゼーション・マネージャ122は、仮想化インフラストラクチャ120内の複数のVM140のプロビジョンを管理することと、複数のVM140を、それらVM140のコンピューティング、ネットワークおよびストレージのそれぞれの構成(configurations、構成条件、設定状況)が仮想化インフラストラクチャ120内において他の複数のVM140との間で相互作動性(interoperability)を有するのに適したものとなるように設定することとを行うように構成する(configure)ことが可能である。バーチャライゼーション・マネージャ122の一例は、VMware vCenter仮想化マネージメント・プラットフォームであってVMware, Inc.から市販されているものである可能性がある。
図示されているように、コンピューティング・プラットフォーム102は、さらに、プラットフォーム・マネージャ130をも有し、そのプラットフォーム・マネージャ130は、仮想化インフラストラクチャ120と物理インフラストラクチャ110とに前記通信ネットワークを介して接続される。そのプラットフォーム・マネージャ130は、あるアプリケーションをコンピューティング・プラットフォーム102内に配備するために用いられる物理インフラストラクチャ110および仮想化インフラストラクチャ120からの(from、から生成される)複数の資源のプロビジョンおよび設定(configure)を行うように構成されている。例えば、仮想化インフラストラクチャ120が、ピーク・トラフィック(peak traffic、最繁通信期間、通信量最大期間)の間、現在動作しているアプリケーションのスケーリング(scale、そのアプリケーションのサイズを増加させたり減少させたりして調整すること)を行うために、更なる複数のVMを要求する場合には、プラットフォーム・マネージャ130は、バーチャライゼーション・マネージャ122と連携する(coordinate)することが可能であり、その目的は、更なる複数の仮想マシンを、そのようなニーズをサポートするためにインスタント化する(instantiate)とともに、そのインスタント化された複数の仮想マシンを、それらのネットワーク設定条件(settings)が既存の仮想マシンのネットワーク設定条件に合致するように、設定することにある。別の例においては、プラットフォーム・マネージャ130が、既存のVM140を修正する(modify)ことが可能であり、その目的は、仮想ネットワーク・インタフェース・カード(vNIC)のような複数の仮想資源であって前記VMに割り当てられたものの追加、削除または設定を行うことにある。
図示されているように、プラットフォーム・マネージャ130は、スナップショット・サービス(snapshot service、スナップショットを作成して保存するプログラムなど)132を有し、そのスナップショット・サービス132は、コンピュータ・プラットフォーム102の複数の資源であって、ネットワーキング資源(例えば、ネットワーク114)、ストレージ資源(例えば、SAN118)、コンピューティング資源(例えば、サーバ116)および仮想資源(例えば、VM140)を有するもののすべてのレベルの全体にわたり、コンピュータ・プラットフォーム102の設定状態(a configuration state、構成状態)を保存するように構成されている。一実施態様においては、スナップショット・サービス132が、前記設定状態を、ネットワーキング、ストレージ、コンピューティングおよび仮想マシンの、それぞれの「スナップショット」138として保存することが可能である。スナップショット138のタイプは、キャプチャされた(captured、スナップショットが取得されて保存された、取り込まれた)資源のタイプに応じて異なることが可能である。例えば、VM140のスナップショットは、VMの状態をカプセル化したコンテナ・ファイル(container file、コンテナに格納されて構成されたファイル)であって、文書およびデータ、ならびに、それの仮想ハードウエア(例えば、CPU、メモリ、ディスクなど)についての情報を有するもの、コンテナ・ファイルへのレファレンスもしくはリンク、または、1もしくは複数のコンテナ・ファイル間の相違点を記述したデルタ・ファイル(delta file、差分ファイル)を有することが可能である。別の例においては、ネットワーキング資源(例えば、ネットワーク114)のスナップショットが、当該ネットワーキング資源上で実行される複数の管理オペレーション(administrative operation、管理業務、管理動作)であってVLANの追加、DMZの生成などようなもののログ(log、履歴)を有する。
図示されているように、スナップショット・サービス132は、複数のスナップショット138を保存するリポジトリ(repository、貯蔵庫)を保持することが可能であり、それらスナップショット138のリポジトリ(the repository of snapshots 138、スナップショット・レポジトリ138)は、コンピューティング・プラットフォーム102の複数の資源に対する設定変更(configuration changes)を復元する(restore、既存の設定変更を削除する)ために、後に、使用される可能性がある。一実施態様においては、複数のスナップショット138の前記リポジトリが、コンピューティング・プラットフォーム102のネットワーキング資源、ストレージ資源、コンピューティング資源および仮想資源上で実行される複数のオペレーション(operations、動作)を保存するリポジトリとして実現することが可能である。動作中、スナップショット・サービス132は、適宜、前記リポジトリ内の複数のエントリ(entries、記載事項)に対する追加、削除および更新を行うことが可能である。例えば、スナップショット・サービス132は、コンピューティング・プラットフォーム102がデータ・センタ100内にインストールされて配備される(deployment、動作可能に据え付けられる)ことが成功したと判定されると、複数のスナップショット138の前記リポジトリ内の複数のエントリより成る1セットが消去(purge、削除)され、このとき、それらエントリのセットは、外部のもの(extraneous、考慮中の問題に関係しないもの、当該システムの内部に存在しない)となっている。
一実施態様においては、プラットフォーム・マネージャ130が、復元サービス(restore service、復元を行うためのプログラムなど)134を有し、その復元サービス134は、コンピューティング・プラットフォーム102を、過去に保存された状態に復元するように構成されている。この復元サービス134は、コンピューティング・プラットフォーム102を、過去の状態に、例えば、コンピューティング・プラットフォーム102が誤ってインストールされた時期に先立って保存された状態に復元するために、複数のスナップショット138の前記リポジトリから検索されたいくつかのスナップショットを使用することが可能である。いくつかの実施態様においては、復元サービス134が、ネットワーキング資源、ストレージ資源、コンピューティング資源および仮想資源に対して行われたいくつかの設定変更(configuration changes)を元通りにする(undo、既存の設定変更を削除する)ために選択された一連の複数のオペレーションを実行することが可能である。例えば、復元サービス134は、ネットワーク114のネットワーク・マネージャに対して、インストール中に追加されたVLANを削除するように指示したり、インフラストラクチャ・マネージャ112に対して、インストール中にプロビジョンされたブレード(a blade、1枚のサーバ基板)116またはストレージ・ボリュームの割り当てを解除する(de-allocate)ように指示することが可能である。
いくつかの実施態様においては、コンピューティング・プラットフォーム102のインストールに先立ち、1または複数の機能的コンポーネントを有するアプリケーション(an application、1つのアプリケーション)を、コンピューティング・プラットフォーム102上にインストールしたりロードすることが可能である。前記アプリケーション(the application、今回のアプリケーション)の各機能的コンポーネントは、前記アプリケーション(the application、今回のアプリケーション)の1または複数のタスクを実行することおよび/または前記アプリケーション(the application、今回のアプリケーション)のファクション層(a functional layer、1つのファンクション層)を(例えば、1つの多層アプリケーションという形態で)提供することを行う。それら機能的コンポーネントは、種々のソフトウエア・コンポーネント、オペレーティング・システムおよび構成(configurations)(例えば、1つのVM140上で実行される(executing)もの)を有し、それらは、1つの多層アプリケーションとして機能するように相互に動作する(inter-operate)。例えば、配備されたウェブ・アプリケーションを構成する複数の機能的コンポーネントは、ウェブ・サーバ、アプリケーション・サーバおよびデータベース・サーバであって、それぞれ、仮想化インフラストラクチャ120からの(from、から生成される)1つのVM140上で実行される(executing)。
いくつかの実施態様においては、コンピューティング・プラットフォーム102を既存のデータ・センタ100にインストールするプロセス(process、方法)が、コンピューティング・プラットフォーム102の複数の資源を、ロード済の(pre-loaded)アプリケーションおよびそれの複数の機能的コンポーネントであってコンピューティング・プラットフォーム102内において動作しているものがデータ・センタ100の既存の複数のサービス106と通信することを可能にするように設定する工程を有する。一例においては、プラットフォーム・マネージャ130が、コンピューティング・プラットフォーム102内において動作する仮想デスクトップ・インフラストラクチャ(VDI)のために、コンピューティング・プラットフォーム102のネットワーキング資源、ストレージ資源、コンピューティング資源および仮想資源に対する設定変更(configuration changes)を行うことが可能であり、このプラットフォーム・マネージャ130が、図2においてより詳細に図示されている。
図示されているように、プラットフォーム・マネージャ130は、さらに、資源発見(resource discovery、情報資源の発見)サービス133をも有しており、その資源発見サービス133は、前記新たに配備されたコンピューティング・プラットフォーム102を、データ・センタ100のうちの残りの部分に接続することを要求する(seek)システム管理者150にとって関心のある複数の資源(例えば、複数のサーバ104、複数のサービス106)をそれぞれ識別する(identify、他のものから区別する)ように構成されている。いくつかの実施態様においては、その資源発見サービス133が、コンピューティング・プラットフォーム102と、既存のデータ・センタ100のうちの残りの部分との間の通信を可能にするように構成されることが必要であるネットワーク108の複数のネットワーク・スイッチおよび複数のブレード(blades、サーバ基板)をそれぞれ識別する(identify、他のものから区別する)ことが可能である。
一実施態様においては、プラットフォーム・マネージャ130が、資源発見サービス133によって識別された資源に基づいてインフラストラクチャ・テンプレート139を生成するように構成される。そのインフラストラクチャ・テンプレート139は、統合コンピューティング・プラットフォーム102がこれから配備されようとしている(being deploymed、配備中である)対象である既存のコンピューティング環境(例えば、データ・センタ100)を記述する複数のインフラストラクチャ・パラメータを有する。それらインフラストラクチャ・パラメータであってインフラストラクチャ・テンプレート139によって特定されるもののいくつかの例としては、コンピューティング・プラットフォーム102のネットワーク114が、既存のデータ・センタ100のネットワーク108との接続のために使用すべきである複数のVLAN識別子と、データ・センタ100内において動作するDNSサーバの複数のIPアドレスと、コンピューティング・プラットフォーム102の複数のVM140に割り当てられるべき複数のIPアドレス、複数のサブネット・マスクおよびゲートウェイIPアドレスの範囲(IPアドレス範囲、サブネット・マスク範囲およびゲートウェイIPアドレス範囲)とがある。いくつかの実施態様においては、インフラストラクチャ・テンプレート139を、コンピューティング・プラットフォーム102内に配備されるあるアプリケーション(an application、1つのアプリケーション)に固有であるように発生させることが可能である。したがって、インフラストラクチャ・テンプレート139内に含まれる複数のインフラストラクチャ・パラメータは、コンピューティング・プラットフォーム102内において実行される前記アプリケーション(the application、今回のアプリケーション)によって要求される具体的な設定状態(configurations、設定状況、環境設定状態、構成態様、設定値、コンフィギュレーション値)、設定条件(settings、初期設定、パラメータなど)および情報を取り扱う。インフラストラクチャ・テンプレート139は、適切な任意の構造化データ構造または半構造化データ構造であって、XML言語で記述された文書(Extensible Markup Language (XML) document)、関係(relational)データベース、およびキー・バリュー型(key-value)データ・ストアのようなものを用いて実現することが可能である。
いくつかの実施態様においては、プラットフォーム・マネージャ130を、複数のインフラストラクチャ・テンプレート139が、コンバージド・インフラストラクチャ(例えば、コンピューティング・プラットフォーム102)の他の複数のインスタンス(instance、稼働・処理・実行を行う実体)間で転送されることが可能となるように、それらインフラストラクチャ・テンプレート139のインポートおよびエクスポートを行うように構成することが可能である。プラットフォーム・マネージャ130は、さらに、コンピューティング・プラットフォーム102の既知の構成(configurations、設定状況、構成条件、コンフィギュレーションズ)および設定値(settings、設定条件、セッティングス)のバックアップと、既知のインフラストラクチャ・テンプレート139の実証および配備と、他のそのような管理的タスクの実行とを目的として、それらインフラストラクチャ・テンプレート139のインポートおよびエクスポートをも行うことが可能である。
図示されているように、プラットフォーム・マネージャ130は、さらに、資源設定(resource configuration、資源を設定する)サービス102を、インフラストラクチャ・テンプレート139に基づいてコンピューティング・プラットフォーム102の複数の物理資源および複数の仮想資源を設定するために有することが可能である。例えば、資源設定サービス135は、コンバージド・インフラストラクチャ(例えば、コンピューティング・プラットフォーム102)と既存のデータ・センタ100との間での通信を可能にするために、インフラストラクチャ・テンプレート139に基づいて前述の複数のネットワーク・スイッチおよび複数のブレードを設定することが可能である。別の例においては、資源設定サービス135が、インフラストラクチャ・テンプレート139の複数のインフラストラクチャ・パラメータに基づき、コンピューティング・プラットフォーム102内において動作する複数のVM140の複数のネットワーク・インタフェース・カード(NIC)を設定することが可能である。
図2は、既存のデータ・センタ100内に統合されるべき1つのアプリケーション200を実行するコンピューティング・プラットフォーム102であって、この書類に開示されているものの一実施形態に従うものを示している。図示されているように、プラットフォーム・マネージャ130は、仮想デスクトップ・インフラストラクチャ(VDI)200を、仮想化インフラストラクチャ120内の複数のVM140上において配備することが可能である。VDIシステム200の一例は、VMware ViewシステムであってVMware, Inc.から市販されているものを有する。
VDIシステム200においては、エンド・ユーザ210がVDIクライアント・ソフトウエア・プログラム(例えば、VDIクライアント(VDI client、VDIクライアント機)212)であってローカル・コンピューティング・デバイス(local computing device、エンド・ユーザの側にある物理コンピューティング・デバイス)のオペレーティング・システム上で動作するものを使用し、それにより、エンド・ユーザの場所から離れた位置にあるかもしれないコンピューティング・プラットフォーム102内のいずれかのVM140内において動作しているかもしれない、エンド・ユーザ210のデスクトップ(desktop、仮想デスクトップ)にアクセスする。「デスクトップ」という用語は、一般に、コンピュータのオペレーティング・システムおよびソフトウエア・アプリケーションによって提供される対話的な動作環境のインスタンス(instance、稼働・処理・実行を行う実体)であって、典型的には、ディスレイや音声の出力装置ならびにキーボードやマウスの入力装置を意味することに注意されたい。VDIクライアント212を用いることにより、ユーザは、リモート(remote、遠隔、ユーザから離れた位置にある)・データ・センタ(例えば、コンピューティング・プラットフォーム102)内において動作するリモート・デスクトップ206に、ネットワーク128を経由して、いずれの場所からでも、アクセスすることが可能であり、そのアクセスは、汎用(general purpose)コンピュータであって、コモディティ(commodity)・オペレーティング・システムと、VMware(登録商標) View(トレードマーク)のようなVDIクライアント・ソフトウエア・プログラムとを動作させるもの、または、Dell、HP、NEC、Sun Microsystems、Wyseおよびその他の会社から市販されているもののような、用途が特化されたシン・クライアント機(special purpose thin client)を用いることにより、行われる。
図示されているように、VDIシステム200は、接続サーバ(connection server)202を有しており、その接続サーバ202は、リモート(remote、遠隔、ユーザから離れた位置にある)・デスクトップ206のためのユーザ認証を行い、入力デスクトップ・リクエスト(direct incoming desktop requests、デスクトップに入力されたリクエスト)(例えば、VDIクライアント212から)を、対応するリモート・デスクトップ206に指示する(direct、向ける)。例示すれば、VDIシステム200は、さらに、1または複数のセキュリティ・サーバ204(例えば、1または複数のVM140内において動作する)をも有しており、そのセキュリティ・サーバ204は、インターネットのような外部ネットワークからリモート・デスクトップ206へのセキュアな(secure、機密性が高い、安全な、不正でない)アクセスを可能にする。そのセキュリティ・サーバ204は、トラスト(trust)・ネットワーク(例えば、ネットワーク114)の内部における接続のためのプロキシ・ホスト(proxy host、代理ホスト)として動作することが可能であり、また、そのセキュリティ・サーバ204は、接続サーバ202を、公衆に面する(public-facing)インターネットから発生するリクエストからシールドする(shield、保護する、遮断する)。説明を簡単にするために、1つのネットワークが図示されているが、認識すべきことは、実装においては、VDIシステム200を構成する複数のコンポーネントを、同じネットワークまたは別のネットワーク上で互いに接続することが可能であるということである。さらに、前述の仮想化デスクトップ・インフラストラクチャの具体的な構成(configuration)が、文章によって上述されるとともに図2に図示されているが、認識すべきことは、本発明の1または複数の実施態様を、当該仮想化デスクトップ・インフラストラクチャの別の構成と一緒に実施することが可能であるということである。
VDIシステム200およびコンピューティング・プラットフォーム102をデータ・センタ100内にインストールしている作業中に、接続サーバ202は、Microsoft(登録商標)社のActive Directory(登録商標)のようなドメイン・コントローラ208であって、既存のデータ・センタ100内において(例えば、サーバ1042上で)既に動作しているものに接続することが可能であるということである。そのドメイン・コントローラ208は、ユーザのログイン情報および証明書(credentials、認証)を有するユーザ・アカウント214(例えば、エンド・ユーザ210のユーザ・アカウント)を管理する。さらに、接続サーバ202およびセキュリティ・サーバ204は、ドメイン・ネーム・システム(DNS)サービス216に接続することが可能であり、そのDNSサービス216は、VDIシステム200を構成する前記複数の機能的コンポーネント(例えば、接続サーバ202、セキュリティ・サーバ204およびリモート・デスクトップ206)にいくつかのドメイン・ネームを提供するために、コンピューティング・プラットフォーム102の外部にあるサーバ1041上にインストールされる。バーチャライゼーション・マネージャ122は、データ・センタ100内の「管理プレーン」と接続されることが必要となる可能性があり、また、接続サーバ202およびセキュリティ・サーバ204にアクセスすることが可能である可能性がある。VDIシステム200のためのネットワーク・アーキテクチャは、自身が、1または複数の仮想ローカル・アクセス・ネットワーク(VLAN)を有するように、セット・アップすることが可能であり、そのVLANは、接続サーバ202、セキュリティ・サーバ204、リモート・デクストップ206、ドメイン・コントローラ208、DNSサービス216の間に、ネットワーク108および114を横断するように設置される。例えば、システム管理者(system administrator、システム・アドミニストレータ)150は、接続サーバ202およびセキュリティ・サーバ204の設定を行うため、それら接続サーバ202およびセキュリティ・サーバ204へのアクセスを要求する。さらに、エンド・ユーザ210によって操作されるVDIクライアント212は、接続サーバ202およびセキュリティ・サーバ204へのアクセス(例えば、ネットワーク128,108,114を経由して)を要求するであろう。VDIシステム200を構成する前記複数の機能的コンポーネントとデータ・センタ100のネットワーク128との間における1対多の対応関係は、VDIシステム200の適切なオペレーションを確保するために、コンピューティング・プラットフォーム102に展開されること(extended onto、前記対応関係を反映するようにコンピューティング・プラットフォーム102が配備されること、コンピューティング・プラットフォーム102の構成が前記対応関係を反映するように設定されること)を要求するであろう。
図2は、1つのアプリケーション(例えば、VDIシステム200)の一具体例を示しているが、コンピューティング・プラットフォーム102内において動作する他のいくつかのアプリケーションを、自身が、データ・センタ100内において動作する複数のサービス106と接続されて通信を行う複数のコンポーネントを有するように、配備することが可能である。例えば、アプリケーション・サーバ層と、データ・グリッド層と、データベース層とを有する1つのアプリケーションを有するコンピューティング・プラットフォーム102を、既存のデータ・センタ100の前記複数のサービス内において統合することが可能である。
図3は、統合コンピューティング・プラットフォームを既存のデータ・センタ内に配備する(deploy、デプロイする、インストールする)ための方法の複数のステップ(step、工程)であってこの書類に開示されているもののいくつかの具体的な側面に従うものを示すフロー図である。図示されているように、この方法300は、ステップ302からスタートし、そのステップ302においては、プラットフォーム・マネージャ130がコンピューティング・プラットフォーム102の「工場出荷時状態(factory state、ファクトリ・ステート)」をキャプチャする(capture、取り込む、保存する、取得する)。「工場出荷時状態(factory state、ファクトリ・ステート)」という用語は、コンピューティング・プラットフォーム102の複数の資源が初期化されて設定される(例えば、後述のステップ304および308におけるように)前のコンピューティング・プラットフォーム102の状態を記述するために用いることが可能である。一実施態様においては、スナップショット・サービス132が、コンピューティング・プラットフォーム102上にあるネットワーキング資源(例えば、ネットワーク114)、ストレージ資源(例えば、SAN118)、コンピューティング資源(例えば、サーバ116)および仮想資源(例えば、VM140)のそれぞれの初期スナップショットを取得する。コンピューティング・プラットフォーム102の状態をキャプチャするための複数のオペレーションは、後に、図4に関連して詳述される。
ステップ304においては、プラットフォーム・マネージャ130が、あるアプリケーションを実行するためにコンピューティング・プラットフォーム102の複数の資源のプロビジョンを行うとともに、データ・センタ100と通信するために前記複数の資源を設定する。いくつかの実施態様においては、プラットフォーム・マネージャ130が、コンピューティング・プラットフォーム102から(from)物理資源および仮想資源を、前記アプリケーション(the application、今回のアプリケーション)を構成する複数の機能的コンポーネントを実行するために、割り当てる。一実施態様においては、プラットフォーム・マネージャ130が、データ・センタ100の複数のサービスと相互に動作する(inter-operate)するために、コンピューティング・プラットフォーム102の複数の資源を設定する。プラットフォーム・マネージャ130は、ネットワーキング資源(例えば、ネットワーク114)と複数のホスト(例えば、複数のサーバ116)とを設定するようにインフラストラクチャ・マネージャ112を指示する(direct)ことが可能であり、前記設定の目的は、前記アプリケーション(the application、今回のアプリケーション)の前記複数の機能的コンポーネントをデータ・センタ100の複数のサービス106に接続するという要求を満たすために、VLANおよびポート・グループを割り当てるとともにサービス品質(QoS、通信品質)の設定条件(settings)および他の複数のパラメータをセットすることにある。プラットフォーム・マネージャ130は、VM140を設定するためにバーチャライゼーション・マネージャ122を指示する(direct)ことが可能であり、前記設定の目的は、コンピューティング・プラットフォーム102の外部にある複数のサービス106にアクセスすることと、コンピューティング・プラットフォーム102の外部にある複数のサービス106が複数のVM140と通信することとのために、ネットワーク・インタフェース・カード(NIC)を追加することにある。
VDIシステム200の前記一例においては、プラットフォーム・マネージャ130が、コンピューティング・プラットフォーム102の複数の資源を設定することが可能であり、その設定の目的は、接続サーバ202とドメイン・コントローラ208との間の通信を可能にすることと、セキュリティ・サーバ204とネットワーク108との間の通信を可能にすることと、複数のリモート・デスクトップ206とネットワーク108との間の接続を可能にすることとにある。セットされる可能性があるいくつかの設定(configurations、設定作業)のいくつかの例としては、ドメイン・コントローラ208の管理のために設定されたあるIPアドレス(an IP address、1つのIPアドレス)の割り当てと、ドメイン・コントローラ208へのアクセスのために設定されたあるIPアドレス(an IP address、1つのIPアドレス)の割り当てと、ドメイン・コントローラ208のための認証情報の割り当てと、コンピューティング・プラットフォーム102がデータ・センタ100の「管理プレーン」と通信するために用いるべきであるあるVLAN ID(a VLAN ID、1つのVLAN ID)の割り当てと、コンピューティング・プラットフォーム102がデータ・センタ・「アクセス」・ネットワークと通信するために用いるべきであるあるVLAN ID(a VLAN ID、1つのVLAN ID)の割り当てと、管理とユーザ・アクセスとのためにVDIシステム200の前記複数の機能的コンポーネントに割り当てられるべき複数のIPアドレスの割り当てと、データ・センタ・ネットワーク108上のDNSサービス216の前記IPアドレスの割り当てと、コンピューティング・プラットフォーム102内の複数のVM140のためのサブネット・マスクおよびゲートウェイIPアドレスの割り当てとがある。
一実施態様においては、プラットフォーム・マネージャ130が、システム管理者150によって提供された数値(例えば、グラフィカル・ユーザ・インタフェースを介して入力される)に基づき、物理インフラストラクチャ110および仮想化インフラストラクチャ120のそれぞれの複数の資源を設定することが可能である。
別の実施態様においては、プラットフォーム・マネージャ130が、インフラストラクチャ・テンプレートに基づき、物理インフラストラクチャ110および仮想化インフラストラクチャ120のそれぞれの複数の資源を設定することが可能である。インフラストラクチャ・テンプレートは、既存のコンピューティング環境(例えば、データ・センタ100)であって統合コンピューティング・プラットフォーム102がこれから配備されようとしている(being deployed)対象であるものを記述する複数のインフラストラクチャ・パラメータを特定する。そのインフラストラクチャ・テンプレートによって特定される複数のインフラストラクチャ・パラメータのいくつかの例としては、コンピューティング・プラットフォーム102のネットワーク114が、既存のデータ・センタ100のネットワーク108と通信するために使用すべきVLAN識別子と、データ・センタ100内において動作するDNSサービスの複数のIPアドレスと、複数のIPアドレス、複数のサブネット・マスクおよびゲートウェイIPアドレスの範囲であって、それぞれ、コンピューティング・プラットフォーム102のVM140に割り当てられるべきものとがある。いくつかの実施態様においては、前記インフラストラクチャ・テンプレートを、コンピューティング・プラットフォーム102内において配備される具体的な(specific、個別の)アプリケーションのために(for a specific application、個々の具体的なアプリケーションに個別に適合するように)提供することが可能である。したがって、前記インフラストラクチャ・テンプレート内に存在する前記複数のインフラストラクチャ・パラメータは、いずれも具体的な、複数の構成(configurations、設定状況、構成条件、コンフィギュレーションズ)、複数の設定値(settings、設定条件、セッティングス)および情報であって、いずれも、コンピューティング・プラットフォーム102内において実行される前記アプリケーション(the application、今回のアプリケーション)によって要求されるものを取り扱うことが可能である。一実施態様においては、前記インフラストラクチャ・テンプレートが、XML言語で記述された文書(Extensible Markup Language (XML) document)として実現されることが可能であるが、適切な任意の構造化データ構造または半構造化データ構造であって、関係(relational)データベースまたはキー・バリュー型(key-value)データ・ストアのようなものが用いられることが可能である。配備されたVDIシステム200を有するコンピューティング・プラットフォーム102をデータ・センタ100を用いてインストールするために提供されたインフラストラクチャ・テンプレートの一例が次のテーブル1(Table 1)に示されている。
プラットフォーム・マネージャ130が、インフラストラクチャ・テンプレートを用いて、コンピューティング・プラットフォーム102の複数の資源を設定する複数の実施態様においては、そのプラットフォーム・マネージャ130が、前記インフラストラクチャ・テンプレートを複数のスナップショット138の前記リポジトリ内に、将来における任意のロールバック(rollback、後進復帰、巻戻し)・オペレーションのために使用されるべき情報として保存することが可能である
ステップ306においては、スナップショット・サービス132が、コンピューティング・プラットフォーム102の設定後状態(post-configuration state)をキャプチャする。後に詳述するように、復元サービス134は、そのキャプチャされた設定後状態を、コンピューティング・プラットフォーム102をそれの工場出荷時状態(factory state)に復元するために用いることが可能である。
ステップ308においては、プラットフォーム・マネージャ130が、複数の機能的コンポーネントを有する前記アプリケーション(the application、今回のアプリケーション)をインストールし、それら機能的コンポーネントは、コンピューティング・プラットフォーム102の複数の資源を用いる。例えば、プラットフォーム・マネージャ130は、接続サーバ202、セキュリティ・サーバ204およびリモート・デスクトップ206を実行する複数のVM140を有するVDIアプリケーション(例えば、VDIシステム200)を配備することが可能である。一実施態様においては、プラットフォーム・マネージャ130が、前記アプリケーション(the application、今回のアプリケーション)の前記複数の機能的コンポーネントを実行することを目的として、複数の仮想資源(例えば、VRAM、ストレージ)を有する1または複数のVM(例えば、複数のVM140)を生成するように、バーチャライゼーション・マネージャ122を(例えば、複数のAPIより成る1セットにより)指示するコール(call、呼び出し)を発動することが可能である。プラットフォーム・マネージャ130は、前記割り当てられた複数の資源上の前記複数の機能的コンポーネントの複数のインスタンスを配備する。例えば、プラットフォーム・マネージャ130は、複数のソフトウエア・パッケージを前記プロビジョンが行われた複数のVM140上にインストールすることが可能であり、または、これに代えて、プラットフォーム・マネージャ130は、複数のパッケージ化済み(pre-packaged)VM(packaged VM、パッケージ型VM)であって、前記アプリケーション(the application、今回のアプリケーション)の複数のコンポーネントと、ゲスト・オペレーティング・システムとであって、いずれも当該VM上にインストール済みである(pre-installed)ものを有するものに基づき、1または複数のVM(例えば、複数のVM140)を生成するように、バーチャライゼーション・マネージャ122を(例えば、複数のAPIより成る1セットにより)指示するコール(call、呼び出し)を発動することが可能である。いくつかの実施態様においては、プラットフォーム・マネージャ130が、VMテンプレートに基づき、ある機能的コンポーネント(a functional component、1つの機能的コンポーネント)の複数のインスタンスを生成し、そのVMテンプレートは、あるVM(a VM、1つのVM)を定義し、そのVMは、いずれもインストール済の、複数のソフトウエア・コンポーネント、オペレーティング・システムおよび複数の構成(configurations、設定状況、構成条件、コンフィギュレーションズ)を有し、それら構成は、具体的な一つの機能的コンポーネント(a particular functional component)に対応する。
ステップ310においては、前記アプリケーション(the application、今回のアプリケーション)のインストールが完了した後、スナップショット・サービス132が、コンピューティング・プラットフォーム102のネットワーキング資源、ストレージ資源、コンピューティング資源および仮想資源のスナップショットを取得することが可能であり、そのスナップショットは、前記コンバージド・インフラストラクチャ・プラットフォーム(例えば、コンピューティング・プラットフォーム102)のインストール後状態(post-installation state)をキャプチャする。そのインストール後スナップショットは、上述のステップ302および306において生成された複数のスナップショットと同様にしてキャプチャすることが可能である。
ステップ312においては、プラットフォーム・マネージャ130が、前記アプリケーション(the application、今回のアプリケーション)のセット・アップ条件をファイナライズし(finalize、その内容を最終化し)、そのアプリケーションを起動させる(launch)。VDIシステム200の前記一例においては、プラットフォーム・マネージャ130が、仮想化インフラストラクチャ120内において動作する複数のVM140によってサポートされる複数のリモート・デスクトップ206より成る1つのプールを配備することが可能である。一実施態様においては、プラットフォーム・マネージャ130が、複数のリモート・デスクトップ206のための1つのモデルとして作用するVMテンプレート(「ゴールド・イメージ」と称されることがある)をインポートするとともに、VDIシステム200のための複数のリモート・デスクトップ206より成る1つのプールを生成するために、前記ゴールド・イメージに基づき、複数のVMを配備する。
図4は、統合コンピューティング・プラットフォームの状態をキャプチャする方法の複数のステップ(step、工程)であってこの書類に開示されているものの具体的ないくつかの側面に従うものを示すフロー図である。当業者であれば、たとえこの方法400が図1および図2のそれぞれのシステムに関連付けて説明されても、この方法400の複数のステップを、いかなる順序であっても、実行するように構成されたシステムであれば、この書類に開示されているもののいくつかの実施形態の範囲から逸脱しないことが理解される。
ステップ402においては、スナップショット・サービス132が、コンピューティング・プラットフォーム102のネットワーク114のためのネットワーク構成(configurations、設定状況、構成条件、コンフィギュレーションズ)のスナップショットを取得する。いくつかの実施態様においては、スナップショット・サービス132が、VLANアサインメント(assignments、VLANの割り当て、VLANに割り当てられた仕事)、論理ネットワーク、ポート・グループ、および他のネットワーク構成(configurations、設定状況、構成条件、コンフィギュレーションズ)のそれぞれに関する情報を記録し、前記他のネットワーク構成は、仮想スイッチ、IPスイッチ、イーサネット(登録商標)・スイッチおよびストレージ・スイッチ(例えば、ファイバー・チャンネル)についてのものであり、それら仮想スイッチ、IPスイッチ、イーサネット(登録商標)・スイッチおよびストレージ・スイッチは、互いに共同して前記ネットワーキング資源を構成する。スナップショット・サービス132は、前記ネットワーク構成のスナップショットをスナップショット138の前記レポジトリ内に保存することが可能である。
ステップ404においては、スナップショット・サービス132が、今回のアプリケーションの設定が完了する前に、コンピューティング資源のスナップショットを取得する。例えば、スナップショット・サービス132は、複数のサーバ116(例えば、複数のブレード、サーバ・シャーシ(server chassis)、ファブリック・インタコネクト(fabric interconnect))の状態を記録する。ステップ406においては、スナップショット・サービス132が、ストレージ資源(例えば、SAN118)のためのストレージ設定状態(configuration)のスナップショットを取得する。例えば、スナップショット・サービス132は、ストレージ・アレイ、論理ボリューム、RAIDボリューム、データ複製(data replication)、バックアップおよびリカバリのための設定条件を含む複数のストレージ設定条件(configurations)の状態を記録する。いくつかの実施態様においては、スナップショット・サービス132が、コンピューティング資源およびストレージ資源のためのそれぞれの設定状態を取得するために、インフラストラクチャ・マネージャ112と通信する。スナップショット・サービス132は、コンピューティングおよびストレージのそれぞれの構成(configurations、設定状況、構成条件、コンフィギュレーションズ)のスナップショットをスナップショット138の前記レポジトリ内に保存することが可能である。
ステップ408においては、スナップショット・サービス132が、複数のVM140を有する仮想化インフラストラクチャ120の状態のスナップショットを取得する。図示されているように、スナップショット・サービス132は、VM140ごとに、VMがクローニングされた(cloned、別のVMインスタンスの複製である)のか、または、VMがVMテンプレートからインスタンス化されたのか否かを判定する。一例においては、スナップショット・サービス132は、接続サーバ202を動作させるあるVM140が、VDIシステム200の複数の機能的コンポーネントのための複数のVMテンプレートから導出されたかもしれないと判定することが可能である。別の例においては、スナップショット・サービス132が、あるVM140が、バーチャライゼーション・マネージャ122によって提供された複数のVMテンプレートのライブラリから取り出されたあるVMテンプレートから生成されたかもしれないと判定する可能性がある。
ステップ410は、今回のVMがテンプレートから導出されたものではないとの判定に応答して実行され、このステップ410においては、スナップショット・サービス132が、今回のVM140のスナップショットを取得し、そのスナップショットをスナップショット138の前記レポジトリ内において記録することが可能である。一実施態様においては、そのスナップショットが、今回のVM140のすべてのデータ、環境および状態が、例えば、Open Virtualization Format(OVF)または他の適切な構造というフォーマットでシリアル化されたもの(serialization、直列化されたもの)を有するコンテナ・ファイル(container file)を有することが可能である。ステップ412は、あるVMがテンプレートから導出されたものであるとの判定に応答して実行され、このステップ412においては、そのVMのスナップショットを取得するのではなく、スナップショット・サービス132が、VMテンプレートと、前記導出されたVMとの間の関係(association)すなわちリンクを、スナップショット138の前記レポジトリ内において記録する。認識すべきことは、ステップ408,410および412は、仮想化インフラストラクチャ120内の各VM140のスナップショットをキャプチャするために反復される可能性があるということである。
いくつかの実施態様においては、複数のスナップショット138を、コンピューティング・プラットフォーム102の複数の資源上で実行される複数の設定オペレーション(configuration operations、設定のために実行されるオペレーション)のすべての記録(recordation、履歴)として実現することが可能である。スナップショットをキャプチャするために、スナップショット・サービス132は、複数のログ(logs、履歴)を(例えば、前記インフラストラクチャ・マネージャおよびバーチャライゼーション・マネージャから)収集することが可能であり、それらログは、コンピューティング・プラットフォーム102の複数の資源のうちのいずれの上で、どのような設定オペレーションが実行されたのかを報告する。スナップショット・サービス132は、時間帯ごとに収集して記録するオペレーションの種類(what logged operations it collects based on a time period)を限定することが可能である。例えば、スナップショット・サービス132は、「前(before、設定前)」スナップショットを、前記複数の資源の設定の実行前におけるある時刻(a point in time)として定義し、また、「後(after、設定後)」スナップショットを、前記複数の資源の設定(例えば、上述のステップ304)の実行後におけるある時刻(a point in time)として定義することが可能である。スナップショット・サービス132は、複数のオペレーションのこのような収集物を、複数のスナップショット138の前記リポジトリ内に保存することが可能である。
今回のアプリケーションのインストールが完了するとともに今回のアプリケーションが配備された後、システム管理者150が、事後的に、今回のアプリケーションのインストールを取り消して(undo)、コンピューティング・プラットフォーム102をそれの工場出荷時状態(factory state)(または、前記インストール・プロセスの実行中における他の状態)に復元することを要望することが可能である。例えば、システム管理者150は、今回のアプリケーションが正常に動作しないと判断し、前記インストール・プロセスをやり直し(redo)することを要望することが可能である。別の使用事例においては、システム管理者150が、概念実証(proof of concept)(POC)すなわち検証フェーズの実行中に、互いに異なる種々の配備スキーム(deployment schemes、配備するための複数のルールの集まり)を実験する(experiment with a variety of different deployment schemes、各配備スキームの妥当性を試験して判断する)ことが可能であり、また、システム管理者150は、各回のインストール・プロセスを、それの開始時点から、「フレッシュ(fresh、新品)」の状態で開始することを要望することが可能である。
図5は、既存のデータ・センタ内にインストールされた統合コンピューティング・プラットフォームに対して行われた設定変更を復元するための方法500であってこの書類に開示されているものの具体的ないくつかの側面に従うものを示すフロー図である。当業者であれば、たとえこの方法500が図1および図2のそれぞれのシステムに関連付けて説明されても、この方法の複数のステップを、いかなる順序であっても、実行するように構成されたシステムであれば、この書類に開示されているもののいくつかの実施形態の範囲から逸脱しないことが理解される。
ステップ502においては、プラットフォーム・マネージャ130が、コンピューティング・プラットフォーム102の複数の資源(例えば、ネットワーク114、SAN118、サーバ116、VM140など)に対して行われた設定変更を復元することを要求する「ロールバック」コマンドを、例えば、前記システム管理者150から受け付けることが可能である。一実施態様においては、そのロールバック・コマンドが、複数のスナップショット138の前記リポジトリから、あるスナップショットであって、コンピューティング・プラットフォーム102の状態が復元されるべきものを選択することが可能である。別の実施態様においては、前記ロールバック・コマンドが、コンピューティング・プラットフォーム102の複数の資源のうち、復元が行われるべき一部の集まりである部分集合(subset)を指定することが可能である。例えば、前記ロールバック・コマンドは、ネットワーク114に対する設定変更のみであって、ストレージ118に対する設定変更でも、VM140に対する設計変更でもないものが、前記選択されたスナップショットの状態に復元されるべきであることを指示することが可能である。したがって、前記ロールバック・コマンドは、コンピューティング・プラットフォーム102の複数の資源の設定状態を復元する能力においてコンポーネント単位というきめ細かさを実現することが可能である。説明の便宜上(for sake of the foregoing discussion)、今回のロールバック・コマンドは、複数の資源(例えば、ネットワーキング、ストレージ、コンピューティングおよび仮想マシン)のすべてのレベルが復元対象として選択されたことを指示すると仮定する。
ステップ504においては、復元サービス134が、設定前に取得されたスナップショットと設定後に取得されたスナップショットとの比較結果に基づき、前述のネットワーキング資源、ストレージ資源およびコンピューティング資源に対して行われた変更箇所を検出する(determine、発見する)。一実施態様においては、復元サービス134が、設定前スナップショットと設定後スナップショットとの間の設定変更を取り消す逆行オペレーション(inverse operation)を決定する(determine、選択してその内容を特定する、実行する)。一例においては、復元サービス134は、あるポート・グループがネットワーク114に追加されていたと判定することが可能である。その復元サービス134は、その後、そのポート・グループをネットワーク114から削除するために「デリート」オペレーションを決定する(formulate、その内容を特定する、実行する)ことが可能である。別の例においては、復元サービス134が、スナップショット間に実行された「vlan追加(add vlan)」というオペレーションを削除するために、「vlanデリート(delete vlan)」というオペレーションが必要であると判定する。復元サービス134は、前記ストレージ資源およびコンピューティング資源に対する、同様な逆行オペレーションを決定する(determine、選択してその内容を特定する)ことが可能である。
ステップ506においては、復元サービス134が、コンピューティング・プラットフォーム102のネットワーク資源、ストレージ資源およびコンピューティング資源に対して行われた変更箇所を削除するために、前記決定された逆行オペレーションを実行する。一実施態様においては、復元サービス134が、前記逆行オペレーションを実行してネットワーク114、ストレージ118およびサーバ116をそれらの工場出荷時状態に復元するために、インフラストラクチャ・マネーシャ112(例えば、APIコールを媒介として)と通信する。
ステップ508を開始点として、復元サービス134は、VM140がVMテンプレートから導出されるか否かを判定する。ステップ510においては、復元サービス134が、VMテンプレートから導出されたすべてのVM140を削除し、元のVMテンプレートを検索し、そして、そのVMテンプレートに基づき、VMについての新規のインスタンスをクローニングする。これに対して、ステップ512は、VMテンプレートから導出されなかったVM140が発見されることに応答して実行され、このステップ512においては、復元サービス134が、そのVM140のスナップショットを、複数のスナップショット138のレポジトリから検索する。復元サービス134は、そのVM140の状態を、前記リポジトリから検索されたスナップショットの状態に戻すためのリバート・オペレーション(revert operation)を実行するように、バーチャライゼーション・マネージャ122を指示する。認識すべきことは、ステップ508,510および512は、仮想化インフラストラクチャ120内における各VM140の状態を復元するために、反復されることが可能であるということである。
図6は、統合コンピューティング・プラットフォームの状態をリセットする(reset、復元する)ためのワークフローであってこの書類に開示されているものの具体的ないくつかの側面に従うものを示す状態図(state diagram、状態遷移図)である。この状態図600は、VDIアプリケーション(例えば、VDIシステム200)のインストール中におけるコンピューティング・プラットフォーム102の、互いに異なる複数の状態を表す複数の状態602,604,606,608を有する。
図示されているように、前記インストール・プロセスが完了した後(例えば、状態608において)、システム管理者150は、コンピューティング・プラットフォーム102の状態を、前記インストール・プロセス中にキャプチャされた互いに異なる複数の状態のうちのいずれかに復元するロールバック・オペレーションを発動させることが可能である。一実施態様においては、そのロールバック・オペレーションがコンピューティング・プラットフォーム102を工場出荷時状態(factory state)602に復元することが可能であり、そのロールバック・オペレーションにより、前記インストール・プロセス中に行われたすべての設定変更が元通りにされる(undo、既存の設定変更が削除される)。例えば、システム管理者150は、コンピューティング・プラットフォーム102を新しい場所(例えば、新規のデータ・センタ100)に再割り当てする際に、コンピューティング・プラットフォーム102の、工場出荷時状態へのリセット(factory reset)を要望することが可能である。
別の実施態様においては、前記ロールバック・オペレーションにより、VDIアプリケーション200のインストールがリバートされる(revert、戻される)ことと、コンピューティング・プラットフォーム102が設定後状態に復元され、それにより、VDIシステム200の複数の機能的コンポーネントのインストール中にコンピューティング・プラットフォーム102に対して行われたすべての設定変更がリバートされる(reverted、元の状態に戻される)。例えば、設定後状態604への復元が行われると、それにより、前記インストール・プロセス中に配備された接続サーバ202およびセキュリティ・サーバ204の複数のインスタンスが削除される(remove、除去される、取り外される)。さらに別の実施態様においては、前記ロールバック・オペレーションにより、複数のリモート・デスクトップより成る前記1つのプールが削除されるとともに、コンピューティング・プラットフォーム102が設定後状態606に復元されることが可能であり、その設定後状態606においては、VDIアプリケーション200およびそれの複数の機能的コンポーネントのインストールが完了している。このロールバック・オペレーションにより、システム管理者150が、リモート・デスクトップ206の複数のインスタンスを定義する「ゴールド・イメージ」すなわちVMテンプレートを別のものに交換することと、複数の新規のリモート・デスクトップ206より成る1つのプールを配備することが可能となる。
したがって、この書類に開示されているもののいくつかの実施態様によれば、有利なことに、システム管理者150が、種々の使用事例を実証する(test various use cases)ために、彼らの複数のアプリケーションを試験する(test、実証する)ことと、前記コンバージド・インフラストラクチャ・プラットフォームをデフォールト状態にリセットすることとを簡単に行うことが可能となる。その結果、概念実証(POC)すなわち試験的配備(test deployment、本番配備前の試行的配備)を行うための時間および費用が大きく削減され、それにより、コンバージド・インフラストラクチャを構成する複数のコンポーネントを、データ・センタの複数のサービスに統合する(integrate、インテグレートする、インストールする、配備する)ための時間が削減される。この書類に開示されているもののいくつかの実施態様によれば、さらに、ネットワーク資源およびセキュリティ・サービスの設定中にエラーが発生するリスクが軽減され、その設定というプロセスは、人為的であり、エラーが発生し易いプロセスである可能性がある。
前述のように、この書類によって提示されるいくつかの実施態様は、複数の機能的コンポーネントを有する複数のアプリケーションを配備するためのパッケージ型アプリケーション配信メカニズム(packaged application delivery mechanism)を有する。図7は、1つのアプリケーションを図1のコンピューティング・プラットフォーム内において配備するための例示的なオペレーションであって一実施態様に従うものを示している。システム管理者は、プラットフォーム・マネージャ130に、コンピューティング・プラットフォーム100上に(例えば、プロビジョンされた物理資源および仮想資源上に)配備されるべき1つのアプリケーション・パッケージ136を与えることが可能である。そのアプリケーション・パッケージ700は、1または複数の仮想マシンより成る1つのコンテナ(a container、収容体)を表しており、それら仮想マシンは、いずれもインストール済みの、複数のソフトウエア・コンポーネント、複数のオペレーティング・システムおよび複数の構成(configurations、環境設定値)であって、互いに共同して1つの多層アプリケーション(a multi-tier application)を構成するものを有する。アプリケーション・パッケージ700内に存在する各VMは、前記アプリケーションの1つの機能的コンポーネント702を表すことが可能であり、その機能的コンポーネント702は、今回のアプリケーションの複数のタスクを実行するか、または、今回のアプリケーションのファンクション層(a functional layer)を(例えば、多層アプリケーションという形態で)提供する。例えば、典型的なウェブ・アプリケーション用の1つのアプリケーション・パッケージは、第1のVMであって、インストール済みのウェブ・サーバ、アプリケーション・サーバ、および、前記ウェブ・アプリケーションのためのアプリケーション・コードを有するものと、別のVMであって、インストール済みのデータベース・サーバを有するとともに前記第1のVMに接続されるように構成されたものとを有することが可能である。アプリケーション・パッケージ700は、複数のファイルであって、データ、ライブラリおよび複数のメタデータ・ファイルを含むものを、複数の仮想マシンをパッケージ化して(packaging、いくつかのグループに分けて)分配するように構成されたフォーマットであって、Open Virtualization Format (OVF)のようなもので有することが可能である。
一実施態様においては、アプリケーション・パッケージ700が、さらに、1または複数のモデル704を有し、それらモデル704は、物理資源および仮想資源(例えば、VM140)の使用状態(usage、使用)と今回のアプリケーションの複数のコンポーネント702との関係を示している。それらモデル704は、コンピューティング・プラットフォーム100の複数の資源と、今回のアプリケーションの複数のコンポーネント702との間の関係を、数式を用いて表すことが可能である。例えば、1つのモデル(a model)704は、今回のアプリケーションの特定のコンポーネントのインスタンスの数(例えば、X)と、今回のアプリケーションの予想ユーザ数(例えば、Y)との間の1つの関係(a relationship)を示すことが可能である。例えば、今回のモデル704は、ある回の配備が今回のアプリケーションのY人のユーザをサポートするために、その配備は、1つのコンポーネントのX個のインスタンスを有するべきであり、ここに、X=N+1およびN=(Y/500)であるということを指示することが可能である。よって、1つのアプリケーションについての1つのモデル704が、そのアプリケーションを配備するための「ベスト・プラクティス」を組み込むことが可能である。所与の(given、予め想定された)事例における具体的な「ベスト・プラクティス」は、例えば、システム・エンジニアによって求められた実験結果および経験則に従い、予め決めておくことが可能であり、また、業界全体の(industry-wide)知識を反映することが可能である。一実施態様においては、複数のモデル704が、さらに、複数の物理資源、複数の仮想資源、複数の設定値(settings、設定条件、セッティングス)および複数の構成(configurations、環境設定、設定条件)であって、今回のアプリケーションの1つのインスタンスを配備するのに典型的に必要なものの詳細なリストをも有することが可能である。複数のモデル704によって提供される複数の設定値(settings、設定条件、セッティングス)および複数の構成(configurations、環境設定)のいくつかの例としては、複数のネットワーク構成(configurations、環境設定)のような複数のネットワーキング設定値(settings、設定条件、セッティングス)があり、それらネットワーク設定値は、今回のネットワークのうちの「管理」部分、今回のネットワークのうち外部からアクセス可能な部分、今回のネットワークのうちDMZ部分などにおいていずれのコンポーネント702が位置する可能性があるのかを示している。
後に詳述するように、プラットフォーム・マネージャ130は、前述の1または複数のモデル704に基づき、さらには、システム管理者によって提供される複数の配備パラメータ706に基づき、今回のアプリケーションの配備(the deployment、配備状態、配備方法、配備態様)を調整するように構成されている。例えば、プラットフォーム・マネージャ130は、あるモデル704に基づき、インストール済みのウェブ・サーバを有するVMの個数を増加させることにより、ウェブ・アプリケーションの配備(the deployment、配備状態、配備方法、配備態様)を調整することが可能であり、そのあるモデル704は、前記システム管理者から入力された情報であって、前記ウェブ・アプリケーションについて予想される通信量を示すものに基づき、何個のウェブ・サーバVM(an increased number of web server VMs、ウェブ・サーバVMの個数の増分)を追加的に配備すべきであるかを示している。前記システム管理者は、これから配備されることになる今回のアプリケーションの今回のインスタンスに固有の配備の詳細(deployment details)を示している複数のパラメータ706を提供することが可能である。それらパラメータ706のいくつかの例としては、予想ユーザ数(例えば、500人のユーザ)、予想通信量(volume of traffic、通信容量)(例えば、毎秒200リクエスト;500 MB/sec)、要求アップタイム(uptime、連続稼働時間)・パーセンテージ(例えば、99.999%)、および目標資源稼働率(例えば、75%のCPU稼働率)がある。
今回のモデル704および複数のパラメータ706に基づき、アプリケーションの配備を調整するか否か(およびどのように調整するか)を判定した後、プラットフォーム・マネージャ130は、コンピューティング・プラットフォーム100から生成される仮想資源および物理資源(例えば、VM140−1,VM140−2,VM140−3など)をプロビジョンするとともに、アプリケーション710(the application 710、アプリケーション・パッケージ700)を仮想化インフラストラクチャ120に配備するために、アプリケーション・パッケージ700の複数の個別のコンポーネント702をインスタント化することが可能である。図7は複数の個別のコンポーネント702を、プロビジョンされた複数のVM(例えば、VM140−1,VM140−2,VM140−3など)上で動作する複数のモジュールとして示しているが、プラットフォーム・マネージャ130は、それに代えて、完成した複数のVMであって、インストール済みの複数のソフトウエア・コンポーネントおよび複数のオペレーティング・システムを有するものを、アプリケーション・パッケージ700によって特定された情報に基づいてインスタンス化することが可能である。プラットフォーム・マネージャ130の複数のオペレーションが、図8に関連付けて詳細に説明されている。
図8は、複数のコンピュータ資源上のあるアプリケーションを仮想化環境内において配備するための方法800であって一実施態様に従うものを示すフロー図である。図示されているように、この方法800はステップ802から開始され、そのステップ802においては、プラットフォーム・マネージャ130が、1つのアプリケーション・パッケージを受け付け、そのアプリケーション・パッケージは、今回のアプリケーションがコンピューティング・プラットフォーム100内において配備されるようにするために、1または複数の機能的コンポーネント(例えば、複数のコンポーネント702)を有する。例えば、システム管理者は、VDIシステム用のアプリケーション・パッケージをプラットフォーム・マネージャ130に提供することが可能である。そのアプリケーション・パッケージは、今回のアプリケーションの各機能的コンポーネントに対応する複数のパッケージ化済み(pre-packaged)VM(packaged VM、パッケージ型VM)を有することが可能である。例えば、VDIシステム用のアプリケーション・パッケージは、設定済みの(pre-configured)1つのVMであって、いずれもインストール済みの(pre-installed)複数のアプリケーション・コンポーネント、ソフトウエア、複数のライブラリ、および、ゲスト・オペレーティング・システムであって接続サーバを動作させるためのものを有するものと、設定済みの1つのVMであって、いずれもインストール済みの複数のアプリケーション・コンポーネント、ソフトウエア、複数のライブラリ、および、ゲスト・オペレーティング・システムであってセキュリティ・サーバを動作させるためのものを有するものと、設定済みの1つのVMであって、いずれもインストール済みの複数のアプリケーション・コンポーネント、ソフトウエア、複数のライブラリ、および、ゲスト・オペレーティング・システムであって1つのリモート・デスクトップを動作させるためのものを有するものとを有することが可能である。
ステップ804においては、プラットフォーム・マネージャ130が、今回のアプリケーションをコンピューティング・プラットフォーム100内において配備するために利用可能である物理資源および仮想資源が何であるのかを発見する。プラットフォーム・マネージャ130は、前記アプリケーション・パッケージの処理と、今回のアプリケーションを実行するために特定される複数の資源要求(resource requirements、いずれの資源が必要であるのか)(例えば、メモリ、コンピュート、ストレージ、ネットワーキング)の検出とを行い、その後、そのような資源が利用可能であるか否かを判定するために、仮想化インフラストラクチャ120および物理インフラストラクチャ110にクエリする(query、問合せする)。例えば、プラットフォーム・マネージャ130は、今回のアプリケーションの1つの機能的コンポーネントに対応する1つのVMが、4GBのRAMと、64ビットのプロセッサと、少なくとも200GBのストレージと、少なくとも1ギガビットのイーサネット(登録商標)接続とを必要とすると判定することが可能である。プラットフォーム・マネージャ130は、その後、それら資源が、物理インフラストラクチャ110および仮想化インフラストラクチャ120からそれぞれ利用可能であるか否かを判定するために、インフラストラクチャ・マネージャ112およびバーチャライゼーション・マネージャ122と通信することが可能である。
ステップ806においては、プラットフォーム・マネージャ130が、複数の配備用パラメータ(deployment parameters)(例えば、複数のパラメータ706)であって複数のモデル704を用いて今回のアプリケーションの配備を調整する(adjust)仕方を特定するものを受け付ける。それらモデル704は、コンピューティング・プラットフォーム100によって提供される複数の資源が、例えば、アプリケーション・パッケージ700によって特定される複数の機能的コンポーネントによって使用される仕方を示している。それらモデル704は、物理資源および仮想資源(例えば、VM)を、前記複数の機能的コンポーネントのそれぞれのインスタンス数に関連付ける1つの関数(a function)を示すことが可能である。一実施態様においては、そのモデルが、コンピューティング・プラットフォーム100の複数の資源を、それら資源が、複数の配備用パラメータ(例えば、前記システム管理者によって提供されるようなもの)の関数として用いられるようにするために、特定することが可能である。例えば、1つのモデルは、1つのVDIシステム(例えば、VDIシステム300)が、接続サーバのX個のインスタンスを有するべきであり、ここに、ここに、X=N+1およびN=(Y/500)であるということを特定することが可能であり、その特定の目的は、前記VDIシステムのY人のユーザをサポートするためである。したがって、この例においては、前記システム管理者が、前記VDIシステムの配備を調整するために、「ユーザ数」(例えば、Y)という前記配備用パラメータについて「1000」という数値をプラットフォーム・マネージャ130に提供する。
ステップ808においては、プラットフォーム・マネージャ130が、今回のアプリケーションのための1つのモデル704に基づき、いずれの物理資源および仮想資源を前記配備という作業に割り当てるべきであるかを判定する。引き続き、前述のVDIの例を用いれば、プラットフォーム・マネージャ130は、今回の配備が接続サーバの3個のインスタンス(例えば、(1000/500)+1=3)を有すべきであると判定するために、今回のモデル704を、「500人のユーザ」という前記配備用パラメータを用いて評価することが可能である。プラットフォーム・マネージャ130は、前記接続サーバの前記3個のインスタンスの実行をサポートするのに十分な仮想資源(例えば、VM140)の量(an amout of virtual resources)を決定する。
ステップ810においては、プラットフォーム・マネージャ130が、コンピューティング・プラットフォーム100から、物理資源および仮想資源を割り当てる。一実施態様においては、プラットフォーム・マネージャ130が、今回のアプリケーションの複数の機能的コンポーネントのうちのいずれか一つを実行するために、仮想資源(例えば、VRAM、ストレージ)を有する1または複数のVM(例えば、VM140)を生成するようにバーチャライゼーション・マネージャ122を(例えば、複数のAPIより成る1つのセットにより)指示するコール(call、呼び出し)を発動することが可能である。ステップ812においては、プラットフォーム・マネージャ130が、前記複数の機能的コンポーネント702の複数のインスタンスを、前記割り当てられた複数の資源上に配備する。複数の機能的コンポーネント702が複数のソフトウエア・パッケージであるいくつかの実施態様においては、例えば、プラットフォーム・マネージャ130が、それらソフトウエア・パッケージを、前記プロビジョンされた複数のVM140上にインストールする。これに代えて、アプリケーション・パッケージ700の複数の機能的コンポーネント702が、複数のパッケージ化済み(pre-packaged)VM(packaged VM、パッケージ型VM)である場合には、プラットフォーム・マネージャ130が、1または複数のVM(例えば、VM140)を、上述の複数のパッケージ化済み(pre-packaged)VM(packaged VM、パッケージ型VM)のクローンとして生成するようにバーチャライゼーション・マネージャ122を(例えば、複数のAPIより成る1つのセットにより)指示するコール(call、呼び出し)を発動することが可能であり、上述の複数のパッケージ化済み(pre-packaged)VM(packaged VM、パッケージ型VM)は、今回のアプリケーションの複数のコンポーネントと、ゲスト・オペレーティング・システムとであって、いずれも当該VM上にインストール済であるものを有する。例えば、プラットフォーム・マネージャ130は、VDIシステムの配備のために、接続サーバ用VMの3個のインスタンスと、セキュリティ・サーバ用VMの1個のインスタンスと、リモート・デスクトップ用VMの50個のインスタンスとを生成することが可能である。
ステップ814においては、プラットフォーム・マネージャ130が、前記割り当てられた複数の資源と、前記複数の機能的コンポーネントの、前記配備された複数のインスタンスとを、モデル138によって特定された方法で、設定する。一実施態様においては、プラットフォーム・マネージャ130が、コンピューティング・プラットフォーム100の、前記割り当てられた複数の資源を、今回のアプリケーションの複数の機能的要件を満足するように、「チューニング(tune)」することが可能である。例えば、プラットフォーム・マネージャ130は、前記割り当てられた複数の資源のデフォールト・ネットワーキング設定値(settings、設定条件、セッティングス)を、VDIシステム300の複数の要件であって前記モデルによって特定されたものを満足するように、変更する(modify、修正する)ことが可能である。より具体的には、プラットフォーム・マネージャ130は、DMZ用のVLAN、内部データ・ネットワーク用のVLAN、外部アクセス(例えば、ファイヤーウォールの、限定された複数のポートを経由するもの)用のVLAN、および、管理目的用のVLANであって、各VLANが特定の通信品質(QoS)の設定値(settings、設定条件、セッティングス)を有する複数のVLANを生成するように、ネットワーク114を設定することが可能である。プラットフォーム・マネージャ130は、さらに、1つのモデル704に従って作成された調整値(adjustments)に基づき、今回のアプリケーションの複数の機能的コンポーネント702の、前記配備された複数のインスタンスを設定することが可能である。例えば、VDIという前述の例を参照すれば、前記接続サーバの1個のインスタンスは、そのインスタンスが、前記VDIシステム内において単独の接続サーバであると仮定するデフォールト構成(configurations、設定状況、構成条件、コンフィギュレーションズ)を有することが可能である。しかし、複数の接続サーバがインスタンス化される(例えば、モデル704に基づいて)いくつかの配備においては、プラットフォーム・マネージャ130が、前記1つの接続サーバの複数個のインスタンスの前記デフォールト構成(configurations、設定状況、構成条件、コンフィギュレーションズ)を、それらインスタンスが一緒に作用するように(例えば、複製という目的や負荷分散という目的のために)、変更する(modify、修正する)ことが可能である。例えば、プラットフォーム・マネージャ130は、前記1つの接続サーバの複数個のインスタンスのうちのいずれか1つを、1つの「マスタ」インタンスとして選択して他の複数個のインスタンス内において「複製(replica)」モードを可能にすること、各インスタンス(each instance、複数個のインスタンスのうちの少なくとも一部の各々)に、前記他の複数個のインスタンスの、既知の複数のIPアドレスを与えること、などを行うことが可能である。
図9は、コンピューティング・プラットフォームであってその上で動作する1つのアプリケーションを有するものを既存のコンピューティング環境内に統合するための方法900であって一実施態様に従うものを示すフロー図である。図示されているように、この方法900は、ステップ902から開始され、そのステップ902においては、プラットフォーム・マネージャ130が、1または複数の機能的コンポーネントを有する1つのアプリケーションを配備し、それら機能的コンポーネントは、前記統合インフラストラクチャ(例えば、コンピューティング・プラットフォーム102)の複数の資源を利用する。今回のアプリケーションの各機能的コンポーネントは、今回のアプリケーションの1または複数のタスクを実行し、および/または、今回のアプリケーションのファンクション層を提供する(例えば、今回のアプリケーションが1つの多層アプリケーションである場合に)。前記複数の機能的コンポーネントは、種々のソフトウエア・コンポーネント、種々のオペレーティング・システムおよび種々の構成(configurations)(例えば、1つのVM140上で動作する)を有し、それらソフトウエア・コンポーネント、オペレーティング・システムおよび構成は、1つの多層アプリケーションとして機能するように相互に動作する(inter-operate)。例えば、配備される1つのウェブ・アプリケーションを構成する複数の機能的コンポーネントは、ウェブ・サーバ、アプリケーション・サーバおよびデータベース・サーバであって、それぞれ、仮想化インフラストラクチャ120からの(from、から構成される)1つのVM140上で実行される(executing)ものを有することが可能である。。
いくつかの実施態様においては、プラットフォーム・マネージャ130が、前記複数の機能的コンポーネントを実行するために、コンピューティング・プラットフォーム102から物理資源および仮想資源を割り当てる。一実施態様においては、プラットフォーム・マネージャ130が、今回のアプリケーションの複数の機能的コンポーネントを実行するために、仮想資源(例えば、VRAM、ストレージ)を有する1または複数のVM(例えば、VM140)を生成するようにバーチャライゼーション・マネージャ122を(例えば、複数のAPIより成る1つのセットにより)指示するコール(call、呼び出し)を発動することが可能である。プラットフォーム・マネージャ130は、前記複数の機能的コンポーネントの複数個のインスタンスを、前記割り当てられた複数の資源上に配備する。例えば、プラットフォーム・マネージャ130は、複数のソフトウエア・パッケージを、前記プロビジョンされた複数のVM140上にインストールし、または、これに代えて、プラットフォーム・マネージャ130は、複数のパッケージ化済み(pre-packaged)VM(packaged VM、パッケージ型VM)に基づき、1または複数のVM(例えば、VM140)を生成するようにバーチャライゼーション・マネージャ122を(例えば、複数のAPIより成る1つのセットにより)指示するコール(call、呼び出し)を発動することが可能であり、上述の複数のパッケージ化済み(pre-packaged)VM(packaged VM、パッケージ型VM)は、今回のアプリケーションの複数のコンポーネントと、ゲスト・オペレーティング・システムとであって、いずれも当該VM上にインストール済みであるものを有する。
ステップ904においては、プラットフォーム・マネージャ130が、前記コンバージド・インフラストラクチャ(例えば、コンピューティング・プラットフォーム102)の複数の資源であって、既存のコンピューティング環境(例えば、データ・センタ100)の複数のコンポーネントに接続されるべきものを決定する。いくつかの実施態様においては、プラットフォーム・マネージャ130が、例えば、システム管理者150から、入力(input、入力情報)を受け付けることが可能であり、その入力は、前記コンバージド・インフラストラクチャの複数の資源のうち、設定を行うことが必要である資源を特定することと、その特定された資源はどのような構成情報(configuration information、設定のために必要な情報)(例えば、複数のインフラストラクチャ・パラメータ)を必要とするのかを特定することとを行う。システム管理者150は、プラットフォーム・マネージャ130に対し、前記コンバージド・インフラストラクチャの内部におけるいずれのVMが、前記コンバージド・インフラストラクチャの外部からアクセスされることが必要であるかを指示することが可能である。システム管理者150は、さらに、いずれのネットワーキング用コンポーネント(例えば、ネットワーク・スイッチ、ホスト)が、前記コンバージド・インフラストラクチャ102がデータ・センタ100と統合されることを可能にするために設定されることが必要であるかをも指示することが可能である。例えば、システム管理者150は、プラットフォーム・マネージャ130に対し、あるウェブ・サーバを、コンピューティング・プラットフォーム102内において実行される1つのアプリケーションの一部として動作させる1つのVM(例えば、「VM01」)を特定する入力(input、入力情報)を提供することが可能である。この例においては、システム管理者150が、前記ウェブ・サーバは、ウェブ・リクエストを受け付けるために、少なくとも1つのポートが、(例えば、特定のVLANを経由して)、パブリック・インターネットに対するネットワーク接続可能性(connectivity)を有するように、設定されることが必要であることを指示する。
ステップ906においては、プラットフォーム・マネージャ130が、前記コンバージド・インフラストラクチャが既存のコンピューティング環境100と接続するために必要な前述の複数のインフラストラクチャ・パラメータを特定するインフラストラクチャ・テンプレートに対するプリカーサ(precursor、先行体、先行事象)を生成する。前記インフラストラクチャ・テンプレートに対する前記プリカーサは、「空白(blank)」インフラストラクチャ・テンプレートであって、いずれのパラメータが必要であるかは記述するがそれに対応する値は欠落しているものであることが可能である。いくつかの実施態様においては、前記インフラストラクチャ・テンプレートに対する前記プリカーサが、予め決定されているものであることが可能であり、また、コンピューティング・プラットフォーム102内に配備される具体的な1つのアプリケーションごとにそれに合わせて予め生成されるものであることが可能である。
ステップ908においては、プラットフォーム・マネージャ130が、インフラストラクチャ・テンプレート138内に存在する前記複数のインフラストラクチャ・パラメータのための複数の数値を決定する。いくつかの実施態様においては、プラットフォーム・マネージャ130が、いずれのインフラストラクチャ・パラメータを決定することが必要であるのかを判定するため、前記空白(blank)インフラストラクチャ・テンプレート(例えば、ステップ906において生成されたもの)を処理することが可能である。プラットフォーム・マネージャ130は、システム管理者150を(例えば、段階的な(step-by-step、段階的に進行する)グラフィカルな「ウィザード」を経由して)、前記複数のインフラストラクチャ・パラメータに対する複数の数値を入力することを催促することが可能である。いくつかの実施態様においては、プラットフォーム・マネージャ130が、いくつかのインフラストラクチャ・パラメータのためのいくつかの数値を、システム管理者から受け取った他の複数のインフラストラクチャ・パラメータのための複数の数値に基づいて導出することが可能である。例えば、プラットフォーム・マネージャ130は、既存のデータ・センタ100内の複数のサーバ104のために、複数のインフラストラクチャ・パラメータのための数値に基づき、1つの「N+1」ドメイン・ネーミング・スキーム(domain naming scheme、1ずつ増加するように、もとの値より1だけ大きくなるようにドメイン名を命名することなど)を導く(deduce)ことが可能である(例えば、「VM01.example.com」、「VM01.example.com」)。
ステップ910においては、プラットフォーム・マネージャ130が、前記決定された複数のインフラストラクチャ・パラメータおよびそれらに対応する複数の数値を用いることにより、データ・センタ100の環境を記述する1つのインフラストラクチャ・テンプレートを生成する。ステップ912においては、プラットフォーム・マネージャ130が、データ・センタ100との通信を可能にするために、インフラストラクチャ・テンプレート139に基づき、物理インフラストラクチャ110の複数の資源(例えば、ネットワーク114、複数のサーバ116、ストレージ118)を設定する。ステップ914においては、プラットフォーム・マネージャ130が、データ・センタ100の1または複数のサービス106との通信を可能にするために、インフラストラクチャ・テンプレート139に基づき、仮想化インフラストラクチャ120の複数の資源(例えば、複数のVM140)を設定する。ステップ916においては、プラットフォーム・マネージャ130が、任意選択的に、前記生成されたインフラストラクチャ・テンプレート139を、将来の使用に備えて、前述のようにして、エクスポートすることが可能である。
いくつかの実施態様においては、1つのインフラストラクチャ・テンプレート139を、コンピューティング・プラットフォーム102を既存のデータ・センタ100内に統合するのに適合するように構成することが可能である。すなわち、1つのインフラストラクチャ・テンプレート139を、コンピューティング・プラットフォーム102を、1つの具体的なアプリケーションと、それに関連する複数の機能的コンポーネントであって、いずれもコンピューティング・プラットフォーム102内において動作するものに適合するように設定することが可能なのである。したがって、プラットフォーム・マネージャ130は、コンピューティング・プラットフォーム102内において実行される今回のアプリケーションに固有の複数のインフラストラクチャ・パラメータ(例えば、構成(configurations、設定状況)、設定値(settings、設定条件、セッティングス)および情報)のための複数の数値を決定する。一例においては、アプリケーション依存型インフラストラクチャ・テンプレート139を、コンピューティング・プラットフォーム102内において動作する仮想デスクトップ・インフラストラクチャ(VDI)に適合するように生成することが可能である。
図10は、図2のコンピューティング・プラットフォームを既存のデータ・センタ100内において統合する例示的なワークフローであってこの書類に開示されているものの一実施態様に従うものを示している。図示されているように、資源発見サービス133は、VDIシステム200にとっての注目対象である資源(例えば、サーバ104)を特定する。例えば、資源発見サービス133は、少なくともドメイン・コントローラ208、DNSサービス216およびネットワーク108を有する既存のデータ・センタ100を特定することが可能である。いくつかの実施態様においては、資源発見サービス133が、VDIシステム200の複数の機能的コンポーネントであってコンピューティング・プラットフォーム102の外部からのアクセスを必要とするものをホストする資源としてのVM104を発見する。資源発見サービス133は、さらに、コンピューティング・プラットフォーム102をデータ・センタ100と統合することを可能にするために設定されることが必要であるネットワーキング・コンポーネント(例えば、ネットワーク・スイッチ、ホスト)を発見する。
一実施態様においては、プラットフォーム・マネージャ130が、コンピューティング・プラットフォーム102をデータ・センタ100と統合するために、予め定められた空白インフラストラクチャ・テンプレートであってVDIシステム200に関連付けられたものを使用することが可能である。そのインフラストラクチャ・テンプレート139は、VDIシステム200の複数の機能的コンポーネントによって要求されることが予想される構成(configurations、設定条件、コンフィギュレーションズ)、設定値(settings、設定条件、セッティングス)および他のセット・アップを特定する。いくつかの実施態様においては、VDIシステム200の1個のインスタンスのためのインフラストラクチャ・テンプレート139が、接続サーバをドメイン・コントローラ208に適切に接続するのに適した構成(configurations)と、セキュリティ・サーバを適切にネットワーク108に接続するのに適した構成(configurations)と、複数のリモート・デスクトップをネットワーク108に適切に接続するのに適した構成(configurations)とを有することが可能である。インフラストラクチャ・テンプレート139によって特定される複数のインフラストラクチャ・パラメータのいくつかの例としては、ドメイン・コントローラ208の管理に適するように設定された1つのIPアドレス、ドメイン・コントローラ208へのアクセスに適するように設定された1つのIPアドレス、ドメイン・コントローラ208のための認証情報、コンピューティング・プラットフォーム102がデータ・センタ100の管理プレーンと通信するために使用すべき1つのVLAN ID、コンピューティング・プラットフォーム102が、データ・センタ100のアスセス・ネットワーク108と通信するために使用すべき1つのVLAN ID、管理およびユーザ・アクセスのために、VDIシステム200の複数の機能的コンポーネントに割り当てられるべき複数のIPアドレスの範囲、データ・センタ100のアクセス・ネットワーク108上のDNSサービス216の1つのIPアドレス、および、コンピューティング・プラットフォーム102内の複数のVM140のための1つのサブネット・マスクおよび1つのゲートウェイIPアドレスがある。
図示されているように、システム管理者150は、資源発見サービス133に、複数のインフラストラクチャ・パラメータ1000のための複数の数値を(例えば、グラフィカル・ユーザ・インタフェースを介して)提供する。一例においては、システム管理者150は、GUIクエリに応答して、データ・センタ100内において動作するDNSサービス216が「192.168.15.150」というIPアドレスに位置させられていることを特定することが可能である。別の例においては、システム管理者150が、VDIシステム200の複数の機能的コンポーネントのために1つのVLANであって、「4040」というVLAN IDと、「Infra」というVLANラベルとを有するものを特定することが可能である。いくつかの実施態様においては、プラットフォーム・マネージャ130が、VDIシステム200のための複数のインフラストラクチャ・パラメータのうちの一部のためのいくつかの数値を、システム管理者から受信した、残りのインフラストラクチャ・パラメータのいくつかの数値に基づき、導出することが可能である。例えば、VDIシステム200の特定の配備(under certain deployments of a VDI system 200)のもとでは、有利である可能性があることは、複数のユーザ・アカウント214を、VDIシステム200と共に使用される具体的な1つの「組織単位(organizational unit、管理・設定の最小単位である複数のアカウントの集合)」に組織化してもらうということである。したがって、ドメイン・コントローラ用のネットワークのIPアドレスおよび認証情報を用いることにより、プラットフォーム・マネージャ130は、ドメイン・コントローラ208に接続して、そのような1つの組織単位(OU)が既に存在しているか否かを判定し、もし存在していなければ、VDIシステム200と共に用いられる1つの組織単位を生成することが可能である。
プラットフォーム・マネージャ130は、コンピューティング・プラットフォーム102内において動作する具体的な1つのアプリケーション(例えば、VDIシステム200)を有するコンピューティング・プラットフォーム102の統合を行うためにインフラストラクチャ・テンプレート139を生成する。いくつかの実施態様においては、その生成されたインフラストラクチャ・テンプレート139を、その後の再利用のためにエクスポートすることが可能である。さらに、1つのインフラストラクチャ・テンプレート139を、コンピューティング・プラットフォーム102の1個のインスタンスの複数回の配備のうち初期のものからインポートして、そのインフラストラクチャ・テンプレート139を、コンピューティング・プラットフォーム102をデータ・センタ100内において統合するために、用いることが可能である。
図示されているように、資源設定サービス135は、データ・センタ100の複数のサービス106と相互に動作する(inter-operate)ことを目的としてコンピューティング・プラットフォーム102の複数の資源を設定するために、インフラストラクチャ・テンプレート139を用いる。一実施態様においては、資源設定サービス135が、インフラストラクチャ・テンプレート139において特定された複数のパラメータを用いることによって複数のVLANを生成するために、複数のネットワーク・コンポーネント(例えば、ネットワーク114)および複数のホスト(例えば、複数のサーバ116)を設定する。一実施態様においては、資源設定サービス135が、コンピューティング・プラットフォーム102の外部からアクセスされることが必要である複数のVM140にネットワーク・インタフェース・カード(NIC)を付与し、さらに、そのNICを、資源設定サービス135内において特定された複数のパラメータを用いることによって設定する。
この書類に開示されているものの種々の実施態様は、コンピュータ・システムと共に使用されるプログラム・プロダクトとして実現することが可能である。そのプログラム・プロダクトのうちの1または複数のプログラムは、前記種々の実施態様の複数の機能(この書類の記載されている複数の方法を含む)を定義し、また、種々のコンピュータ読み取り可能な記録媒体上に格納されることが可能である。例示的なコンピュータ読み取り可能な記録媒体としては、(i)書換え不能な記録媒体(例えば、コンピュータ内のROMデバイスであって、CD−ROMドライブによって読み取り可能なCD−ROMディスク、フラッシュ・メモリ、ROMチップまたは他の任意の形式の固体非不揮発半導体メモリ)であって、情報が永久に保存されるもの、および(ii)書換え可能な記録媒体(例えば、ハードディスク・ドライブ、USBフラッシュ・メモリ・デバイスなど)であって、編集可能な情報が保存されるものがあるが、それらに限定されない。
本発明が、これまで具体的ないくつかの実施態様を参照して説明されてきており、多数の具体的な細部が、本発明のより完全な理解のために記述されている。しかし、当業者であれば、種々の改良および変更を、本発明のより広範な主旨および範囲から逸脱することなく、それら実施態様に施すことが可能であることが理解される。したがって、上述の文章による説明および複数の図面は、限定的な意味で考慮されるのではなく例示的な意味で考慮されるべきである。
これまでの説明は、この書類に開示されているもののいくつかの実施態様に向けられているが、この書類に開示されているものに対する別のおよび更なるいくつかの実施態様を、この書類に開示されているものの基本的な範囲から逸脱することなく、想起することが可能であり、また、この書類に開示されているものの範囲は、後述の特許請求の範囲の記載によって決まる。