(58)【調査した分野】(Int.Cl.,DB名)
前記データパケットは、前記少なくとも1つの選択された演算装置から発するデータパケットを検出するように有効なネットワークデバイスとのネットワークベースの接続を介してユーザーデバイスで受信され、前記方法は、処理されたトラフィックに関係する情報のために前記ネットワークデバイスに問い合わせるステップを含む請求項1に記載のコンピューター可読媒体。
前記テンプレートファイルは、前記少なくとも1つの選択された演算装置の予測される場所を指定するトポロジースキーマを含み、前記ハードウェアインベントリーが適切に配線されている(wired)ことを検証するために、前記トポロジースキーマはユーザーデバイスによって用いられ、前記トポロジースキーマは、配線(wiring)ルール、デバイス構成(configuration)、またはデバイスの場所の少なくとも1つを含む請求項1に記載のコンピューター可読媒体。
前記方法は、前記ハードウェアインベントリーの前記物理的なトポロジーを検証するときに収集した情報からインフラストラクチャー状態を準備するステップをさらに含む請求項4に記載のコンピューター可読媒体。
データセンターのクラウド・コンピューティング・ファブリック内で1つまたは複数の演算装置を自動的に組み込む方法を実行するためのコンピューターシステムであって、
ラックと、
前記ラック内に存在する複数のネットワークデバイスであって、前記複数のネットワークデバイスは、
(a)ネットワークベースの接続を通じてデータパケットを送信するためのラック上部(TOR)スイッチと、
(b)シリアルベースの接続を通じて指示を受信するときに前記データパケットの生成を引き起こすためのシリアルアクセスデバイスと
を含む複数のネットワークデバイスと、
前記ラック内に挿入された1組のブレード(blades)であって、前記1組のブレードは、
それぞれ電力を受信するときにデータパケットを個々に生成するように構成された前記1つまたは複数の演算装置を含む1組のブレードであって、当該1組のブレードが、事前にOSによってサポートされているものと、
前記1組のブレードに電力を選択的に供給するための配電器(PDU)と、
前記ネットワークベースの接続を介して前記TORスイッチに、および前記シリアルベースの接続を介して前記シリアルアクセスデバイスに通信するように結合されたユーザーデバイスであって、
(a)前記ネットワークデバイスおよび前記1組のブレードを検出するステップと、
(b)前記ラックの物理的なトポロジーを記述するテンプレートファイルに対して、前記データパケット内で運ばれた情報を比較することによって、前記1組のブレードの場所を検証するステップと
を含むブートストラッププロセスを実行するように構成されたユーザーデバイスとを含むコンピューターシステム。
前記シリアルアクセスデバイスは、前記ユーザーデバイスから指示を受信し、そこに前記指示を伝達することによって前記PDUを制御するようにさらに構成されている請求項9に記載のコンピューターシステム。
【発明を実施するための形態】
【0014】
[0018]本発明の実施形態の主題について、法的要件を満たすために本明細書に特に記述している。しかし、記述自体は、本特許の範囲を限定することを意図するものではない。むしろ、発明者は、請求された主題は、他の現在の技術または将来的な技術に関連して、異なるステップまたは本文書に記述したものに類似するステップの組み合わせを含むように、他の方法でも具体化できることを意図している。
【0015】
[0019]一般的に、本発明の実施形態は、ブートストラッププロセスを用いることによって、データセンターと、ハードウェアの洗練されていない組またはインベントリーを自動的にマージするために、クラウド・コンピューティング・ファブリック内に技術を導入する。本明細書で使用する場合、「ハードウェアインベントリー」というフェーズは、コンポーネントの特定の構成に限定することを意図するものではなく、最終的にファブリック内に統合できるデバイスの集まりを広く指し示している(たとえばネットワークデバイス、コンピューティングデバイス、および電源デバイス)。1つの実例では、ハードウェアインベントリーは、クラウド・コンピューティング・ネットワーク・サービス・プロバイダーの顧客によって管理された民間企業のネットワーク内にあってもよく、ここで、このタイプのハードウェアインベントリーに装置としてブートストラッププロセスを実装することで、データセンターと民間企業のネットワークとの間でリモートで到達可能になる。他の実例では、ハードウェアインベントリーは、クラウド・コンピューティング・ネットワーク・サービス・プロバイダーによって管理されるデータセンター内にある場合があり、ここで、ブートストラッププロセスを実装することで、データセンターのローカルストレージ/計算容量の構築が可能になる。
【0016】
[0020]以下により詳しく記述するように、ブートストラッププロセスは、ブートストラッププロセスを含む様々なフェーズのオーケストレーションおよび実行を駆動する(
図5のユーザーデバイス310で実行される)1つまたは複数のワークフローエンジンを使用するエンドツーエンドの自動化を備える。実施形態では、これらのフェーズは、独立したワークフローとして実施することができるため、各フェーズは、他のフェーズまたはワークフローの並行操作に頼ることなく、別々に呼び出しかつ完了まで駆動することができる。自己完結型の方法で、フェーズが独立して実施されることを可能にすることによって、各フェーズにおいて、以前または次のワークフローの有害な対話なく、ハードウェアインベントリーに増加分の改善を一貫して加える。
【0017】
[0021]本発明の実施形態の概要を簡単に記述したので、本発明の実施形態を実装するのに適した代表的な操作環境について以下に記述する。
操作環境
[0022]特に最初に
図1を参照すると、本発明の実施形態を実装するための代表的な操作環境が図示されており、コンピューティングデバイス100として全体を示している。コンピューティングデバイス100は、適切なコンピューター環境のほんの一例であり、本発明の使用または機能の範囲に関して限定を示唆することを意図するものではない。また、コンピューティングデバイス100は、図示したコンポーネントの1つまたは組み合わせに関係する依存関係または要件を持つものとして解釈されるべきでない。
【0018】
[0023]本発明は、コンピューター、またはパーソナル・データ・アシスタントもしくは他のハンドヘルドデバイスなど、他のマシンによって実行されるプログラムモジュールなどコンピューターで実行可能な命令を含む、コンピューターコードまたはマシンで使用可能な命令の一般的な文脈において記述することができる。一般的に、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むプログラムモジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するコードを示している。本発明は、ハンドヘルドデバイス、民生用電子機器、汎用コンピューター、より専門的なコンピューティングデバイスなどを含む様々なシステム構成で実施することができる。本発明は、また、通信ネットワークを通じてリンクされるリモート処理デバイスによってタスクが実行される、分散されたコンピューティング環境に実施することができる。
【0019】
[0024]
図1を参照すると、コンピューティングデバイス100は、メモリー112と、1つまたは複数のプロセッサー114と、1つまたは複数のプレゼンテーションコンポーネント116と、入力/出力(I/O)ポート118と、入力/出力コンポーネント120と、説明のための電源122と、というデバイスを直接的または間接的に結合するバス110を含む。バス110は、1つまたは複数のバスの可能性があるもの(アドレスバス、データバス、またはそれらの組み合わせなど)を表している。
図1の様々なブロックは明瞭さのために線で示しているが、実際には、様々なコンポーネントの線引きはそれほど明瞭ではなく比喩的なものであり、線はより正確には灰色で曖昧である。たとえば、ディスプレイデバイスなどのプレゼンテーションコンポーネントをI/Oコンポーネントと考えることができる。また、プロセッサーはメモリーを備えている。発明者は、当技術分野の性質はそのようなものであることを認識しており、
図1の図は、本発明の1つまたは複数の実施形態に関して使用することができる代表的なコンピューティングデバイスの単なる説明であることを繰り返す。「ワークステーション」、「サーバー」、「ラップトップ」、「ハンドヘルドデバイス」などのようなカテゴリは区別されておらず、すべてが
図1の範囲内にあると考えられ、「コンピューティングデバイス」と呼ばれる。
【0020】
[0025]コンピューティングデバイス100は、典型的には、様々なコンピューター可読媒体を含む。コンピューター可読媒体は、コンピューティングデバイス100によってアクセスできる任意の利用可能な媒体でもよく、揮発性および不揮発性の媒体、取り外し式および取り外し式でない媒体を含む。限定を目的とせずに例を挙げると、コンピューター可読媒体は、コンピューター記憶媒体および通信媒体を含むことができる。コンピューター記憶媒体は、コンピューター可読命令、データ構造、プログラムモジュール、または他のデータなど、情報を格納するための任意の方法または技術で実装された、揮発性および不揮発性、取り外し式および取り外し式でない媒体の両方を含む。コンピューター記憶媒体は、限定しないが、望まれる情報を格納するために使用することができ、コンピューティングデバイス100によってアクセスすることができる、RAM、ROM、EEPROM、フラッシュメモリーもしくは他のメモリー技術、CD−ROM、デジタル・バーサタイル・ディスクもしくは他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしく他の磁気記憶装置、または他の媒体を含む。通信媒体は、典型的には、コンピューター可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の移送メカニズムなど、変調されたデータ信号の他のデータを具体化することができ、任意の情報配送媒体を含む。「変調されたデータ信号」という用語は、信号の情報を符号化する方法で設定または変更された、1つまたは複数のその特性を持つ信号を意味する。限定を目的とせずに例を挙げると、通信媒体は、有線ネットワークまたは直接的な有線接続などの有線媒体、ならびにアコースティック、RF、赤外線、および他の無線媒体などの無線媒体を含む。上記のいずれの組み合わせも、コンピューター可読媒体の範囲に含まれている。
【0021】
[0026]メモリー112は、揮発性および/または不揮発性メモリーの形のコンピューター記憶媒体を含む。メモリーは、取り外し式、取り外し式ではない、またはそれらの組み合わせの場合がある。代表的なハードウェアデバイスは、ソリッドステートメモリー、ハードドライブ、光ディスクドライブなどを含む。コンピューティングデバイス100は、メモリー112またはI/Oコンポーネント120など、様々なエンティティからデータを読み込む1つまたは複数のプロセッサーを含む。プレゼンテーションコンポーネント(複数可)116は、ユーザーまたは他のデバイスにデータ表示を提示する。代表的なプレゼンテーションコンポーネントは、ディスプレイデバイス、スピーカー、印刷コンポーネント、振動するコンポーネントなどを含む。
【0022】
[0027]I/Oポート118は、コンピューティングデバイス100が、その一部は組み込むことができる、I/Oコンポーネント120を含む他のデバイスに論理的に結合されることを可能にする。説明のためのコンポーネントは、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナー、プリンタ、無線デバイスなどを含む。
ブートストラッププロセスのフェーズ
[0028]ハードウェアのインベントリーとデータセンターのクラウド・コンピューティング・ファブリックとの間に相互運用を確立するためのブートストラッププロセスの個々のフェーズについて、ここで
図2に関して記述する。一般的に、
図2は、本発明の実施形態による、データセンターのファブリックにハードウェアインベントリーを組み込むためのブートストラッププロセスの5つの代表的なフェーズを示す流れ
図200を示している。実施形態では、以下に記述するフェーズを使用して、ファブリック・コンピューティング・クラスター(FCC)としてハードウェアインベントリーを構築することは、ユーザーデバイス(
図3の参照番号310を参照)の構成ソフトウェア(
図3の参照番号311を参照)によって実施することができる。ハードウェアインベントリー、データセンター、および/または他のネットワークデバイスとともにユーザーデバイスは、ブートストラッププロセスの1つまたは複数のフェーズをそれぞれ実装する様々なエコシステムを形成するように協調して動作する。
【0023】
[0029]
図2に戻ると、ブロック210に描写したように、ブートストラッププロセスの第1のフェーズは、ハードウェアインベントリーの初期セットアップを指定するためのワークフローを含む。一般的に、ワークフローの結果として、ブロック230と240との間にファブリックネットワークを展開するために必要な論理的/物理的な構成を生成することになる。第1のフェーズの間に、ワークフローは、データセンターのFCCとしてハードウェアインベントリーを解放する前に、ハードウェアインベントリーの初期構成を理解することを含むことができる。たとえば、第1のフェーズのワークフローは、ハードウェアインベントリーの初期構成を検証することを試みて、それが予測されるハードウェア配置(たとえばデバイスの場所、IPアドレス、VLAN、および配線)に対応していることを保証し、それがデータセンターによって実施された特定の規制(たとえば、フラグを付けられた安全でないコンポーネントがなく、望ましい通信コンポーネントが存在する)を満たすことを保証する。
【0024】
[0030]代表的な実施形態では、第1のフェーズのワークフローは、最初の論理的なリソースおよびそれらのリソースの適切な仕様が、サポートされている構成に一致することを検証することに関係する。検証の1つの実例として、そこで構成で提供される十分なネットワークリソース(たとえばIPアドレス、VLAN、ポートなど)が、仕様によって明記された望まれる構成と一致するかどうかを決定することを含むことができる。たとえば、第1のフェーズのワークフローは、そのような条件が仕様内に存在する場合、少なくとも1つのIPアドレスがマシンごとに提供されることを検証することができる。
【0025】
[0031]検証の他の実例は、既知の既存する範囲との構成の重複が存在するかどうかを決定することを含むことができる(たとえば、現在使用されている偶然に提供されたリソース)。しかし、検証の他の実例は、計画されたリソースの組がサポートされている構成の構成要素となるかどうかを決定することを含むことができる(たとえば、仕様を満たすのにそれぞれ必要なリソースが十分になるか、これらのタイプのリソースの組み合わせはサポートされているか、検出されたTORスイッチは、検出されたブレードと互換性があるか)。さらに検証の他の実例は、実行に必要なリソースを収集ために(たとえば、パスワード、アドレス、IPブロック、VLANなど)、エンドユーザー/顧客との対話が必要かどうかを決定することを含む。
【0026】
[0032]ブロック220に描写したように、検出の第2のフェーズ、ネットワークデバイスの検証、および配線チェックは、ハードウェアインベントリーに実装することができる。実施形態では、第2のフェーズのワークフローは、それぞれシリアルベースの接続およびネットワークベースの接続を介して、ラック上部(TOR)のスイッチおよびネットワークデバイスのシリアルアクセスデバイスと通信することを含むことができる。さらに、第2のフェーズのワークフローは、接続の1つまたは複数を通じて、分析のためにユーザーデバイスにトラフィックを送信することをハードウェアデバイス(たとえばプロセッサー、処理ユニット、コンピューティングデバイス、サーバー、およびラックに挿入されたブレード)が選択的に引き起こすように、TORスイッチおよび/またはシリアルアクセスデバイスを促す命令を送信することを含むことができ、それらの状態をリセットするために選択的にデバイスの電源を入れ直すための配電器(PDU)の使用を含むことができる。この分析は、ブロック230に描写したように、ハードウェアデバイスを検出および検証することを含むことができる。すなわち、ブートストラッププロセスの第3のフェーズは、ハードウェアデバイスからユーザーデバイスに運ばれるデータパケットを用いる。第3のフェーズのワークフローは、ハードウェアデバイスの場所または不在、構成、およびハードウェアデバイスへの内部接続を決定するために、データパケットのコンテンツ(たとえばペイロードおよびヘッダー)を解析することを含むことができる。
【0027】
[0033]実施形態では、第3のフェーズのワークフローは、また、デバイス/ブレード自体内で、ハードウェアおよび/またはソフトウェアのコンポーネント(たとえばBIOSおよびデバイスファームウェア)の検証、更新、および/または構成を実行するために、様々なデバイスおよび/またはブレードに、特定のワークフロー、ツールなどを送信することができる。他の実施形態では、第3のフェーズのワークフローは、デバイス/ブレードとともにコンポーネントが機能し、ファブリック要件を満たすことを検証する役割を果たす「スモークテスト」を実行することができる。さらに、第3のフェーズのワークフローは、記録および最終的な使用のために、デバイス/ブレードのモデル、製造者、およびファームウェアバージョンを識別することができる。
【0028】
[0034]ブロック240に描写したように、ブートストラッププロセスの第4のフェーズは、データセンターのファブリック内でFCCインスタンスとしてインベントリーを展開させることを含む。代表的な一実施形態では、第4のフェーズのワークフローは、(たとえば、以前のフェーズの少なくとも1つの間に生成された)ハードウェアインベントリーのインフラストラクチャー状態をファブリックと共有することと、ハードウェアインベントリーに、ファブリックとの対話を可能にするサービスをインストールすることとを含むことができる。ハードウェアインベントリーにサービスを設置することは、以下の項に記述した複数のシナリオの1つに対応することができる。ブロック250に描写したように、ブートストラッププロセスの第5のフェーズは、FCCインスタンスとして指定されたら、ハードウェアインベントリーへのセキュリティ措置のクラスター全体の検証と供給を含む。代表的な一実施形態では、第5のフェーズのワークフローは、新しいFCCインスタンスに関連するシークレットストアとファブリックのコントローラーとの間で、データ(たとえばデバイス資格情報、オリジナル証明書、秘密キー、およびパスワード)を渡すことを含むことができる。
【0029】
[0035]ブートストラッププロセスの個別の5つのフェーズについて記述したが、データセンターのファブリック内でハードウェアインベントリーの組み込みを進めるのを支援するワークフローの他のタイプの適切な配置を使用できること、および本発明の実施形態は、本明細書に記述し5つのフェーズに限定されないことを理解し評価されたい。たとえば、本発明の実施形態は、個々のフェーズ(たとえばフェーズ5)のワークフローを相互に排他的な方法で実行できる個別のワークフロー(たとえばクラスター全体の検証およびセキュリティ供給)に分割することを意図する。
【0030】
[0036]ハードウェアインベントリーにサービスをインストールするための複数のシナリオの例についてここで記述する。1つのシナリオでは、ハードウェアインベントリーは、データセンターには新しく、以前に構成されていない装置を表している。したがって、新しいハードウェアは、データセンターの既存のリソースと透過的に動作するように構成され、クラウド・コンピューティング・ファブリックのコントローラーによって管理される新しいFCCインスタンスまたはクラウド・コンピューティング・スタンプとしてデータセンター内に正常に統合される。
【0031】
[0037]他のシナリオでは、ハードウェアインベントリーは、データセンターが追加のストレージ/計算容量を要求するときに追加されるデータセンターのローカル拡張を表している。ローカル拡張は、ファブリックコントローラーによる管理を可能にするために構築するブレードのラックを含むことができる。実施形態では、構築するプロセスは、ラック内のブレードの配線パターンを検出することと、事前定義されたテンプレートファイルに対して配線パターンを検証することと、データセンターに組み込みのためにブレードを承認することとを含む。事実上、ブレードを構築することで、ラック内の潜在的な配線の課題またはハードウェアの課題(たとえば物理的欠陥、見つからないパーツ、無効なパーツのバージョン、または不適当な構成)が検出および対処されることを保証するのを支援し、それによって、データセンター内のブレードの組み込みが、そこで実行されているサービスに、データセンターによって提供されている現行の基礎的なサポートに悪影響を与えないことを保証する。
【0032】
[0038]さらに他のシナリオでは、ハードウェアインベントリーは、現在、データセンターのリソースを相互結合しているファブリックから分離され区分されたクラウド・コンピューティング・ファブリックのそれ自身のインスタンスで構成される。したがって、データセンターにハードウェアインベントリーを組み込むときに、データセンターは、オリジナルのデータセンターに割り当てられたサービスから新しくブートストラップされたハードウェアインベントリーに割り当てられたサービスを分離するように機能する、少なくとも2つのクラウド・コンピューティング・ファブリック(たとえばオペレーティングシステム)を実行する。このようにして、個別のファブリックは、特定の顧客のサービスに専用することができ、それによって、データセンター内の他のもの(たとえばデータセンターコンテナの構築/ブートストラップ)から実質的かつ物理的に一部のサービスを除外/保護する。
【0033】
[0039]返却製造承認(RMA:return manufacture authorization)シナリオと呼ばれる、さらに他のシナリオでは、ハードウェアインベントリーは、データセンターのファブリックのコントローラー(以下「ファブリックコントローラー」)によって到達できない(たとえば動作不能または切断された)と考えられるコンピューティングデバイス(複数可)または他のデバイス(たとえばネットワーク、PDU、およびシリアル)を表している。ハードウェアのライフサイクル管理の間に、ファブリックコントローラーは、データセンター内に集められたコンピューティングデバイス(たとえば物理的なマシンおよび/または仮想マシン)の状態を定期的に請求することができる。状態の請求は、それぞれコンピューティングデバイスで実行されているエージェントに要求を通信することと、返事として正常性の情報を受信することとを含むことができる。何らかの理由により、ファブリックコントローラーが特定のコンピューティングデバイスに到達できない場合(たとえば、ファブリックコントローラーにコンピューティングデバイスを相互連結させるネットワークデバイスに障害があるなど)、ファブリックコントローラーは、ハードウェアインベントリーに到達できないことを示す通知を発することができる。
【0034】
[0040]ハードウェアインベントリーを到達不能として認識すると、ファブリックコントローラーは、自動修復手順を開始することができる。実施形態では、自動修復手順は、少なくとも退避および検証のステップを含み、ここで検証は、多くの場合、ブートストラッププロセスの1つまたは複数のフェーズ内でも実施される。退避のステップは、代わりのハードウェアインベントリーに、到達できないハードウェアインベントリーでリソースを消費するサービス(たとえば顧客が所有するアプリケーションおよびシステムベースのアプリケーション)を転送することを含む場合がある。したがって、それらのサービスへの可視性は、検証および維持の間に影響を受けないため、退避により、自動修復手順がデータセンターの顧客に透過的であることが保証される。
【0035】
[0041]退避が正しく実行されたら、検証のステップが呼び出される。代表的な一実施形態では、検証のステップは、到達できないハードウェアインベントリー内に存在するコンポーネントの構成設定を検証し、到達できないハードウェアインベントリーの検出された物理的なトポロジー(たとえばコンポーネントとびデバイス間の配線との間のリンク)を到達できないハードウェアインベントリーの予測された物理的なトポロジー(たとえば、テンプレートファイル内に提供)に対して相互参照するブートストラッププロセスのワークフローを実施することを含む。したがって、検証のステップは、到達できないハードウェアインベントリーが、ファブリックコントローラーのドライバーと対話するように適切に構成されているかどうかを決定し、ここでドライバーは、特定のハードウェア構成と対話するように設計されている。
【0036】
[0042]以下により完全に記述するように、検証のステップは、到達できないハードウェアインベントリーをオフラインで取ることを含み、これは退避のステップを前もって行う理由である。一般的に、到達できないハードウェアインベントリーは、オフラインで取られる。その理由は、到達できないハードウェアインベントリーのデバイスおよび/またはデータセンターのデバイスのサービスの実行を中断するであろう複数の破壊的な動作が発生するためである。これらの破壊的な動作は、そこに(PDUを介して)電力を選択的に駆動するようにシリアルアクセスデバイスに要求することによって、ブレードへの電力の流れを操作することと(たとえばオンおよびオフ)、操作されたブレードから送信されたトラフィックから情報を収集することと、トラフィック内で送信されたデータパケットのコンテンツから情報(たとえばブレードのMACアドレス)を抽出することと、抽出された情報をテンプレートファイルに対して評価し、検証を実行することによって、ブレードの場所および配線を検証することとの1つまたは複数を含むことができる。シリアルアクセスデバイスは、典型的に、帯域外通信に使用される一方、TORスイッチは、(たとえばイーサネット(登録商標)を介して)帯域内通信を用いることに注意されたい。
【0037】
[0043]ブレードに選択的に電力を駆動する例では、ファブリックコントローラーは、未知/無効なハードウェアインベントリーのブレードに供給するポートの範囲への電力をオフにすることができる。次に、ファブリックコントローラーは、対象となるブレードにリンクする選択されたポートへの電力をオンにするように、直接的または間接的にPDUに指示することができる。次に、ファブリックコントローラーは、現在、トラフィックを送信している対象となるブレードから送信されているデータパケットからMACアドレスを読み込むことができる。したがって、選択されたポートがテンプレートファイルの予測されたポートに対応する場合、対象となるブレードの接続性が検証される。PDUから電力を受信するために選択されたポートを検証することに加えて、検証のステップは、未知のハードウェアインベントリーのブレードに割り当てられたポートの範囲内で、どのポートが対象となるブレードに接続されるかを決定できるTORスイッチをさらに含むことができる。この決定は、対象となるブレードから伝達されているデータパケットを受信しているポート範囲の対象となるポートを識別することによってなされる。
共同編集フェーズのワークフロー
[0044]共同編集フェーズ(
図2のブロック210を参照)のワークフローは、ハードウェアインベントリーのオリジナルセットアップを指定することを促進し、その結果、検証の間に調べられるテンプレートファイルを生成する。最初に、相手先商標製造会社(OEM)は、ハードウェアインベントリーを出荷する前に、(たとえば物品に対する契約の一部として)デバイス間の配線を検証することが予測される。これは、
図2のブロック210、220、230に描写した、ワークフローの最初の3つのフェーズを個々に呼び出すことによって別々に行うことができる。さらに、OEMは、ハードウェアインベントリーのデバイス内にインストールされたソフトウェアの属性を記述するマニフェストを提供するツールを用いることが予測される。配線の検証およびソフトウェア属性のマニフェストは、適切なハードウェアインベントリーの選択を支援するために、ハードウェアインベントリーと関連して維持される。一部の実施形態では、OEMは、ハードウェアインベントリーをゼロ構成に設定することができる。
【0038】
[0045]共同編集フェーズのワークフローの操作では、ハードウェアインベントリーの命令は、ストレージ/計算容量の不足を改善するために、自動的または管理者による手作業で開始することができる。1つの実例では、命令を開始することは、容量不足を満たすことを目標とする1組の装置(たとえばデバイス、ラック、およびソフトウェア)に関係する特定でないデータを用いてフォーム(たとえばXML文書)を生成することを含む。予備値は、フォームに自動的または管理者による手作業で入力することができ、ここで予備値は、データセンター特定の詳細(たとえばVLANの範囲、ポート範囲、およびIPアドレス)または顧客に規定されたトポロジースキーマを反映する。トポロジースキーマは、ハードウェアインベントリーのハードウェアデバイスおよびネットワークデバイスのタイプ、量、および配線パターンを規定し、デバイスを実行するために使用される追加情報を示す(たとえば、ラックの数、VLANの範囲、ポートの数、およびサポートするリソース)。
【0039】
[0046]値を入力すると、フォームは記号表現に変換することができる。記号表現は、装置(たとえばデバイス)およびその間のルーティング(たとえば配線)の高レベルの論理的な青写真としての役割を果たす。たとえば、記号表現は、装置のどの部分が共通のVLAN内にグループ化されているかを示すことができる。
【0040】
[0047]記号表現は、シナリオに基づいて、適切なハードウェアインベントリーを選択するために、OEM、顧客、または管理者に送信することができる。1つの実例では、適切なハードウェアインベントリーの選択は、配線の検証および/またはOEMでハードウェアインベントリーに関連して維持されるソフトウェア属性マニフェストに対して記号表現を比較することを含む。適切なハードウェアインベントリーを選択すると、選択されたハードウェアインベントリーは、顧客または管理者によってOEMに提供される軽量のソフトウェアを使用してチェックすることができる。実施形態では、軽量のソフトウェアも、データセンターへのハードウェアインベントリーの到着時に、配達ドックで実行することができ、これはOEMのハンドオフ前に発生する。この早期のチェックでは、移送の間にハードウェアインベントリーに持ち込まれた課題を検出することができる。
【0041】
[0048]一般的に、軽量のソフトウェアは、それらのデバイスのIPまたはMACアドレスを知らずに、ハードウェアインベントリーデバイスで実行できる1組のタスクを実行する。動作において、軽量のソフトウェアは、出荷前にOEMでオンサイトで物理的な配線を検証し、ここで検証では、選択が適切であることを保証するために記号表現を調べる。場合によっては、軽量のソフトウェア検証は、グローバルにアクセス可能なIPアドレスが必要ないように変更されたネットワークチェックを用いて、
図2のブロック220および230に描写したフェーズの代替実装として使用することができる。
【0042】
[0049]OEMから出荷した後、管理者は、デバイスおよびデバイスの配線が、ハードウェアインベントリーの配達を受け取るときに記号表現を満たしていることを視覚的に検証することができる。さらに、管理者は、ハードウェアインベントリーの配線(たとえばシリアルおよびネットワークケーブルの接続)を視覚的に検査し、検査に基づいてハードウェアインベントリーの実際の値(たとえばポート番号、IPアドレス、VLANメンバーシップ、およびデバイスの場所)を決定し、記号表現内に入力された予備値を実際の値と交換/変換することができる。管理者による手作業の検査に加えて、ネットワークデバイスのデバイスドライバーが利用可能な場合、検査を自動化することができ、ここで自動化は、記号表現の仕様に従ってネットワークデバイスを構成するために使用することができる。伝達されたハードウェアインベントリーから調べ出された実際の値に交換または変換された予備値を用いるこの記号表現は、本明細書において「テンプレートファイル」と呼ばれる。以下により完全に記述するように、テンプレートファイルは、ユーザーデバイスがハードウェアインベントリーにどのように接続されるかを示し、かつハードウェアインベントリーが適切に構成されていることを保証するために、ブートストラッププロセスの次のフェーズで使用される。
検証エコシステムの構造
[0050]ハードウェアのインベントリーのネットワークデバイスおよびハードウェアデバイスを検出、検証、および構成する検証エコシステムの構造について、ここで
図3および
図4に関して説明する。一般的に、
図3は、ハードウェアインベントリー360の第1のタイプのトポロジーを検出、検証、および構成するための検証エコシステム300を示す図を表している一方、
図4は、ハードウェアインベントリー360の第2のタイプのトポロジーを検出、検証、および構成するための検証エコシステム400を示す図を表している。
【0043】
[0051]最初に、
図3を参照すると、検証エコシステム300は、ハードウェアインベントリー360のコンポーネントと通信できるように結合されたユーザーデバイス310を含む。代表的な一実施形態では、通信に関する結合は、少なくともネットワークベースの接続およびシリアルベースの接続へと整理される。
図3に示すように、シリアルベースの接続は、シリアルアグリゲーター320を介して、ユーザーデバイス310とシリアルアクセスデバイス361および362との間に通信路を含み、ここでシリアルアグリゲーター320は、(たとえば、ユーザーデバイス310からデータパケットのストリーム内で運ばれるアドレスを処理することによって)ユーザーデバイス310から適切なシリアルアクセスデバイスに適切に指示を配布することを担当する。ネットワークベースの接続は、L3アグリゲータースイッチ330を介して、ユーザーデバイス310とラック上部(TOR)のスイッチ350、351、および352との間の通信路を含み、ここでアクセスルーター340とは対照的に、L3アグリゲータースイッチ330は、TORスイッチ350、351、および352からユーザーデバイス310にデータパケットを適切に伝達することを担当する(たとえば、複数のネットワークデバイスからデータパケットを集める)。シリアルアグリゲーター320を介して、TORスイッチ350、351、および352との通信を行えることに注意されたい。動作において、アクセスルーター340は、既存のインフラストラクチャーとハードウェアインベントリー360との間のアップリンクとして機能する。したがって、
図3に示すように相互運用可能である場合、アクセスルーター340は、インターネットとともに、既存のインフラストラクチャーの残りからハードウェアインベントリー360を分離する役割を果たす。以下により完全に記述するように、アップリンクを通じて入る、または出て行くブロードキャストトラフィックがないことを保証することによって、アクセスルーター340は、現在、既存のインフラストラクチャーで実行されている外部サービスへの影響も打ち消すのを支援する。
【0044】
[0052]このようにして、構築されるハードウェアインベントリー360と既存のインフラストラクチャー(たとえばデータセンター550)との間の適切な分離を保証するために、検証エコシステム300は、ユーザーデバイス310とハードウェアインベントリー360との間の相互通信にメッセージングを限定する自己完結型の方法で動作する。この分離は、外部干渉を限定することによってブートストラッププロセスの間により高い信頼性を提供することと、既存のインフラストラクチャー内で現在機能しているハードウェアが、ブートストラッププロセスによって影響を受けないことを保証することと、という少なくとも2つの点で役に立つ。実施形態では、分離は、既存のインフラストラクチャーおよびハードウェアインベントリー360を切り離す仮想レイヤーとしての役割を果たすセキュリティ境界として構成され、これはフェーズのそれぞれが成功するまで、信頼されるものとして考えることができない。したがって、ブートストラッププロセス自身は、一般的に、セキュリティ資格情報/トークンがセットアップされるブートストラッププロセスの最終フェーズの間(検証および供給のフェーズの前)に、既存のインフラストラクチャーのセキュリティコンテキストに依存しない。
【0045】
[0053]検証エコシステム300の構成について、ここで説明する。最初に、エコシステム300は、ハードウェアインベントリー360内のラック301、302、および303にリンクし、その機能を制御するために、ユーザーデバイス310を含む。ラック301(たとえば高密度ラック)に関して、1つまたは複数の配電器(PDU)381および382、演算装置(たとえばブレード371〜374)、およびネットワークデバイスが存在する(たとえば、TORスイッチ350、上部シリアルアクセスデバイス361、および下部シリアルアクセスデバイス362)。ラックごとに追加的なTORスイッチがある場合があることに注意されたい(たとえば、上部および下部のTORデバイス)。コンピューティングデバイス371〜374は、計算/ストレージのタスクを実施するためのプロセッサーとして設計されており、OEMによって、それぞれ電力の受信時にデータパケットを生成するように構成されている一方、PDUは、コンピューティングデバイス371〜374に選択的に電力を供給するように設計されている。TORスイッチ350は、ネットワークベースの接続を通じてデータパケットを送信するために構成されている一方、シリアルアクセスデバイス361および362は、シリアルベースの接続を通じて指示の受信時にデータパケットの生成を引き起こすように構成されている。実施形態では、シリアルアクセスデバイス362は、ラック内のデバイスを構成するために使用することができる(たとえば、PDU、TORスイッチ、およびブレード)。
【0046】
[0054]ユーザーデバイス310は、ブートストラッププロセスの少なくとも最初のフェーズを駆動するように設計されている構成ソフトウェア311を含む。構成ソフトウェア311は、ネットワークベースの接続(帯域内チャネル)を介してTORスイッチ350に、およびシリアルベースの接続(帯域外チャネル)を介してシリアルアクセスデバイス361および362に通信するように結合される。実施形態では、ブートストラッププロセスの最初のフェーズは、ネットワークデバイス(TORスイッチ350、ならびにシリアルアクセスデバイス361および362)および1組のブレード(演算装置371〜374)を検出することと、ラック301の物理的なトポロジーを記述するテンプレートファイル312に対して、データパケット内で運ばれた情報を比較することによって、1組のブレードの場所を検証することとを含む。上記のように、テンプレートファイル312は、ハードウェアインベントリー360の最初のセットアップの指定のフェーズを完了するときに生成される。シリアルアクセスデバイス361および362は、構成ソフトウェアから指示を受信するようにさらに構成され、指示を処理すると、それぞれPDU381および382を制御する。1つの実例では、PDU381および382を制御することは、そこに指示を伝達することを含む。指示を受信し読み込むときに、PDU381および382は、コンピューティングデバイス371〜374の少なくとも1つの選択されたブレードに電力を送り、コンピューティングデバイス371〜374の少なくとも1つの選択されていないブレードに電力を与えないように構成することができる。これに応じて、選択されたブレード(複数可)は、構成ソフトウェアにルーティングされる前に、TORスイッチ350、次にL3アグリゲータースイッチ330で集められたデータパケットの生成を始めることができる。他方では、選択されていないブレード(複数可)は、データパケットの送信を避ける可能性がある。したがって、構成ソフトウェアは、指示によってブレードが選択した場所と、ラック301内に生成されているデータパケットの発アドレスとの間の比較に応じて、ネットワークデバイス350、361、および362と、コンピューティングデバイス371〜374と、PDU381および382との間の内部接続を確認することができる。さらに、コンピューティングデバイス371〜374は、シリアル出力を通じてデータをシリアルアクセスデバイス361および362に放出するように構成することができ、これらは次に、ブレードからシリアル伝導路、ならびにPDU381および382への内部接続を検証することができる。
【0047】
[0055]ネットワークデバイス350、361、および362の様々な異なる構成について記述してきたが、メッセージを配布または集める他のタイプの適切なデバイスおよび/またはマシンを使用できること、および本発明の実施形態は、本明細書に記述したシリアルアクセスデバイス361および362、ならびにTORスイッチ350に限定されないことを理解し評価されたい。たとえば、単一のシリアルアクセスデバイスをラック301全体に提供することができ、ここでシリアルアクセスデバイスは、PDU381および382へのシリアル接続/インターフェースとして機能し、ブレードのそれぞれへのシリアル接続/インターフェースとして機能する。他の実例では、シリアルアクセスデバイスおよびPDUは、単一デバイスへと組み合わせることができる。さらに他の実例では、TORスイッチ350は、イーサネット(登録商標)インターフェース機能を持つ専門化されたブレードと交換することができる。したがって、検出および実証のフェーズは、任意の数のネットワークデバイスを使用して実施することができるため、少なくとも1つのネットワークデバイスは、ネットワーク通信のための帯域内機能を含み、少なくとも1つのネットワークデバイスは、シリアル通信のための帯域外機能を含む。または、帯域外機能がイーサネット(登録商標)を通じて用いられる場合、第2のネットワークスイッチをシリアルデバイスの代わりに使用することができる。このようにして、帯域内機能は帯域外機能を補足し、機能の1つがオフラインになった場合に、コンピューティングデバイス371〜374へのアクセスを継続するだけでなく、ネットワークデバイスのデバッグおよび診断を可能にする。
【0048】
[0056]当業者は、
図3に示したエコシステム300は、単にブートストラッププロセスのフェーズを実施するための環境の1つの適切な部分の例であり、本発明の実施形態の使用または機能の範囲に関して限定を示唆することを意図しないことを理解し評価されるだろう。また、エコシステム300は、そこに図示した単一のリソースまたはリソースの組み合わせに関係する依存関係または要件を持つものと解釈されるべきでない。さらに、
図3の様々なブロックは明瞭さのための線で示しているが、実際には、様々なコンポーネントの線引きはそれほど明瞭ではなく比喩的なものであり、線はより正確には灰色で曖昧である。
【0049】
[0057]ハードウェアインベントリー360は、シリアルベースの接続および/またはネットワークベースの接続を介してユーザーデバイス310に相互連結された様々な装置/リソースを含む。この装置/リソースは、本明細書に記述したように、(たとえば、ネットワークデバイスにインストールされた)ソフトウェアコンポーネントだけでなく、ラック301、302、および303、ならびにユーザーデバイス310など、有形のハードウェア要素を含むことができる。装置/リソースは、様々な物理的なリソースを横断して分配できるように配置できるため、ユーザーデバイス310は、その間に通信を確立するために、検出および検証のフェーズを通じて装置/リソースの場所を認識することができる(
図2の参照番号220および230を参照)。さらに、装置/リソース、およびブートストラッププロセスによって必要とされる他の要素を接続するチャネルを通じてこの通信を促進するネットワーク(図示せず)を提供することができる。ネットワークは、限定することなく、1つまたは複数のローカル・エリア・ネットワーク(LAN)および/またはワイド・エリア・ネットワーク(WAN)を含むことができる。そのようなネットワーキング環境は、オフィス、企業規模のコンピューターネットワーク、イントラネット、およびインターネットではありふれている。したがって、ネットワークについて、本明細書にはこれ以上は記述しない。
【0050】
[0058]エコシステム300の代表的なシステムアーキテクチャーは、ユーザーデバイス310およびコンピューティングデバイス371〜374を含む。
図3および4に示した、これらのデバイス310および371〜374のそれぞれは、たとえば、
図1に関して上に記述したコンピューティングデバイス100など、様々なタイプのコンピューティングデバイスの形を取ることができる。限定を目的とせずに例を挙げると、デバイス310および371〜374は、パーソナルコンピューター、デスクトップコンピューター、ラップトップ型コンピューター、家庭用電子機器、ハンドヘルドデバイス(たとえば携帯情報端末)、様々なサーバー、ブレードなどの場合がある。しかし、本発明は、そのようなコンピューティングデバイスへの実装に限定されず、本発明の実施形態の範囲内にある様々な異なるタイプのコンピューティングデバイスのいずれにも実装できることに注意されたい。
【0051】
[0059]典型的には、デバイス310および371〜374のそれぞれは、そこで実行されているコンポーネント(複数可)の動作をサポートするために何らかの形の演算装置(たとえば中央制御装置、マイクロプロセッサーなど)を含むか、またはそれにリンクされている(たとえば、信号の受信時または電源を供給されるときの発信元のデータパケット)。本明細書で利用する場合、「演算装置(computing unit)」という語句は、一般的に、処理能力および記憶装置を備える専用のコンピューティングデバイスを表し、これはそこにソフトウェア、アプリケーション、およびコンピュータープログラムの実行の基礎となるオペレーティングソフトをサポートする。1つの実例では、演算装置は、各デバイスが通信関連のプロセスおよび他の操作を実行することを可能にするために、デバイス310および371〜374に一体型か、または操作可能なように結合された有形のハードウェア要素、またはマシンで構成される。他の実例では、演算装置は、デバイス310および371〜374のそれぞれによって収められたコンピューター可読媒体に結合されたプロセッサー(図示せず)を包含することができる。一般的に、コンピューター可読媒体は、少なくとも一時的に、プロセッサーによって実行可能な複数のコンピューター・ソフトウェア・コンポーネントを格納する。本明細書で利用する場合、「プロセッサー(processor)」という用語は、限定することを目的とするものではなく、計算容量内で動作する演算装置の任意の要素を包含することができる。そのような容量において、プロセッサーは、指示を処理する有形の物品として構成することができる。代表的な一実施形態では、処理は、指示のフェッチ、復号/解釈、実行、および書き戻しを含むことができる(たとえば、動きパターンのアニメーションを提示することによって物理的なジェスチャーを再構築する)。
【0052】
[0060]また、処理の指示以外に、プロセッサーは、デバイス310および371〜374と一体型、またはそこに配置された他のリソースとの間で情報を双方向に転送することができる。一般的に、リソースは、デバイス310および371〜374が特定の機能を実行することを可能にするソフトウェアおよびハードウェアのメカニズムを表している。例示のみを目的として、リソースは、構成ソフトウェア311と、テンプレートファイル312と、コンピューティングデバイス371〜374内に存在するコンポーネントと、というメカニズムの1つまたは複数を含むことができる。
【0053】
[0061]ネットワークデバイス350、361、および362を検出および検証するための代表的なワークフロー、およびエコシステム300内のコンピューティングデバイス371〜374(たとえばブレード1〜4)について、ここで
図3に関して記述する。最初に、構成ソフトウェア311は、シリアルベースの接続のシリアルアグリゲーター320を介して、ハードウェアインベントリー360へのアクセスを獲得することを試みる。アクセスを獲得したら、ハードウェアインベントリー360のシリアルアクセスデバイス(たとえばシリアルアクセスデバイス361および362)にリンクされたシリアルアグリゲーター320のポートの識別が行われる。次に、シリアルアクセスデバイス361および362を検出するために、信号は識別されたポートからシリアルベースの接続を通じて送信される。検出されたシリアルアクセスデバイス361および362から抽出された情報は、テンプレートファイル312に対して相互参照される。上により完全に記述したように、テンプレートファイル312は、予測されるデバイス(たとえばデバイス350、361、362、および371〜374)の青写真を表すトポロジースキーマおよびその間の予測される配線、ならびにコンピューティングデバイス371〜374それぞれの中に存在することが予測されるコンポーネントを規定するハードウェアスキーマを含む。
【0054】
[0062]シリアルアクセスデバイス361および362がシリアルアグリゲーター320を介して適切に接続されているものと検出すると、構成ソフトウェア311は、シリアルアクセスデバイス361および362にシリアルベースの接続を通じて指示を配布することができる。配布された指示は、シリアルアクセスデバイス361および362によって処理されると、ラック301の内部結合を介して、構成ソフトウェア311がTORスイッチ350ならびにPDU381および382にアクセスすることを可能にする。PDU381および382に到達すると、構成ソフトウェア311は、電力を選択的に制御する指示をコンピューティングデバイス371〜374に提供することができる。実施形態では、シリアルアクセスデバイス361および362ならびにPDU381および382を制御する前に、構成ソフトウェア311は、デバイスを検証し、これらのデバイスのソフトウェアを検証することができ(たとえば、ファームウェアおよびOSがサポートされているバージョンであることを保証する)、ファブリックによって必要とされる仕様(複数可)に対してこれらのデバイスを構成できることに注意するべきである。
【0055】
[0063]たとえば、選択的に電力を制御することは、コンピューティングデバイス371〜374のそれぞれへの電源をオフにすることと、テンプレートファイル312に記載されたコンピューティングデバイス371〜374の1つまたは複数を対象とすることと、対象とされたコンピューティングデバイス(複数可)への電源をオンにすることとを含むことができる。対象とされるコンピューティングデバイス(複数可)に電力が供給されると、データパケットが生成され、対象とされるコンピューティングデバイス(複数可)から送信することができる。次に、データパケットはTORスイッチ350に集められ、これはコンピューティングデバイス371〜374からデータパケットを受信するために割り当てられたポートの範囲をスキャンし、実際にデータパケットを受信しているポート範囲からポート(複数可)を識別することができる。また、TORスイッチ350は、以前にそこに割り当てられたアドレス(たとえばMACアドレスまたはIPアドレス)を識別することができる。この情報を収集すると、TORスイッチ350は、ネットワークベースの接続を通じてL3アグリゲータースイッチ330を介して、構成ソフトウェア311にそれらをルーティングして戻す前に、識別されたポート(複数可)および/または識別されたアドレスをデータパケットに添付することができる。
【0056】
[0064]構成ソフトウェア311は、ハードウェアインベントリー360から送信されているトラフィックの流れからデータパケットをキャプチャーするように設計されている。さらに、構成ソフトウェア311は、コンピューティングデバイス371〜374を検証するように設計されている。検証は、データパケット内で運ばれる情報を抽出するステップと(たとえば、対象となるコンピューティングデバイス(複数可)およびTORスイッチ350のアドレス、ならびに対象となるコンピューティングデバイス(複数可)に内部的に結合されていると識別されたTORスイッチ350、ならびにシリアルアクセスデバイス361および362のポート)、アドレスおよび内部結合がトポロジー方式と一致することを確認するために、テンプレートファイル312に対して、抽出された情報を比較するステップとの1つまたは複数を含むことができる。
【0057】
[0065]さらに、データパケットは、現在、対象となるコンピューティングデバイス(複数可)に存在するコンポーネントに適用された構成設定だけでなく、コンポーネントを認識して、構成ソフトウェア311を提供する情報を伝達することができる。これらの伝達された構成設定は、テンプレートファイル312のハードウェアスキーマ内に維持される予測された構成設定と比較することができる。伝達された構成設定が予測される構成設定に対応しない場合、対象となるコンピューティングデバイス(複数可)の再構成を促すことができる。この再構成は、シリアルアクセスデバイス361を介して、またはTORスイッチ350を通じたネットワーク接続を介して実行することができる。
【0058】
[0066]ネットワークデバイスおよびハードウェアデバイスを検出および検証するための上記のステップは、反復して実行できるため、連続してデバイス371〜374、361、362、および350のそれぞれの場所および接続を検証するために、コンピューティングデバイス371〜374、ならびにネットワークデバイス361、362、および350を再帰的に対象にできることを評価して理解されたい。したがって、上記のステップを繰り返すだけで、ラック301の配線パターン全体を引き出すことができる。
【0059】
[0067]ここで
図4を参照して、エコシステム300の基礎となるシステムアーキテクチャーの変形形態について、ここで記述する。全体的に、
図4は、ハードウェアインベントリー360の第2のタイプのトポロジーを検出、検証、および構成するための代表的な検証エコシステム400を示す図を示しており、検証エコシステムは、本発明の実施形態を実装するときに使用するのに適している。図示するように、シリアルアグリゲーター320は、シリアルベースの接続を通じて通信にルーティングするように用いられ続ける一方、
図3のL3アグリゲータースイッチ330は、1つまたは複数のスパインデバイス(spine device)411および412、ならびに少なくとも1つの統合ルーターデバイス410と交換される。これらのデバイス410〜412は、全体的に木型のトポロジーに整理され、木に沿って上に向かって進むと次第に接続がより少なくなる(たとえば、2つのスパインデバイス411および412は、3つのTORスイッチ350〜352の親ノードであり、1つの統合ルーターデバイス410の子ノードである)。動作において、この木型のトポロジーは、ラック301〜303のコンピューティングデバイス371〜374を含む、複数のデバイスから通信を集める役割を果たす。
【0060】
[0068]
図4のエコシステム400のデバイス410〜412、ルーター340、およびTORスイッチ350〜351について、ここでより完全に記述する。スパインデバイス411および412は、デバイス間のより高速な通信を促進するために、ユーザーデバイス310のメッセージおよびハードウェアインベントリー360内の他の内部トラフィックを散開させるように構成される。一般的に、スパインデバイス411および412、ならびに他のデバイスの間のトラフィックは、ローカルに生成され、ブートストラッププロセスの最初のフェーズの間にローカルに分散される(つまり、アウトバウンドトラフィックをほとんど扱わない)。さらに、スパインデバイス411および412は、ラック301〜303の間、およびハードウェアインベントリー360の全体で、ローカルトラフィックを拡張および最適化するために、それぞれ複数の共通のラック301〜303に接続することができる。統合ルーターデバイス410はローカルトラフィックを集めるように構成され、それによって、ブートストラッププロセスの間により大きな帯域幅が可能になる。
【0061】
[0069]実施形態では、TORスイッチ350〜352は、それぞれラック301〜303内のデバイスからトラフィックを集め、それらにトラフィックを配布するように構成される。1つの実例では、TORスイッチ350〜352は、ブートストラッププロセスの最初のセットアップフェーズの間に、ハードウェアインベントリー360内に確立された仮想ローカル・エリア・ネットワーク(VLAN)内でトラフィックをルーティングすることができるL3タイプ・ネットワーク・デバイスを表している。しかし、本発明の実施形態は、TORスイッチ350〜352にサポートされた異なるレイヤーの通信を通じてトラフィックを伝えることを考える。
【0062】
[0070]実施形態では、アクセスルーター340は、ハードウェアインベントリー360とユーザーデバイス310以外の任意の外部デバイスとの間のゲートウェイとしての役割を果たす。このようにして、アクセスルーター340でインバウンドおよびアウトバウンドの通信を限定することによって、ハードウェアインベントリー360は、展開の自己完結型ユニットとして機能する。たとえば、ハードウェアインベントリー360が民間企業ネットワーク内の展開のユニットを表している場合、ハードウェアインベントリー360は、ブートストラッププロセスの間に民間企業ネットワークのローカルサーバーと協調して(たとえばクラウド・コンピューティング・ネットワークのインスタンスとして)運用することができない。別の実施例では、ハードウェアインベントリー360がリモート・データ・センター内の展開のユニットを表している場合、ハードウェアインベントリー360は、ブートストラッププロセスの間に他のクラウド・コンピューティング・スタンプと協調して(たとえばクラウド・コンピューティング・スタンプとして)運用することができない
[0071]ハードウェアインベントリーの様々な異なる構成について記述してきたが、ストレージ/計算容量の増加を可能にする他のタイプの適切なマシンおよびマシン間のトラフィックをルーティングする適切なデバイスを使用することができ、本発明の実施形態は、本明細書に記述したエコシステム300および400の配置に限定されないことを理解して評価されたい。すなわち、デバイスの様々な他のタイプの物理的なトポロジーが、本発明の実施形態によって考えられるハードウェアインベントリー360内で使われる場合がある。トポロジーの変化に伴い、テンプレートファイル312はそれに対応して変えることができるため、相互参照および検証の手順は、配線の修正(ネットワークスキーマ)およびデバイスの変更(ハードウェアスキーマ)に適応させることができる。結果的に、構築される新しいハードウェアインベントリー360の物理的なトポロジーに修正が行われるたびに、検証コードを完全に書き直すのではなく、新しいハードウェアインベントリー360に基づいて、新しいテンプレートファイル312が単に生成される一方、手順においてネットワークデバイスおよびハードウェアデバイスを検証するためのブートストラッププロセスのフェーズは変更されない。したがって、それぞれのフェーズのワークフローを一新することなく、現在存在する様々な物理的なトポロジーだけでなく、まだ開発されていないものにもブートストラッププロセスを適用する能力のために、標準的で一様な配線およびデバイスのセットアップ以外に、ハードウェアインベントリーを構築および展開することが可能になる。
【0063】
[0072]
図4に示す検証エコシステム400のハードウェアインベントリー360内のネットワークデバイスおよびハードウェアデバイスを検出および検証するためのブートストラッピングプロセスのフェーズ(
図200の参照番号220および230を参照)についてここで記述する。最初に、ユーザーデバイス310には、ハードウェアインベントリー360からFCCをセットアップするように機能する、そこで実行されている構成ソフトウェア311が提供される。ユーザーデバイス310は、それぞれシリアルベースの接続およびネットワークベースの接続を形成するために、シリアルアグリゲーター320および統合ルーターデバイス410につながれ、ここでシリアルアグリゲーター320および統合ルーターデバイス410は、ハードウェアインベントリー360を構築するためにユーザーデバイス310の入口点としての役割を果たす。ユーザーデバイス310からの接続は、直接的に、またはその間の通信を可能にするためにデバイス310、320、330、340、および410の間のトラフィックをルーティングするための追加のネットワークデバイスを通じて実行することができる。
【0064】
[0073]実施形態では、シリアルアグリゲーター320および統合ルーターデバイス410は、ゼロ構成/ゼロネットワーキング状態でOEMによってセットアップされる。この場合、構成ソフトウェア311は、デバイス310と360との間の通信を確立することができる。または、シリアルアグリゲーター320および統合ルーターデバイス410は、適切なラック301〜303にメッセージを自動的にルーティングし、ラック301〜303から戻るトラフィックを集めるように事前構成される。したがって、ユーザーデバイス310をつなげることは、一般的に、ブートストラッププロセスに関係する唯一の手作業のセットアップであり、構成ソフトウェア311を始動することで、デバイスを自動的に検出し、応答するようにデバイスに自動的に命令するワークフローが開始する。
【0065】
[0074]上記のように、テンプレートファイル312は、ユーザーデバイス310で提供されるか、またはユーザーデバイス310と通信するデータストアで維持される。一般的に、テンプレートファイル312は、ラック301〜303に組み込まれたデバイスの識別だけでなく、デバイス間の内部配線のパターンを明らかにする。1つの実例では、テンプレートファイル312は、コンピューティングデバイス371〜374をマッピングするために、予測された場所およびアドレスを規定するハードウェアスキーマを含む(たとえば、MACアドレス、IPアドレス、または物理的なネットワークセグメントで通信を指示するためにネットワークインターフェースに割り当てられた他の一意の識別子)。たとえば、ハードウェアスキーマは、ラック301がBLADE
1、BLADE
2、BLADE
3、およびBLADE
4(コンピューティングデバイス371〜374)として識別されたハードウェアデバイスを含むことを指定できる一方、ラック301〜303は、それぞれTOR
1、TOR
2、およびTOR
3(TORスイッチ350〜352)として識別されたネットワークデバイスを装備している。これはコメントである:
図3において、ブロック373は、BLADE
3であるべきであり、ブロック373は、BLADE
4であるべきである。
【0066】
[0075]さらに、ハードウェアスキーマは、シリアルアクセスデバイス361および362への最初のアクセスを許可するハードウェアインベントリー360のベンダーから資格情報のデフォルトの組でプログラムすることができる。背景として、資格情報および/またはアドレスは、ベンダーのハードウェア承認技術者が、ハードウェアインベントリー360内で出荷されたデバイスのバーコードをスキャンするときに、ハードウェアスキーマに入力することができる。
【0067】
[0076]他の実例では、テンプレートファイル312は、TORスイッチ350、コンピューティングデバイス371〜374、PDU381および382、ならびにシリアルアクセスデバイス361および362の間の内部配線を規定するトポロジースキーマを含む。典型的には、トポロジースキーマは、様々な機能的なタイプ(たとえば、格納および計算)の配線を別々に指定する。代表的な実施形態では、トポロジースキーマは、シリアルベースの接続を介して、シリアルアクセスデバイス361および362との通信に割り当てられたシリアルアグリゲーター320内にポートの範囲を含む。また、トポロジースキーマは、ネットワークベースの接続を介して、TORスイッチ350〜352と通信するために割り当てられたデバイス410〜412内にポートの範囲を含むことができる。さらに、実施形態では、トポロジースキーマは、正しく検証するために特定のデバイスへのリンクが生じるべき割り当てられたポート範囲内で予測されるスロットを指定する。たとえば、トポロジースキーマは、スパインデバイス412のポートの範囲のスロット「A」が、TOR
1(TORスイッチ350)とリンクするように指定される一方、TOR
1のポートの範囲のスロット「B」は、BLADE
2(コンピューティングデバイス372)とリンクするように指定されるように指定することができる。別の実施例では、トポロジースキーマは、シリアルアグリゲーター320のポートの範囲のスロット「C」が、上位のシリアルアクセスデバイス361とリンクするように指定される一方、上位のシリアルアクセスデバイス361のポートの範囲のスロット「D」および「E」は、それぞれBLADE
2およびPDU
2(PDU381)とリンクするように指定されるように指定することができる。したがって、ハードウェアおよびトポロジーのスキーマは、関連して、認知されたネットワーク通信からハードウェアデバイスおよびネットワークデバイスの物理的な場所を識別する方法を提供する。
【0068】
[0077]この時点で、構成ソフトウェア311は、コンピューティングデバイス371〜374に電力を選択的に供給するように、PDU381および382を制御することによって、デバイスの場所および配線の検出および検証を開始することができる。最初に、構成ソフトウェア311は、シリアルアクセスデバイス361および362が制御可能な方法でPDU381および382を駆動することを可能にするために、シリアルアクセスデバイス361および362の1つまたは複数に信号を送信する。説明のために、BLADE
2(コンピューティングデバイス372)、TOR
1(TORスイッチ350)、およびPDU
2(PDU381)の検出および検証について、ブートストラッププロセスのフェーズのワークフローを示すためにここで記述する。この代表的な場合では、構成ソフトウェア311は、シリアルアグリゲーター320でポートの範囲のスロット「C」を通じて信号を送信するようにシリアルアグリゲーター320に指示することによって、上位のシリアルアクセスデバイス361に信号を向けることができる。これは、トポロジースキーマに基づいて、上位のシリアルアクセスデバイス361とリンクするように指定されることと認識される。
【0069】
[0078]代表的な実施形態では、信号は、安全かつアクセス可能であり、法的な要件、運用上の要件、およびファブリックの要件に準拠させるために、上位のシリアルアクセスデバイス361内に構成設定をインストールする指示を含む。上位のシリアルアクセスデバイス361が構成設定を用いてセットアップされると、TOR
1およびPDU
2も構成される。1つの実例では、TOR
1は、ラック301内の内部結合を使用して、そこに構成設定をインストールするように、上位のシリアルアクセスデバイス361に指示することによって間接的に構成される。他の実例では、TOR
1は、スパインデバイス412でポートの範囲のスロット「A」を介して信号を送信するようにスパインデバイス412に指示するソフトウェア311の構成により直接的に構成され、これはトポロジースキーマに基づいてTOR
1とリンクするように指定されることと認識される。さらに、PDU
2は、上位のシリアルアクセスデバイス361が信号を送信するときに、PDU
2とリンクするように指定されているようにトポロジースキーマによって認識されたポートの範囲のスロット「E」を通じて構成設定をインストールするように構成することができる。
【0070】
[0079]ラック301のデバイスの構成時に、TOR
1を検出および検証することができる。実施形態では、検出および検証は、アウトバウンド・データパケットを送信するためにTOR
1を呼び出すための指示を含むメッセージを上位のシリアルアクセスデバイス361に送信することを含む。アウトバウンド・データパケットがスパインデバイス411および412の1つまたは複数を介してユーザーデバイス310で受信される場合、構成ソフトウェア311は、テンプレートファイル312に対して、上位のシリアルアクセスデバイス361およびTOR
1が、トポロジースキーマによって指定された予測されたスロットで適切に内部的に結合されていることを確認することができる
[0080]PDU
2は、PDUにリンクするように指定されたポートの範囲の予測されたスロット「E」を通じてPDU
2と通信するように上位のシリアルアクセスデバイス361に指示することと、PDUとリンクするように割り当てられたポート範囲でスロット「F」を通じてPDU
2と通信するようにTOR
1に指示することであって、ここでスロット「F」は、トポロジースキーマに基づいてPDU
2とリンクすると予測されることと、それぞれ上位のシリアルアクセスデバイス361およびTOR
1によって呼び出されたコマンドを通じて(PDU
2を介して)ラック301の上位部分への電力の供給を制御することを試みることと、というワークフローを使用して検出および検証することができる。適切に起動されているものとして構成ソフトウェア311によって電源が検出された場合、TOR
1とPDU
2との間の内部結合(ネットワークベースの接続)だけでなく、上位のシリアルアクセスデバイス361とPDU
2との間の内部結合(シリアルベースの接続)も検証される。典型的には、スロット「E」および「F」は、拡張されたセキュリティ機構が供給されるか、かつ/またはそれぞれ上位のシリアルアクセスデバイス361およびTOR
1内のポートの範囲の他のスロットと比較して、より高い優先度レベルが割り当てられる。
【0071】
[0081]BLADE
2は、そこに電力を選択的に供給するようにPDU
2を制御することによって検出および検証することができる。一般的に、電力を選択的に供給することは、ラック301の上位部分内に存在するコンピューティングデバイス371および372のそれぞれから電力に控えさせるようにPDU
2に指示するように上位のシリアルアクセスデバイス361に指示することと、電力が取り除かれたことを検証するために、TOR/シリアルデバイスのシリアルおよび/またはネットワーク接続を通じて出力が生成されないことを保証することと、コンピューティングデバイス371および372とリンクするように指定されたポートの範囲内のスロット「G」を横断してBLADE
2に電力を供給するようにPDU
2に指示することであって、ここでトポロジースキーマは、スロット「G」がPDU
2およびBLADE
2を内部的に結合することを予測することと、というワークフローを含む。電力を選択的に供給するこのワークフローは、BLADE
2をトリガーし(たとえば、PXE起動を使用)、それによりBLADE
2がデータパケットを生成するようにトリガーする。
【0072】
[0082]これらの起動で生成されたデータパケットはTOR
1で集められ、これはデータパケットを受信するコンピューティングデバイス371および372に割り当てられたポートの範囲内のスロットを識別する。識別されたスロット、TOR
1のアドレス、および他の関連情報の証拠(indicia)は、データパケットのコンテンツに添付され、ユーザーデバイス310に戻すことができる。ユーザーデバイス310で添付されたデータパケットを受信すると、構成ソフトウェア311は、添付されたデータパケットのコンテンツを読み込み、BLADE
2の特定の属性を検証するために、テンプレートファイル312に対して、添付されたデータパケットから抽出された情報を相互参照することができる。たとえば、データパケット内で伝達されたBLADE
2のアドレス(たとえばMACアドレス)または識別子(たとえばシリアルコード)は、それぞれBLADE
2の予測される場所または予測される識別情報を検証するために、ハードウェアスキーマで予測されるアドレスまたは識別子と比較することができる。他の実例では、BLADE
2から単にデータパケットを受信することは、上位のシリアルアクセスデバイス361、BLADE
2、およびPDU
2の間の内部結合を確認するように機能する。さらに他の実例では、データパケットに添付された情報は、ハードウェアスキーマに対して添付された情報を相互参照するときに、TOR
1の場所または識別情報だけでなく、BLADE
2とTOR
1との間の内部結合を確認する。また、データパケットは、予測されるシリアル接続を通じてブレードからブレードまでの出力をチェックすることによって、シリアル接続を検証するのを支援する。
【0073】
[0083]構成ソフトウェア311が、BLADE
2の再起動を引き起こすようにPDU
2に指示するように上位のシリアルアクセスデバイス361に指示するときに、データパケットがユーザーデバイス310によって受信されない場合、構成ソフトウェア311は、見つからないまたは応答なしとしてBLADE
2を記録することができる。上記の場合において不一致を見つけたときに、ブートストラッププロセスは、現在のフェーズ内のワークフローの次のフェーズに進むか、またはブートストラッププロセスを中断し、かつ/もしくはハードウェアインベントリー360を検査するために技術者に通知するアラームを発行するかを自動的に決定するように柔軟にプログラムすることができる。自動的な決定は、ブートストラッププロセスの間に発生する不一致の品質および量に基づいてもよい。一例では、検証の間に検出された誤配線の数が事前定義されたしきい値を超える場合、ユーザーデバイス310は、手作業で配線を修繕し、BLADE
2に関して検証を繰り返すように技術者に通知することができる。別の実施例では、誤配線の数が事前定義されたしきい値を下回ったままの場合、ユーザーデバイス310は、可能性として、不一致を示す警告を発行しながら、ブートストラッププロセス内で進めることができる。したがって、自動的な決定は、重要でない課題の不一致のためにブートストラッププロセスを止めないように支援することができる。しかし、見つからない上位のシリアルアクセスデバイス361など、重要な課題であるこれらの検出された不一致は、誤配線の数が事前定義されたしきい値を下回っている場合でも、ブートストラッププロセスの中断をトリガーする場合がある。さらに、構成ソフトウェア311は、予測されないデバイスは、ハードウェアスキーマによって予測されたデバイスを交換することができるか、または見つからない予測されたデバイスは、その高いレベルの品質のために絶対に存在するべきであるかどうかについて決定を行うように設計される。
【0074】
[0084]さらに、構成ソフトウェア311が、データパケットのコンテンツを読み込み、テンプレートファイル312に対してデータパケットから抽出された情報を相互参照するときに、データパケットがユーザーデバイス310によって、しかし予測しないポートで受信された場合、構成ソフトウェア311は、その配線パターンに不整合性を持つものとしてBLADE
2を記録することができる。この実例では、BLADE
2に関する配線パターンをチェックし、ラック301全体を再評価することなく、BLADE
2を独立して検証するためにワークフローを再実行するように、技術者に通知を発行することができる。
【0075】
[0085]検証の間に、構成ソフトウェア311は、データパケットのコンテンツから、ラック301内のデバイスの構成をさらに収集することができる。たとえば、データパケット内のコンテンツは、BLADE
2内で供給された特定のコンポーネントは、特定のレベルのセキュリティに関連しており、特定の機能を用いてプログラムされていることを明らかにすることができる。セキュリティのレベルおよび/またはプログラムされた機能は、BLADE
2の構成が受け入れ可能かどうかを決定するために、ハードウェアスキーマに対して相互参照することができる。たとえば、BLADE
2のコンポーネントからの特定の機能がない場合、セキュリティのレベルに望ましくない妥協が生じるだろうことをデータパケットのコンテンツが示している場合、これらの不在の機能によって、アラームを引き起こされるか、またはBLADE
2を再構成するように構成ソフトウェア311をトリガーすることができる。
【0076】
[0086]実施形態では、ブランクのデバイスを再構成、または最初に構成する手順は、ブートストラッププロセスの検出および検証のフェーズの間または後に行うことができる。最初に、ネットワークデバイスおよびハードウェアデバイスのインターフェースを記述するドライバー開発キット(DDK)を提供することができ、これを相手先商標製造会社(OEM)は、配達前にハードウェアインベントリー360のネットワークデバイスおよびハードウェアデバイス内にドライバーを実装するために用いることができる。たとえば、データセンターのサービスプロバイダーは、OEMにDDKを提供することができ、ここでOEMは、DDKにより適切なネットワークデバイスおよびハードウェアデバイスにドライバーをインストールするように契約する。動作において、実装されたドライバーは、ネットワークデバイスとハードウェアデバイスとの間の対話を促進し、構成ソフトウェア311が、そこに指示を送信することによって、シリアルアクセスデバイス361および362を制御することを可能にする。
【0077】
[0087]ネットワークデバイスおよびハードウェアデバイス内において、これらのドライバーだけでなく、コンポーネントの他の属性は、検証検出のフェーズの間に検査することができる。実施形態では、検査は、既に現在インストールされている場合、ネットワークデバイスおよびハードウェアデバイスにインストールされているファームウェアおよび/またはオペレーティングシステム(OS)のタイプを識別することができる。現在インストールされているファームウェアおよび/またはOSのタイプがテンプレートファイル312に関して不適切な場合、再構成手順が引き起こされる。代表的な実施例では、再構成手順は、現在インストールされているファームウェアおよび/またはOSを一掃することと、メンテナンスOSを展開させることであって、ここでメンテナンスOSは、迅速なインストールを可能にし、検証を達成するために、適切なドライバーおよびコンポーネントがネットワークデバイスおよびハードウェアデバイスに現れることを保証することと、というワークフローを実装することによって実施される。ブートストラップのワークフロー以外に、ファブリックは、データセンター内で実行されているサービスをサポートするために、メンテナンスOSを運用OSに交換することを担当することができる。運用OSは、データセンターのクラウドコンピューティング規制を満たすように全体的に構成されているため、ハードウェアインベントリー360は、クラウド・コンピューティング・ネットワークの特定のトポロジー内に透過的に統合することができる。一実施形態では、運用OSの設置は、ハードウェアインベントリー360を展開することがスケジュールされているデータセンター内で実行されるクラウド・コンピューティング・ファブリックの属性に対応するイメージをダウンロードすることを含む。
ブートストラップエコシステムの構造
[0088]ここで
図5を参照して、
図3および
図4のハードウェアインベントリー360を展開および統合するための構造およびブートストラッププロセスのフェーズ(
図2の参照番号240を参照)についてここで記述する。全体的に、
図5は、データセンター550のクラウド・コンピューティング・ファブリック内でハードウェアインベントリーを統合および展開するための代表的なブートストラップエコシステム500を示す図であり、ブートストラップエコシステム500は、本発明の実施形態を実装するときに使用するのに適している。
【0078】
[0089]最初に、ネットワークデバイスおよびハードウェアデバイスに構成設定および運用OSをインストールすると、より完全に上に記述したように、インフラストラクチャー状態は、
図3のハードウェアインベントリー360の物理的なトポロジーを検証するときに収集されたデータパケットのコンテンツ内で取得された情報から準備される。本明細書で使用する場合、「インフラストラクチャー状態(infrastructure state)」という語句は、ネットワークデバイスおよびハードウェアデバイスによって現在示されているハードウェアプロパティーおよび/またはソフトウェアプロパティーを記述するのに役立つ任意のデータを広く包含することを意図するものである。特定の一例では、インフラストラクチャー状態は、ストレージ、計算、またはストレージおよび計算を組み合わせたもののユーティリィティを識別するのを支援し、ここでユーティリィティは、物理的なトポロジー(たとえば、露出度の高いブレードは、より安全な格納目的のために適切な権限を持つポートにリンクされる)、構成設定、ならびにネットワークデバイスおよびハードウェアデバイスの識別情報などの考察に基づく。したがって、インフラストラクチャー状態は、FCCスタンプに構築された場合、表面上は、ハードウェアインベントリー内にインストールされたソフトウェアのイメージ、構成設定、および運用OSとしての役割を果たす。
【0079】
[0090]動作において、インフラストラクチャー状態は、クラウド・コンピューティング・ファブリック内のハードウェアインベントリーを統合する場合、ユーザーデバイス310によって、データセンター550の1つまたは複数のコンポーネントと共有される。このようにして、インフラストラクチャー状態は、ファブリックコントローラーがFCCインスタンスまたはクラウド・コンピューティング・スタンプとしてハードウェアインベントリーを管理することを可能にするハードウェアインベントリーの詳細を含む入力として機能する。たとえば、詳細は、ネットワークデバイスおよびハードウェアデバイスのMACアドレスまたはIPアドレスおよび構成、特定のデバイスの場所、デバイスとPDUとの間のポート接続、ならびにFCCスタンプを管理するために必要な他の情報を含むことができる。
【0080】
[0091]一実施形態では、ユーザーデバイス310には、展開および統合のフェーズを実装するために、様々なソフトウェアが供給される。このソフトウェアは、ブートストラップ・データセンター・マネージャー(DCM)510と、構成エンジン511と、展開エンジン512と、安全な場所に存在するシークレットストア525と通信するブートストラップ・シークレットストア(SS)520とを含む。ブートストラップDCM510は、展開および統合のフェーズのワークフローを駆動する、ネットワークデバイスおよびハードウェアデバイスを管理することができる、ファブリックコントローラーの一部を提示する。1つの実例では、ブートストラップDCM510は、データセンター550内で、構築されたハードウェアインベントリーまたは「FCCインスタンス」の追加および削除を効果的に管理する。管理は、典型的には、1つまたは複数のファブリック(たとえばマスターおよびクライアント)からの展開/調整を含む。
【0081】
[0092]FCCのインスタンスの追加を管理することは、ユーザーデバイス310のブートストラップDCM510と、データセンター550内のサーバー530内のDCM542との間のインターフェースを提供することと、インターフェースを使用して、ブートストラップDCM510からDCM542に、FCCインスタンスのインフラストラクチャー状態(たとえばラックレベル情報)をコピーすることと、ネットワークマネージャー541で、最近共有されたインフラストラクチャー状態を使用して、FCCインスタンスを自己統治する能力を与えることと、というワークフローを含むことができる。マスターサービス540は、複数のサーバーに展開することができ、サーバー530の単一デバイス実装に限定されないことに注意されたい。
図5に示すように、ネットワークマネージャー541およびDCM542は、マスターサービス540を含むことができ、これはファブリックコントローラー、バックアップサービス、ウェアハウスなど他のコンポーネントとともに、クラウド・コンピューティング・ファブリック内に新しいFCCインスタンスを組み込むことを担当する。
【0082】
[0093]FCCインスタンスのインフラストラクチャー状態を共有することに加えて、ブートストラップエコシステム500は、実施形態では、FCCインスタンスにクラウド・コンピューティング・ファブリックのサービスを展開させるように設計されている。これらのサービスは、コアテナント、インフラストラクチャーテナント、および/またはプラットフォームテナントを含むことができる。1つの実例では、コアテナントは、クラウド・コンピューティング・ファブリックの全体的な機能を可能にする必須のサービスを表し、データセンター550内のノード間通信(たとえばドメイン・ネーム・サーバー(DNS)機能)をサポートし、ストレージ操作を管理する。インフラストラクチャーテナントは、たとえば、データセンター550内に分散的にホストされた顧客のサービスアプリケーションを効率的に管理するために、クラウド・コンピューティング・スタンプを可能にする、使用可能度および利用可能度のサービスを表す。インフラストラクチャーテナントの例は、リモートに位置するアカウントで顧客のデータを見つけることをサポートするストレージの場所サービスおよび顧客がCTM531〜533と対話するためのインターフェースを提供するフロントエンドAPIを含む。プラットフォームテナントは、典型的には、オプションとして顧客に提供されるサービスを表している(たとえば、データセンター550と民間企業ネットワークとの間をリンクするためのクラウドから建物へのアクセス)。したがって、プラットフォームテナントは、データセンター550の操作に必ずしも必要ではないが、インフラストラクチャー状態の定義と一致するべきである。
【0083】
[0094]FCCスタンプ時のテナントの展開の間に、構成エンジン511および展開エンジン512は、それらを関与させることができる。最初に、展開エンジン512は、展開を開始するために呼び出すことができる。一般的に、展開エンジン512は、フェーズ内に内在するワークフローを達成するために使用されるツールおよびメカニズムの実行を含むブートストラッププロセスの展開および統合のフェーズのエンドツーエンドの自動化を駆動することを担当する。たとえば、ワークフローは、FCCインスタンスに構築された様々なハードウェアインベントリーの展開をスケジュールすることと、現在進行中の展開を管理することと、展開の進捗について報告すること、発生する干渉の課題に応答することとを含むことができる。多くの場合、展開エンジン512は、機能しているクラウド・コンピューティング・ファブリックに対して展開を実行するため、展開エンジン512は、機能しているファブリックに関係する課題をエスカレートさせ、時間の経過とともに展開の改善を実装するために使用可能な測定基準を収集することができる。
【0084】
[0095]構成エンジン511は、展開時にマスターサービス540を構成および更新するために、データセンター550とインターフェースすることを担当し、それによってクラウド・コンピューティング・ファブリック内でFCCスタンプを統合する。統合の実例の1つでは、構成エンジン511は、ハードウェアインベントリーの初期構成を記録し、FCCスタンプにハードウェアインベントリーを構築するときに構成への変更を検出し、FCCスタンプの構成に変更の履歴を提供する。一般的に、変更のこの履歴は、再構成手順の影響を示し、かつコンプライアンス基準が満たされていることを保証するために用いられる。このようにして、変更の履歴は、FCCスタンプへの構成変更の間に発生した競合または可能性がある見つからないパラメーターを明らかにすることができる。したがって、FCCスタンプは、コア、インフラストラクチャー、およびプラットフォームテナントの構成のためのレポジトリーとして機能することができる。
【0085】
[0096]実施形態では、(FCCスタンプによって満たされる)追加のストレージ/計算容量に対する要求を駆動する顧客は、また、顧客のサービスアプリケーション(複数可)を適切に起動するために、FCCスタンプによって満たされる基準を概説する依存関係スキーマを提供することができる。動作において、依存関係スキーマは、顧客によって指定された前提条件を満たす方法でFCCインスタンスが構築されていることを保証するために、インフラストラクチャー状態および構成における変更の履歴と比較することができる。したがって、依存関係スキーマがFCCインスタンスの既知の属性によって満たされる場合、顧客のサービスアプリケーションをホストし始めるために、FCCを解放することができる。
【0086】
[0097]顧客の依存関係スキーマに対して機能をチェックするために利用されるFCCインスタンスの様々な異なる属性(たとえばインフラストラクチャー状態および構成における変更の履歴)について記述してきたが、展開の間に他のタイプの適切な情報をブートストラップDCM510とDCM542との間で渡すことができること、および本発明の実施形態は、本明細書に記述した特定の記事の情報に限定されないことを理解し評価されたい。たとえば、FCCインスタンスの全体的なサイズ(たとえばノードの数)および/または入口点の場所(たとえばFCCインスタンスに接続する方法)は、ブートストラップDCM510からDCM542に中継することができる。機能チェックの他の実例では、マスターサービス540を展開させるのに十分なインベントリーを識別し、次にFCCインスタンスにおける残りのハードウェアの検出、検証、および構成を駆動するためにDCM542を活用するために、最小限の検出および検証が行われる。さらに他の機能チェックの実例では、機能しているインベントリーに対して適切なセキュリティおよび分離を用いて、ハードウェアの検出、検証、および構成を駆動するために、既存のDCMインスタンスが使用される。
【0087】
[0098]FCCスタンプの展開の間に、シークレットストア525は、FCCスタンプに
図3のハードウェアインベントリー360を構築するときに生成される秘密情報を提供するためにアクセスすることができる。本明細書で使用する場合、「シークレットストア」という語句は、ユーザーデバイス310で典型的に実行されるブートストラップSS520とインターフェースするスタンドアロンのメカニズムを全体的に表している。このように、シークレットストア525は、インターネットまたは他の公にアクセス可能なネットワークに対して依存関係を持っていないため、それによってシークレットストア525内に格納された秘密情報のプライベートな性質が維持される。一部の実施形態では、シークレットストアは、インターネットを通じてアクセスされる中央に安全に維持された秘密のストレージの場所を表すことができる。
【0088】
[0099]FCCスタンプの展開の前に、シークレットストア525は、最初のブートストラッププロセスのフェーズの間にハードウェアインベントリーを構築する間に、実行中に生成される秘密情報を管理するために管理APIを用いる。この秘密情報(たとえばネットワークデバイスおよびハードウェアデバイスの資格情報、オリジナル証明書、秘密キー、シリアルアクセスデバイスのパスワード、および他の権限)は、検出および検証のフェーズの完了まで、および必要な場合は再構成手順を含めて、シークレットストア525に継続的に書き込まれる。展開の間に、シークレットストア525は、マスターサービス540にエキスポートするために、ブートストラップSS520に一部の秘密情報を自動的に転送することができ、データセンター550の管理者が見るために非常に利便性の高い場所に他の秘密情報を転送することができる。この秘密情報は、次に、データセンター550内に統合されたときに問題が生じたときにFCCインスタンスをデバッグするために、管理者によって使用することができる。
【0089】
[00100]展開が正しく完成したとき、ブートストラッププロセスのクラスター規模の検証フェーズの前に、FCCインスタンスは、データセンター550内に統合することができる。
図5のCTM531〜533の他の展開は、展開の完了およびマスターサービス540の検証のときに始めることができる。
【0090】
[00101]統合は、また、ハードウェアインベントリーの構築の間に用いられる、(ネットワークデバイスおよびハードウェアデバイスにアクセスするために使用される)ローカルに生成された資格情報を新しい安全な資格情報と交換することを含むことができる。1つの実例では、資格情報の交換は、既存のノードでセキュリティトークンを作成、監査、および循環させるために既存のクラウド・コンピューティング・ファブリックのプロセスを活用することによって実行される。このようにして、ハードウェアインベントリーを構築する間に様々な関係者(たとえば、技術者、OEM、責任者、または管理者)と共有された可能性がある構築された資格情報は、役割から解放されるため、FCCスタンプはより安全になる。統合時でさえ、ユーザーデバイス310は、ブートストラッププロセスが完了した後に、ファブリックインスタンス(たとえばマスターおよびクライアント)にサービスを提供するためにゲートウェイデバイスとして保持できることに注意するべきである。
【0091】
[00102]展開および統合のフェーズが正しく完成すると、クラスター規模の検証のフェーズが始められる。実施形態では、正しく完了すると、展開および統合のフェーズの各前提条件のために、展開および統合のフェーズの結果として生じる出力により、次のフェーズが困難なく増加する状態にFCCのインスタンスが残されることが保証される。たとえば、展開および統合のフェーズの結果として生じる出力が、オペレーターによるFCCインスタンスへの十分なアクセスを許可しない場合(つまり、展開および統合のフェーズの前提条件)、次のフェーズに進む前に修正するべき問題が存在する。このようにして、展開および統合のフェーズだけでなく、他のブートストラッププロセスのフェーズは、フェーズの間に実行された操作の合計から結果として生じる出力(複数可)を自己評価するそれぞれのワークフローにステップを含む。自己評価により、ワークフローステップを繰り返させるか、または正しく完成したものとして特定のフェーズを指定できるため、それによって、次のフェーズを始めることが可能になる。
【0092】
[00103]それぞれのフェーズの内部における自己評価以外に、FCCインスタンスを使用する準備ができていることを保証するために、クラスター規模の検証フェーズ(
図2の参照番号250を参照)が実行される。実施形態では、クラスター規模の検証は、自動的に実行できるか、またはテストハーネスを介して手作業での支援を含むことができるテストの一式を実施することを含む。テストの一式は、様々な場所から様々なシステムに対して実施することができる。たとえば、テストの一式は、FCCインスタンスがCTM
1を介して内部的に到達可能かどうかを検証するように、マスターサービス540に指示することを含むことができる。他の実例では、テストの一式は、FCCインスタンスが外部的に到達可能かどうかを検証するように、外部エンティティ(たとえばイーサネット(登録商標)を通じた企業ネットワークまたは顧客によって要求された専門化されたエンティティ)に指示することを含むことができる。
【0093】
[00104]ブートストラップエコシステム500の代表的なシステムアーキテクチャーは、本発明の態様を実施するために実装できる適切な環境の一例に過ぎず、本発明の使用法または機能の範囲に関して制限を示唆することを意図するものではないことに注意されたい。また、図示するブートストラップエコシステム500は、図示したコンポーネント510〜512、520、541、542、および531〜533の任意の1つまたは組み合わせに関係する依存関係または要件を持つものと解釈されるべきでない。一部の実施形態では、コンポーネント510〜512、520、541、542、および531〜533の1つまたは複数は、シークレットストア525と同様にスタンドアロンのデバイスとして、またはサービスもしくは実行可能ファイル(複数可)として実装することができる。他の実施形態では、コンポーネント510〜512、520、541、542、および531〜533の1つまたは複数は、計算するサーバー530および/またはユーザーデバイス310に直接的に統合することができる。
図5に示したコンポーネント510〜512、520、541、542、および531〜533は、性質および数において代表的なものであり、限定するものとして解釈されるべきでないことを当業者は理解されるだろう。展開は、上記の特定のコンポーネントのいずれかがなくても、同様の機能を提供する代替プロセスによって実施できることに注意されたい。
【0094】
[00105]したがって、本発明の実施形態の範囲において望まれる機能を達成するために、任意の数のコンポーネントを用いることができる。
図5の様々なコンポーネントは明瞭さのために線で示しているが、実際には、様々なコンポーネントの線引きはそれほど明確ではなく比喩的なものであり、線はより正確には灰色または曖昧である。さらに、
図5の一部のコンポーネントは単一のブロックとして描写されているが、描写は、性質および数において代表的なものであり、限定的なものと解釈すべきではない(たとえば、1つのDCM542だけを示しているが、他のハードウェアインベントリーでブートストラッププロセスを実行している他のユーザーデバイスにさらに多くを通信できるように結合することができる)。
【0095】
[00106]さらに、サーバー530は、たとえば
図1に関して上に記述したコンピューティングデバイス100など、任意のタイプのコンピューティングデバイス(複数可)の場合がある。限定を目的とせずに例を挙げると、サーバー530は、パーソナルコンピューター、デスクトップコンピューター、ラップトップ型コンピューター、ハンドヘルドデバイス、携帯用ハンドセット、家庭用電子機器などの場合がある。実施形態では、データセンター550は、上に記載した任意の数の物理的なリソースを含むことができ、コンピューティングデバイスの任意の集合、または分散された方法で顧客のサービスアプリケーションを実行できる他のマシンを含むことができる。
【0096】
[00107]さらに、上に記載した物理的なリソースの他のデバイス(複数可)は、サーバー550に存在するように示しているマスターサービス540をホストすることができる。これらの他のデバイス(複数可)は、データセンター550を通じて有線または無線のネットワーク経路を介してマスターサービス540の操作を管理することができる。しかし、本発明の実施形態は、
図5に示す物理的なリソースなどへの実装に限定されず、その実施形態の範囲内にある様々な異なるタイプのコンピューティングデバイスおよび装置のいずれにも実装することができる。言い換えると、データセンター550の図示されたリソースは、説明目的のみを意図する代表的な構成を表しており、したがって、コンピューター業界で知られているリソースの任意の適切な配置を使用することができ、本発明によって意図するものである。
プロセスの流れ
[00108]ここで
図6を参照すると、本発明の実施形態に従って、ハードウェアのインベントリーを検出および検証する全体的な方法600を示す流れ図を示している。「ステップ(step)」および/または「ブロック(block)」という用語は、本明細書において、用いられる方法の異なる要素を暗示するために使用できるが、個々のステップの順序が明示的に記述されていない限り、および個々のステップの順序が明示的に記述されている場合という例外を除いて、これらの用語は、本明細書に開示された様々なステップの中または間において特定の順序を意味するものと解釈されるべきでない。最初に、ハードウェアインベントリーはラックを表し、ここでラックは、ネットワークデバイス(たとえばラック上部のスイッチおよびシリアルアクセスデバイス)、および1組の演算装置(たとえばラックに挿入された1組のブレード)を含むことができる。1組のブレードは、典型的には、シリアルアクセスデバイスとTORスイッチとの間で相互に連結される。
【0097】
[00109]方法600は、ブロック610に描写したように、ユーザーデバイスと、ハードウェアインベントリー内のシリアルアクセスデバイスまたは第2のネットワークアクセスデバイス(帯域外デバイスがシリアルデバイスではなく第2のネットワークスイッチである場合)との間の通信を開始することを含むことができる。1つの実例では、シリアルアクセスデバイスへの通信は、シリアルベースの接続を通じてユーザーデバイスによって開始される。方法600は、ブロック620に描写したように、PDUに指示を送信するためにシリアルアクセスデバイスを構成することを含む。より完全に上に記述したように、PDUは、1組の演算装置に電力を選択的に供給することを全体的に担当する。したがって、シリアルアクセスデバイスから指示を受信すると、指示は、PDUに、1組の演算装置の少なくとも1つの選択された演算装置に電力を伝達させ、1組の演算装置の少なくとも1つの選択されていない演算装置に電力に控えさせる。最終的に、ブロック630に描写したように、選択された演算装置からユーザーデバイスで少なくとも1つのデータパケットを受信することができる。典型的には、データパケットは、選択された演算装置(複数可)から発するデータパケットを検出するように有効なラック上部のスイッチ(TOR)とのネットワークベースの接続を介してユーザーデバイスで受信される。一実施形態では、ネットワークデバイスは、データパケットが検出されたポートを識別し、識別されたポートの証拠をデータパケットに添付するように構成される。結果的に、選択された演算装置(複数可)の場所を識別するためにデータパケットを使用する場合、ユーザーデバイスは、データパケットのペイロード内で運ばれた識別されたポートを読み込み記録することができる。さらに、ユーザーデバイスは、データパケットのヘッダー内で運ばれるインターネットプロトコル(IP)アドレスまたはメディアアクセス制御(MAC)アドレスを読み込み記録することによって、選択された演算装置(複数可)の場所を識別することができる。選択された演算装置(複数可)のこの識別された場所は、ブロック640に描写したように、部分的に、ハードウェアインベントリーの物理的なトポロジーの配置を理解するために用いることができる。
【0098】
[00110]代表的な実施形態では、ブロック650に描写したように、方法600は、ハードウェアインベントリーの物理的なトポロジーがテンプレートファイルに対して比較可能であることを検証するために、テンプレートファイル対して、選択された演算装置(複数可)の識別された場所を相互参照することを含むことができる。一般的に、テンプレートファイルは、トポロジースキーマおよび/またはハードウェアスキーマを含むことができる。一般的に、トポロジースキーマは、選択された演算装置(複数可)の予測される場所を指定し、ハードウェアインベントリーが適切に配線されることを検証するためにユーザーデバイスによって用いられる。他方では、ハードウェアスキーマは、一般的に、どのコンポーネントが選択された演算装置(複数可)内に存在すると予測されるかを指定するために用いられる。さらに、ハードウェアスキーマは、演算装置(複数可)の内部構成を検証するために、ユーザーデバイスによって用いることができる。
【0099】
[00111]ユーザーデバイスが、選択された演算装置(複数可)の場所がテンプレートファイルと一致していることを検証すると、ユーザーデバイスは、選択された演算装置(複数可)に確認設定をインストールすることを引き起こす信号を、シリアルベースの接続を通じてシリアルアクセスデバイスに送信することができる。また、ユーザーデバイスは、シリアル接続を検証するためにシリアルアクセスデバイスの出力を監視することができる。さらに、ユーザーデバイスがハードウェアインベントリーの物理的なトポロジーを検証すると、ユーザーデバイスは、ブートストラッププロセスの検出および検証のフェーズの間に収集された情報からインフラストラクチャー状態を準備することができる。ブートストラッププロセスの統合および展開のフェーズの間に、ユーザーデバイスは、データセンターのファブリック内でハードウェアインベントリーの統合を促進するために、クラウド・コンピューティング・ファブリックのコントローラーとインフラストラクチャー状態を共有することができる。また、ユーザーデバイスは、ハードウェアインベントリーでファブリックで実行されているサービスの展開をトリガーすることができ、それによって、ファブリックのFCCとしてハードウェアインベントリーを指定することができる。FCCとしてハードウェアインベントリーを指定することによって、ファブリックコントローラーは、データセンターのコンテキスト内でハードウェアインベントリーを管理し見つけることが可能になる。
【0100】
[00112]ここで
図7を参照すると、本発明の実施形態に従って、データセンターのファブリック・コンピューティング・クラスター(FCC)にハードウェアのインベントリーを構築するための全体的な方法700を示す流れ図を示している。方法700は、ブロック710に描写したように、ネットワークベースの接続を介してラック上部(TOR)スイッチに、およびシリアルベースの接続を介してシリアルアクセスデバイスに、ユーザーデバイスからそれぞれの信号を送信することによってネットワークデバイス(複数可)を検出すること含む。TORスイッチとシリアルアクセスデバイスの間で相互に連結された1組の演算装置は、ブロック720に描写したように、1組の演算装置に割り当てられたポートのそれぞれの範囲を介して、TORスイッチおよびシリアルアクセスデバイスに信号をリッスンするように指示することによって検出することができる(たとえば、
図3の構成ソフトウェア311、311は、必要な情報を取得するためにTORスイッチ/シリアルデバイスに問い合わせる)。
【0101】
[00113]方法700は、ブロック730に描写したように、TORスイッチに再帰的にトラフィックを送信するように1組の演算装置に指示するようにシリアルアクセスデバイスを構成することをさらに含む。ブロック740に描写したように、ハードウェアインベントリーの物理的なトポロジーを記述するテンプレートファイルは、リモートデータストアから、またはユーザーデバイスのローカルメモリーからアクセスすることができる。1組の演算装置の場所は、ブロック750に描写したように、1組の演算装置から受信されたトラフィック内で運ばれた情報に対してテンプレートファイルを比較することによってそれぞれ検証することができる。インフラストラクチャー状態は、ブロック760に描写したように、1組の演算装置からトラフィック内で受信された情報を使用して準備することができる。ブロック770に描写したように、ハードウェアインベントリーは、クラウド・コンピューティング・ファブリックのコントローラーとインフラストラクチャー状態を共有することによって、データセンターのクラウド・コンピューティング・ファブリック内に統合することができる。統合と同時に、または後の時点で、クラウド・コンピューティング・ファブリックで実行されているサービスは、ハードウェアインベントリーに展開することができ(ブロック780を参照)、ハードウェアインベントリーは、ブロック790でデータセンター内のFCCとして指定することができる。実例では、それが適切に展開/構成されることを保証するために、FCCスタンプとしてハードウェアインベントリーを指定する前に、検証が実行される。
【0102】
[00114]本発明の実施形態について、特定の実施形態に関して記述してきたが、これらはあらゆる点において、限定ではなく説明を意図するものである。当業者には、その範囲から逸脱することなく本発明の実施形態が関係する代替実施形態が明らかになるだろう。
【0103】
[00115]前述から、本発明は、システムおよび方法にとって明白かつ固有である他の利点とともに、上に記述したすべての限度および目的を達成するように十分に適応されていることが分かるだろう。特定の機能および下位の組み合わせが利用可能であり、他の機能および下位の組み合わせに関係なく用いることができることを理解されるだろう。これは特許請求の範囲によって意図するものであり、その範囲内にある。