上述のような当技術分野のニーズに対する技術的解決策を提供する取り組みにおいて、本発明者らは、自動化されたITシステムのセットアップ、構成、保守、テスト、変更管理、及び/またはアップグレードを提供する情報技術のためのシステム及び方法に関する多様な発明の実施形態を開示する。たとえば、本発明者らは、複数のシステムルール、コンピュータシステムのシステム状態、及び複数のテンプレートに基づいてコンピュータシステムを自動的に管理するように構成されるコントローラを開示する。他の例として、本発明者らは、複数のシステムルール、コンピュータシステムのシステム状態、及び複数のテンプレートに基づいて、コンピュータシステムの物理インフラストラクチャを自動的に管理するように構成されるコントローラを開示する。コントローラによって実行可能な自動化された管理の例には、アプリケーションまたはサービスを動作させ得るコンピュータ上の設定またはその他の情報へのリモートまたはローカルでのアクセス及び変更、ITシステムの構築、ITシステムの変更、ITシステム内の個々のスタックの構築、サービスまたはアプリケーションの作成、サービスまたはアプリケーションのロード、サービスまたはアプリケーションの構成、サービスまたはアプリケーションの移行、サービスまたはアプリケーションの変更、サービスまたはアプリケーションの削除、異なるネットワーク上の他のスタックへのスタックのクローン、リソースまたはシステムコンポーネントの作成、追加、削除、セットアップ、構成、再構成、及び/または変更、リソース、サービス、アプリケーション、ITシステム、及び/またはITスタックの自動的な追加、削除、及び/または復帰、アプリケーション、サービス、スタック、及び/またはその他のITシステムの間のインタラクションの構成、及び/またはITシステムコンポーネントの健全性の監視、が含まれ得る。例示的な実施形態では、コントローラは、リモートまたはローカルとすることができる物理または仮想コンピューティングリソースとして具現化することができる。採用できるコントローラの追加の例には、プロセス、仮想マシン、コンテナ、リモートコンピューティングリソース、他のコントローラによって配備されるアプリケーション、及び/またはサービスのいずれかまたは任意の組み合わせが含まれるが、これらに限定されない。コントローラは、複数のノード及び/またはリソースにわたって分散されてもよく、他の場所またはネットワークにあってもよい。
ITインフラストラクチャは、ほとんどの場合、個別のハードウェアコンポーネント及びソフトウェアコンポーネントから構築される。使用されるハードウェアコンポーネントは、一般的に、サーバ、ラック、電源機器、相互接続、ディスプレイモニタ、及びその他の通信機器を含む。これらの個別のコンポーネントを選択して相互接続する方法及び技法は、種々の度合いの効率、費用対効果、パフォーマンス、及びセキュリティで機能する極めて多数の任意選択の構成によって非常に複雑になる。これらのインフラストラクチャコンポーネントの接続に熟練した個々の技術者/エンジニアは、雇用及びトレーニングするのに費用がかかる。また、ハードウェア及びソフトウェアの極めて多数の可能性のある繰り返しによって、そのハードウェア及びソフトウェアの保守及び更新が複雑になる。これにより、ITインフラストラクチャを元々インストールした個人及び/またはエンジニアリング会社が更新を実施できない場合に、追加の課題が生まれている。オペレーティングシステムなどのソフトウェアコンポーネントは、幅広いハードウェアで動作するように汎用的に設計されているか、または特定のコンポーネントに非常に特化している。ほとんどの場合、複雑な計画または青写真が描かれて実行される。変更、成長、スケーリング、及びその他の課題には、複雑な計画を更新することが必要になる。
一部のITユーザは、成長しているサプライヤ産業からクラウドコンピューティングサービスを購入するが、これはインフラストラクチャのセットアップの問題及び課題を解決せず、むしろITユーザからクラウドサービスプロバイダに転嫁する。さらに、大規模なクラウドサービスプロバイダは、柔軟性、カスタマイズ性、スケーラビリティ、ならびに新たなハードウェア技術及びソフトウェア技術の迅速な採用を低下させ得る方法で、インフラストラクチャのセットアップの課題及び問題に対処している。また、クラウドコンピューティングサービスは、すぐに使えるベアメタルセットアップ、構成配備及び更新を提供せず、ベアメタル及び仮想ITインフラストラクチャコンポーネントへの移行、それらからの移行、またはそれらの間の移行も可能にしない。クラウドコンピューティングサービスのこれら及びその他の制限により、多くのコンピューティング、ストレージ、及びネットワーキングの非効率性が生じ得る。たとえば、コンピューティング及びネットワーキングにおける速度または遅延の非効率性は、クラウドサービスによって、またはクラウドサービスを利用するアプリケーションもしくはサービスにおいて発生し得る。
例示的な実施形態のシステム及び方法は、新規かつ独自のITインフラストラクチャの配備、利用及び管理を提供する。例示的な実施形態によれば、リソースの選択、インストール、相互接続、管理、及び更新の複雑性は、コアコントローラシステムと、そのパラメータファイル、テンプレート、ルール、及びITシステム状態とに根ざしている。このシステムは、技術者に組み立て、接続、及び管理を要求するのではなく、コンポーネントが自己組み立てを行うように構成される自己組み立てルール及び動作ルールのセットを含む。さらに、例示的な実施形態のシステム及び方法は、現在の典型的な外部計画書を必要とせずに、自己組み立てのルールを使用して、より高いカスタマイズ性、スケーラビリティ、及び柔軟性を可能にする。それらはまた、効率的なリソースの使用及び再利用も可能にする。
全体的または部分的に物理的または仮想的であるかを問わず、現在のITシステムの問題点及び問題の多くを改善するシステム及び方法が提供される。例示的な実施形態のシステム及び方法は、柔軟性を可能にし、ばらつき及び人的エラーを低減し、システムセキュリティを向上させ得る構造を提供する。
現在のITシステムの問題のうちの1つまたは複数に対していくつかの解決策が個別に存在し得るが、そのような解決策は、本明細書に記載の例示的な実施形態によって解決されるような多数の問題に包括的に対処するものではない。さらに、そのような既存の解決策は、特定の問題に対処し得るが、他の問題を悪化させ得る。
対処される現在の課題の中には、セットアップ、構成、インフラストラクチャの配備、資産の追跡、セキュリティ、アプリケーションの配備、サービスの配備、保守及びコンプライアンスのための文書化、保守、スケーリング、リソースの割り当て、リソース管理、負荷分散、ソフトウェア障害、ソフトウェア及びセキュリティの更新/パッチ適用、テスト、ITシステムの復旧、変更管理、及びハードウェアの更新、に関する問題点があるが、これらに限定されない。
本明細書で使用するITシステムは、サーバ、仮想ホスト及び物理ホスト、データベース及びデータベースアプリケーション、たとえば、限定はしないが、ITサービス、ビジネスコンピューティングサービス、コンピュータアプリケーション、顧客対応アプリケーション、Webアプリケーション、モバイルアプリケーション、バックエンド、ケース番号管理、顧客追跡、発券、ビジネスツール、デスクトップ管理ツール、会計、電子メール、文書化、コンプライアンス、データストレージ、バックアップ、及び/またはネットワーク管理を含み得るが、これらに限定されない。
ユーザがITシステムをセットアップする前に直面し得る問題の1つは、インフラストラクチャのニーズの予測である。最初に、または成長中もしくは変化中に時間の経過と共に、どれだけのストレージ、計算能力、またはその他の要求が必要になるかが、ユーザはわからない場合がある。例示的な実施形態によれば、ITシステム及びインフラストラクチャは、システムが変更を必要とする場合、例示的な実施形態の自己配備インフラストラクチャ(物理及び/または仮想の両方)を使用して、後でインフラストラクチャ内で自動的に追加、削除、または再割り当てし得るという点で柔軟性を可能にする。したがって、システムのセットアップ時に提示される将来のニーズを予測するという課題は、グローバルルール、テンプレート、及びシステム状態を使用してシステムに追加する機能を提供し、そのようなルール、テンプレート、及びシステム状態の変更を追跡することによって対処される。
また、他の課題は、正しい構成、構成の統一性、相互運用性、及び/または相互依存性に関連するものであり得、これには、たとえば、時間の経過に伴う構成済みシステム要素またはその構成の変更による将来の非互換性が含まれ得る。たとえば、ITシステムが最初にセットアップされたときに、欠落している要素があるか、または一部の要素の構成に失敗している場合がある。また、たとえば、要素またはインフラストラクチャコンポーネントの繰り返しがセットアップされる場合、繰り返しの間で統一性が欠如している場合がある。システムに変更が加えられた場合に、構成の見直しが必要になる場合がある。最適な構成と、将来のインフラストラクチャの変更に対する柔軟性との間で、難しい選択が提示されている。例示的な実施形態によれば、最初にシステムを配備するときに、グローバルシステムルールを使用してテンプレートからインフラストラクチャコンポーネントへ構成が自己配備されるので、構成は統一され、再現可能または予測通りになって、最適な構成が可能になる。そのような初期システム配備は物理コンポーネント上に行われ得るが、後続のコンポーネントが追加または変更され得、これらは物理的なものであってもなくてもよい。さらに、そのような初期システム配備は物理コンポーネント上に行われ得るが、後続の環境が物理構造からクローンされ得、これらは物理的なものであってもなくてもよい。これにより、将来問題を起こす変更を最小限に抑えながら、システム構成を最適にすることが可能になる。
配備フェーズでは、典型的には、ベアメタル及び/またはソフトウェア定義のインフラストラクチャの相互運用性の課題がある。また、ソフトウェアと、他のアプリケーション、ツール、またはインフラストラクチャとの相互運用性の課題もあり得る。これらには、異なるベンダー製の配備された製品による課題が含まれ得るが、これらに限定されない。本発明者らは、ベアメタル、仮想、またはそれらの任意の組み合わせに関係なく、インフラストラクチャの相互運用性を提供し得るITシステムを開示する。したがって、相互運用性、すなわち、パーツが連携する能力は、インフラストラクチャが自動的に構成及び配備される、開示したインフラストラクチャ配備に組み込まれ得る。たとえば、異なるアプリケーションが相互に依存し得、それらは別々のホストに存在し得る。そのようなアプリケーションが相互に対話できるようにするために、本明細書で説明するコントローラロジック、テンプレート、システム状態、及びシステムルールは、アプリケーションの相互依存関係の構成と、相互依存関係の追跡とに使用される情報及び構成命令を含む。したがって、本明細書で説明するインフラストラクチャの特徴は、各アプリケーションまたはサービスがどのようにして相互にやり取りするかを管理する方法を提供する。例として、電子メールサービスが認証サービスと適切に通信するようにし、及び/またはグループウェアサービスが電子メールサービスと適切に通信するようにする。またさらに、そのような管理は、インフラストラクチャレベルまで下りて、たとえば、コンピューティングリソースがストレージリソースとどのように通信しているかを追跡可能にすることができる。そうでなければ、ITシステムの複雑性がO(nn)で上昇する可能性がある。
開示しているように、リソースの自動配備は、グローバルシステムルール、テンプレート、及びITシステム状態/システムの自己認識に基づいて配備するコントローラの機能により、オペレーティングシステムソフトウェアの事前構成を必要としない。例示的な実施形態によれば、ユーザまたはIT専門家は、相互運用性を確保するために、リソースの追加、割り当て、または再割り当てが連携するか否かを知る必要がない場合がある。例示的な実施形態による追加のリソースが、ネットワークに自動的に追加され得る。
アプリケーションを使用するには、典型的にはコンピューティング、ストレージ、及びネットワーキングを含む多くの異なるリソースが必要になる。また、リソースとシステムコンポーネントとの相互運用性も必要になり、これには、定位置に配置されて動作しているものに関する知識、及び他のアプリケーションとの相互運用性が含まれる。アプリケーションは、他のサービスに接続して構成ファイルを取得し、全てのコンポーネントが適切に連携することを確認する必要があり得る。そのため、アプリケーションの構成は、時間及びリソース集約的である可能性がある。他のアプリケーションとの相互運用性の問題がある場合、アプリケーションの構成は、インフラストラクチャの残りの部分に連鎖的な影響をもたらす可能性がある。これは、停止または侵害につながる可能性がある。本発明者らは、これらの問題点に対処するために自動化されたアプリケーション配備を開示する。したがって、本発明者らが開示するように、システムの現在の状況に関する知識を使用して、ITシステム状態、グローバルシステムルール、及びテンプレートから読み取り、インテリジェントに構成することによって、アプリケーションが自己配備され得る。さらに、例示的な実施形態によれば、本明細書で説明する変更管理機能を使用して、構成の配備前テストが実行され得る。
例示的な実施形態によって対処される他の問題点は、異なるベンダーまたは他のツールに切り替えることが望ましい場合に中間構成に関連して生じ得る問題に関するものである。例示的な実施形態の一態様によれば、コントローラのルール及びテンプレートと、特定のベンダーのアプリケーションテンプレートとの間のテンプレート変換が提供される。これにより、システムはソフトウェアまたは他のツールのベンダーを自動的に変更することが可能になる。
多くのセキュリティの問題点は、設定ミス、パッチ適用の失敗、及び配備前にパッチ適用をテストできないことから生じる。しばしば、セットアップの構成段階でセキュリティの問題点が発生し得る。たとえば、設定ミスによって、機密性の高いアプリケーションがインターネットに公開されたままになったり、メールサーバからメールの偽造を許したりする場合がある。本発明者らは、自動的に構成されることによって、攻撃者から保護して、攻撃者への不要な公開を回避し、セキュリティエンジニア及びアプリケーションセキュリティアーキテクトにシステムに関するより多くの知識を提供するシステムセットアップを開示する。自動化により、人的ミスまたは設定ミスによるセキュリティの欠陥が減少する。また、開示したインフラストラクチャは、サービス間の内省を提供し、ルールベースのアクセスを可能にし、サービス間の通信を、実際に必要なもののみに制限し得る。本発明者らは、たとえば変更管理に関して説明するように、配備前にパッチを安全にテストする能力を有するシステム及び方法を開示する。
文書化はしばしば、問題の多いIT管理の領域である。セットアップ及び構成中、主な目標は、典型的にはコンポーネントを連携させることであり得る。通常、これにはトラブルシューティング及び試行錯誤のプロセスが含まれ、実際にシステムを機能させたものを知ることが困難な場合がある。実行された正確なコマンドは通常は文書化されるが、機能するシステムを実現した可能性があるトラブルシューティングまたは試行錯誤のプロセスは、十分に文書化されていないか、まったく文書化されていないことが多い。文書化における問題または不備により、監査証跡及び監査に関する問題が発生し得る。発生した文書化の問題によって、コンプライアンスを示す際に問題が生じ得る。システムまたはそのコンポーネントを構築する場合に、しばしば、コンプライアンスの問題点はよく知られていない場合がある。適用されるコンプライアンスの判定は、ITシステムをセットアップ及び構成した後にしかわからない場合がある。このように、文書化は監査及びコンプライアンスに不可欠である。本発明者らは、自動的に文書化されるセットアップ及び構成を提供する、グローバルシステムルールデータベース、テンプレート、及びITシステム状態データベースを含むシステムを開示する。発生するあらゆる構成はデータベースに記録される。例示的な実施形態によれば、自動的に文書化される構成は監査証跡を提供し、コンプライアンスを示すために使用することができる。インベントリ管理では、自動的に文書化及び追跡される情報を使用し得る。
ITシステムのセットアップ、構成、及び運用から生じるもう1つの課題は、ハードウェア及びソフトウェアのインベントリ管理に関するものである。たとえば、通常、サーバがいくつあるか、それらが立ち上がっていてまだ機能しているか否か、それらの機能が何であるか、各サーバがどのラックにあるか、どの電源がどのサーバに接続されているか、どのネットワークカード及びどのネットワークポートを各サーバが使用しているか、どのITシステムでコンポーネントが動作しているか、及びその他の多くの重要事項を知ることが重要である。インベントリ情報に加えて、インベントリ管理に使用されるパスワード及びその他の機密情報は、効果的に管理される必要がある。特に大規模なITシステム、データセンター、または機器が頻繁に変更されるデータセンターでは、この情報の収集及び保持は時間のかかる作業であり、これは多くの場合、手動で、または多様なソフトウェアツールを使用して管理される。安全なパスワードの準拠した保護は、安全なコンピューティング環境を保証する際に重要な問題点になる可能性がある大きなリスク要因である。本発明者らは、全てのサーバ及びその他のコンポーネントのインベントリ及び運転状態の収集及び保持が、ITシステム状態、グローバルシステムルール、テンプレート、及びコントローラのコントローラロジックの一部として、自動的に更新、記憶、及び保護されるITシステムを開示する。
ITシステムのセットアップ及び構成に関する問題に加えて、本発明者らは、ITシステムの保守で生じる問題及び問題点にも対処し得るITシステムを開示する。たとえば、とりわけ、電源障害、メモリ障害、ネットワーク障害、ネットワークカード障害、及び/またはCPU障害などの、ハードウェア障害のあるデータセンターが継続的に機能することに伴って、多くの問題が生じる。ハードウェア障害中にホストを移行する場合、さらなる障害が発生する。したがって、本発明者らは動的なリソースの移行、たとえば、ホストがダウンした場合に、あるリソースプロバイダから他のリソースプロバイダにリソースを移行することを開示する。そのような状況では、例示的な実施形態によれば、ITシステムは、他のサーバ、ノード、もしくはリソース、または他のITシステムに移行することができる。コントローラは、システムのステータスを報告し得る。データの複製は、既知の自動的にセットアップされた構成を有する他のホスト上にある。ハードウェア障害が検出された場合、ハードウェアが提供していた場合がある任意のリソースは、障害を自動的に検出した後に、自動的に移行され得る。
多くのITシステムに関する重要な問題点はスケーラビリティである。成長中の企業または他の組織は、典型的には、それらが成長してニーズが変化すると、ITシステムを追加または再構成する。たとえば、ハードドライブ容量、ストレージ容量、CPU処理、より多くのネットワークインフラストラクチャ、より多くのエンドポイント、より多くのクライアント、及び/またはより多くのセキュリティの追加など、より多くのリソースが既存のITシステムに必要になった場合に、問題が生じる。異なるサービス及びアプリケーション、またはインフラストラクチャの変更が必要になった場合、構成、セットアップ、及び配備でも問題が生じる。例示的な実施形態によれば、データセンターは自動的にスケーリングされ得る。ノードまたはリソースは、動的かつ自動的にリソースのプールに対して追加または削除され得る。リソースプールに対して追加及び削除されたリソースは、自動的に割り当てまたは再割り当てされ得る。サービスがプロビジョニングされ、新たなホストにすばやく移動され得る。コントローラは、より多くのリソースを検出して動的にリソースプールに追加し、リソースを割り当て/再割り当てすべき場所を把握し得る。例示的な実施形態によるシステムは、単一ノードのITシステムから、複数のデータセンターまたはITシステムにわたる多数の物理及び/または仮想ノードまたはリソースを必要とするスケーリングされたシステムにスケーリングし得る。
本発明者らは、柔軟なリソース割り当て及び管理を可能にするシステムを開示する。このシステムは、リソースプール内にあり得、動的に割り当てられ得るコンピューティング、ストレージ、及びネットワーキングリソースを含む。コントローラは、ネットワーク上の新たなノードまたはホストを認識し、次いでそれらがリソースプールの一部になれるようにそれらを構成し得る。たとえば、新たなサーバがプラグインされると、コントローラはそれをリソースプールの一部として構成し、リソースに追加することができ、動的に使用を開始することができる。ノードまたはリソースは、コントローラによって検出され、異なるプールに追加され得る。リソース要求は、たとえば、コントローラへのAPI要求を介して行われ得る。次に、コントローラは、ルールに従ってプールから必要なリソースを配備または割り当てし得る。これにより、コントローラ及び/またはコントローラを介したアプリケーションは、要求のニーズに基づいてリソースを負荷分散し、動的に分散させることが可能になる。
負荷分散の例には、ハードウェアまたはソフトウェアの障害が発生した場合に新たなリソースを配備すること、ユーザ負荷の増加に応答して、同じアプリケーションの1つまたは複数のインスタンスを配備すること、及びストレージ、コンピューティング、またはネットワーキングの要求の不均衡に応答して、同じアプリケーションの1つまたは複数のインスタンスを配備すること、が含まれるが、これらに限定されない。
稼働中のITシステムまたは環境に変更を行うことに関わる問題は、これらのシステムが一貫して稼働していることに依存するユーザまたはエンティティにとって重大な、時には壊滅的な問題を発生させる場合がある。これらの停止は、システムの使用における潜在的な損失を表すだけでなく、データの損失、問題を解決するために必要な時間、人員、及び金銭の相当なリソースによる経済的損失を表す。構成の文書に誤りがあるか、システムの理解が不足している場合にシステムの再構築が困難なことによって、問題が深刻化する可能性がある。この問題のため、多くのITシステムユーザは、既知のセキュリティリスクを排除するためにITリソースにパッチを適用することに消極的である。このようにして、セキュリティ侵害に対してより脆弱なままになる。
ITシステムの保守で生じる数多くの問題は、構成が必要になり得る変更管理または制御によるソフトウェア障害に関連するものである。そのような障害が発生し得る状況には、新たなソフトウェアバージョンへのアップグレード、異なるソフトウェアへの移行、パスワードまたは認証管理の変更、サービス間またはあるサービスの異なるプロバイダ間での切り替え、が含まれるが、これらに限定されない。
手動で構成及び保守されるインフラストラクチャは、通常、再作成が困難である。インフラストラクチャの再作成は、問題のある変更のロールバック、停電、またはその他の災害復旧を含むがこれらに限定されないいくつかの理由で重要であり得る。手動で構成されるシステムの問題を診断することは困難である。手動で構成及び保守されるインフラストラクチャを再作成することは困難である。また、システム管理者は、たとえば、コンピュータシステムをダウンさせたことがわかっている誤ったコマンドなど、簡単に間違いを犯す可能性がある。
稼働中のITシステムまたは環境に変更を加えると、これらのシステムが一貫して稼働していることに依存するユーザまたはエンティティにとって重大な、時には壊滅的な問題が発生する可能性がある。これらの停止は、システムの使用における潜在的な損失を表すだけでなく、そのような停止はまた、データの損失に加え、問題の解決に必要な時間、人員、及び金銭の相当なリソースによる経済的損失を引き起こす可能性がある。構成の文書に誤りがあるか、またはシステムの理解が不足している場合にシステムの再構築が困難なことによって、問題が深刻化する可能性がある。また、多くの場合、大幅な変更または大きな変更の後にシステムを以前の状態に復元することは非常に困難である。
さらに、稼働中の環境に変更が加えられた場合に発生し得る技術的な問題は、連鎖的な影響を及ぼす場合がある。これらの連鎖的な影響により、変更前の状態に戻ることが困難になり、場合によっては不可能になり得る。したがって、実施された変更に関する問題のために変更を戻す必要がある場合でも、システムの状態は既に変更されている。近年、インフラストラクチャ及びシステム管理のエラー、ならびに本番環境への不完全な変更を元に戻すことは解決されない問題であると述べられている。さらに、稼働中の環境への配備前にシステムへの変更をテストすることは問題があることが知られている。
したがって、本発明者らは、稼働中のシステムへの変更を変更前の状態に戻すように構成されるシステム及び方法のいくつかの例示的な実施形態を開示する。さらに、本発明者らは、上述の問題の1つまたは複数を防止または改善し得る、稼働中の変更を受けたシステムまたは環境の状態の大幅な復帰を可能にするように構成されるシステム及び方法を開示する。
例示的な実施形態の変形によれば、ITシステムは、グローバルシステムルール、テンプレート、及びITシステム状態によってシステムの完全な知識を有する。システムの完全な知識を使用してインフラストラクチャがクローンされ得る。システムまたはシステム環境は、ソフトウェア定義のインフラストラクチャまたは環境としてクローンされ得る。本番環境と呼ばれる、使用中の揮発性データベースを含むシステム環境は、不揮発性読み取り専用データベースに書き込まれて、開発及びテストプロセスにおける開発環境として使用され得る。所望の変更が開発環境に加えられ、そこでテストされ得る。ユーザまたはコントローラロジックは、グローバルルールに変更を加えて、新たなバージョンを作成し得る。ルールのバージョンは追跡され得る。次に、例示的な実施形態の他の態様によれば、新たに開発された環境が自動的に実装され得る。以前の本番環境も保持され得、または完全に機能し得るので、以前の状態の本番環境への修正が、データを失わずに可能である。次に、開発環境は、新たな仕様、ルール、及びテンプレートを用いてブートされ得、データベースまたはシステムは本番データベースと同期され、書き込み可能なデータベースに切り替えられ得る。そして、元の本番データベースは読み取り専用データベースに切り替えられ得、復旧が必要な場合に、システムはそれに戻され得る。
ソフトウェアのアップグレードまたはパッチ適用に関して、アップグレードまたはパッチを必要とするサービスが検出された場合に、新たなホストが配備され得る。アップグレードまたはパッチによる障害が発生した状況下で、上述のように変更を戻すことが可能な場合に、新たなサービスが配備され得る。
ハードウェアのアップグレードは、特に最新のハードウェアが不可欠な多くの状況で重要である。このタイプの状況の一例は、高頻度の取引業界で発生し、ミリ秒単位の速度の利点を有するITシステムにより、ユーザは優れた取引結果及び利益を達成することが可能になり得る。特に、新たなハードウェアがプロトコルを用いて通信し、既存のインフラストラクチャと連携する方法を認識するように、現在のインフラストラクチャとの相互運用性を確保する際に、問題が生じる。コンポーネントの相互運用性を確保することに加えて、コンポーネントは既存のセットアップとの統合を必要とする。
図1を参照すると、例示的な実施形態のITシステム100が示されている。システム100は、本明細書に記載のものを含むがこれらに限定されない1つまたは複数のタイプのITシステムであり得る。
スタンドアロンの物理または仮想サーバ上に存在してもしなくてもよいアプリケーションプログラムインターフェース(API)アプリケーション120を介してコントローラ200に結合されるユーザインターフェース(UI)110が図示されている。コントローラ200は、本明細書で説明する任意の制御動作を実施するために、1つまたは複数のプロセッサ及び1つまたは複数のメモリ上に配備され得る。そのような制御動作を実行するためにプロセッサ(複数可)によって実行される命令は、プロセッサメモリなどの非一時的コンピュータ可読記憶媒体上に存在することができる。API120は1つまたは複数のAPIアプリケーションを含み得、これらは冗長であり得、及び/または並行して動作し得る。APIアプリケーション120は、システムリソースを構成する要求を受信し、要求を解析して、コントローラ200に渡す。APIアプリケーション120は、コントローラから1つまたは複数の応答を受信し、応答(複数可)を解析して、UI(またはアプリケーション)110に渡す。あるいはまたはさらに、アプリケーションまたはサービスが、APIアプリケーション120と通信し得る。コントローラ200は、コンピューティングリソース(複数可)300、ストレージリソース(複数可)400、及びネットワーキングリソース(複数可)500に結合される。リソース300、400、500は、単一のノード上に存在してもしなくてもよい。リソース300、400、500のうちの1つまたは複数は、仮想的なものであり得る。リソース300、400、500は、複数のノード上に、または複数のノード上に様々な組み合わせで存在してもしなくてもよい。物理デバイスは、コンピューティングリソース300、ストレージリソース400、及びネットワーキングリソース500を含むがこれらに限定されないリソースタイプのうちの1つまたは複数もしくはそれぞれを含み得る。リソース300、400、500はまた、異なる物理的位置にあるか否かにかかわらず、また、仮想的であるか否かにかかわらず、リソースのプールを含み得る。また、ベアメタルコンピューティングリソースは、仮想またはコンテナコンピューティングリソースの使用を可能にするために使用され得る。
ノードの知られている定義に加えて、本明細書で使用するノードは、スタンドアロンのまたはネットワーク接続されたデバイス上で機能を実行するネットワーク(複数可)または他の機能ユニットに接続された任意のシステム、デバイス、またはリソースであり得る。ノードには、たとえば、サーバ、物理または仮想ホスト上のサービス/アプリケーション/複数のサービス、仮想サーバ、及び/またはマルチテナントサーバ上のまたはコンテナ内で動作する複数または単一のサービスも含まれ得るが、これらに限定されない。
コントローラ200は、1つまたは複数の物理または仮想コントローラサーバを含み得、これらもまた冗長であり得、及び/または並列に動作し得る。コントローラは、コンピューティングホストとして機能している物理または仮想ホスト上で動作し得る。一例として、コントローラは、たとえば、機密性の高いリソースにアクセスできるために、他の目的にも役立つホスト上で動作するコントローラで構成され得る。コントローラは、APIアプリケーション120から要求を受信し、要求を解析し、他のリソースへのタスク分配を適正化して、他のリソースに指示し、リソースからの情報を監視及び受信し、システムの状態及び変更の履歴を保持し、ITシステム内の他のコントローラと通信し得る。また、コントローラはAPIアプリケーション120を含み得る。
本明細書で定義するコンピューティングリソースは、現実または仮想の、単一のコンピューティングノード、あるいは1つまたは複数のコンピューティングノードを含むリソースプールを含み得る。コンピューティングリソースまたはコンピューティングノードは、1つまたは複数のサービスをホストするか、1つまたは複数のアプリケーションを動作させ得る1つまたは複数の物理または仮想マシンまたはコンテナホストを含み得る。コンピューティングリソースは、GPU、ASIC、コプロセッサ、CPU、FPGA、及びその他の専門的な計算方法を含むがこれらに限定されない、コンピューティング、ストレージ、キャッシング、ネットワーキング、専門的なコンピューティングを含むがこれらに限定されない複数の目的のために設計されたハードウェア上にあり得る。そのようなデバイスは、PCIエクスプレススイッチまたは同様のデバイスを使用して追加され得、そのような方法で動的に追加され得る。コンピューティングリソースまたはコンピューティングノードは、サービスもしくはアプリケーションを動作させるかまたは仮想コンピューティングリソースであり得る複数の異なる仮想マシンを含む1つまたは複数のハイパーバイザまたはコンテナホストを含み得、または動作させ得る。コンピューティングリソースは、コンピューティング機能を提供することに重点が置かれ得るが、データストレージ機能及び/またはネットワーキング機能も含み得る。
本明細書で定義するストレージリソースは、ストレージノードまたはストレージリソースのプールを含み得る。ストレージリソースは任意のデータ記憶媒体、たとえば、高速、低速、ハイブリッド、キャッシュ、及び/またはRAMを含み得る。ストレージリソースは、1つまたは複数のタイプのネットワーク、マシン、デバイス、ノード、またはそれらの任意の組み合わせを含み得、これらは、他のストレージリソースに直接接続されてもされなくてもよい。例示的な実施形態の態様によれば、ストレージリソースは、ベアメタルもしくは仮想またはそれらの組み合わせであり得る。ストレージリソースは、ストレージ機能を提供することに重点が置かれ得るが、コンピューティング機能及び/またはネットワーキング機能も含み得る。
ネットワーキングリソース(複数可)500は、単一のネットワーキングリソース、複数のネットワーキングリソース、またはネットワーキングリソースのプールを含み得る。ネットワーキングリソース(複数可)は、物理デバイスもしくは仮想デバイス(複数可)、ツール(複数可)、スイッチ、ルータ、もしくはシステムリソース間のその他の相互接続、またはネットワーキングを管理するためのアプリケーションを含み得る。そのようなシステムリソースは、物理的または仮想的なものであり得、コンピューティング、ストレージ、またはその他のネットワーキングリソースを含み得る。ネットワーキングリソースは、外部ネットワークとアプリケーションネットワークとの間の接続を提供し得、DNS、DHCP、サブネット管理、レイヤ3ルーティング、NAT、及びその他のサービスを含むがこれらに限定されないコアネットワークサービスをホストし得る。これらのサービスの一部は、物理または仮想マシン上のコンピューティングリソース、ストレージリソース、またはネットワーキングリソースに配備され得る。ネットワーキングリソースは、Infiniband、イーサネット、RoCE、ファイバチャネル、及び/またはOmnipathを含むがこれらに限定されない1つまたは複数のファブリックまたはプロトコルを利用し得、複数のファブリック間の相互接続を含み得る。ネットワーキングリソースは、SDN対応であってもなくてもよい。コントローラ200は、SDN、VLANなどを使用してネットワーキングリソース300を直接変更することによって、ITシステムのトポロジを構成することが可能であり得る。ネットワーキングリソースは、ネットワーキング機能を提供することに重点が置かれ得るが、コンピューティング機能及び/またはストレージ機能も備え得る。
本明細書で使用するアプリケーションネットワークとは、アプリケーション、リソース、サービス、及び/または他のネットワークを接続または結合するための、あるいはユーザ及び/またはクライアントをアプリケーション、リソース、及び/またはサービスにつなげるためのネットワーキングリソースまたはそれらの任意の組み合わせを意味する。アプリケーションネットワークは、サーバが他のアプリケーションサーバ(物理または仮想)と通信し、クライアントと通信するために使用されるネットワークを含み得る。アプリケーションネットワークは、システム100の外部のマシンまたはネットワークと通信し得る。たとえば、アプリケーションネットワークは、Webフロントエンドをデータベースに接続し得る。ユーザは、インターネット、またはコントローラで管理されていてもいなくてもよい他のネットワークを介してWebアプリケーションに接続し得る。
例示的な実施形態によれば、コンピューティング、ストレージ、及びネットワーキングリソース300、400、500はそれぞれ、コントローラ200によって自動的に追加、削除、セットアップ、割り当て、再割り当て、構成、再構成、及び/または配備され得る。例示的な実施形態によれば、追加のリソースがリソースプールに追加され得る。
ユーザ105がそれを介してシステムにアクセスし、システムと対話し得るWeb UIまたはその他のユーザインターフェースなどのユーザインターフェース110を図示しているが、代替的または追加的には、アプリケーションは、APIアプリケーション(複数可)120を介して、または別の方法で、コントローラ200と通信または対話し得る。たとえば、ユーザ105またはアプリケーションは、ITシステムの構築、ITシステム内の個々のスタックの構築、サービスまたはアプリケーションの作成、サービスまたはアプリケーションの移行、サービスまたはアプリケーションの変更、サービスまたはアプリケーションの削除、異なるネットワーク上の他のスタックへのスタックのクローン、リソースまたはシステムコンポーネントの作成、追加、削除、セットアップまたは構成、再構成、を含むがこれらに限定されない要求を送信し得る。
図1のシステム100は、物理的もしくは仮想的またはそれらの任意の組み合わせであり得る様々な要素、コンポーネントまたはリソースとの接続または他の通信インターフェースを有するサーバを含み得る。変形例によれば、図1に示すシステム100は、接続を有するベアメタルサーバを含み得る。
本明細書でより詳細に説明するように、コントローラ200は、リソースまたはコンポーネントに電源投入して、リソースのブートアップを自動的にセットアップ、構成、及び/または制御することによって、リソースを追加し、リソースを割り当て、リソースを管理し、利用可能なリソースを更新するように構成され得る。電源投入プロセスは、ブートされるデバイスの順序が一貫しており、デバイスに電源投入するユーザに依存しないように、コントローラに電源投入することから始まり得る。このプロセスは、電源投入されたリソースの検出も含み得る。
図2A〜図10を参照すると、コントローラ200、コントローラロジック205、グローバルシステムルールデータベース210、ITシステム状態220、及びテンプレート230が示されている。
システム100は、グローバルシステムルール210を含む。グローバルシステムルール210はとりわけ、コンピューティング、ストレージ、及びネットワーキングを含み得るリソースをセットアップ、構成、ブート、割り当て、及び管理するルールを宣言し得る。グローバルシステムルール210は、システム100が正しいまたは所望の状態になるための最小要件を含む。これらの要件は、完了が期待されるITタスクと、所望のシステムを予想通りに構築するために必要な期待されるハードウェアの更新可能なリストとを含み得る。期待されるハードウェアの更新可能なリストにより、コントローラは、(たとえば、ルールの開始前またはテンプレートの使用前に)必要なリソースが利用可能であることを確認することが可能になる。グローバルルールは、動作及びタスクの順序付けに関連する、様々なタスクに必要な動作及び対応する命令のリストを含み得る。たとえば、ルールは、コンポーネントに電源投入する順序、リソース、アプリケーション、及びサービスをブートする順序、依存関係、様々なタスクをいつ開始すべきか、たとえば、アプリケーションのロード、構成、開始、リロード、またはハードウェアの更新をいつ開始すべきかを指定し得る。ルール210はまた、たとえば、アプリケーション及びサービスに必要なリソース割り当てのリスト、使用され得るテンプレートのリスト、ロードすべきアプリケーションのリスト及び構成方法、ロードすべきサービスのリスト、及びアプリケーションネットワークのリストと、どのアプリケーションがどのネットワークに適合するかとを構成する方法、様々なアプリケーションに固有の構成変数とユーザ固有のアプリケーション変数とのリスト、コントローラがシステム状態をチェックして、状態が期待通りであり、各命令の結果が期待通りであることを確認できるようになる期待される状態、及び/またはルールの変更の追跡と、異なる状況で異なるルールをテストするかまたはそれらに戻る機能とを可能にし得るルールの変更のリスト(たとえば、スナップショット)を含むバージョンリスト、のうちの1つまたは複数を含み得る。コントローラ200は、物理リソース上のITシステム100にグローバルシステムルール210を適用するように構成され得る。コントローラ200は、仮想リソース上のITシステム100にグローバルシステムルール210を適用するように構成され得る。コントローラ200は、物理リソースと仮想リソースとの組み合わせ上のITシステム100にグローバルシステムルール210を適用するように構成され得る。
図2Mに、グローバルシステムルールの形を取り得るシステムルール210の例示的なセットを示す。図2Mに示すシステムルール210の例示的なセットは、コントローラ200にロードされるか、またはシステム状態を問い合わせることによって導出され得る(210.1参照)。図2Mの例では、システムルール210は、構成ルーチン210.2の形をとることができる命令のセットを含み、また、ITシステムまたは環境を作成及び/または再作成するためのデータ210.3も含む。システムルール210内の構成ルールは、必要テンプレートリスト210.7を介してテンプレート230を見つける方法を知り得る(テンプレート230は、ファイルシステム、ディスク、ストレージリソース内に存在し得、またはシステムルール内に置かれ得る)。コントローラロジック205はまた、テンプレート230を処理する前に探し、それらが存在することを確認した後にシステムルール210を有効化し得る。システムルール210は、システムルールのサブセット210.15を含み得、これらのサブセット210.15は、構成ルーチン210.2の一部として実行され得る。
また、サブシステムルール210.15は、たとえば、統合ITアプリケーションのシステムを構築するためのツールとして使用することができる(その場合、システムルール実行ルーチン210.16によって処理されて、210.15の追加を反映するようにシステム状態及び現在の構成ルールが更新される)。また、サブシステムルール210.15は、他の場所に配置され、ユーザインタラクションによってシステム状態220内にロードされ得る。たとえば、サブシステムルール210.15をプレイブックとして有することもでき、それらを利用可能にして動作させることができる(その後グローバルシステムルール210が更新されるので、システムをクローンしたい場合にプレイブックをリプレイすることができる)。
構成ルーチン210.2は、システムを構築するために使用される命令のセットとすることができる。構成ルーチン210.2は、実施者が望む場合、サブシステムルール210.15またはシステム状態ポインタ210.8も含み得る。構成ルーチン210.2を動作させる場合、コントローラロジック205は一連のテンプレートを特定の順序(210.9)で処理することによって、任意選択で並列配備を可能にするが、適切な依存関係の処理(210.12)は維持することができる。構成ルーチン210.2は任意選択で、210.9に従ってテンプレートを処理することによって構成され得るアプリケーションの構成パラメータ210.5を設定し得るAPIコール210.10を呼び出し得る。また、必要サービス210.11は、システムがAPIコール(複数可)210.10を行う場合に、稼働している必要があるサービスである。
ルーチン210.2は、データのコピー、コンピューティングリソースへのデータベースの転送、コンピューティングリソースとストレージリソースとのペアリング、及び/または揮発性データ210.6の場所によるシステム状態220の更新を含むがこれらに限定されない、揮発性データ210.6に関するデータロード(210.13)のための手順、プログラム、または方法を含み得る。揮発性データへのポインタ(210.4参照)をデータ210.3と共に保持して、他の場所に記憶され得る揮発性データを見つけることができる。データロードルーチン210.13は、非標準データストアに配置されている(たとえば、データベースに含まれている)場合、構成パラメータ210.5のロードにも使用され得る。
システムルール210はまた、どのコンポーネントがどのリソースに割り当てられるかを命令することができ、コントローラロジック205が適切なリソース及び/またはハードウェアが利用可能であるかどうかを判定することを可能にする、リソースリスト210.18を包含することができる。システムルール210はまた、代替的な配備のための(例えば、ソフトウェアエンジニアが実演のテストを行うことを望むことがあるが、データセンタ全体を割り当てることを望まない、開発環境のための)代替的なハードウェア及び/またはリソースリスト210.19を包含してもよい。システムルールはまた、システムをどのようにバックアップし、冗長化のためにスタンバイをどのように使用するかについての命令を提供するデータバックアップ/スタンバイルーチン210.17を含んでもよい。
あらゆるアクションが取られた後、システム状態220が更新されてもよく、クエリ(書き込みを含んでもよい)がシステム状態クエリ210.14として保存されてもよい。
図2Nは、図2Mのシステムルール210(または、サブシステムルール210.15)を処理するコントローラロジック205についての例示的なプロセスフローを例示する。ステップ210.20において、コントローラロジック205は、適切なリソースが利用可能であることを確認するようチェックする(図2Mにおける210.18を参照)。そうでなければ、ステップ210.21において、代替的な構成がチェックされてもよい。第3のオプションは、ユーザが、図2Mのリスト210.7において参照されるテンプレート230によってサポートすることができる代替的な構成を選択することを促進されることを含んでもよい。
ステップ210.22において、コントローラロジックは次いで、揮発性データへのアクセスを取得するよう、コンピューティングリソース(または、適切なリソースのいずれか)を確認してもよい。これは、ストレージリソースに接続すること、またはストレージリソースをシステム状態220に追加することを伴ってもよい。ステップ210.23において、次いで、構成ルーチンが処理され、各々のルーチンが処理されるにつれて、システム状態220が更新される(ステップ210.24)。システム状態220はまた、処理する前に特定のステップが終了するかどうかをチェックするよう問い合わされてもよい(ステップ210.25)。
図210.23に示されるようなステップを処理する構成ルーチンは、210.26の手順のいずれか(または、それらの組み合わせ)を含んでもよい。それはまた、他の手順を含んでもよい。例えば、210.26における処理は、テンプレートを処理すること(210.27)、構成データをロードすること(210.28)、静的データをロードすること(210.29)、動的揮発性データをロードすること(210.30)、並びに/またはサービス、アプリケーション、サブシステム、及び/もしくは環境を結合すること(210.31)を含んでもよい。210.26内のそのような手順は、ループで繰り返されてもよく、またはいくつかのシステムコンポーネントが独立することができ、他のコンポーネントが独立することができるように、並列に実行されてもよい。コントローラロジック、サービス依存性、及び/またはシステムルールは、どのサービスが相互に依存することができるかを命令してもよく、システムルールからITシステムを更に増築するようサービスを結合してもよい。
グローバルシステムルール210は、ストレージ拡張ルールをも含んでもよい。ストレージ拡張ルールは、例えば、システム内の既存のストレージリソースにストレージリソースを自動で追加するルールのセットを設ける。加えて、コンピューティングリソース(複数可)上で実行するアプリケーションが、ストレージ拡張を要求するときを把握する(または、コントローラ200が、コンピューティングリソースまたはアプリケーションのストレージを拡大するときを把握することができる)トリガポイントを設けてもよい。コントローラ200は、新たなストレージリソースを割り当て及び管理してもよく、特定の実行リソースに対してストレージリソースを既存のストレージリソースと併合または統合してもよい。
そのような特定の実行リソースは、システム内のコンピューティングリソース、システム内でコンピューティングリソースを実行しているアプリケーション、仮想マシン、コンテナ、または物理もしくは仮想計算ホスト、あるいはそれらの組み合わせであってもよいが、これらに限定されない。実行リソースは、例えば、ストレージ空間クエリを通じて、ストレージ空間を使い果たしていることをコントローラ200にシグナリングしてもよい。インバンド管理接続270、SAN接続280、またはコントローラ200へのいずれかのネットワーク化もしくは結合は、そのようなクエリにおいて使用されてもよい。アウトオブバンド管理接続260も使用されてもよい。
実行していないリソースに対して、それらのストレージ拡張ルール(または、それらのストレージ拡張ルールのサブセット)も使用されてもよい。
ストレージ拡張ルールは、システム内で新たなストレージリソースをどのように特定し、接続し、セットアップするかを命令する。コントローラは、新たなストレージリソースをシステム状態220に登録し、ストレージリソースがどこに存在するか、及びそれにどのように接続するかを実行リソースに通知する。実行リソースは、そのような登録情報を使用してストレージリソースに接続する。コントローラ200は、新たなストレージリソースを既存のストレージリソースに併合してもよく、またはそれは、新たなストレージリソースをボリュームグループに追加してもよい。
図2Bは、例示的なストレージ拡張ルールのセットの動作の例示的なフローを示す。ステップ210.41において、実行リソースは、トリガポイントまたはその他に基づいて、ストレージが低いと判定する。ステップ210.42において、実行リソースは、インバンド管理接続270、SAN接続280、またはオペレーティングシステムに対して可視的な別のタイプの接続によってコントローラ200に接続する。この接続を通じて、実行リソースは、ストレージが低いことをコントローラ200に通知することができる。ステップ210.43において、コントローラは、実行リソースに対してストレージ容量を増大するようストレージリソースを構成する。ステップ210.44において、コントローラは、新たに構成されたストレージリソースがどこに位置するかに関する情報を実行リソースに提供する。ステップ210.45において、実行リソースは、新たに構成されたストレージリソースに接続する。ステップ210.46において、コントローラは、新たなストレージリソースの位置のシステム状態220へのマッピングを追加する。次いで、コントローラは、新たなストレージリソースを、実行リソースに割り当てられたボリュームグループに追加することができ(ステップ210.47)、またはコントローラは、新たなストレージリソースの実行リソースへの割り当てをシステム状態220に追加することができる(ステップ210.48)。
図2Cは、図2Bにおけるステップ210.41及び210.42を実行する代替的な実施例を例示する。ステップ210、50において、コントローラは、実行リソースに対するストレージ状態更新のためのモニタまたはコンソールを閲覧するよう、アウトオブバンド管理接続260を通じてキーコマンドを送信する。例えば、モニタは、それを通じてアウトオブバンド接続260を介してスクリーンをレビューすることができるipmiコンソールであってもよい。例として、アウトオブバンド接続260は、キーボード/マウスとしてUSBにつなげてもよく、VGAモニタポートにつなげてもよい。ステップ210.51において、実行リソースは、スクリーン上で情報を表示する。ステップ210.52において、コントローラは次いで、アウトオブバンド管理接続260及びスクリーンスクレイプまたは同様の操作を介してモニタまたはコンソール上で提示された情報を読み出し、この読み出された情報は、トリガポイントに基づいて低ストレージ状態を示すことができる。
プロセスフローは次いで、図2Bのステップ210.43を続けてもよい。
図2Dは、図2Bにおけるステップ210.41及び210.42を実行する別の代替的な実施例を例示する。ステップ210.55において、実行リソースは、コントローラによって読み出すための情報をモニタまたはコンソール上で自動的に表示する。ステップ210.56において、コントローラは、実行リソースをチェックするよう、モニタまたはコンソールを自動的に、定期的に、または絶え間なく読み出す。この読み出しに応答して、コントローラは、実行リソースが、ストレージが低いと確認する(ステップ210.57)。プロセスフローは次いで、図2Bのステップ210.43を続けてもよい。
コントローラ200はまた、ベアメタル及び/またはサービステンプレートを含むことができる、テンプレート230のライブラリを含む。それらのテンプレートは、電子メール、ファイルストレージ、ボイスオーバIP、ソフトウェアカウンティング、ソフトウェアXMPP、wiki、バージョン制御、アカウント認証管理、及びユーザインタフェースによって構成可能であってもよい第三者アプリケーションを含んでもよいが、これらに限定されない。テンプレート230は、リソース、アプリケーション、もしくはサービスとの関連付けを有してもよく、またはそれは、そのようなリソース、アプリケーション、もしくはサービスがシステムにどのように統合されるかを定義するレシピとしての役割を果たしてもよい。
そのようにして、テンプレートは、リソース、またはリソースに対してロードされたアプリケーションもしくはサービスを作成、構成、及び/または配備するために使用される確立された情報のセットを含んでもよい。そのような情報は、カーネル、initrdファイル、ファイルシステムもしくはファイルシステムイメージ、ファイル、構成ファイル、構成ファイルテンプレート、異なるハードウェア及び/もしくは計算バックエンドのための適切なセットアップを判定するために使用される情報、並びに/またはアプリケーションの作成、ブート、もしくは実行を可能にし、及び/もしくは促進するアプリケーション及び/もしくはオペレーティングシステムイメージを動かすためのリソースを構成するための他の利用可能なオプションを含んでもよいが、これらに限定されない。
テンプレートは、複数の物理サーバタイプまたはコンポーネント、複数のハードウェアタイプ上で実行する複数のハイパーバイザ、複数のハードウェアタイプ上でホストすることができるコンテナホストを含むが、これらに限定されない、複数のサポートされたハードウェアタイプ/及びまたは計算バックエンド上でアプリケーションを配備するために使用することができる情報を包含してもよい。
テンプレートは、コンピューティングリソース上で実行するアプリケーションまたはサービスについてのブートイメージを導出してもよい。テンプレート及びテンプレートから導出されたイメージは、アプリケーションを作成し、アプリケーションもしくはサービスを配備し、並びに/またはアプリケーションの作成を可能にし、及び/もしくは促進する、様々なシステム機能についてのリソースを調整するために使用されてもよい。テンプレートは、デフォルトの設定またはコントローラから与えられた設定のいずれかからの構成オプションにより上書きすることができるファイル、ファイルシステム、及び/またはオペレーティングシステムイメージにおける可変パラメータを有してもよい。テンプレートは、アプリケーションまたは他のリソースを構成するために使用される構成スクリプトを有してもよく、それは、構成変数、構成ルール、及び/またはデフォルトルールもしくは変数を利用してもよく、それらのスクリプト、変数、及び/またはルールは、特定のハードウェアまたは他のリソース特有パラメータ、例えば、ハイパーバイザ(仮想のときの)、利用可能なメモリについての特定のルール、スクリプト、または変数を包含してもよい。テンプレートは、バイナリリソースの形式にあるファイル、バイナリリソース、またはハードウェアもしくは他のリソース特有パラメータをもたらすコンパイル可能ソースコード、バイナリリソースの特定のセット、あるいは特定のハードウェアまたは他のリソース特有パラメータ、例えば、ハイパーバイザ(仮想のときの)、利用可能なメモリについてのコンパイル命令を有するソースコードを有してもよい。テンプレートは、リソース上で実行しているものとは独立した情報のセットを含んでもよい。
テンプレートは、ベースイメージを含んでもよい。ベースイメージは、ベースオペレーティングシステムファイルシステムを含んでもよい。ベースオペレーティングシステムは、読み出し専用であってもよい。ベースイメージはまた、実行しているものとは独立したオペレーティングシステムの基本ツールを含んでもよい。ベースイメージは、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。テンプレートは、カーネルを含んでもよい。カーネルまたは複数のカーネルは、initrdカーネル、または異なるハードウェアタイプ及びリソースタイプに対して構成された複数のカーネルを含んでもよい。イメージは、1つ以上のリソースにロードされ、または配備されたテンプレート広告から導出されてもよい。ロードされたイメージは、対応するテンプレートのカーネルまたはinitrdのカーネルなどのブートファイルも含んでもよい。
イメージは、テンプレートに基づいてリソースにロードすることができるテンプレートファイルシステム情報を含んでもよい。テンプレートファイルシステムは、アプリケーションまたはサービスを構成してもよい。テンプレートファイルシステムは、例えば、ファイルシステムが記憶されるストレージ空間を節約し、または読み出し専用ファイルの使用を容易にするよう、全てのリソースまたは同様のリソースに共通な共有ファイルシステムを含んでもよい。
テンプレートファイルシステムまたはイメージは、配備されるサービスに共通なファイルのセットを含んでもよい。テンプレートファイルシステムは、コントローラ上で事前ロードされてもよく、またはダウンロードされてもよい。テンプレートファイルシステムは、更新されてもよい。テンプレートファイルシステムは、再構築することを必要としないことがあるので、相対的に素早い配備を可能にすることができる。他のリソースまたはアプリケーションとファイルシステムを共有すると、ファイルが不必要に複製されないので、ストレージの削減を可能にすることができる。これはまた、テンプレートファイルシステムとは異なるファイルのみが復元される必要があるので、障害からのより容易な復元を可能にすることができる。
テンプレートブートファイルは、カーネル及び/またはinitrdもしくはブートプロセスを支援するために使用される同様のファイルシステムを含んでもよい。ブートファイルは、オペレーティングシステムをブートすることができ、テンプレートファイルシステムをセットアップすることができる。initrdは、ブートすることができるようにテンプレートをどのようにセットアップするかに関する命令を有する小規模一時ファイルシステムを含んでもよい。
テンプレートは更に、BIOS設定を含んでもよい。テンプレートBIOS設定は、物理ホスト上でアプリケーションを実行するための任意選択の設定を設定するために使用されてもよい。使用される場合、図1〜12に関して本明細書で説明されるような、アウトオブバンド管理260は次いで、リソースまたはアプリケーションをブートするために使用されてもよい。物理ホストは、アウトオブバンド管理ネットワーク260またはCDROMを使用して、リソースまたはアプリケーションをブートしてもよい。コントローラ200は、そのようなテンプレートにおいて定義されたアプリケーション特有のBIOS設定を設定してもよい。コントローラ200は、特定のリソースに特有のAPIを通じて、直接のBIOS変更を行うためにアウトオブバンド管理システムを使用してもよい。設定は、コンソール及び画像認識を通じて検証されてもよい。したがって、コントローラ200は、コンソール機能を使用してもよく、仮想キーボード及びマウスによりBIOS変更を行ってもよい。コントローラはまた、UEFIシェルを使用してもよく、コンソールに直接タイプしてもよく、成功した結果を検証し、コマンドにおいて正確にタイプし、設定変更の成功を保証するために画像認識を使用してもよい。特定のBIOSバージョンへのBIOS変更または更新に利用可能なブート可能なオペレーティングシステムが存在する場合、コントローラ200は、BIOSを更新し、信頼できる方式で構成変更を可能にするアプリケーションをオペレーティングシステムが実行するディスクイメージまたはISOブートをリモートにロードしてもよい。
テンプレートは更に、テンプレート特有のサポートされるリソースのリストまたは特定のアプリケーションもしくはサービスを実行するために必要とされるリソースのリストを含んでもよい。
テンプレートイメージまたはイメージもしくはテンプレートの一部は、コントローラ200に記憶されてもよく、あるいはコントローラ200は、ストレージリソース410にそれを移動させ、またはコピーしてもよい。
図2Eは、例示的なテンプレート230を示す。テンプレートは、アプリケーションまたはサービスを作成するために必要な全ての情報を包含する。テンプレート230はまた、同様または同一の機能性を提供する異なるハードウェアタイプについての情報、代替的なデータ、ファイル、バイナリを包含してもよい。例えば、異なるアーキテクチャに対してコンパイルされたバイナリ234により、/usr/bin及び/binについてのファイルシステムblob232が存在してもよい。テンプレート230はまた、デーモン233またはスクリプト231を包含してもよい。デーモン233は、ホストがパワーオンされ、またはready状態になるときのブート時間に実行することができるバイナリまたはスクリプトであり、いくつかのケースでは、デーモン233は、コントローラによってアクセス可能であってもよく、コントローラがホストの設定を変更することを可能にすることができる(及び、コントローラは続いて、アクティブシステムルールを更新することができる)APIを動かしてもよい。デーモンは、上記及び以下で議論されるアウトオブバンド管理260またはインバンド管理270を通じてパワーダウン及び再起動されてもよい。それらのデーモンはまた、新たなサービス(例えば、nginxまたはapacheを制御するAPIと通信する一般的なウェブサーバAPI)に対して従属サービスを提供するよう、一般的なAPIを動かしてもよい。スクリプト231は、イメージをブートしている間もしくは後、またはデーモンを開始し、もしくはサービスを有効にした後に実行することができるインストールスクリプトであってもよい。
テンプレート230はまた、カーネル235及び事前ブートファイルシステム236を包含してもよい。テンプレート230はまた、異なるハードウェア及び異なる構成についての複数のカーネル235及び1つ以上の事前ブートファイルシステム(Linuxについてのinitrdもしくはinitramfs、またはbsdについての読み出し専用RAMディスクなど)を含んでもよい。initrdはまた、以下で議論されるように、任意選択でSAN接続280を通じてストレージリソースに接続することができるinitramfs236にブートすることによって、オーバレイとして提示されるファイルシステムblob232をマウントし、リモートストレージ上でルートファイルシステムをマウントするために使用されてもよい。
ファイルシステムblob232は、別個のblobに分割することができるファイルシステムイメージである。blobは、構成オプション、ハードウェアタイプ、及びセットアップにおける他の差異に基づいて相互に変更可能であってもよい。テンプレート230からブートされるホストは、1つまたは複数のファイルシステムblobから作成された複数のblobまたはイメージを包含するユニオンファイルシステム(overlayfsなど)からブートされてもよい。
テンプレート230はまた、揮発性データ238及び/または構成パラメータ239などの追加の情報237を含んでもよく、または追加の情報237とリンク付けされてもよい。例えば、揮発性データ238は、テンプレート230に包含されてもよく、またはそれは、外部に包含されてもよい。それは、ファイルシステムblob232、またはデータベース、フラットファイル、ディレクトリに記憶されたファイル、ファイルのターボール、ギット、もしくは他のバージョン制御リポジトリを含む他のデータストアの形式のものであってもよいが、これらに限定されない。加えて、構成パラメータ239は、テンプレート230に外部または内部に包含されてもよく、任意選択で、システムルールに包含され、テンプレート230に適用される。
システム100は更に、リソースを含むが、これに限定されない、システム100の状態を追跡し、維持し、変更し、及び更新するITシステム状態220を含む。システム状態220は、利用可能なリソースを追跡してもよく、それは、ルールの実装、及びテンプレートに利用可能なリソースがあるかどうか、及びどのリソースが利用可能であるかをコントローラロジックに通知する。システム状態は、使用されたリソースを追跡してもよく、それは、アップグレード、または効率性を改善し、もしくは優先度のためなどの他の理由により、切り替える必要性があるかどうかに関わらず、コントローラロジック205が効率性を検査し、効率性を利用することを可能にする。システム状態は、どのアプリケーションが実行しているかを追跡してもよい。コントローラロジック205は、実行中の予想されるアプリケーションを、システム状態に従って、及び改定する必要があるかどうかに関わらず、実行中の実際のアプリケーションと比較してもよい。システム状態220はまた、アプリケーションがどこで実行しているかを追跡してもよい。コントローラロジック205は、効率性、変更管理、更新、トラブルシューティング、または監査証跡を評価する目的でこの情報を使用してもよい。システム状態は、ネットワーク化情報、例えば、どのネットワークがオンであり、もしくは現在稼働しているか、または構成値及び履歴を追跡してもよい。システム状態220は、変更の履歴を追跡してもよい。システム状態220はまた、どのテンプレートが使用されているかを規定したグローバルシステムルールに基づいて、どのテンプレートがどの配備において使用されているかを追跡してもよい。履歴は、監査、警告、変更管理、構築レポート、ハードウェア及びアプリケーション及び構成と相関付けられた追跡バージョン、または構成変数のために使用されてもよい。システム状態220は、監査、コンプライアンス検査、またはトラブルシューティングの目的により構成の履歴を維持してもよい。
コントローラは、システム状態、テンプレート、及びグローバルシステムルールに包含された全ての情報を管理するためのロジック205を有する。コントローラロジック205、グローバルシステムルールデータベース210、ITシステム状態220、及びテンプレート230は、コントローラ200によって管理され、コントローラ200に存在してもよく、または存在しなくてもよい。コントローラロジック、またはアプリケーション205、グローバルシステムルールデータベース210、ITシステム状態220、及びテンプレート230は、物理的または仮想的であってもよく、分散サービス、分散データベース、及び/もしくはファイルであってもよく、またはそうでなくてもよい。APIアプリケーション120は、コントローラロジック/コントローラアプリケーション205と共に含まれてもよい。
コントローラ200は、スタンドアロンマシンマシンを実行してもよく、及び/または1つ以上のコントローラを含んでもよい。コントローラ200は、コントローラサービスまたはアプリケーションを含んでもよく、別のマシンの内部で実行してもよい。コントローラマシンは、スタックの全体またはスタックのグループのブートを順序付け及び/または一貫させることを保証するよう、コントローラサービスを最初に起動してもよい。
コントローラ200は、コンピューティング、ストレージ、及びネットワーキングリソースにより1つ以上のスタックを制御してもよい。各々のスタックは、グローバルシステムルール210内のルールの異なるサブセットによって制御されてもよく、または制御されなくてもよい。例えば、事前作成、作成、配置、検査スタック、並列、バックアップ、及び/またはシステム内で異なる機能を有する他のスタックが存在してもよい。
コントローラロジック205は、所望のITシステム状態を達成するよう、グローバルシステムルールを読み出し、及び解釈するように構成されてもよい。コントローラロジック205は、アプリケーションまたはサービスなどのシステムコンポーネントを構築し、所望のITシステム状態を達成するよう、リソースを割り当て、追加し、または削除するために、グローバルルールに従ったテンプレートを使用するように構成されてもよい。コントローラロジック205は、利用可能な操作に基づいてルールを満たすよう、グローバルシステムルールを読み出し、状態を補正し、命令を発行することを着手するタスクのリストを開発してもよい。コントローラロジック205は、例えば、システムを起動し、リソースを追加し、削除し、再構成し、それを行うために何が利用可能であるかを識別する操作を実行するためのロジックを包含してもよい。コントローラロジックは、ハードウェアが利用可能であるかどうかを確認するために、起動時間において、及び定期的な間隔においてシステム状態をチェックしてもよく、利用可能である場合、タスクを実行してもよい。必要なハードウェアが利用可能でない場合、コントローラロジック205は、グローバルシステムルール210、テンプレート220、並びに代替的なオプションを提示し、それに従って、グローバルルール及び/またはシステム状態220を修正するために、システム状態230からの利用可能なハードウェアを使用する。
コントローラロジック205は、どの変数が必要とされるか、継続するのにユーザが何を入力することを必要とするか、または機能するためにシステムにおいてユーザが何を必要とするかを把握することができる。コントローラロジックは、グローバルシステムルールからのテンプレートのリストを使用してもよく、必要とされるテンプレートが利用可能であることを保証するよう、システム状態において必要とされるテンプレートと比較してもよい。コントローラロジック205は、システム状態データベースから、テンプレート特有のサポートされるリソースのリスト上のリソースが利用可能であるかどうかを識別してもよい。コントローラロジックは、リソースを割り当ててもよく、状態を更新してもよく、グローバルルールを実装するようタスクの次のセットに着手してもよい。コントローラロジック205は、グローバルルールにおいて指定されたような割り当てられたリソース上でアプリケーションを開始/実行してもよい。ルールは、テンプレートからアプリケーションをどのように構築するかを指定することができる。コントローラロジック205は、テンプレート(複数可)を獲得してもよく、変数からアプリケーションを構成してもよい。テンプレートは、どのカーネル、ブートファイル、ファイルシステム、及びサポートされるハードウェアリソースが必要とされるかをコントローラロジック205に通知してもよい。次いで、コントローラロジック205は、アプリケーション配備に関する情報をシステム状態データベースに追加してもよい。各々の命令の後、コントローラロジック205は、予測される動作が正確に完了したかどうかを検証するよう、グローバルルールの予測される状態に対してシステム状態データベースをチェックしてもよい。
コントローラロジック205は、バージョンルールに従ったバージョンを使用してもよい。システム状態220は、異なる配備においてどのルールバージョンが使用されているかを相関付けるデータベースを有してもよい。
コントローラロジック205は、ルール最適化に対する効率的なロジック及び効率的な順序を含んでもよい。コントローラロジック205は、リソースを最適化するように構成されてもよい。実行している、または実行していると予測されるアプリケーションに関連するシステム状態、ルール、及びテンプレートにおける情報は、リソースに対する効率性または優先度を実装するために、コントローラロジックによって使用されてもよい。コントローラロジック205は、効率性を判定し、またはアップグレードすること、別の目的のために再利用すること、もしくは他の理由によりリソースを切り替える必要性を判定するために、システム状態220において「使用済みリソース」における情報を使用してもよい。
コントローラは、システム状態220に従って実行しているアプリケーションをチェックしてもよく、グローバルルールの実行している予測されたアプリケーションと比較してもよい。アプリケーションが実行していない場合、それを開始してもよい。
アプリケーションが実行するべきでない場合、それを停止してもよく、適切な場合にリソースを再割り当てしてもよい。コントローラロジック205は、リソース(計算、ストレージ、ネットワーク化)仕様のデータベースを含んでもよい。コントローラロジックは、使用することができるシステムに対して利用可能なリソースタイプを認識するためのロジックを含んでもよい。これは、アウトオブバンド管理ネットワーク260を使用して実行されてもよい。コントローラロジック205は、アウトオブバンド管理260を使用して新たなハードウェアを認識するように構成されてもよい。コントローラロジック205はまた、監査、レポートの構築、及び変更管理の目的により、変更の履歴、使用されるルール、及びバージョンに関する情報をシステム状態220から取ってもよい。
図2Fは、テンプレート230を処理し、この例示的な目的のためにホストと称されることがあるリソースをブートし、パワーオンし、及び/または有効にするようイメージを導出することに関するコントローラロジック205についての例示的なプロセスフローを示す。このプロセスはまた、ストレージリソースを構成すること、並びにストレージ及び計算ホスト及び/またはリソースを結合することを含んでもよい。コントローラロジック205は、システム100において利用可能なハードウェアリソースを把握し、システムルール210は、どのハードウェアリソースが利用されることが可能であるかを示すことができる。コントローラロジック205は、ステップ205.1において、テンプレート230を構文解析し、テンプレート230は、コントローラロジックに、図2Eに示されたテンプレート230とは外部にあるファイルを収集させるよう実行することができる命令ファイルを含んでもよい。命令ファイルは、jsonフォーマットにあってもよい。ステップ205.2において、コントローラロジックは、必要なファイルバケットのリストを収集する。また、ステップ205.3において、コントローラロジック205は、ハードウェアによって、及び任意選択で、ハイパーバイザ(または、コンテナホストシステム、マルチテナンシタイプ)によって参照される、必要なハードウェア特有ファイルをバケットに収集する。ハイパーバイザ(または、コンテナホストシステム、またはマルチテナンシタイプ)の参照は、ハードウェアが仮想マシン上で稼働することになる場合に必要になることがある。
ハードウェア特有ファイルが存在する場合、コントローラロジックは、ステップ205.4においてハードウェア特有ファイルを収集する。いくつかのケースでは、ファイルシステムイメージは、カーネルモジュール(または、最終的にディレクトリに置かれたカーネルモジュール)を包含するディレクトリに沿ってカーネル及びinitramfsを包含してもよい。コントローラロジック205は次いで、ステップ205.5において互換性を有する適切なベースイメージを選択する。ベースイメージは、アプリケーションまたはテンプレート230から導出されたイメージに特有でないことがあるオペレーティングシステムファイルを包含する。このコンテキストにおける互換性は、ベースイメージが動作するアプリケーションにテンプレートを変えるために必要なファイルを包含することを意味する。ベースイメージは、空間を節約するための機構としてテンプレートの外部で管理されてもよい(及び、多くの場合、ベースイメージは、いくつかのアプリケーションまたはサービスに対して同一であってもよい)。加えて、ステップ205.6において、コントローラロジック205は、実行可能ファイル、ソースコード、及びハードウェア特有構成ファイルを有するバケット(複数可)を選択する。テンプレート230は、構成ファイル、構成ファイルテンプレート(コントローラ200が構成テンプレートを構成ファイルに変えることができ、任意選択で、APIエンドポイントを通じて構成ファイルを変更することができるように、テンプレート230において既知とされてもよいシステムルール210における変数により満たされるプレースホルダまたは変数を包含する構成ファイルである)、バイナリ、及びソースコード(イメージがブートされるときにコンパイルすることができる)を含む、他のファイルを参照してもよいが、これらに限定されない。ステップ205.7において、ステップ205.4、205.5、及び205.6において選択された要素に対応するハードウェア特有命令は、ブートされるイメージの一部としてロードされてもよい。コントローラロジック205は、選択されたコンポーネントからイメージを導出する。例えば、物理ホスト対仮想マシンについての異なる事前インストールスクリプト、またはPowerpc対x86についての差異が存在してもよい。
ステップ205.8において、コントローラロジック205は、overlayfsをマウントし、サブジェクトファイルを単一のファイルシステムblobに再パッケージ化する。複数のファイルシステムblobが使用されるとき、複数のblobによりイメージが作成されてもよく、ターボールを解凍し、及び/またはギットをフェッチする。ステップ205.8が実行されない場合、ファイルシステムblobは、分離されたままであってもよく、イメージが、ファイルシステムblobのセットとして作成され、複数のより小規模のファイルシステム(overlayfsなど)を共にマウントすることが可能なファイルシステムによりマウントされる。コントローラロジック205は次いで、ステップ205.9において互換性を有するカーネル(または、システムルール210において指定されたカーネル)を特定してもよく、ステップ205.10において適用可能なinitrdを特定してもよい。互換性を有するカーネルは、テンプレート及びテンプレートを実装するために使用されるリソースの従属性を満たすカーネルであってもよい。互換性を有するinitrdは、テンプレートを所望のコンピューティングリソースにロードするinitrdであってもよい。多くの場合、initirdは、完全にブートする前に、ストレージリソースをマウントすることができるように(ルートファイルシステムがリモートであってもよいように)、物理リソースに対して使用されてもよい。カーネル及びinitrdは、ファイルシステムblobにパッケージ化されてもよく、ファイルシステムblobは、予備のオペレーティングシステムをブートした後にライブシステム上のカーネルを変更するために、kexecを使用して直接カーネルブートに対して使用されてもよく、または物理ホスト上で使用されてもよい。
コントローラは次いで、コンピューティングリソース(複数可)が205.11、205.12、及び/または205.13によって示された技術のいずれかを使用して、アプリケーション(複数可)及び/またはイメージ(複数可)を動かすことを可能にするようストレージリソース(複数可)を構成する。205.11により、overlayfsファイルは、ストレージリソースとして提供されてもよい。205.12により、ファイルシステムが提示される。例えば、ストレージリソースは、組み合わされたファイルシステム、またはoverlayfsと同様のファイルシステムを使用してコンピューティングリソースが同時にマウントすることができる複数のファイルシステムblobを提示してもよい。205.13により、blobは、ファイルシステムを提示する前にストレージリソースに送信される。
図2G及び2Hは、図2Fのステップ205.11及び205.12についての例示的なプロセスフローを示す。更にまた、システムは、ストレージ接続プロセスと称されてもよい、コンピュータリソースをストレージリソースに接続するためのプロセス及びルールを採用してもよい。図2G及び2Hによって示されたプロセスに加えてそのようなストレージ接続プロセスの実施例は、これに添付された別紙Aにおいて提供される。図2Gは、ストレージリソースの接続のための例示的なプロセスフローを示す。いくつかのストレージリソースは読み出し専用であってもよく、その他は、書き込み可能であってもよい。ストレージリソースは、競争状態を生じさせる同時書き込みが存在しないように、その自身の書き込みロックを管理してもよく、またはシステム状態220は、どの接続がストレージリソースに書き込むことができるかを追跡してもよく、及び/もしくはリソースへの複数の読み出し−書き込み接続を防止してもよい(ステップ205.21)(例えば、ステップ205.20を参照)。コントローラロジックまたはリソース自体は、ストレージリソースの位置及び伝送タイプ(例えば、iscsi、iser、nvmeof、ファイバチャネル、fcoe、nfs、nfs over rdma、afs、cifs、windows共有)についてコントローラのシステム状態220をクエリしてもよい(ステップ205.22)。コンピューティングリソースが仮想的である場合、ハイパーバイザ(例えば、ハイパーバイザデーモンを介した)は、ストレージリソースへの接続を扱ってもよい(ステップ205.23)。これは、仮想マシンがSAN280を認識していないことがあるので、望ましいセキュリティの利点を有することがある。
ステップ205.24を参照して、コンピューティングリソース及びストレージリソースを接続するプロセスは、システムルール210において命令されてもよい。コントローラロジックは次いで、リソースが利用可能であり、必要な場合に書き込み可能であることを確認するようシステム状態220をクエリする(ステップ205.22)。システム状態220は、SQLクエリ(または、他のタイプのデータベースクエリ)、JSON構文解析などのいずれかの数の技術を介してクエリされてもよい。クエリは、コンピューティングリソースがストレージリソースに接続するための必要な情報を返す。コントローラ200、システム状態220、またはシステムルール210は、コンピューティングリソースがシステム状態に接続するための認証信用情報を提供してもよい(ステップ205.25)。コンピューティングリソースは次いで、直接またはコントローラを介してのいずれかにより、システム状態220を更新する(ステップ205.26)。
図2Hは、ストレージリソースをパワーオンし、ストレージリソースに接続するための、物理、仮想、または他のタイプのコンピューティングリソース、アプリケーション、サービス、またはホストの例示的なブートプロセスを例示する。ストレージリソースは任意選択で、融合ファイルシステム及び/または拡張可能ボリュームを利用してもよい。コントローラまたは他のシステムが物理ホストを有効にする状況では、物理ホストは、システムを構成するためのオペレーティングシステムにより事前ロードされてもよい。したがって、ステップ205.31において、コントローラは、initramfsによりブートディスクを事前ロードしてもよい。また、コントローラ200は、予備のオペレーティングシステムをネットワークブートし(ステップ205.30)、次いで、任意選択で、予備のオペレーティングシステムによりホストを事前ロードする(ステップ205.31)ためにアウトオブバンド管理接続260を使用してもよい。initramfsは次いで、ステップ205.32においてロードし、ストレージリソースは、ステップ205.33において、図2Gにおいて示された方法を使用して接続される。
次いで、拡張可能ボリュームが存在する場合、共に結合されるサブボリュームまたはデバイスは、ステップ205.34において、論理ボリューム管理(LVM)が使用中である場合にボリュームグループとして任意選択で組み立てられる。または、それらは、ステップ205.34において、ディスクを組み合わせる他の方法を使用して結合されてもよい。
融合ファイルシステムが使用中である場合、ステップ205.36において、ファイルが組み合わされてもよく、次いで、ブートプロセスが継続してもよい(ステップ205.46)。いくつかの既知の問題を修正するためにlinuxにおいてoverlayfsが使用中である場合、以下のサブプロセスが実行されてもよい。揮発性であってもよい、各々のマウントされたファイルシステムblobにおいて/dataディレクトリが作成されてもよい(ステップ205.37)。次いで、ステップ205.38において、new_rootディレクトリが作成されてもよく、ステップ205.39において、overlayfsがディレクトリにマウントされる。次いで、initramfsは、/new_root上でexec_rootを実行する(ステップ205.40)。
ホストが仮想マシンである場合、直接カーネルブートなどの追加のツールが利用可能であってもよい。この状況では、ハイパーバイザは、VMをブートする前にストレージリソースに接続してもよく(ステップ205.41)、またはそれは、ブートしている間にこれを行ってもよい。VMは次いで、initramfsをロードすることと共にブートされた直接カーネルであってもよい(ステップ205.42)。initramfsは次いで、ステップ205.43においてロードし、ハイパーバイザは、このポイントにおいて、リモートであってもよいストレージリソースに接続してもよい(ステップ205.44)。これが達成されるために、ハイパーバイザホストは、インタフェースにおいて通る必要があることがある(例えば、inifinibandがiSERターゲットに接続するために必要な場合、それは、pci−passhtruを使用してSR−IOVに基づく仮想機能において通ってもよく、またはいくつかの状況では、準仮想化されたネットワークインタフェースを使用してもよい)。それらの接続は、initramfsによって使用可能である。仮想マシンは次いで、まだそうでない場合、ステップ205.45においてストレージリソースに接続してもよい。それはまた、ハイパーバイザを通じて(任意選択で、準仮想化されたストレージを通じて)そのストレージリソースを受信してもよい。プロセスは、任意選択で、融合ファイルシステム及びLVMスタイルディスクをマウントしている仮想マシンに対して同様であってもよい。
図2Oは、205.13にあるように、ファイルシステムblobまたはファイルの他のグループからのストレージリソースを構成する例示的なプロセスフローを例示する。blobは、ステップ205.75において収集され、それらは、205.73においてストレージリソースホストに直接コピーされてもよい(ストレージリソースホストがファイルシステムblob232を保持するデバイスとは異なる場合)。ストレージリソースが適切な位置にあると、システム状態は次いで、ストレージリソースの位置及び利用可能な伝送(例えば、iSER、nvmeof、iSCSI、FcoE、ファイバチャネル、nfs、nfs over rdma)により205.74において更新される。それらのblobのいくつかは、読み出し専用であってもよく、次いで、そのケースでは、システム状態が同一のままであり、新たなコンピューティングリソースまたはホストは、その読み出し専用ストレージリソースに接続してもよい(例えば、ベースイメージに接続するとき)。いくつかのケースでは、205.70に示されたように、いずれかの融合ファイルシステムのオーバヘッドを回避するために、ファイルを単一のファイルシステムイメージに置くことが望ましいことがある。これは、blobを融合ファイルシステムとしてマウントし(ステップ205.71)、次いで、それらを新たなファイルシステムにコピーし、またはそれらを単一のファイルシステムとして再パッケージ化し(ステップ205.72)、次いで、任意選択で、新たなファイルシステムイメージがストレージリソースとして提示されるための適切な場所に新たなファイルシステムイメージをコピーすることによって達成されてもよい。いくつかの融合ファイルシステムは、ステップ205.71においてそれを最初にマウントすることなく、併合することが達成され、それらを単一のステップに併合することを可能にすることができる。
図2Iは、図2Eに示されたような別の例示的なテンプレート230を例示する。この実施例では、コントローラは、中間構成ツールと共に図2Iに示されるようなテンプレート230を使用するように構成されてもよい。例示的な実施形態に従って、中間構成ツールは、新たなアプリケーションまたはサービスを従属性アプリケーションまたはサービスと結合するために使用される共通APIを含んでもよい。したがって、テンプレート230は加えて、テンプレートのサービスをセットアップするために必要とされることがある従属性のリスト244を含んでもよい。テンプレート230はまた、従属性の共通APIへの呼び出しを包含することができる接続ルール245を包含してもよい。テンプレート230はまた、1つまたは複数の共通API243、並びに共通API及びバージョンのリスト242を含んでもよい。共通API243は、従属性アプリケーションまたはサービスがテンプレート230によって構築される新たなアプリケーションに結合されることができるように、コントローラが従属性アプリケーションまたはサービスを構成することを可能にする、アプリケーションまたはコントローラから呼び出し可能(または呼び出し不可)であってもよい、メソッド、関数、スクリプト、または命令を有してもよい。コントローラは、共通API243と通信してもよく、及び/または新たなサービスまたはアプリケーション及び従属性サービスまたはアプリケーションの結合を構成するよう、API呼び出しを行ってもよい。代わりに、命令は、アプリケーションまたはサービスが、従属性アプリケーションまたはサービス上で直接、共通API243と通信し、及び/または共通API243に呼び出しを送信することを可能にすることができる。テンプレート230の接続ルール245は、新たなサービスまたはアプリケーションを従属性サービスまたはアプリケーションと接続することに関するAPI呼び出しを包含することができるルール及び/または命令のセットである。
システム状態220は更に、実行サービスのリスト246を含んでもよい。実行サービスのリスト246は、テンプレート230からの従属性244を満たすことを求めるよう、コントローラロジック205によってクエリされてもよい。コントローラはまた、特定のサービス/アプリケーションまたはサービス/アプリケーションのタイプに対して利用可能な異なる共通APIのリスト247を含んでもよく、また、共通APIを包含するテンプレートを含んでもよい。リストは、コントローラロジック205、システムルール210、システム状態220、またはコントローラがアクセスすることができるテンプレートストレージに存在してもよい。コントローラはまた、全ての既存のまたはロードされたテンプレートからコンパイルされた共通APIのインデックス248を維持する。
図2Jは、図2Fによって示されたような、コントローラロジック205がテンプレート230を処理することに関するが、ステップ255では、コントローラがサービス従属性を管理する例示的なプロセスフローを例示する。図2Kは、図2Jのステップ255についての例示的なプロセスフローを示す。ステップ255.1において、コントローラは、テンプレートから従属性のリスト244を収集する。コントローラはまた、テンプレートから共通APIのリスト243を収集する。(A)ステップ255.2において、コントローラは、テンプレートからの共通APIのリスト243を共通APIのインデックス248と比較することによって、及び従属性を満たすと考えられるアプリケーションまたはサービスのタイプに基づいて、可能な従属性アプリケーションまたはサービスのリストを縮小する。ステップ255.3において、コントローラは、システムルール210が従属性を満たす方式を指定するかどうかを判定する。
ステップ255.3においてyesである場合、コントローラは、実行テンプレートのリストをクエリすることによって、従属性サービスまたはアプリケーションが実行しているかどうかを判定し(ステップ255.4)、ステップ255.4においてnoである場合、従属性サービス/アプリケーションのテンプレートを処理するコントローラロジックを含むことができるサービスアプリケーションが実行される(及び/または、構成され、次いで実行される)(ステップ255.5)。従属性サービスまたはアプリケーションがステップ255.4において実行していると判明した場合、次いで、プロセスフローは、ステップ255.6に進む。ステップ255.6において、コントローラは、テンプレートを使用して、構築される新たなサービスまたはアプリケーションを従属性サービスまたはアプリケーションに結合する。新たなサービスまたはアプリケーション及び従属性アプリケーション/サービスを結合する際、コントローラは、それが処理しているテンプレートを検討し、接続ルール245を実行する。コントローラは、接続ルール245に基づいて、従属性244をどのように満たし、及び/またはアプリケーション/サービスをどのように結合するかについてのコマンドを共通API243に送信する。共通API243は、サービスのAPI関数を呼び出すこと、構成を変更すること、スクリプトを実行すること、他のプログラムを呼び出すことを含むことができるが、これらに限定されない、新たなサービスまたはアプリケーション及び従属性アプリケーションまたはサービスを接続する、コントローラからの命令を変換する。ステップ255.6に続いて、プロセスフローは、図2Jのステップ205.2に進む。
ステップ255.3が、システムルール210が従属性を満たす方式を指定しないと判断した場合、コントローラは次いで、ステップ255.7において、適切な従属性アプリケーションまたはサービスが実行しているかどうかを確認するよう、システム状態220をクエリする。ステップ255.8において、コントローラは、適切な従属性アプリケーションまたはサービスが実行しているかどうかについてのクエリに基づいて、その判定を行う。ステップ255.8においてnoである場合、コントローラは次いで、アクションについて管理者またはユーザに通知してもよい(ステップ255.9)。ステップ255.8においてyesである場合、プロセスフローは次いで、上記議論されたように動作することができるステップ255.6に進む。ユーザは任意選択で、新たなアプリケーションが実行している従属性アプリケーションに接続するべきかどうかについてクエリされてもよく、そのケースでは、コントローラは、ステップ255.6において、以下のように新たなアプリケーションまたはサービスを従属性アプリケーションまたはサービスに結合してもよく、コントローラは、それが処理しているテンプレート230を検討し、接続ルール245を実行する。コントローラは次いで、従属性244をどのように満たすかに関する接続ルール245に基づいて、コマンドを共通API243に送信する。共通API243は、新たなサービスまたはアプリケーション及び従属性アプリケーションまたはサービスを接続する、コントローラからの命令を変換する。
外部ユーザインタフェースもしくはウェブUI、またはアプリケーションによってユーザは、コントローラアプリケーションまたはロジック205にも組み込まれてもよいAPIアプリケーション120を通じてコントローラ200と通信する。
コントローラ200は、複数のネットワーク、相互接続、またはそれを通じてコントローラがコンピューティング、ストレージ、及びネットワーキングリソースに動作するよう指示することができる他の接続のうちの1つ以上によってスタックまたはリソースと通信する。そのような接続は、アウトオブバンド管理接続260、インバンド管理接続270、SAN接続280、及び任意選択のオンネットワークインバンド管理接続290を含んでもよい。
アウトオブバンド管理は、コントローラ200を通じてシステム100のコンポーネントを検出し、構成し、及び管理するためにコントローラ200によって使用されてもよい。アウトオブバンド管理接続260は、コントローラ200が、プラグインされ、利用可能であるが、ターンオンされないリソースを検出することを可能にすることができる。リソースは、プラグインされるとき、ITシステム状態220に追加されてもよい。アウトオブバンド管理は、ブートイメージをロードし、システム100に属するリソースを構成及び監視するように構成されてもよい。アウトオブバンド管理はまた、オペレーティングシステムの診断のために一時イメージをブートしてもよい。アウトオブバンド管理は、BIOS設定を変更するために使用されてもよく、また、実行しているオペレーティングシステム上でコマンドを実行するためにコンソールツールを使用してもよい。設定はまた、コンソール、キーボード、及びVGA、DVI、もしくはHDMIポートなどのハードウェアリソース上の物理もしくは仮想モニタポートからのビデオ信号の画像認識、並びに/またはアウトオブバンド管理によって提供されるAPI、例えば、Redfishを使用して、コントローラによって変更されてもよい。
本明細書で使用されるようなアウトオブバンド管理は、オペレーティングシステム及びメインマザーボードから独立したリソースまたはノードに接続することが可能な管理システムを含んでもよいが、これらに限定されない。アウトオブバンド管理接続260は、ネットワーク、または複数のタイプの直接もしくは間接接続もしくは相互接続を含んでもよい。アウトオブバンド管理接続のタイプの例は、IPMI、Redfish、SSH、telnet、他の管理ツール、キーボードビデオ及びマウス(KVM)、もしくはKVM over IP、シリアルコンソール、またはUSBを含むが、これらに限定されない。アウトオブバンド管理は、ノードまたはリソースをパワーオン及びオフすることができ、温度及び他のシステムデータを監視することができ、オペレーティングシステムの制御の及ばない可能性のあるBIOS及び他の低レベルの変更を行うことができ、コンソールに接続することができ、コマンドを送信することができ、キーボード、マウス、モニタを含むが、これらに限定されない、入力を制御することができる、ネットワークを通じて使用することができるツールである。アウトオブバンド管理は、物理リソース内のアウトオブバンド管理回路に結合されてもよい。アウトオブバンド管理は、インストールメディアをブートするために使用することができるディスクとしてディスクイメージを接続してもよい。
管理ネットワークまたはインバンド管理接続270は、コントローラが、コンピューティング、ストレージ、ネットワーク化、または他のリソースに関する情報を収集し、リソースが実行しているオペレーティングシステムに直接通信することを可能にすることができる。ストレージリソース、コンピューティングリソース、またはネットワーキングリソースは、接続260及び/または270とインタフェースする管理インタフェースを含んでもよく、それによって、それらは、コントローラ200と通信することができ、リソースに対して何が実行しており及び利用可能であるかをコントローラに通知することができ、コントローラからコマンドを受信することができる。本明細書で使用されるようなインバンド管理ネットワークは、リソースと、リソースのオペレーティングシステムに直接通信することが可能な管理ネットワークを含む。インバンド管理接続の例は、SSH、telnet、他の管理ツール、シリアルコンソール、またはUSBを含んでもよいが、これらに限定されない。
アウトオブバンド管理がインバンド管理ネットワークから物理的または仮想的に分離されたネットワークとして本明細書で説明されるが、それらは、本明細書で更に詳細に説明されるように、効率化のためにその他の各々と組み合わされてもよく、またはその他の各々と共に作動してもよい。また、したがって、アウトオブバンド及びインバンド管理またはそれらの態様は、コントローラの同一のポートを通じて通信してもよく、または組み合わされた相互接続と結合されてもよい。任意選択で、接続260、270、280、290のうちの1つ以上は、そのようなネットワークのその他から分離されてもよく、または組み合わされてもよく、同一のファブリックを含んでもよく、または含まなくてもよい。
加えて、コンピューティングリソース、ストレージリソース、及びコントローラは、ストレージネットワーク(SAN)280に、コントローラ200が各々のリソースをブートするためにストレージネットワークを使用することができる方式において結合されてもよく、または結合されなくてもよい。コントローラ200は、ブートイメージまたは他のテンプレートを別個のストレージまたは他のリソースもしくは他のリソースに送信してもよく、その結果他のリソースは、ストレージまたは他のリソースをブートオフすることができる。コントローラは、そのような状況においてどこからブートするかを指示してもよい。コントローラは、リソースをパワーオンしてもよく、どこからブートするか、及びどのように自身を構成するかをリソースに指示してもよい。コントローラ200は、どのようにブートするか、どのイメージを使用するか、及びイメージが別のリソース上にある場合にそのイメージがどこに位置するかをリソースに指示してもよい。BIOSのリソースは、事前に構成されてもよい。コントローラは、加えてまたは代わりに、それらがストレージエリアネットワークをブートオフするように、アウトオブバンド管理を通じてBIOSを構成してもよい。コントローラ200はまた、ISOからオペレーティングシステムをブートし、リソースがデータをローカルディスクにコピーすることを可能にするように構成されてもよい。次いで、ローカルディスクは続いて、ブートするために使用されてもよい。コントローラは、リソースがブートすることができるそのような方式において、他のコントローラを含む他のリソースを構成してもよい。いくつかのリソースは、コンピューティング、ストレージ、またはネットワーク化機能をもたらすアプリケーションを含んでもよい。加えて、コントローラが、ストレージリソースをブートアップし、次いで、ストレージリソースに後続のリソースまたはサービスのブートイメージを供給する役目を果たさせることが可能である。ストレージはまた、別の目的により使用される異なるネットワークを通じて管理されてもよい。
任意選択で、リソースのうちの1つ以上は、オンネットワークインバンド管理接続290に結合されてもよい。接続290は、インバンド管理接続270に関して説明されたような1つ以上のタイプのインバンド管理を含んでもよい。接続290は、インバンド管理ネットワークを通じて、ネットワークを利用し、またはそれらを管理するよう、コントローラをアプリケーションネットワークに接続してもよい。
図2Lは、リソース、またはリソース上でロードされたアプリケーションもしくはサービスをブートするよう、テンプレート230からリソースに直接または間接的に(別のリソースまたはデータベースを通じて)ロードすることができるイメージ250を例示する。イメージ250は、リソースタイプ及びハードウェアに対するブートファイル240を含んでもよい。ブートファイル240は、配置されることになるリソース、アプリケーション、またはサービスに対応するカーネル241を含んでもよい。ブートファイル240はまた、ブートプロセスを支援するために使用されるinitrdまたは同様のファイルシステムを含んでもよい。ブートシステム240は、異なるハードウェアタイプ及びリソースタイプに対して構成された複数のカーネルまたはinitrdを含んでもよい。加えて、イメージ250は、ファイルシステム251を含んでもよい。ファイルシステム251は、ベースイメージ252及び対応するファイルシステムと共に、サービスイメージ253及び対応するファイルシステム、並びに揮発性イメージ254及び対応するファイルシステムを含んでもよい。ファイルシステム及びロードされたデータは、リソースタイプ、並びに実行することになるアプリケーションまたはサービスに応じて変化してもよい。ベースイメージ252は、ベースオペレーティングシステムファイルシステムを含んでもよい。ベースオペレーティングシステムは、読み出し専用であってもよい。ベースイメージ252はまた、実行されているものとは独立したオペレーティングシステムの基本ツールを含んでもよい。ベースイメージ252は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム253は、リソース、アプリケーション、またはサービスについての構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム254は、パスワード、セッションキー、及びプライベートキーを含むが、これらに限定されない変数として構成されてもよく、または構成されなくてもよい、バイナリアプリケーション、特定のアドレス、及び他の情報などのその配備に特有の情報またはデータを包含してもよい。ファイルシステムは、いくつかの読み出し専用及びいくつかの読み出し−書き込みファイルシステムがアプリケーションに対して使用される複製データの量を削減することを可能にするよう、overlayFSなどの技術を使用して、1つの単一のファイルシステムとしてマウントされてもよい。
上述したように、コントローラ200は、コンピューティング、ストレージ、及び/またはネットワーキングリソースなどのリソースをシステムに追加するために使用されてもよい。図11Aは、ベアメタルノードなどの物理リソースをシステム100に追加する例示的な方法を例示する。リソース、すなわち、コンピューティング、ストレージ、またはネットワーキングリソースは、ネットワーク接続1110によってコントローラにプラグインされる。ネットワーク接続は、アウトオブバンド管理接続を含んでもよい。コントローラは、リソースがアウトオブバンド管理接続1111を通じてプラグインされることを認識する。コントローラは、リソースのタイプ、能力、及び/または属性1112を含むことができるが、これらに限定されない、リソースに関連する情報を認識する。コントローラは、リソース及び/またはリソースに関連する情報をそのシステム状態1113に追加する。テンプレートから導出されたイメージは、リソース、ストレージリソースなどの別のリソース、またはコントローラ1114を含むことができるが、これらに限定されない、システムの物理コンポーネントにロードされる。イメージは、構成ファイルを含むことができる1つ以上のファイルシステムを含む。そのような構成は、BIOS及びブートパラメータを含んでもよい。コントローラは、イメージ1115のファイルシステムを使用してブートするよう物理リソースに指示する。追加のリソース、または異なるタイプの複数のベアメタルもしくは物理リソースは、このようにして、テンプレートのイメージまたは少なくともその一部を使用して追加されてもよい。
図11Bは、例示的な実施形態のグローバルシステムルール及びテンプレートを使用して、リソースを自動で割り当てる例示的な方法を例示する。要求を満たすためにリソース割り当てを必要とする要求がシステムに対して行われる(1120)。コントローラは、そのシステム状態データベースに基づいて、そのリソースプールに気付く(1121)。コントローラは、必要なリソースを判定するためにテンプレートを使用する(1122)。コントローラは、リソースを割り振り、情報をシステム状態に記憶する(1123)。コントローラは、テンプレートを使用してリソースを配備する(1124)。
図12を参照して、本明細書で説明されるシステム100を使用して、アプリケーションまたはサービスを自動で配備する例示的な方法が例示される。ユーザまたはアプリケーションは、サービスに対して要求を行う(1210)。要求は、APIアプリケーションに変換される(1220)。APIアプリケーションは、要求をコントローラに経路指定する(1230)。コントローラは、要求を解釈する(1240)。コントローラは、システムの状態及びそのリソースを考慮する(1250)。コントローラは、サービス配備のためにそのルール及びテンプレートを使用する(1260)。コントローラは、リソースに要求を送信し(1270)、テンプレートから導出されたイメージを配備し(1280)、ITシステム状態を更新する。
リソースを追加すること、リソースを割り当てること、及びアリケーションまたはサービスを配備することなどの動作の追加の及び更なる詳細な実施例が、以下で更に詳細に議論される。
システムへのコンピューティングリソースの追加
図3Aを参照して、システム100へのコンピューティングリソース310の追加が例示される。コンピューティングリソース310が追加されるとき、それは、コントローラ200に結合され、パワーオフされてもよい。コンピューティングリソース310がイメージにより事前ロードされる場合、リソースと通信し、リソースをブートし、システム状態に情報を追加するためにネットワーク接続のいずれかが使用されてもよい、代替的なステップが続いてもよい。コンピューティングリソース及びコントローラが同一のノード上にある場合、コンピューティングリソースを実行するサービスはオフである。
図3Aに示されるように、コンピューティングリソース310は、ネットワーク、すなわち、アウトオブバンド管理接続260、インバンド管理接続270、及び任意選択で、SAN280によってコントローラに結合される。コンピューティングリソース310はまた、サービス、アプリケーションユーザ、及び/またはクライアントが相互に通信することができる1つ以上のアプリケーションネットワーク390に結合される。アウトオブバンド管理接続260は、コンピューティングリソース310がプラグインされるときにターンオンされる、独立したアウトオブバンド管理デバイス315またはコンピューティングリソース310の回路に結合されてもよい。デバイス315は、以下に限定されないが、デバイスをパワーオン/オフし、コンソールにアタッチし、コマンドをタイプし、温度及び他のコンピュータヘルス関連要素を監視し、BIOS設定を設定することを含む機能、及びオペレーティングシステムの範囲外の他の機能を可能にすることができる。コントローラ200は、アウトオブバンド管理ネットワーク260を通じてコンピューティングリソース310を確認することができる。それはまた、インバンド管理またはアウトオブバンド管理を使用して、コンピューティングリソースのタイプを識別することができ、その構成を識別することができる。コントローラロジック205は、ハードウェアを追加するために、アウトオブバンド管理260またはインバンド管理270を調べるように構成される。コンピューティングリソース310が検出される場合、コントローラロジック205は次いで、リソースが自動で、またはユーザと対話することによって構成されるかどうかを判定するために、グローバルシステムルール220を使用してもよい。それが自動で追加される場合、セットアップは、コントローラ200内のグローバルシステムルール210に従う。それがユーザによって追加される場合、コントローラ200内のグローバルシステムルール210は、リソースの追加及びユーザがコンピューティングリソースにより何を行うことを望んでいるかを確認するようユーザに問い合わせてもよい。コントローラ200は、新たなリソースが承認されることを確認するために、APIアプリケーションをクエリしてもよく、またはそうでなければ、ユーザもしくはスタックを制御するいずれかのプログラムに要求してもよい。承認プロセスは、新たなリソースの正当性を確認するよう、自動で、及び暗号化を使用して安全に完了してもよい。コントローラロジック205は、それにコンピューティングリソース310がプラグインされるスイッチまたはネットワークを含むITシステム状態220にコンピューティングリソース310を追加する。
コンピューティングリソースが物理的である場合、コントローラ200は、アウトオブバンド管理ネットワーク260を通じてコンピューティングリソースをパワーオンしてもよく、コンピューティングリソース310は、例えば、SAN280によって、グローバルシステムルール210及びコントローラロジック205を使用して、テンプレート230からロードされたイメージ350をブートオフしてもよい。イメージは、他のネットワーク接続を通じて、または別のリソースによって間接的にロードされてもよい。ブートされると、インバンド管理接続270を通じて受信されたコンピューティングリソース310に関連する情報も、ITシステム状態220に収集及び追加されてもよい。コンピューティングリソース310は次いで、ストレージリソースプールに追加されてもよく、それは、コントローラ200によって管理され、ITシステム状態220において追跡されるリソースになる。
コンピューティングリソースが仮想的である場合、コントローラ200は、インバンド管理ネットワーク270またはアウトオブバンド管理260のいずれかを通じてコンピューティングリソースをパワーオンしてもよい。コンピューティングリソース310は、例えば、SAN280によって、グローバルシステムルール210及びコントローラロジック205を使用して、テンプレート230からロードされたイメージ350をブートオフしてもよい。イメージは、他のネットワーク接続を通じて、または別のリソースによって間接的にロードされてもよい。ブートされると、インバンド管理接続270を通じて受信されたコンピューティングリソース310に関連する情報も、ITシステム状態220に収集及び追加されてもよい。コンピューティングリソース310は次いで、ストレージリソースプールに追加されてもよく、それは、コントローラ200によって管理され、ITシステム状態220において追跡されるリソースになる。
コントローラ200は、リソースをターンオフにして電力を節約する、またはリソースをターンオンにしてアプリケーション性能を改善する、またはITシステムユーザが有し得る他の理由のためなど、ITシステムユーザによって判定された理由によりグローバルシステムルールに従ってリソースを自動でターンオン及びオフし、ITシステム状態を更新することが可能であってもよい。
図3Bは、コンピューティングリソースをブートし、及び/またはアプリケーションをロードするために、テンプレート230からコンピューティングリソース310に直接または間接的に(別のリソースもしくはデータベースを通じて)ロードされるイメージ350を示す。イメージ350は、リソースタイプ及びハードウェアについてのブートファイル340を含んでもよい。ブートファイル340は、配備されることになるリソース、アプリケーション、またはサービスに対応するカーネル341を含んでもよい。ブートファイル340はまた、initrd、またはブートプロセスを支援するために使用される同様のファイルシステムを含んでもよい。ブートシステム340は、異なるハードウェアタイプ及びリソースタイプに対して構成された複数のカーネルまたはinitrdを含んでもよい。加えて、イメージ350は、ファイルシステム351を含んでもよい。ファイルシステム351は、ベースイメージ352及び対応するファイルシステムと共に、サービスイメージ353及び対応するファイルシステム、並びに揮発性イメージ354及び対応するファイルシステムを含んでもよい。ファイルシステム及びロードされたデータは、リソースタイプ及び実行しているアプリケーションまたはサービスに応じて変化してもよい。ベースイメージ352は、ベースオペレーティングシステムのファイルシステムを含んでもよい。ベースオペレーティングシステムは、読み出し専用であってもよい。ベースイメージ352はまた、実行されているものとは独立したオペレーティングシステムの基本ツールを含んでもよい。ベースイメージ352は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム353は、リソース、アプリケーション、またはサービスについての構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム354は、パスワード、セッションキー、及びプライベートキーを含むが、これらに限定されない変数として構成されてもよく、または構成されなくてもよい、バイナリアプリケーション、特定のアドレス、及び他の情報などのその配備に特有の情報またはデータを包含してもよい。ファイルシステムは、いくつかの読み出し専用及びいくつかの読み出し−書き込みファイルシステムがアプリケーションに対して使用される複製データの量を削減することを可能にするよう、overlayFSなどの技術を使用して、1つの単一のファイルシステムとしてマウントされてもよい。
図3Cは、コンピューティングリソース310などのリソースをシステム100に追加する例示的なプロセスフローを示す。この実施例では、対象のリソースは、コンピューティングリソース310として説明されるが、図3Cのプロセスフローについての対象のリソースは、ストレージリソース410及び/またはネットワーキングリソース510であってもよいことが理解されるべきである。図3Cの実施例では、追加されるリソース310は、コントローラ200と同一のノード上にはない。ステップ300.1において、リソース310は、パワーオフ状態にあるコントローラ200に結合される。図3Cの実施例では、リソース310を接続するためにアウトオブバンド管理接続260が使用される。しかしながら、実施者によって要求される場合、他のネットワーク接続が使用されてもよいことが理解されるべきである。ステップ300.2及び300.3において、コントローラロジック205は、システムのアウトオブバンド管理接続を調べ、追加されるリソース310のタイプ及びその構成を認識及び識別するためにアウトオブバンド管理接続260を使用する。例えば、コントローラロジックは、タイプ及び構成情報を取得するための参照として、BIOSまたはリソースについての他の情報(シリアル番号情報など)を確認することができる。
ステップ300.4において、コントローラは、特定のリソース310が自動で追加されるべきであるかどうかを判定するために、グローバルシステムルールを使用する。必要ない場合、コントローラは、その使用が承認されるまで待機する(ステップ300.5)。例えば、ユーザは、特定のリソース310を使用することを望まないこと、またはステップ300.4において使用されることになるまで、それが自動で保留されてもよいことをクエリに応答してもよい。ステップ300.4が、リソース310が自動で追加されるべきであると判定する場合、コントローラは次いで、自動セットアップのためにそのルールを使用し(ステップ300.6)、ステップ300.7に進む。
ステップ300.7において、コントローラは、システム状態220にリソースを追加するために、リソースと関連付けられたテンプレート230を選択及び使用する。いくつかのケースでは、テンプレート230は、特定のリソースに特有であってもよい。しかしながら、いくつかのテンプレート230は、複数のリソースタイプを網羅してもよい。例えば、いくつかのテンプレート230は、ハードウェアに依存しないものであってもよい。ステップ300.8において、コントローラは、グローバルシステムルール210に従って、そのアウトオブバンド管理接続260を通じてリソース310をパワーオンする。ステップ300.9において、グローバルシステムルール210を使用して、コントローラは、選択されたテンプレート(複数可)からリソースについてのブートイメージを見つけてロードする。リソース310は次いで、対象のテンプレート230から導出されたイメージからブートされる(ステップ300.10)。リソース310に関する追加の情報は次いで、リソース310がブートされた後に、インバンド管理接続270を通じてリソース310から受信されてもよい(ステップ300.11)。そのような情報は、例えば、ファームウェアバージョン、ネットワークカード、リソースを接続することができるいずれかの他のデバイスを含んでもよい。ステップ300.12において、新たな情報がシステム状態220に追加されてもよい。リソース310は次いで、リソースプールに追加されると考えられてもよく、割り当てに対して準備される(ステップ300.13)。
図3Cに関して、リソース及びコントローラが同じノード上にある場合、リソースを実行するサービスがそのノードの外にあってもよいことは理解されるべきである。そのような場合、コントローラは、たとえば、unixソケット、ループバックアダプタ、またはリソースと通信する他のプロセス間通信技術などの、リソースとのプロセス間通信技術を使用してもよい。システムルールから、コントローラは、既知のテンプレートを使用してアプリケーションを実行するために、バーチャルホスト、あるいはハイパーバイザまたはコンテナホストをコントローラからインストールしてもよい。次いで、リソースアプリケーション情報を、システム状態220に追加することができ、リソースは、割り当ての準備ができていることになる。
システムへのストレージリソースの追加
図4Aは、システム100へのストレージリソース410の追加を示す。ある例示的な実施形態において、図3Cの例示的なプロセスフローは、システム100にストレージリソース410を追加するために従うことができ、ここで、追加されるストレージリソース410は、コントローラ200と同じノード上にない。また、ストレージリソース410にイメージがプリロードされている場合、いずれかのネットワーク接続を、ストレージリソース410と通信し、ストレージリソース410をブートし、システム状態220に情報を追加するために使用することができる代替のステップに従ってもよいことに注目すべきである。
ストレージリソース410が追加されるとき、それはコントローラ200に連結されて、電源オフであってもよい。ストレージリソース410は、ネットワーク、つまり、アウトオブバンド管理ネットワーク260、インバンド管理接続270、SAN280、及び任意選択的に、接続290を介してコントローラに連結される。ストレージリソース410はまた、サービス、アプリケーションユーザ、及び/またはクライアントが互いに通信することができる1つまたは複数のアプリケーションネットワーク390に連結されてもよく、または、連結されなくてもよい。アプリケーションまたはクライアントは、アプリケーションを介して、リソースのストレージに直接アクセスまたは間接アクセスしてもよく、それによって、アプリケーションまたはクライアントは、SANを通してアクセスされない。アプリケーションネットワークは、それに組み込まれたストレージを有してもよく、または、アクセスされて、ITシステム状態においてストレージリソースと識別されてもよい。アウトオブバンド管理接続260は、ストレージリソース410が接続されたときにオンになるストレージリソース410の独立したアウトオブバンド管理デバイス415または回路に連結されてもよい。デバイス415は、デバイスの電源オン/オフ、コンソールへのアタッチ及びコマンドの打ち込み、温度及び他のコンピュータ健全性関連要素の監視、ならびに、BIOS設定及びオペレーティングシステムからのスコープ外の他の特徴の設定を含むがこれらに限定されない特徴を可能にしてもよい。コントローラ200は、アウトオブバンド管理ネットワーク260を通してストレージリソース410を参照してもよい。それは、ストレージリソースのタイプを識別してもよく、そして、インバンドまたはアウトオブバンド管理を使用してその構成を識別してもよい。コントローラロジック205は、追加されるハードウェアのために、アウトオブバンド管理260またはインバンド管理270を調べるように構成される。ストレージリソース410が検出された場合、コントローラロジック205は、リソース410が自動的にまたはユーザとの対話によって構成されるかどうか判定するために、グローバルシステムルール220を使用してもよい。リソース410が自動的に追加された場合、セットアップは、コントローラ200内のグローバルシステムルール210に従う。リソース410がユーザによって追加された場合、コントローラ200内のグローバルシステムルール210は、リソースの追加及びユーザがストレージリソースで行いたいことを確認するようにユーザに尋ねてもよい。コントローラ200は、新しいリソースが許可されたことを確認するために、APIアプリケーション(複数可)に問い合わせてもよく、あるいは、その他の場合には、ユーザまたはスタックを制御する任意のプログラムに要求してもよい。許可プロセスはまた、新しいリソースの妥当性を確認するために、暗号を使用して、自動的かつ確実に完了させてもよい。コントローラロジック205は、ストレージリソース410が接続されるスイッチまたはネットワークを含むITシステム状態220にストレージリソース410を追加する。
コントローラ200は、アウトオブバンド管理ネットワーク260を通して、ストレージリソース410の電源をオンにしてもよく、ストレージリソース410は、グローバルシステムルール210及びコントローラロジック205を使用して、たとえば、SAN280を介して、テンプレート230からロードされたイメージ450からブートする。イメージはまた、他のネットワーク接続を通して、または、別のリソースを介して間接的に、ロードされてもよい。ブートされると、ストレージリソース410に関するインバンド管理接続270を通して受信された情報は、ITシステム状態220に収集及び追加されてもよい。ここで、ストレージリソース410は、ストレージリソースプールに追加され、それは、コントローラ200によって管理されて、ITシステム状態220においてトラッキングされるリソースになる。
ストレージリソースは、ITシステムが単独でまたは同時に、使用またはアクセスしてもよいストレージリソースプールまたは複数のストレージリソースプールを備えてもよい。ストレージリソースが追加されたとき、ストレージリソースは、ストレージプール、複数のストレージプール、ストレージプールの一部、及び/またはストレージプールの複数の部分をITシステム状態に提供してもよい。コントローラ及び/またはストレージリソースは、プールのさまざまなストレージリソース、またはプール内のこのようなリソースのグループを管理してもよい。ストレージプールは、複数のストレージリソース上で実行される複数のストレージプールを含んでもよい。たとえば、プラッタディスクまたはアレイをキャッシュするフラッシュストレージディスクまたはアレイ、あるいは、専用ストレージノード上のプールに連結された専用計算ノード上のストレージプールは帯域幅及び待ち時間を同時に最適化する。
図4Bは、ストレージリソースをブートするかつ/またはアプリケーションをロードするために、テンプレート230から(別のリソースまたはデータベースから)ストレージリソース410に直接的または間接的にロードされるイメージ450を示す。イメージ450は、リソースタイプ及びハードウェアのためのブートファイル440を備えてもよい。ブートファイル440は、配備されるリソース、アプリケーション、またはサービスに対応するカーネル441を備えてもよい。ブートファイル440は、ブートプロセスを支援するために使用されるinitrdまたは類似のファイルシステムを備えてもよい。ブートシステム440は、異なるハードウェアタイプ及びリソースタイプのために構成される複数のカーネルまたはinitrdを備えてもよい。さらに、イメージ450は、ファイルシステム451を備えてもよい。ファイルシステム451は、ベースイメージ452及び対応するファイルシステムと、サービスイメージ453及び対応するファイルシステムと、揮発性イメージ454及び対応するファイルシステムとを備えてもよい。ロードされるファイルシステム及びデータは、リソースタイプ及びアプリケーション、または実行するサービスに応じて変えてもよい。ベースイメージ452は、ベースオペレーティングシステムファイルシステムを備えてもよい。ベースオペレーティングシステムは、読み取り専用であってもよい。ベースイメージ452はまた、実行されているものから独立しているオペレーティングシステムの基本ツールを備えてもよい。ベースイメージ452は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム453は、リソース、アプリケーション、またはサービスのための構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム454は、バイナリアプリケーション、特有アドレス、及び他の情報などの、その配備に固有の情報またはデータを含んでもよく、それは、パスワード、セッションキー、及びプライベートキーを含むがこれらに限定されない変数として構成されてもよく、または、構成されなくてもよい。ファイルシステムは、overlayFSなどの技術を使用する1つの単一のファイルシステムとしてマウントされて、いくつかの読み取り専用及びいくつかの読み書きファイルシステムが、アプリケーションのために使用される重複データの量を減少させることを可能にしてもよい。
図5Aは、JBODまたは他のタイプの直接接続ストレージによるノードの形態をとってもよい、別のストレージリソース、すなわち、直接接続ストレージ510が、システムに対する追加のストレージリソースとしてストレージリソース410に連結された例を示す。JBODは通常、ストレージリソースを提供する、ノードに接続された外部ディスクアレイであり、図5Aでは、JBODが直接接続ストレージ510の例示的な形態として使用されているが、他のタイプの直接接続ストレージが510として採用される可能性があることは理解されるべきである。
コントローラ200は、たとえば、図5Aに関して記載されるように、ストレージリソース410及びJBOD510をそのシステムに追加してもよい。JBOD510は、アウトオブバンド管理接続260を介してコントローラ200に連結される。ストレージリソース410は、ネットワーク、つまり、アウトオブバンド管理接続260、インバンド管理接続270、SAN280、及び任意選択的に、接続290に連結される。ストレージノード410は、SASまたは他のディスクドライブファブリック520を通してJBOD510のストレージと通信する。JBOD510は、アウトオブバンド管理接続260を通してコントローラと通信するアウトオブバンド管理デバイス515も備えてもよい。アウトオブバンド管理260を通して、コントローラ200は、JBOD510及びストレージリソース410を検出してもよい。コントローラ200は、たとえば、さまざまなアウトオブバンド管理回路に関して本明細書に記載されるような、オペレーティングシステムによって制御されない他のパラメータも検出してもよい。コントローラ200グローバルシステムルール210は、まだ追加されていないJBOD及びストレージノードのブートまたは起動のための構成起動ルールを提供する。ストレージリソースをオンにする順番は、グローバルルール220を使用して、コントローラロジック205によって制御されてもよい。グローバルシステムルール220の1つのセットに従って、コントローラは最初に、JBOD510の電源をオンにしてもよく、次いで、コントローラ200は、図4に関して記載されたものと類似の方法で、ロードされたイメージ450を使用して、ストレージリソースの電源をオンにしてもよい。グローバルシステムルールの別のセットでは、コントローラ200は、最初にストレージリソース410、次にJBOD510をオンにしてもよい。他のグローバルシステムルールでは、さまざまなデバイス間の電源オンのタイミングまたはディレイが指定されてもよい。コントローラロジック205、グローバルシステムルール210、及び/またはテンプレート230によって、さまざまなリソースの準備状態または作動状態の検出が判定されてもよく、かつ/または、コントローラ200によるデバイス割り当て管理において使用されてもよい。ITシステム状態220は、ストレージリソース410との通信によって更新されてもよい。ストレージノード410は、ディスクファブリック520を通してJBODにアクセスすることによって、JBOD510のストレージパラメータ及び構成を認識している。ストレージリソース410は、次いで、利用可能なストレージの量及び他の属性に関する情報でITシステム状態220を更新するコントローラ200に情報を提供する。ストレージリソース410がブートされて、ストレージリソース410がシステム100のストレージリソース400のプールの一部として認識されると、コントローラはITシステム状態220を更新する。ストレージノードは、コントローラ200によって設定された構成を使用して、JBODストレージリソースを制御するためのロジックを取り扱う。たとえば、コントローラは、RAID10または他の構成からプールを作成するために、ストレージノードにJBODを構成するように指示してもよい。
図5Bは、ストレージリソース410及びストレージリソース410のための直接接続ストレージ510をシステム100に追加するための例示的なプロセスフローを示す。ステップ500.1では、直接接続ストレージ510が、アウトオブバンド管理接続260を介して、電源オフ状態のコントローラ200に連結される。ステップ500.2では、ストレージリソース410が、アウトオブバンド管理接続260及びインバンド管理接続270を介して、電源オフ状態のコントローラ200に連結され、同時に、ストレージリソース410が、たとえば、ディスクドライブファブリックなどのSAS520を介して、直接接続ストレージ510に連結される。
次いで、コントローラロジック205が、ストレージリソース410及び直接接続ストレージ510を検出するために、アウトオブバンド管理接続260を調べてもよい(ステップ500.3)。任意のネットワーク接続を使用することができるが、この例では、アウトオブバンド管理が、追加されているリソース(この場合、ストレージリソース410及び直接接続ストレージ510)ならびにそれらの構成のタイプを認識及び識別するコントローラロジックのために使用されてもよい(ステップ500.4)。
ステップ500.5では、コントローラ200が、リソース410及び510をシステム状態220に追加するために、各タイプのストレージデバイスに対する特定のタイプのストレージのためのテンプレート230を選択して使用する。ステップ500.6では、コントローラ、電源をオンにするブート順を指定することができる次のグローバルシステムルール210が、そのような順番で、アウトオブバンド管理接続260を通して、直接ストレージ及びストレージノードをオンにする(500.6)。グローバルシステムルール210を使用して、コントローラが、そのストレージリソース410のために選択されたテンプレート230からストレージリソース410のためのブートイメージを見いだしてロードし、次いで、ストレージリソースがイメージからブートされる(ステップ500.7)。ストレージリソース410が、ディスクファブリック520を通して直接接続ストレージ510にアクセスすることによって、直接接続ストレージ510のストレージパラメータ及び構成を認識している。次いで、ストレージリソース410及び/または直接接続ストレージ510に関する追加情報が、ストレージリソースへのインバンド管理接続270を通して、コントローラに提供されてもよい(ステップ500.8)。ステップ500.9では、コントローラが、ステップ500.8で得られた情報で、システム状態220を更新する。ステップ500.10では、コントローラが、直接接続ストレージ510を取り扱うストレージリソース410のための構成、及び直接接続ストレージを構成する方法を設定する。次いで、ステップ500.11では、直接接続ストレージ510とともにストレージリソース410を備える新しいリソースは、リソースプールに追加されてもよく、システム内に割り当てる準備ができている。
例示的な実施形態の別の態様によると、コントローラは、コンピューティングまたはサービスに関与しなくてもよいスタックにおいて他のデバイスを認識するために、アウトオブバンド管理を使用してもよい。たとえば、そのようなデバイスは、冷却塔/空調装置、照明、温度、音、警報、電力システム、またはシステムと関連する任意の他のデバイスを含んでもよいが、それらに限定されない。
システムへのネットワーキングリソースの追加
図6Aは、システム100へのネットワーキングリソース610の追加を示す。ある例示的な実施形態において、図3Cの例示的なプロセスフローは、システム100にネットワーキングリソース610を追加するために従うことができ、ここで、追加されるネットワーキングリソース610は、コントローラ200と同じノード上にない。また、ネットワーキングリソース610にイメージがプリロードされている場合、いずれかのネットワーク接続を、ネットワークリソース610と通信し、ネットワークリソース610をブートし、システム状態220に情報を追加するために使用することができる代替のステップに従ってもよいことに注目すべきである。
ネットワーキングリソース610が追加されるとき、それはコントローラ200に連結されて、電源オフであってもよい。ネットワーキングリソース610は、接続、つまり、アウトオブバンド管理接続260及び/またはインバンド管理接続270を介してコントローラ200に連結されてもよい。ネットワーキングリソース610は任意選択的に、SAN280及び/または接続290に接続される。ネットワーキングリソース610はまた、サービス、アプリケーションユーザ、及び/またはクライアントが互いに通信することができる1つまたは複数のアプリケーションネットワーク390に連結されてもよく、または、連結されなくてもよい。アウトオブバンド管理接続260は、ネットワーキングリソース610が接続されたときにオンになるネットワーキングリソース610の独立したアウトオブバンド管理デバイス615または回路に連結されてもよい。デバイス615は、デバイスの電源オン/オフ、コンソールへのアタッチ及びコマンドの打ち込み、温度及び他のコンピュータ健全性関連要素の監視、ならびに、BIOS設定及びオペレーティングシステムからのスコープ外の他の特徴の設定を含むがこれらに限定されない特徴を可能にしてもよい。コントローラ200は、アウトオブバンド管理接続260を通してネットワーキングリソース610を参照してもよい。それは、ネットワーキングリソース及び/またはネットワークファブリックのタイプを識別してもよく、そして、インバンドまたはアウトオブバンド管理を使用して構成を識別してもよい。コントローラロジック205は、追加されるハードウェアのために、アウトオブバンド管理260またはインバンド管理270を調べるように構成される。ネットワーキングリソース610が検出された場合、コントローラロジック205は、ネットワーキングリソース610が自動的にまたはユーザとの対話によって構成されるかどうか判定するために、グローバルシステムルール220を使用してもよい。リソース610が自動的に追加された場合、セットアップは、コントローラ200内のグローバルシステムルール210に従う。ユーザによって追加された場合、コントローラ200内のグローバルシステムルール210は、リソースの追加及びユーザがリソースで行いたいことを確認するようにユーザに尋ねてもよい。コントローラ200は、新しいリソースが許可されたことを確認するために、APIアプリケーション(複数可)に問い合わせてもよく、あるいは、その他の場合には、ユーザまたはスタックを制御する任意のプログラムに要求してもよい。許可プロセスはまた、新しいリソースの妥当性を確認するために、暗号を使用して、自動的かつ確実に完了させてもよい。次いで、コントローラロジック205は、ネットワーキングリソース610をITシステム状態220に追加してもよい。自身をコントローラに識別させることができないスイッチのために、ユーザは、システム状態にそれらを手動で追加してもよい。
ネットワーキングリソースが物理的なものである場合、コントローラ200は、アウトオブバンド管理接続260を通して、ネットワーキングリソース610の電源をオンにしてもよく、ネットワーキングリソース610は、グローバルシステムルール210及びコントローラロジック205を使用して、たとえば、SAN280を介して、テンプレート230からロードされたイメージ605からブートしてもよい。イメージはまた、他のネットワーク接続を通して、または、他のリソースを介して間接的に、ロードされてもよい。ブートされると、ネットワーキングリソース610に関するインバンド管理接続270を通して受信された情報は、ITシステム状態220に収集及び追加されてもよい。次いで、ネットワーキングリソース610は、ストレージリソースプールに追加されてもよく、それは、コントローラ200によって管理されて、ITシステム状態220においてトラッキングされるリソースになる。任意選択的に、いくつかのネットワーキングリソーススイッチは、アウトオブバンド管理260に接続されたコンソールポートを通して制御されてもよく、電源オン時に構成されてもよく、または、ブートローダを通して、たとえば、ONIEを通してインストールされたスイッチオペレーティングシステムを有してもよい。
ネットワーキングリソースが仮想的なものである場合、コントローラ200は、インバンド管理ネットワーク270またはアウトオブバンド管理260のいずれかを通して、ネットワーキングリソースの電源をオンにしてもよい。ネットワーキングリソース610は、グローバルシステムルール210及びコントローラロジック205を使用して、SAN280を介して、テンプレート230からロードされたイメージ650からブートしてもよい。ブートされると、ネットワーキングリソース610に関するインバンド管理接続270を通して受信された情報は、ITシステム状態220に収集及び追加されてもよい。次いで、ネットワーキングリソース610は、ストレージリソースプールに追加されてもよく、それは、コントローラ200によって管理されて、ITシステム状態220においてトラッキングされるリソースになる。
コントローラ200は、物理的であろうと仮想的であろうと、異なる物理または仮想リソース、すなわち、接続、ストレージ、または本明細書で定義されるような計算に接続するために、ポートの割り当て、再割り当て、または移動をネットワーキングリソースに指示してもよい。これは、SDN、インフィニバンドパーティショニング、VLAN、vXLANを含むがこれらに限定されない技術を使用して行われてもよい。コントローラ200は、仮想スイッチまたは仮想スイッチをホストするリソースとのネットワークまたはインターコネクト通信に仮想インタフェースを移動させるまたは割り当てるように、仮想スイッチに指示してもよい。いくつかの物理または仮想スイッチは、コントローラに連結されたAPIによって制御されてもよい。
そのような変更が可能であるとき、コントローラ200はまた、計算、ストレージ、またはネットワーキングリソースにファブリックタイプを変更するように指示してもよい。ポートは、異なるファブリックにスイッチするように、たとえば、ハイブリッドインフィニバンド/イーサネットインタフェースのファブリックを切り換えるように構成されてもよい。
コントローラ200は、複数のアプリケーションネットワークをスイッチするスイッチまたは他のネットワーキングリソースを備えてもよいネットワーキングリソースに命令を与えてもよい。スイッチまたはネットワークデバイスは、異なるファブリックを備えてもよく、または、たとえば、それらは、好ましくは、SDN機能及び複数のファブリックによって、インフィニバンドスイッチ、ROCEスイッチ、及び/または他のスイッチに接続されてもよい。
図6Bは、ネットワーキングリソースをブートするかつ/またはアプリケーションをロードするために、テンプレート230から(たとえば、別のリソースまたはデータベースを介して)ネットワーキングリソース610に直接的または間接的にロードされるイメージ650を示す。イメージ650は、リソースタイプ及びハードウェアのためのブートファイル640を備えてもよい。ブートファイル640は、配備されるリソース、アプリケーション、またはサービスに対応するカーネル641を備えてもよい。ブートファイル640は、ブートプロセスを支援するために使用されるinitrdまたは類似のファイルシステムを備えてもよい。ブートシステム640は、異なるハードウェアタイプ及びリソースタイプのために構成される複数のカーネルまたはinitrdを備えてもよい。さらに、イメージ650は、ファイルシステム651を備えてもよい。ファイルシステム651は、ベースイメージ652及び対応するファイルシステムと、サービスイメージ653及び対応するファイルシステムと、揮発性イメージ654及び対応するファイルシステムとを備えてもよい。ロードされるファイルシステム及びデータは、リソースタイプ及びアプリケーション、または実行するサービスに応じて変えてもよい。ベースイメージ652は、ベースオペレーティングシステムファイルシステムを備えてもよい。ベースオペレーティングシステムは、読み取り専用であってもよい。ベースイメージ652はまた、実行されているものから独立しているオペレーティングシステムの基本ツールを備えてもよい。ベースイメージ652は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム653は、リソース、アプリケーション、またはサービスのための構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム654は、バイナリアプリケーション、特有アドレス、及び他の情報などの、その配備に固有の情報またはデータを含んでもよく、それは、パスワード、セッションキー、及びプライベートキーを含むがこれらに限定されない変数として構成されてもよくて、または、構成されなくてもよい。ファイルシステムは、overlayFSなどの技術を使用する1つの単一のファイルシステムとしてマウントされて、いくつかの読み取り専用及びいくつかの読み書きファイルシステムが、アプリケーションのために使用される重複データの量を減少させることを可能にしてもよい。
リソース上へのアプリケーションまたはサービスの配備
図7Aは、コントローラ200と、第1の計算ノード311、第2の計算ノード312、及び第3の計算ノード313を備える物理及び仮想コンピューティングリソースと、ストレージリソース410と、ネットワークリソース610とを備えるシステム100を示す。リソースは、図1〜6Bに関して本明細書に記載されるような方法で、セットアップされて、ITシステム状態220に追加されるように示されている。
複数の計算ノードがこの図に示されているが、ある例示的な実施形態による、単一の計算ノードが使用されてもよい。計算ノードは、物理または仮想コンピューティングリソースをホストしてもよく、物理または仮想計算ノード上でアプリケーションを実行してもよい。同様に、単一のネットワークプロバイダノード及びストレージノードが示されているが、これらのタイプの複数のリソースノードは、例示的な実施形態のシステムで使用されてもよく、または、使用されなくてもよいことが意図されている。
サービスまたはアプリケーションは、ある例示的な実施形態によるシステムのいずれかに配備されてもよい。計算ノード上にサービスを配備する例は、図7Aに関して記載されてもよいが、システム100の異なる配置で同様に使用されてもよい。たとえば、図7Aのコントローラ200は、グローバルシステムルール210に従って、コンピューティングリソース310を計算ノード311、312、313の形態で自動的に構成してもよい。次いで、それらは、ITシステム状態220に追加されてもよい。したがって、コントローラ200は、(電源オフであってよい、または、電源オフでなくてもよい)コンピューティングリソース311、312、313、及び、場合によっては、コンピューティングリソースまたはノード上で実行する任意の物理または仮想アプリケーションを認識してもよい。コントローラ200は、グローバルシステムルール210及びテンプレート230に従って、ストレージリソース(複数可)410及びネットワーキングリソース(複数可)610を自動的に構成してもよく、それらをITシステム状態220に追加してもよい。コントローラ200は、電力オフ状態で開始してもよい、または、開始しなくてもよいストレージリソース410及びネットワーキングリソース610を認識してもよい。
図7Bは、ITシステム100にリソースを追加するための例示的プロセスを示す。ステップ700.1では、新しい物理リソースがシステムに連結される。ステップ700.2では、コントローラが新しいリソースに気付く。リソースは、リモートストレージに接続されてもよい(ステップ700.4)。ステップ700.3では、コントローラが、新しいリソースをブートする方法を構成する。リソースに行われるすべての接続は、システム状態220に記録することができる(ステップ700.5)。上で論じられた図3Cは、図7Bに示されるものなどのプロセスフローの例示的な実施形態に関するさらなる詳細を提供する。
図7C及び7Dは、複数のコンピューティングリソース、複数のサーバ、複数の仮想マシン、及び/または複数のサイトへのアプリケーションの配備のための例示的なプロセスフローを示す。本例のためのプロセスは、ITシステム100が、冗長で互いに関係するアプリケーション及び/またはサービスを連結するコンポーネントを必要とするという事実において、標準的なテンプレート配備と異なる。コントローラロジックは、ステップ700.11でメタテンプレートを処理してもよく、ここで、メタテンプレートは、複数のテンプレート230、ファイルシステムblob232、及び、マルチホームサービスを構成するために必要とされる(他のテンプレート230の形態であってもよい)他のコンポーネントを含んでもよい。
ステップ700.12では、コントローラロジック205が、利用可能なリソースのシステム状態220を確認する。しかしながら、十分なリソースがない場合、コントローラロジックは、配備されてもよい冗長なサービスの数を減らしてもよい(冗長なサービスの数が識別される700.16を参照)。ステップ700.13では、コントローラロジック205が、サービスを接続するために必要とされるネットワーキングリソース及び相互接続を構成する。サービスまたはアプリケーションが複数のサイトにわたって配備される場合、メタテンプレートは、サイト全体でのデータ同期及び相互運用性を可能にするテンプレートから任意選択的に構成されるサービスを含んでもよい(または、コントローラロジック205が、それらを構成してもよい)(700.15参照)。
ステップ700.16では、コントローラロジック205が、システムルール、メタテンプレートデータ、及びリソース利用可能性から、冗長なサービスの数を決定してもよい(冗長なサービスが複数のホスト上にある場合)700.17では、他の冗長なサービスと連結し、マスタと連結している。複数の冗長なホストがある場合、テンプレート内のコントローラロジック205またはロジック(バイナリ234、デーモン232、またはオペレーティングシステムにおける設定を指示する構成ファイルを含んでもよいファイルシステムblob)が、ネットワークアドレス及びホスト名の競合を防ぐことができる。任意選択的に、コントローラロジックは、ネットワークアドレス(700.18参照)を提供し、DNS(700.19)及びシステム状態220(700.18)に各冗長なサービスを登録する。システム状態220は、冗長なサービスをトラッキングし、コントローラロジック205は、ホスト名、dns名などの競合するパラメータを有する冗長なサービスに気付いた場合、重複した登録を許可せず、ネットワークアドレスはすでにシステム状態220にある。
図7Dによって示される構成ルーチンは、メタテンプレートのテンプレート(複数可)を処理する。構成ルーチンは、すべての冗長なサービスを処理し、マルチホストまたはクラスタ化サービスを複数のホストに配備し、ホストを連結するサービスを配備する。システムルールからITシステムを配備することができる任意のプロセスが、構成ルーチンを実行することができる。マルチホストサービスの場合、例示的なルーチンは、700.32のようにサービステンプレートを処理し、700.33のようにストレージリソースをプロビジョニングし、700.35のようにホストの電源をオンにし、700.36のようにホスト/コンピューティングリソースをストレージリソースと連結(かつ、システム状態220に登録)してもよい(次いで、冗長なサービスの数だけ繰り返す(700.38))。毎回、システム状態220に登録し(700.20参照)、コントローラロジックを使用して、個別のサービスをトラッキングして、競合を防ぐ情報を記録する(700.31参照)。
サービステンプレートのいくつかは、マルチホストサービスを連結させることができるサービス及びツールを含んでもよい。これらのサービスのいくつかは、依存関係として扱われてもよく(700.39)、次いで、700.40の連結ルーチンが、サービスの連結、及びシステム状態220への連結の登録に使用されてもよい。さらに、サービステンプレートの1つは、マスタテンプレートであってもよく、その場合、700.39の従属サービステンプレートは、スレーブまたは二次サービスであり、700.40の連結ルーチンは、それらを接続する。ルーチンは、メタテンプレートで定義することができる。たとえば、冗長なdns構成のために、700.40の連結ルーチンは、マスタdnsへのスレーブdnsの接続、及び、dnssecとのゾーン転送の構成を含んでもよい。いくつかのサービスは、性能を改善するために、物理ストレージ(700.34参照)を使用してもよく、それは、図5Bで開示された予備OSがロードされてもよい。連結サービスのためのツールは、テンプレート自体に含まれていてもよく、サービス間の構成は、マルチノードアプリケーション/サービスにおいてコントローラ及び/または他のホストでアクセスできるAPIによって行われてもよい。
コントローラ200により、ユーザまたはコントローラは、アプリケーションのために使用する適切な計算バックエンドを決定することができてもよい。コントローラ200により、ユーザまたはコントローラは、リソースの使用状況を判定することによって、適切な物理または仮想コンピューティングリソースにアプリケーションを最適に配置することができてもよい。ハイパーバイザまたは他の計算バックエンドが計算ノードに配備されるとき、それらは、インバンド管理接続270を通して、コントローラリソース使用統計を折り返し報告してもよい。コントローラが、その独自のロジック及びグローバルシステムルール、または、ユーザ入力のいずれかから、仮想コンピューティングリソース上のアプリケーションを作成することに決めたとき、それは、最も適したホスト上のハイパーバイザを自動的に選択して、そのホスト上の仮想コンピューティングリソースの電源をオンにしてもよい。
たとえば、コントローラ200は、テンプレート(複数可)230を使用して、1つまたは複数のコンピューティングリソースにアプリケーションまたはサービスを配備する。そのようなアプリケーションまたはサービスは、たとえば、アプリケーションまたはサービスを実行する仮想マシンであってもよい。ある例において、図7Aは、複数の計算ノード上への複数の仮想マシン(VM)の配備を示し、示されるコントローラ200は、複数のコンピューティングリソース310が計算ノード311、312、313の形態でそのコンピューティングリソースプールにあることを認識することができる。計算ノードは、たとえば、ハイパーバイザが配備されてもよく、または、代わりに、仮想マシンの使用が速度のために好ましくないことがあるベアメタル上にあってもよい。この例において、コンピューティングリソース310は、ハイパーバイザアプリケーションがロードされて、計算ノード311上に構成及び配備されたVM(1)321及びVM(2)322を有する。たとえば、計算ノード311が、追加のVMのためのリソースを有しない場合、または、特定のサービスのために、他のリソースが好ましい場合、コントローラ200は、スタック状態220に基づいて、利用可能なリソースが計算ノード311上にないこと、または、異なるリソースで新しいVMを準備することが好ましいことを認識してもよい。ハイパーバイザがコンピューティングリソース312上にロードされ、たとえば、他の目的のために使用されるベアメタル計算ノードであることがあるリソース313上にロードされないことも認識されてもよい。よって、インストールされているサービスまたはアプリケーションテンプレートの要求、及びシステム状態220のステータスに従って、本例のコントローラは、次に必要とされるリソースVM(3)323の配備のための計算ノード313を選択してもよい。
システムのコンピューティングリソースは、ストレージノードのためにストレージリソース上でストレージを共有するように構成されてもよい。
ユーザは、ユーザインタフェース110またはアプリケーションを通して、サービスがシステム100のためにセットアップされることを要求してもよい。サービスは、電子メールサービス、ウェブサービス、ユーザ管理サービス、ネットワークプロバイダ、LDAP、Devツール、VOIP、認証ツール、会計を含んでもよいが、これらに限定されるものではない。
APIアプリケーション120は、ユーザまたはアプリケーションの要求を変換し、メッセージをコントローラ200に送信する。コントローラ200のサービステンプレートまたはイメージ230は、どのリソースがサービスのために必要とされるかを識別するために使用される。次いで、使用されるリソースは、ITシステム状態220による利用可能性基づいて識別される。コントローラ200は、必要とされる計算サービスのための計算ノード311、312、または313のうちの1つまたは複数に対する要求、必要とされるストレージリソースのためのストレージリソース410に対する要求、及び、必要とされるネットワーキングリソースのためのネットワークリソース610に対する要求を行う。次いで、ITシステム状態220は更新され、割り当てられるリソースを識別する。次いで、サービスは、サービスまたはアプリケーションのためのテンプレート230に従って、グローバルシステムルール210を使用して割り当てられたリソースにインストールされる。
例示的な実施形態によると、複数の計算ノードは、同じサービスまたは異なるサービスのためかどうかにかかわらず使用されてもよく、一方、たとえば、ストレージサービス及び/またはネットワークプロバイダプールは、計算ノード間で共有されてもよい。
図8Aを参照すると、システム100が示されており、コントローラ200、ならびに、コンピューティングリソース300、ストレージリソース400、及びネットワーキングリソース600が、単一のノードなどの、同じまたは共有物理ハードウェア上にある。図1〜10に示されて記載されるさまざまな特徴は、単一のノードに組み込まれてもよい。ノードの電源がオンにされたとき、コントローライメージはノード上にロードされる。コンピューティングリソース300、ストレージリソース400、及びネットワーキングリソース600は、テンプレート230によって、グローバルシステムルール210を使用して構成される。コントローラ200は、コンピューティングリソースとして計算バックエンド318、319をロードするように構成されてもよく、それは、ノードまたは異なるノード(複数可)上に追加されてもよく、または、追加されなくてもよい。このようなバックエンド318、319は、仮想コンピューティングリソース、ネットワーキングリソース、及びストレージリソースを作成するために、仮想化、コンテナ、及びマルチテナントプロセスを含んでもよいが、これらに限定されるものではない。
アプリケーションまたはサービス725、たとえば、ウェブ、電子メール、コアネットワークサービス(DHCP、DNSなど)、共同ツールは、コントローラ200と共有されたノード/デバイス上の仮想リソース上にインストールされてもよい。これらのアプリケーションまたはサービスは、コントローラ200から独立している物理リソースまたは仮想リソースの方へ移動されてもよい。アプリケーションは、単一のノード上の仮想マシン上で実行されてもよい。
図8Bは、単一のノードから、(たとえば、図8Aに示されるようなノード318及び/または319による)複数のノードシステムにシステムを拡張するための例示的なプロセスフローを示す。そこで、図8A及び8Bを参照すると、単一のサーバ上で実行しているコントローラ200を有するITシステムを考えることができ、ITシステムをマルチノードITシステムとし拡張することが望ましい。よって、拡張前、ITシステムは単一ノード状態にある。図8Aで示されるように、コントローラ200は、ストレージリソース、コンピューティングリソース、ハイパーバイザ、及び/またはコンテナホストを含んでもよいが、それらに限定されないさまざまなITシステム管理アプリケーション及び/またはリソースを動かすために、マルチテナント単一ノードシステム上で実行される。
ステップ800.2では、新しい物理リソースが、新しい物理リソースをアウトオブバンド管理接続260、インバンド管理接続270、SAN280、及び/またはネットワーク290通して接続することによって、単一のノードシステムに連結される。本例については、この新しい物理リソースも、ハードウェアまたはホストと呼ぶことができる。コントローラ200は、マネージメントネットワーク上で新しいリソースを検出してもよく、次いで、デバイスに問い合わせてもよい。あるいは、新しいデバイスは、自身をコントローラ200に知らせるメッセージをブロードキャストしてもよい。たとえば、新しいデバイスは、MACアドレス、アウトオブバンド管理、ならびに/または、予備OSのブート及びインバンド管理の使用及びそれによるハードウェアタイプの識別によって識別することができる。いずれにしても、ステップ800.3では、新しいデバイスは、そのノードタイプ及びその現在利用可能なハードウェアリソース及びソフトウェアリソースに関する情報をコントローラに提供する。次いで、コントローラ200は、新しいデバイス及びその機能を認識する。
ステップ800.4では、コントローラ200を実行するシステムに割り振られるタスクが、新しいホストに割り当てられてもよい。たとえば、ホストに、オペレーティングシステム(ストレージホストオペレーティングシステムまたはハイパーバイザなど)がプリロードされる場合、コントローラ200は、新しいハードウェアリソース及び/または機能を割り当てる。次いで、コントローラは、イメージを提供して、新しいハードウェアをプロビジョニングしてもよい、または、新しいハードウェアはコントローラからイメージを要求してもよく、上でかつ下で開示される方法を使用して自身を構成してもよい。新しいホストがストレージリソースまたは仮想コンピューティングリソースをホストすることができる場合、新しいリソースは、コントローラ200に利用可能とすることができる。次いで、コントローラ200は、既存のアプリケーションを新しいリソースに移動及び/もしくは割り当てしてもよく、または、新たに作成されたアプリケーションまたはその後作成されるアプリケーションのために新しいリソースを使用してもよい。
ステップ800.5では、ITシステムが、コントローラ上で実行しているその現在のアプリケーションを保持してもよく、または、それらを新しいハードウェアに移行してもよい。仮想コンピューティングリソースを移行する場合、VM移行技術(たとえば、qemu+kvmの移行ツール)が使用されてもよく、新しいシステムルールとともにシステム状態を更新する。以下で論じられる変更管理技術は、これらの変更を確実かつ安全に行うために使用することができる。より多くのアプリケーションがシステムに追加されてもよいので、コントローラは、システムのリソースを割り当てる方法を決定するためのさまざまな技術の任意のものを使用してもよく、それらの技術は、ラウンドロビン技術、重み付きラウンドロビン技術、最少利用技術、重み付き最少利用技術、利用に基づくアシストトレーニングによる予測技術、計画技術、所望能力技術、及び、最大サイズ技術を含むがこれらに限定されない。
図8Cは、ストレージリソースの新しい物理ストレージリソースへの移行のための例示的なプロセスフローを示す。次いで、ストレージリソースは、ミラーリングされてもよく、移行されてもよく、またはその組合せであってもよい(たとえば、ストレージはミラーリングされてもよく、次いで、元のストレージリソースは切断される)。ステップ820では、ストレージリソースは、コントローラに連絡している、または、コントローラにそれを発見させる新しいストレージリソースのいずれかによってシステムに連結される。これは、アウトオブバンド管理接続260、インバンド管理接続270、SANネットワーク280で行うことができ、または、フラットネットワークでは、アプリケーションネットワークは、その組合せを使用していてもよい。インバンド管理によって、オペレーティングシステムはプリブートされてもよく、新しいリソースはコントローラに接続してもよい。
ステップ822では、新しいストレージターゲットが、新しいストレージリソース上に作成され、これは、ステップ824でデータベースに記録することができる。ある例において、ストレージターゲットは、ファイルをコピーすることによって作成されてもよい。別の例において、ストレージターゲットは、ブロックデバイスを作成して、(ファイルシステムblob(複数可)の形態であってもよい)データをコピーすることによって作成されてもよい。別の例において、ブロックデバイス間に2つ以上のストレージリソースをミラーリング(たとえば、RAIDを作成)し、任意選択的に、iscsi、iser、nvmeof、nfs、nfs over rdma、fc、fcoe、srpなどを含むがこれらに限定されないリモートストレージトランスポート(複数可)を通して接続することによって、ストレージターゲットは作成されてもよい。ステップ824でのデータベースへのエントリは、ストレージリソースが他のリソースまたはホストと同じデバイス上にある場合、リモートまたはローカルで新しいストレージリソースに接続するために、コンピューティングリソース(または、他のタイプのリソース及び/またはホスト)のための情報を含んでもよい。
ステップ826では、ストレージリソースが同期される。たとえば、ストレージはミラーリングすることができる。別の例として、ストレージはオフラインで同期することができる。raid1(または、他のタイプのraid、通常、raid1またはraid0、しかし、必要に応じて、raid110であってもよい(ミラーリングされたraid10))などの技術(mdadm、zfs、btrfs、ハードウェアraid)が、ステップ826で採用されてもよい。
次いで、古いストレージリソースからのデータは、ステップ828でのデータベースログインの後、任意選択的に接続される(それが後で行われるときは、そのようなデータを記録しなければならない場合、データベースはデータをコピーするステータスに関連する情報を含んでもよい)。ストレージターゲットが前のホストから離れて移行されている(たとえば、以前に示されたように、図8A及び8Bの通り、単一のノードシステムから、マルチノード及び/または分散ITシステムへ移動する)場合、新しいストレージリソースは、ステップ830において、コントローラ、システム状態、コンピューティングリソース、またはそれらの組合せによって、一次ストレージリソースと呼ばれてもよい。これは、古いストレージリソースを削除するステップとして行われてもよい。場合によっては、次に、リソースに接続される物理または仮想ホストを更新する必要があり、場合によっては、ステップ832において、移行中、電源をオフにしてもよい(次いで、電源をオンに戻してもよい)(物理または仮想ホストの電源をオンにするための本明細書で開示された技術を使用することができる)。
図8Dは、マルチテナントシステムの単一ノード上の仮想マシン、コンテナ、及び/またはプロセスを、計算及びストレージのための別々のハードウェアを有してもよいマルチノードシステムに移行するための例示的なプロセスフローを示す。ステップ850では、コントローラ200は、新しいノード上にあってもよい新しいストレージリソースを作成する(たとえば、図8Aのノード318及び319参照)。次に、ステップ852では、古いアプリケーションホストは電源をオフにされてもよい。次いで、ステップ854では、データは、コピーまたは同期される。ステップ854でのコピー/同期前に、ステップ852で電源を落とすことによって、移行が単一ノードからのVMの移行を含む場合に、移行はより安全であろう。電源オフは、VMから物理マシンへの移動にとっても有益であろう。ステップ854は、データ事前同期ステップ862を介して電源を落とす前に実現されてもよく、それは、関連するダウンタイムを最小限に抑えることができる。さらに、ホストは、ステップ852と同様に電源を落とさなくてもよく、その場合、新しいホストの準備ができる(または、新しいストレージリソースの準備ができる)まで、古いホストはオンラインのままである。電源オフステップ852を回避するための技術は、後でさらに詳細に論じられる。ステップ854では、ストレージリソースがホットスタンバイを使用してミラーリングまたは同期されない限り、データは任意選択的に同期することができる。
ここで、新しいストレージリソースは、稼働中であり、ステップ856でデータベースにログインされてもよく、そのため、コントローラ200は、ステップ858で、新しいホストを新しいストレージリソースに接続することができる。複数の仮想ホストによって単一のノードから移行されるとき、このプロセスは、複数のホストに対して繰り返される必要があることがある(ステップ860)。それらがトラッキングされる場合、ブートの順番は、アプリケーションの依存関係を使用して、コントローラロジックによって決定されてもよい。
図8Eは、システムにおける単一ノードから複数ノードへの拡張のための別の例示的なプロセスフローを示す。ステップ870では、新しいリソースが単一のノードシステムに連結される。コントローラは、システムのためのシステムルール及び/または拡張ルールの組を有してもよい(または、それは、サービス実行、それらのテンプレート、及びサービスの互いへの依存に基づく拡張ルールを得てもよい)。ステップ872では、コントローラは、拡張を容易にするために使用されるそのようなルールをチェックする。
新しい物理リソースがストレージリソースを含む場合、ストレージリソースは、ステップ874において、より単純なITシステムの単一ノードまたは他の形態から移動されてもよい(または、ストレージリソースがミラーリングされてもよい)。ストレージリソースが移動される場合、ストレージリソースが移動された後、コンピューティングリソースまたは実行中のリソースは、ステップ876においてリロードされてもよく、またはリブートされてもよい。別の例において、コンピューティングリソースは、ステップ876において、ミラーリングされたストレージリソースに接続されてもよく、実行しているままでもよい、一方、単一ノードシステム上の古いストレージリソースまたは前のシステムのハードウェアリソースは、切断されてもよく、または、無効にされてもよい。たとえば、実行中のサービスは、2つのミラーリングされたブロックデバイスに連結されてもよく(一方は単一ノードサーバ上(たとえば、mdadm raid1を使用)、及び他方はストレージリソース上)、次いで、データが同期されると、単一ノードサーバ上のドライブは切断されてもよい。前のハードウェアは、ITシステムの一部を含んだままでもよく、混合モード(ステップ878)におけるコントローラとして、同じノード上でそれを実行してもよい。元のノードがコントローラを動かすのみになるまで、システムはこの移行プロセスを繰り返し続けてもよく、そこで、システムは分散される(ステップ880)。さらにまた、図8Eのプロセスフローのステップのそれぞれにおいて、コントローラは、システム状態220を更新することができ、データベースにシステムに対する変更を記録することができる(ステップ882)。
図9Aを参照すると、アプリケーション910は、リソース900上にインストールされる。リソース900は、本明細書に記載されるような図1〜10に関する計算リソース310、ストレージリソース410、またはネットワーキングリソース610であってもよい。リソース900は物理リソースであってもよい。物理リソースは、物理マシンまたは物理ITシステムコンポーネントを備えてもよい。リソース900は、たとえば、物理計算リソース、物理ストレージリソース、または物理ネットワーキングリソースであってもよい。リソース900は、本明細書の図2A〜10に関して記載されるような計算リソース、ネットワーキングリソース、またはストレージリソースの他のリソースによって、システム100のコントローラ200に連結されてもよい。
リソース900は、初めは電源が落とされていてもよい。リソース900は、ネットワーク、つまり、アウトオブバンド管理接続260、インバンド管理接続270、SAN280、及び/またはネットワーク290を介してコントローラに連結されてもよい。リソース900はまた、サービス、アプリケーションユーザ、及び/またはクライアントが互いに通信することができる1つまたは複数のアプリケーションネットワーク390に連結されてもよい。アウトオブバンド管理接続260は、リソース900が接続されたときにオンになるリソース900の独立したアウトオブバンド管理デバイス915または回路に連結されてもよい。デバイスは、デバイスの電源オン/オフ、コンソールへのアタッチ及びコマンドの打ち込み、温度及び他のコンピュータ健全性関連要素の監視、ならびに、BIOS設定195及びオペレーティングシステムからのスコープ外の他の特徴の設定を含むがこれらに限定されない特徴を可能にしてもよい。
コントローラ200は、アウトオブバンド管理ネットワーク260を通してリソース900を検出してもよい。それは、リソースのタイプを識別してもよく、そして、インバンド管理またはアウトオブバンド管理を使用してその構成を識別してもよい。コントローラロジック205は、追加のハードウェアのために、アウトオブバンド管理260またはインバンド管理270を調べるように構成されてもよい。リソース900が検出された場合、コントローラロジック205は、リソース900が自動的にまたはユーザとの対話によって構成されるかどうか判定するために、グローバルシステムルール220を使用してもよい。リソース900が自動的に追加された場合、セットアップは、コントローラ200内のグローバルシステムルール210に従う。リソース900がユーザによって追加された場合、コントローラ200内のグローバルシステムルール210は、リソースの追加及びユーザがコンピューティングリソースで行いたいことを確認するようにユーザに尋ねてもよい。コントローラ200は、新しいリソースが許可されたことの確認のために、APIアプリケーションに問い合わせてもよく、あるいは、その他の場合には、ユーザまたはスタックを制御する任意のプログラムに要求してもよい。許可プロセスはまた、新しいリソースの妥当性を確認するために、暗号を使用して、自動的かつ確実に完了させてもよい。次いで、リソース900は、リソース900が接続されるスイッチまたはネットワークを含むITシステム状態220に追加される。
コントローラ200は、アウトオブバンド管理ネットワーク260を通して、リソースの電源をオンにしてもよい。コントローラ200は、物理リソースの電源をオンにし、BIOS195を構成するために、アウトオブバンド管理接続260を使用してもよい。コントローラ200は、自動的に、コンソール190を使用してもよく、所望のBIOSオプションを選択してもよく、それは、コントローラ200が、画像認識でコンソールイメージを読み取り、アウトオブバンド管理を通してコンソール190を制御することによって実現されてもよい。ブートアップ状態は、リソース900のコンソールを通した画像認識、仮想キーボードによるアウトオブバンド管理、リソースを利用しているサービスを問い合わせること、または、アプリケーション910のサービスを問い合わせることによって判定されてもよい。いくつかのアプリケーションは、コントローラ200が、監視する、または、場合によっては、インバンド管理270を使用してアプリケーション910の設定を変更することを可能にするプロセスを有してもよい。
物理リソース900上の(または、本明細書の図1〜10に関して記載されるようなリソース300、310、311、312、313、400、410、411、412、600、610の)アプリケーション910は、BIOSブートオプション、または、PXEブートもしくはFlexブートを可能にすることなどのリモートブートを構成する他の方法を使用して、SAN280または別のネットワークを介してブートしてもよい。さらに、または、あるいは、コントローラ200は、物理リソース900にイメージ950のアプリケーションイメージをブートするように指示するために、アウトオブバンド管理260及び/またはインバンド管理接続270を使用してもよい。コントローラは、リソース上のブートオプションを構成してもよく、または、PXEブートまたはFlexブートなどの既存の使用可能リモートブート方法を使用してもよい。コントローラ200は、ISOイメージからブートし、ローカルディスクを構成し、次いで、ローカルディスク(複数可)920からのブートをリソースに指示するために、アウトオブバンド管理260を任意選択的にまたは代替的に使用してもよい。ローカルディスク(複数可)は、ブートファイルをロードされてもよい。これは、アウトオブバンド管理260、画像認識、及び仮想キーボードを使用することによって実現されてもよい。リソースは、ブートファイル及び/またはブートローダもインストールされてもよい。リソース900及びアプリケーションは、グローバルシステムルール210及びコントローラロジック205を使用して、たとえば、SAN280を介して、テンプレート230からロードされたイメージ950をからブートしてもよい。グローバルシステムルール220は、ブートの順番を指定してもよい。たとえば、グローバルシステムルール220は、最初にリソース900をブートし、次いでアプリケーション910をブートすることを要求してもよい。イメージ950を使用してリソース900がブートされると、リソース900に関するインバンド管理接続270を通して受信された情報は、ITシステム状態220に収集及び追加されてもよい。リソース900は、ストレージリソースプールに追加されてもよく、それは、コントローラ200によって管理されて、ITシステム状態220においてトラッキングされるリソースになる。アプリケーション910は、イメージ950またはリソース900上にロードされたアプリケーションイメージ956を使用して、グローバルシステムルール220で指定された順番でブートされてもよい。
コントローラ200は、アウトオブバンド管理接続260または別の接続によって、アプリケーション910をアプリケーションネットワーク390に接続するネットワーキングリソース610を構成してもよい。物理リソース900は、ISER(ISCSI over RDMA)、NVMEOF FCOE、FC、もしくはISCSIを含むがこれらに限定されないブロックストレージリソースなどのリモートストレージ、または、SWIFT、GFUSTER、もしくはCEPHFSなどの別のストレージバックエンドに接続されてもよい。サービスまたはアプリケーションが稼働可能であるとき、ITシステム状態220は、アウトオブバンド管理接続260及び/またはインバンド管理接続270を使用して更新されてもよい。コントローラ200は、物理リソース900の電源状態、すなわち、オンかオフかを判定するために、アウトオブバンド管理接続260またはインバンド管理接続270を使用してもよい。コントローラ200は、サービスまたはアプリケーションが実行中またはブートアップ状態であるかどうかを判定するために、アウトオブバンド管理接続260またはインバンド管理接続270を使用してもよい。コントローラは、それが受信する情報及びグローバルシステムルール210に基づいて、他の機能を実行してもよい。
図9Bは、アプリケーション910をブートするために、テンプレート230から計算ノードに(たとえば、別のリソースまたはデータベースを介して)直接的または間接的にロードされるイメージ950を示す。イメージ950は、アプリケーション910のためのカスタムカーネル941を備えてもよい。
イメージ950は、リソースタイプ及びハードウェアのためのブートファイル940を備えてもよい。ブートファイル940は、配備されるリソース、アプリケーション、またはサービスに対応するカーネル941を備えてもよい。ブートファイル940は、ブートプロセスを支援するために使用されるinitrdまたは類似のファイルシステムを備えてもよい。ブートシステム940は、異なるハードウェアタイプ及びリソースタイプのために構成される複数のカーネルまたはinitrdを備えてもよい。さらに、イメージ450は、ファイルシステム951を備えてもよい。ファイルシステム951は、ベースイメージ952及び対応するファイルシステムと、サービスイメージ953及び対応するファイルシステムと、揮発性イメージ954及び対応するファイルシステムとを備えてもよい。ロードされるファイルシステム及びデータは、リソースタイプ及びアプリケーション、または実行するサービスに応じて変えてもよい。ベースイメージ952は、ベースオペレーティングシステムファイルシステムを備えてもよい。ベースオペレーティングシステムは、読み取り専用であってもよい。ベースイメージ952はまた、実行されているものから独立しているオペレーティングシステムの基本ツールを備えてもよい。ベースイメージ952は、ベースディレクトリ及びオペレーティングシステムツールを含んでもよい。サービスファイルシステム953は、リソース、アプリケーション、またはサービスのための構成ファイル及び仕様を含んでもよい。揮発性ファイルシステム594は、バイナリアプリケーション、特有アドレス、及び他の情報などの、その配備に固有の情報またはデータを含んでもよく、それは、パスワード、セッションキー、及びプライベートキーを含むがこれらに限定されない変数として構成されてもよく、または、構成されなくてもよい。ファイルシステムは、overlayFSなどの技術を使用する1つの単一のファイルシステムとしてマウントされて、いくつかの読み取り専用及びいくつかの読み書きファイルシステムが、アプリケーションのために使用される重複データの量を減少させることを可能にしてもよい。
図9Cは、テンプレート230の1つのタイプとすることができるNTパッケージからアプリケーションをインストールする例を示す。ステップ900.1では、コントローラは、パッケージblobがインストールされる必要があることを判定する。ステップ900.2では、コントローラは、blobタイプ(ブロック、ファイル、ファイルシステム)に対して、デフォルトデータストア上にストレージリソースを作成する。ステップ900.3では、コントローラは、ストレージリソースタイプに対して利用可能なストレージトランスポートを介してストレージリソースに接続する。ステップ900.4では、コントローラは、パッケージblobを接続されたストレージリソースへコピーする。次いで、コントローラは、ストレージリソースから切断し(ステップ900.5)、ストレージリソースを読み取り専用に設定する(ステップ900.6)。次いで、パッケージblobは正常にインストールされる(ステップ900.7)。
別の例において、付属書類Bは、システムがコンピューティングリソースをoverlayfsに接続する方法に関する例示的な詳細を記載する。このような技術は、図9Aに従ってリソース上にアプリケーションをインストールすること、または、図2Fのステップ205.11に従ってストレージリソースからコンピューティングリソースを起動することを容易にするのに使用することができる。
図9Dは、リソース900上に配備されるアプリケーション910を示す。リソース900は、仮想コンピューティングリソースを備えてもよい、たとえば、ハイパーバイザ920、1つもしくは複数の仮想マシン921、922、及び/またはコンテナを備えてもよい計算ノードを備えてもよい。リソース900は、リソース900上にロードされたイメージ950を使用して、図1〜図10に関して本明細書に記載されるのと類似の方法で構成されてもよい。この例において、リソース920は、仮想マシン921、922を管理するハイパーバイザとして示される。コントローラ200は、インバンド管理270を使用して、リソースを作成するハイパーバイザ920をホストするリソース900と通信し、リソースを構成して、CPU、RAM、GPU、(別のホストにリモート接続するためにRDMAを使用してもよい)リモートGPU、ネットワーク接続、ネットワークファブリック接続、ならびに/または、パーティショニングされたかつ/もしくはセグメント化されたネットワークへの仮想及び物理接続を含むがこれらに限定されない適切なハードウェアリソースを割り当ててもよい。コントローラ200は、リソース900及びハイパーバイザ920を制御するために、仮想コンソール190(たとえば、SPICEまたはVNCを含むがこれらに限定されない)及び画像認識を使用してもよい。追加的にまたは代替的に、コントローラ200は、グローバルシステムルール210を使用して、ハイパーバイザ920にテンプレート230からのアプリケーションイメージ950をブートするように指示するために、アウトオブバンド管理260またはインバンド管理接続270を使用してもよい。イメージ950は、コントローラ200上に記憶されてもよく、または、コントローラ200は、それらをストレージリソース410に移動またはコピーしてもよい。VM921、922のためのブートイメージは、たとえば、イメージ950、またはブロックデバイスもしくはリモートホストのファイルとしてローカルに記憶されてもよく、そして、たとえば、qcow2またはrawなどのイメージタイプを使用するNFS over RDMA/NFSなどのファイル共有によって共有されてもよく、または、それは、ISCSI、ISER、NVMEOF、FC、FCOEを使用するリモートブロックデバイスを使用してもよい。イメージ950の一部は、ストレージリソース410または計算ノード310上で記憶されてもよい。コントローラ200は、グローバルルール及び/またはテンプレートを使用して、アウトオブバンド管理接続260または別の接続によって、アプリケーションを適切にサポートするネットワーキングリソース610を構成してもよい。リソース900の上のアプリケーション910は、BIOSブートオプションを使用してSAN280もしくは別のネットワークによってロードされたイメージ950を使用すること、または、リソース900上のハイパーバイザ920が、ISER(ISCSI over RDMA)、NVMEOF FCOE、FC、もしくはISCSIを含むがこれらに限定されないブロックストレージリソース、もしくは、SWIFT、GFUSTER、もしくはCEPHFSなどの別のストレージバックエンドに接続することを可能にすることを介してブートしてもよい。ストレージリソースは、ストレージリソース上のテンプレートターゲットからコピーされてもよい。ITシステム状態220は、情報のためにハイパーバイザ920に問い合わせることによって更新されてもよい。インバンド管理接続270は、ハイパーバイザ920と通信してもよく、リソースの電源状態、すなわち、オンかオフかを判定するために、または、ブートアップ状態を判定するために、使用されてもよい。ハイパーバイザ920は、仮想化されたアプリケーション910への仮想インバンド接続923を使用してもよく、アウトオブバンド管理に類似した機能のためにハイパーバイザ920を使用してもよい。この情報は、電源が入れられているまたはブートされているために、サービスまたはアプリケーションが稼働可能かどうかを示してもよい。
ブートアップ状態は、リソース900のコンソール190を通した画像認識、仮想キーボードによるアウトオブバンド管理260、リソースを利用しているサービスを問い合わせること、または、アプリケーション910自体のサービスを問い合わせることによって判定されてもよい。いくつかのアプリケーションは、コントローラ200が、監視する、または、場合によっては、インバンド管理270を使用してアプリケーション910の設定を変更することを可能にするプロセスを有してもよい。いくつかのアプリケーションは仮想リソース上にあってもよく、コントローラ200は、インバンド管理270(または、アウトオブバンド管理260)を使用して、ハイパーバイザ920と通信することによって監視してもよい。アプリケーション910は、入力の監視及び/または追加のためのこのようなプロセス(または、リソースを保存するために切り換えられてもよいこのようなプロセス)を有していなくてもよい。そのような場合、コントローラ200は、アウトオブバンド管理接続260を使用してもよく、変更及び/または管理プロセス上での切り換えを行うために、画像処理及び/またはシステムにログオンする仮想キーボードを使用してもよい。仮想コンピューティングリソースと同様に、仮想マシンコンソール190が使用されてもよい。
図9Eは、仮想コンピューティングリソースホストをITシステム100に追加するための例示的なプロセスフローを示す。ステップ900.11では、仮想コンピューティングリソースとして使用可能であるホストが、システムに追加される。コントローラは、図15Bのプロセスフローに従ってベアメタルサーバを構成してもよい(ステップ900.12)。または、オペレーティングシステムはプリロードされてもよく、かつ/もしくは、ホストは事前に構成されてもよい(ステップ900.13)。次いで、リソースは、仮想コンピューティングリソースプールとしてシステム状態220に追加され(ステップ900.14)、リソースは、コントローラ200からのAPIによってアクセスできるようになる(ステップ900.15)。APIは通常、インバンド管理接続270を通してアクセスされる。しかしながら、インバンド管理接続270は、仮想キーボードで選択的に有効及び/または無効にされてもよい。そして、コントローラは、アウトオブバンド接続260を通して通信するために、アウトオブバンド管理接続260ならびに仮想キーボード及びモニタを使用してもよい(ステップ900.16)。ここで、ステップ900.17では、コントローラは、仮想コンピューティングリソースとして新しいリソースを利用することができる。
例示的なマルチコントローラシステム
図10を参照すると、複数の物理計算ノード311、312、313を備える、本明細書で図1〜10に関して記載されるコンピューティングリソース300、310と、複数のストレージノード411、412及びJBOD413の形態で本明細書に記載されるストレージリソース400、410と、コンポーネント205、210、220、230(図1〜9C)を含み、本明細書に記載されるコントローラ200として構成される複数のコントローラ200a、200bと、複数のファブリック611、612、613を含み、本明細書に記載されるネットワーキングリソース600、610と、アプリケーションネットワーク390とを有するシステム100が示されている。
図10は、例示的な実施形態のシステム100のコンポーネントの可能な構成を示しているが、システム100のコンポーネントの可能な構成を限定するものではない。
ユーザインターフェースまたはアプリケーション110は、コントローラ200aまたは200bのいずれかまたは両方と通信するAPIアプリケーション120と通信する。コントローラ200a、200bは、アウトオブバンド管理接続260、インバンド管理接続270、SAN280またはネットワークインバンド管理接続290に結合してよい。本明細書の図1〜図9Cを参照して説明するように、コントローラ200a、200bは、計算ノード311、312、313、JBOD413を含むストレージ411、412及びネットワーキングリソース610に接続260、270、280及び任意には290を介して結合される。アプリケーションネットワーク390は、計算ノード311、312、313、ストレージリソース411、412、413及びネットワーキングリソース610に結合される。
コントローラ200a、200bは、並列して動作してよい。コントローラ200aまたは200bのいずれかは、本明細書の図1から図9Cに関して説明されるように、最初はマスタコントローラ200として動作してよい。コントローラ200a、200b(複数可)は、システム100全体を電源オフ状態から構成するように構成されてよい。コントローラ200a、200bのうちの1つはさらに、アウトオブバンド及びインバンド接続260、270のいずれかを通じて他のコントローラを探索することによって、既存の構成からシステム状態220を生成することができる。コントローラ200a、200bのいずれかが、1つまたは複数の接続260、270を通じてリソースまたは他のコントローラからリソースステータス及び関連情報にアクセスするか、またはこれらを受信してよい。コントローラまたは他のリソースは他のコントローラを更新してよい。したがって、追加のコントローラがシステムに追加されると、このコントローラはシステム100をシステム状態220に戻すように構成されてよい。コントローラのうちの1つまたはマスタコントローラに障害が発生した場合、他のコントローラをマスタコントローラとして指定してよい。ITシステム状態220はさらに、利用可能またはリソース上に格納されたステータス情報から再構築可能であってよい。例えば、アプリケーションは、システム状態が格納または複製される仮想コンピューティングリソースを作成するようにアプリケーションが構成されているコンピューティングリソース上に配備されてよい。グローバルシステムルール210、システム状態220及びテンプレート230はさらに、リソースまたはリソースの組み合わせに保存またはコピーされてよい。したがって、全てのコントローラがオフラインになり、新しいコントローラが追加された場合、新しいコントローラがシステム状態220を回復できるようにシステムを構成してよい。
ネットワーキングリソース610は、複数のネットワークファブリックを備えてよい。例えば、図10に示すように、複数のネットワークファブリックには、SDNイーサネットスイッチ611、ROCEスイッチ612、Infinibandスイッチ613もしくは他のスイッチまたはファブリック614のうち1つまたは複数が含まれ得る。ハイパーバイザは、必要なファブリックのうちの1つまたは複数を利用して、物理スイッチまたは仮想スイッチに接続し得る計算ノード上に仮想マシンを備える。ネットワーク構成は、例えば、セキュリティまたは他のリソース最適化のために、例えば、セグメント化されたネットワークを通じて物理ネットワークの制限を許可してよい。
本明細書の図1〜図10に説明されているコントローラ200を通じたシステム100は、サービスまたはアプリケーションを自動的にセットアップしてよい。ユーザは、ユーザインターフェース110またはアプリケーションを通じて、システム100のためにサービスをセットアップするよう要求してよい。サービスは、電子メールサービス、Webサービス、ユーザ管理サービス、ネットワークプロバイダ、LDAP、開発者ツール、VOIP、認証ツール、会計ソフトウェアを含んでよいが、これらに限定されない。APIアプリケーション120は、ユーザまたはアプリケーション要求を変換し、メッセージをコントローラ200に送信する。コントローラ200のサービステンプレートまたはイメージ230は、サービスに必要なリソースを識別するために使用される。必要なリソースは、システム状態220に応じた利用可能性に基づいて識別される。コントローラ200は、必要な計算サービスのために、コンピューティングリソース310または計算ノード311、312または313に要求を出し、必要なストレージリソースのためにストレージリソース410に要求を出し、必要なネットワーキングリソースのためにネットワーキングリソース610に要求を出す。次に、システム状態220が更新され、割り当てられることになるリソースが識別される。次に、サービステンプレートに従って、グローバルシステムルール210を使用して、割り当てられたリソースにサービスがインストールされる。
システムセキュリティの向上
図13Aを参照するとITシステム100が示されており、ここでシステム100はリソース1310を含み、リソース1310はベアメタルまたは物理リソースの場合がある。図13Aは、システム100に接続された単一のリソース1310のみを示しているが、システム100は複数のリソース1310を含み得ることを理解されたい。リソース1310(複数可)は、ベアメタルクラウドノードであり得るか、またはそれを備え得る。ベアメタルクラウドノードには、物理ホストまたは仮想マシンへのリモートアクセスを許可し、仮想マシンの作成を許可し、外部ユーザによるリソース(複数可)上でのコードの実行を許可するようにする外部ネットワーク1380に接続されているリソースが含まれ得るが、これに限定されない。リソース1310(複数可)は、外部ネットワーク1380またはアプリケーションネットワーク390に直接的または間接的に接続され得る。外部ネットワーク1380は、コントローラ200またはITシステム100のコントローラによって管理されないインターネットまたは他のリソース(複数可)であり得る。外部ネットワーク1380は、インターネット、インターネット接続(複数可)、コントローラによって管理されないリソース(複数可)、他の広域ネットワーク(例えば、Stratcom、ピアツーピアメッシュネットワークまたは公的にアクセス可能であるかどうかに関わらない他の外部ネットワーク)または他のネットワークを含み得るが、これらに限定されない。
物理リソース1310がITシステム100aに追加されると、コントローラ200に結合され、電源をオフにしてよい。リソース1310は、アウトオブバンド管理(OOBM)接続260、任意にはインバンド管理(IBM)接続270及び任意にはSAN接続280などの、1つまたは複数のネットワークを介してコントローラ200aに結合される。本明細書で使用されるSAN280は、構成SANを備えてもよく、備えなくてもよい。構成SANは、物理リソースの電源オンまたは構成に使用されるSANを備えてよい。構成SANは、SAN280の一部であってよく、またはSAN280から分離されていてもよい。インバンド管理はさらに、本明細書に示すように、SAN280であってもよく、そうでなくてもよい構成SANを備えてよい。さらに、リソースが使用されている場合、構成SANが無効になっているか、切断されているか、利用できなくてもよい。OOBM接続260はシステム100のOSからは表示されないが、IBM接続270及び/または構成SANはシステム100のOSからは表示されてよい。図13Aのコントローラ200は、本明細書の図1〜図12Bを参照して説明されるコントローラ200と同様に構成されてよい。リソース1310は、内部ストレージを備え得る。いくつかの構成では、コントローラ200は、ストレージを生成してよく、データ及び/または情報をフェッチするためにSANに接続するようにリソースを一時的に構成してよい。アウトオブバンド管理接続260は、独立したアウトオブバンド管理デバイス315またはリソース1310がプラグインされたときに電源がオンになるリソース1310の回路に結合されてよい。デバイス315は、デバイスの電源オン/オフ、コンソールへの接続及びコマンドの入力、温度及び他のコンピュータの健全性関連要素の監視ならびにBIOS設定の設定及びオペレーティングシステムの範囲外の他の機能を含むが、これらに限定されない機能を可能にし得る。コントローラ200は、アウトオブバンド管理ネットワーク260を通じてリソース1310を参照することができる。コントローラは、リソースのタイプを識別し、インバンド管理またはアウトオブバンド管理を使用してその構成を識別することもできる。以下で説明する図13C〜図13Eは、システムセキュリティを強化する方法で物理リソース1310をITシステム100aに追加するための、及び/またはシステム100を起動または管理するための様々なプロセスフローを示す。
ネットワーク、ネットワーキングリソース、ネットワークデバイス及び/またはネットワークインターフェースを参照して本明細書で使用される「無効」という用語は、そのようなネットワーク、ネットワーキングリソース、ネットワークデバイス及び/またはネットワークインターフェースが(手動または自動により)電源オフになるか、物理的に切断されるか、及び/または仮想的に切断されるか、いくつかの他の方法で(例えば、フィルタリングにより)ネットワーク、仮想ネットワーク(例えば、VLAN、VXLAN、InfiniBandパーティションを含むが、これらに限定されない)から切断されるアクションを指す。「無効」という用語には、(送信元からデータを受信または読み取る機能を有しつつ)リソースが宛先にデータを送信または書き込みできないようにすること、(宛先にデータを送信または書き込む機能を有しつつ)リソースが送信元からデータを受信または読み取りできないようにするなどの、操作性の一方向または単向性の制限も含まれる。そのようなネットワーク、ネットワーキングリソース、ネットワークデバイス及び/またはネットワークインターフェースは、追加のネットワーク、仮想ネットワークまたはリソースの結合から切断され、以前に接続されたネットワーク、仮想ネットワークまたはリソースの結合に接続されたままになってよい。加えて、そのようなネットワーキングリソースまたはデバイスは、あるネットワーク、仮想ネットワークまたはリソースの結合から別のものに切り替えることができる。
ネットワーク、ネットワーキングリソース、ネットワークデバイス及び/またはネットワークインターフェースを参照して本明細書で使用される「有効」という用語は、そのようなネットワーク、ネットワーキングリソース、ネットワークデバイス及び/またはネットワークインターフェースが(手動または自動により)電源オンになるか、物理的に接続されるか、及び/または仮想的に接続されるか、いくつかの他の方法でネットワーク、仮想ネットワーク(例えば、VLAN、VXLAN、InfiniBandパーティションを含むが、これらに限定されない)に接続するアクションを指す。そのようなネットワーク、ネットワーキングリソース、ネットワークデバイス及び/またはネットワークインターフェースは、既に別のシステムコンポーネントに接続されている場合、追加のネットワーク、仮想ネットワークまたはリソースの結合に接続されてよい。加えて、そのようなネットワーキングリソースまたはデバイスは、あるネットワーク、仮想ネットワークまたはリソースの結合から別のものに切り替えることができる。「有効」という用語には、(送信元からのデータを制限する機能を有しつつ)リソースが宛先に対してデータを送信、書き込みまたは受信できるようにすること、(宛先からのデータを制限する機能を有しつつ)リソースが送信元からデータを送信、受信または読み取りできるようにするなどの、操作性の一方向または単向性の制限も含まれる。
コントローラロジック205は、追加されたハードウェアのアウトオブバンド管理接続260またはインバンド管理接続270及び/または構成SAN280を調べるように構成される。リソース1310が検出された場合、コントローラロジック205は、グローバルシステムルール220を使用して、リソースを自動的に構成するかどうか、またはユーザと対話することによって構成するかどうかを決定してよい。自動的に追加される場合、セットアップはコントローラ200内のグローバルシステムルール210に従うことになる。ユーザによって追加される場合、コントローラ200内のグローバルシステムルール210は、リソースの追加及びユーザがリソース1310で行いたいことをユーザに問い合わせてよい。コントローラ200は、新しいリソースが認証されていることを確認するために、APIアプリケーションに問い合わせるか、別様にはユーザまたはスタックを制御している任意のプログラムに要求を出してよい。認証プロセスは、新しいリソースの正当性を確認するために暗号を使用して自動的かつ安全に完了することもできる。次に、コントローラロジック205は、リソース1310がプラグインされているスイッチまたはネットワークを含むITシステム状態220にリソース1310を追加する。
リソースが物理的な場合、コントローラ200はアウトオブバンド管理ネットワーク260を通じてリソースの電源をオンにしてよく、リソース1310は、グローバルシステムルール210及びコントローラロジック205を使用して、例えばSAN280を介して、テンプレート230からロードされたイメージ350をブートオフすることができる。イメージは、他のネットワーク接続を通じて、または別のリソースを介して間接的にロードすることができる。一旦ブートされると、リソース1310に関する情報も収集され、ITシステム状態220に追加され得る。これは、インバンド管理及び/または構成SANまたはアウトオブバンド管理接続を通じて行われ得る。リソース1310は、グローバルシステムルール210及びコントローラロジック205を使用して、例えば、SAN280を介して、テンプレート230からロードされたイメージ350をブートオフすることができる。イメージは、他のネットワーク接続を通じて、または別のリソースを介して間接的にロードすることができる。一旦ブートされると、コンピューティングリソース310に関してインバンド管理接続270を通じて受信された情報も収集され、ITシステム状態220に追加され得る。次に、リソース1310はストレージリソースプールに追加されてよく、これは、コントローラ200によって管理されてITシステム状態220で追跡されるリソースになる。
インバンド管理及び/または構成SANは、リソース1310をセットアップ、管理、使用またはそれと通信し、任意のコマンドまたはタスクを実行するために、コントローラ200によって使用され得る。しかしながら、任意には、インバンド管理接続270は、いつでも、またはシステム100またはコントローラ200のセットアップ、管理、使用または動作中にオフまたは無効になるようにコントローラ200によって構成されてよい。インバンド管理は、いつでも、またはシステム100またはコントローラ200のセットアップ、管理、使用または動作中にオンまたは有効になるようにさらに構成されてもよい。任意には、コントローラ200は、インバンド管理接続270からコントローラ200(複数可)にリソース1310を制御可能または切り替え可能に切断してよい。そのような切断または切断可能性は物理的であってよく、例えば、自動物理スイッチまたはネットワークへのリソースのインバンド管理接続及び/または構成SANの電源をオフにするスイッチを使用する。例えば、切断は、リソース1310のインバンド管理270及び/または構成SAN280に接続されたポートへの電源を遮断するネットワークスイッチによって実行されてよい。このような切断または部分的な切断は、ソフトウェア定義ネットワークを使用して行ってよいか、またはソフトウェア定義ネットワークを使用してコントローラに対して物理的にフィルタリングしてよい。このような切断は、インバンド管理またはアウトオブバンド管理のいずれかを通じて、コントローラを介して行ってよい。例示的な実施形態によれば、リソース1310がITシステムに追加される前、その間、またはその後の任意の時点で、コントローラ200からの選択的な制御命令に応答して、リソース1310をインバンド管理接続270から切断することができる。
ソフトウェア定義ネットワークを使用して、インバンド管理接続270及び/または構成SAN280は、一部の機能を保持してもよく、または保持しなくてもよい。インバンド管理270及び/または構成SAN280は、コントローラ200または他のリソースとの間の通信のために、制限された接続として使用され得る。接続270は、攻撃者がコントローラ200、他のネットワークまたは他のリソースにピボットするのを防ぐために制限され得る。システムは、コントローラ200及びリソース1310などのデバイスがオープンに通信することを防ぎ、リソース1310を危険にさらすのを防ぐように構成されてよい。例えば、インバンド管理270及び/または構成SAN280において、ソフトウェア定義ネットワークまたは(電子的な制限など)ハードウェア変更方法を通じて、インバンド管理及び/または構成SANのデータ送信のみを許可し、何らかの受信を禁止してよい。インバンド管理及び/または構成SANは、物理的に、またはコントローラからリソースへの書き込みのみを許可するソフトウェア定義ネットワークを使用してのいずれかで、一方向の書き込みコンポーネントになるように、またはコントローラ200からリソース1310への一方向の書き込み接続として、構成され得る。接続の一方向の書き込みの性質はさらに、セキュリティの望ましい状況及びシステムの動作の様々な段階または時間に従って、制御されるか、あるいはオンまたはオフにすることができる。システムはさらに、例えば、ログまたはアラートを通信するようにリソースからコントローラへの書き込みまたは通信を制限するように構成することができる。インターフェースはさらに、ソフトウェア定義ネットワーク、VLAN、VXLAN及び/またはInfiniBandパーティショニングを含むがこれらに限定されない技術によって、他のネットワークへの移動またはネットワークへの追加または削除を行うことができる。例えば、インターフェースを設定ネットワークに接続し、そのネットワークから削除して、ランタイムに使用されるネットワークに移動することができる。コントローラからリソースへの通信は切断されるか、または制限されることがあり、その結果、コントローラがリソース1310から送信された任意のデータに物理的に応答できなくなる場合がある。一例によれば、リソース1310が追加されてブートすると、インバンド管理270は、物理的に、またはソフトウェア定義ネットワークを使用してのいずれかで、スイッチを切るか、またはフィルタリングすることができる。インバンド管理は、ログ管理専用の別のリソースにデータを送信することができるように構成され得る。
インバンド管理は、アウトオブバンド管理またはソフトウェア定義ネットワークを使用してオンとオフを切り替えることができる。インバンド管理が切断されていると、デーモンを実行する必要がなくなり、キーボード機能を使用してインバンド管理を再度有効にすることができる。
さらに、任意には、リソース1310はインバンド管理接続を有さなくてよく、リソースはアウトオブバンド管理を通じて管理してよい。
アウトオブバンド管理は、代替的または追加的には、例えば、キーボード、仮想キーボード、ディスクマウントコンソール、仮想ディスクの接続、BIOS設定の変更、ブートパラメータ及びシステムの他の態様の変更、ブート可能なイメージもしくはインストールCDに存在し得る既存スクリプトの実行またはリソース1310で実行するオペレーティングシステムへの公開の有無に関わらずコントローラ200及びリソース1310を通信可能にするアウトオブバンド管理の他の機能を含むがこれらに限定されない方法でシステムの様々な態様を操作するために使用することができる。例えば、コントローラ200は、アウトオブバンド管理260を介して、そのようなツールを使用してコマンドを送信することができる。コントローラ200はさらに、リソース1310の制御を支援するためにイメージ認識を使用することができる。したがって、アウトオブバンド管理接続を使用して、システムは、アウトオブバンド管理接続を介してシステムに接続されるリソースの望ましくない操作を防止または回避することができる。アウトオブバンド管理接続は、システムの動作中またはシステムの動作中の選択された時間に、一方向通信システムとして構成することもできる。
さらに、アウトオブバンド管理接続260は、実施者が望む場合には、インバンド管理接続と同じ方法で、コントローラ200によって選択的に制御することもできる。
コントローラ200は、リソースをオフにして電力を節約する、リソースをオンにしてアプリケーションの性能を向上させる、またはITシステムユーザが考え得る任意の他の理由など、ITシステムユーザが決定した理由で、グローバルシステムルールに従ってリソースを自動的にオン及びオフし、ITシステムの状態を更新することができる。コントローラはさらに、構成SAN、インバンド及びアウトオブバンド管理接続をオン及びオフにすることができるか、システム操作中に常時または様々なセキュリティ目的でこのような接続を一方向の書き込み接続として指定することができることがある(例えば、リソース1310が外部ネットワーク1380または内部ネットワーク390に接続されている間に、インバンド管理接続270または構成SAN280を無効にする)。一方向のインバンド管理はさらに、例えば、システムの健全性を監視するために使用されてよく、オペレーティングシステムに表示される可能性のあるログ及び情報を監視することになる。
リソース1310はさらに、サービス、アプリケーションユーザ及び/またはクライアントが互いに通信することができるアプリケーションネットワークなどの1つまたは複数の内部ネットワーク390に結合されてよい。このようなアプリケーションネットワーク390はさらに、外部ネットワーク1380に接続され得るか、接続可能であり得る。図2A〜図12Bを含むがこれらに限定されない、本明細書の例示的な実施形態によれば、インバンド管理は、リソースまたはアプリケーションネットワーク390から切断されるか、切断可能であり得、あるいはリソースまたはアプリケーションネットワークが外部ネットワークに接続されている場合、またはリソースが外部ネットワークに接続されていないアプリケーションネットワークに接続されている場合に、追加のセキュリティを提供するために、コントローラからの一方向の書き込みを提供してよい。
図13AのITシステム100は、図3Bに示されるITシステム100と同様に構成され得る。イメージ350は、コンピューティングリソースのブート及び/またはアプリケーションのロードのために、テンプレート230からリソース1310に直接的または間接的に(別のリソースまたはデータベースを通じて)ロードされ得る。イメージ350は、リソースタイプ及びハードウェアのためのブートファイル340を備え得る。ブートファイル340は、配備されるリソース、アプリケーションまたはサービスに対応するカーネル341を備えることができる。ブートファイル340はさらに、ブートプロセスを支援するために使用されるinitrdまたは同様のファイルシステムを備え得る。ブートシステム340は、異なるハードウェアタイプ及びリソースタイプのために構成された複数のカーネルまたはinitrdを備え得る。加えて、イメージ350は、ファイルシステム351を備え得る。ファイルシステム351は、ベースイメージ352及び対応するファイルシステム、ならびにサービスイメージ353及び対応するファイルシステムならびに揮発性イメージ354及び対応するファイルシステムを備え得る。ロードされるファイルシステム及びデータは、リソースタイプ及び実行されるアプリケーションまたはサービスによって異なる可能性がある。ベースイメージ352は、ベースオペレーティングシステムファイルシステムを含み得る。ベースオペレーティングシステムは読み取り専用であり得る。ベースイメージ352はさらに、実行中のものとは独立したオペレーティングシステムの基本的なツールを備え得る。ベースイメージ352は、ベースディレクトリ及びオペレーティングシステムツールを備え得る。サービスファイルシステム353は、リソース、アプリケーションまたはサービスのための構成ファイル及び仕様を含み得る。揮発性ファイルシステム354には、バイナリアプリケーション、特定のアドレス及びその他の情報など、その配備に固有の情報またはデータが含まれてよく、これらはパスワード、セッションキー及びプライベートキーを含むが、これらに限定されない変数として構成してもよく、構成しなくてもよい。ファイルシステムは、overlayFSなどの技術を使用して単一のファイルシステムとして組み込まれ、一部の読み取り専用ファイルシステム及び一部の読み取り/書き込みファイルシステムはアプリケーションで使用される重複データの量を削減することができる。
図13Bは複数のリソース1310を示し、それぞれは1つまたは複数の仮想マシンをホストするか、または備える1つまたは複数のハイパーバイザ1311を備える。コントローラ200aは、それぞれがベアメタルリソースを備えるリソース1310に結合される。図13Bを参照して図示及び説明されるように、リソース1310はそれぞれコントローラ200aに結合される。本明細書の例示的な実施形態によれば、インバンド管理接続270、構成SAN280及び/またはアウトオブバンド管理接続260は、図13Aに関して説明したように構成することができる。1つまたは複数の仮想マシンまたはハイパーバイザは危険にさられるか、危険にさられた状態になる可能性がある。従来のシステムでは、その後、他のハイパーバイザ上の他の仮想マシンが危険にさられた状態になる可能性がある。例えば、これは仮想マシン内で実行されるハイパーバイザの悪用から発生する可能性がある。例えば、ピボットは、危険にさられたハイパーバイザからコントローラ200aに移動し、そこで危険にさられたコントローラ200aからコントローラ200aに結合された他のハイパーバイザに移動する可能性がある。例えば、危険にさられたハイパーバイザとターゲットのハイパーバイザとの間で、両方に接続されたネットワークを使用してピボットが発生する可能性がある。図13Bに示すコントローラ200a及びリソース1310のインバンド管理270、構成SAN280またはアウトオブバンド管理260の構成では、コントローラ200aとリソース1310との間の所定リンクでインバンド(または構成SAN)及び/またはアウトオブバンド接続を無効にするために、一部または全てを選択的に制御することができ、これは、危険にさられた仮想マシンが1つのハイパーバイザから発生し他のリソースにピボットするために使用されることを防止し得る。
上記の図1から図12に関して説明したように、インバンド管理接続270及びアウトオブバンド管理接続260はさらに、図13A及び13Bに関して説明したのと同様に構成することができる。
図13Cは、ベアメタルノードなどの物理リソースをシステム100に追加するか、または管理するための例示的なプロセスフローを示す。本明細書の図13A及び13Bに示されるか、図1〜図12に関して示されるリソース1310は、システム100のコントローラへのアウトオブバンド管理接続260及びインバンド管理接続270及び/またはSANを介して接続され得る。
リソース接続のインスタンスの後、ステップ1370で、外部ネットワーク及び/またはアプリケーションネットワークが無効になる。上述のように、この無効化には、様々な技術のいずれかを使用することができる。例えば、システムのセットアップ、リソースの追加、システムのテスト、システムの更新またはその他のタスクもしくはコマンドの実行の前に、図13A及び13Bに関して説明したように、インバンド管理接続または構成SANを使用して、システム100のコンポーネント(または攻撃に対して脆弱なもののみ)を外部ネットワークまたはアプリケーションネットワークから無効にするか、切断するか、またはフィルタリングする。
ステップ1370の後、次にステップ1371で、インバンド管理接続及び/または構成SANが有効になる。したがって、ステップ1370と1371との組み合わせは、インバンド管理及び/またはSAN接続が通じている間、外部ネットワーク及び/またはアプリケーションネットワークからリソースを分離する。次に、インバンド管理接続を介してコントローラ200の制御下でリソースにコマンドを実行することができる(ステップ1372を参照)。例えば、図1〜図13Bに関して本明細書で説明されているものなどを含むがこれらに限定されないセットアップ及び構成ステップは、インバンド管理及び/または構成SANを使用してステップ1372で実行することができる。代替的または追加的には、インバンド管理及び/または構成SANを使用して、ステップ1372で、システムの動作、更新または管理(任意の変更管理またはシステム更新を含み得るがこれらに限定されない)、テスト、更新、データ転送、性能及び健全性に関する情報の収集(エラー、CPU使用率、ネットワーク使用率、ファイルシステム情報及びストレージ使用率を含むがこれらに限定されない)及びログの収集ならびに本明細書の図1から図13Bに説明されているシステム100を管理するために使用され得る他のコマンドを含むがこれらに限定されない他のタスクを実行することができる。
図13A及び13Bに関して本明細書で説明されるように、リソースの追加、システムのセットアップ及びそのようなタスクまたはコマンドの実行後、リソースとコントローラまたはシステムの他のコンポーネントとの間のインバンド管理接続270及び/または構成SAN280は、ステップ1373で、1つまたは複数の方向で無効化することができる。そのような無効化は、上述のように、切断、フィルタリングなどを使用することができる。ステップ1373の後、ステップ1374で、外部ネットワーク及び/またはアプリケーションネットワークへの接続を復元することができる。例えば、コントローラは、リソース1310がアプリケーションネットワークまたはインターネットに接続できるようにネットワーキングリソースに通知することができる。システムをテストまたは更新する場合も同じステップを実行することができる、つまり、外部ネットワーク及び/またはアプリケーションネットワークへのインバンド管理接続を切断するか、またはフィルタリングしてから、(一方向または両方向で)リソースへのインバンド管理接続を有効にするか、または接続することができる。したがって、リソースが外部ネットワーク及び/またはアプリケーションネットワークに接続されている間、ステップ1373及び1374は同時に動作して、インバンド管理接続及び/または構成SANを通じたコントローラへの接続からリソースを分離する。
アウトオブバンド管理は、システムまたはリソースの管理、システムまたはリソースのセットアップ、構成、ブートあるいはシステムまたはリソースの追加に使用することができる。アウトオブバンド管理は、本明細書の任意の実施形態で使用される場合、ブート前に設定を変更するために仮想キーボードを使用してマシンにコマンドを送信することができ、仮想キーボードに入力することによってオペレーティングシステムにコマンドを送信することもできる。マシンがログインしていない場合、アウトオブバンド管理は仮想キーボードを使用してユーザ名及びパスワードを入力し、イメージ認識を使用してログオンを確認し、入力したコマンドを確認し、それらが実行されたかどうかを確認することができる。物理リソースにグラフィカルコンソールしかない場合は、仮想マウスも使用することができ、イメージ認識によりアウトオブバンド管理は変更を行うことができるだろう。
図13Dは、ベアメタルノードなどの物理リソースをシステム100に追加するか、これを管理するための別の例示的なプロセスフローである。ステップ1380で、本明細書の図13A及び13Bまたは図1〜図12に示されるリソースは、アウトオブバンド管理260を介してシステムまたはリソースに接続され得る。コントローラによって容易になるアウトオブバンド管理を通じてディスクイメージ(例えば、ISOイメージ)へのアクセスを提供することにより、ディスクを仮想的に接続することができる(ステップ1381を参照)。次に、リソースまたはシステムをディスクイメージからブートしてよく(ステップ1382)、次にファイルをディスクイメージからブート可能なディスクにコピーする(ステップ1383を参照)。これは、アウトオブバンド管理を使用してこの方法でリソースがセットアップされているシステムのブートにも使用することもできる。これは、複数のリソースがコントローラをさらに備えるか、システムを構成するかに関わらず、(ネットワーキングリソースを含むがこれに限定されない)共に結合可能な複数のリソースを構成及び/またはブートするために使用することもできる。したがって、仮想ディスクを使用して、仮想ディスクがリソースに接続されているかのように、コントローラがディスクイメージをリソースに接続することが可能になり得る。アウトオブバンド管理は、リソースにファイルを送信するために使用することもできる。_データは、ステップ1383で仮想ディスクからローカルディスクにコピーすることができる。ディスクイメージには、リソースがコピーして操作時に使用することができるファイルが含まれる場合がある。ファイルは、スケジュールされたプログラムまたはアウトオブバンド管理からの指示のいずれかを通じて、コピーまたは使用することができる。コントローラは、アウトオブバンド管理を通じて、仮想キーボードを使用してリソースにログオンし、コマンドを入力して、ファイルを仮想ディスクからコントローラ自体のディスクまたはリソースにアクセス可能な他のストレージにコピーすることができる。ステップ1384では、システムまたはリソースは、BIOS、EFIまたはブート順序設定を設定することによりブートするように構成され、これによりブート可能ディスクからブートすることになる。ブート構成では、efibootmgrなどのオペレーティングシステムのEFIマネージャを使用してよく、これは、アウトオブバンド管理から直接実行されるか、インストーラスクリプトに含めることで実行することができる(例えば、リソースのブート時に、efibootmgrを使用するスクリプトが自動的に実行される)。加えて、ブートオプションまたは他のBIOSの変更は、ブート順序コマンドを使用するか、BIOS構成(Supermicro Update ManagerでサポートされているXML BIOS構成など)をアップロードするかのいずれかを使用するSupermicro Boot Managerなどのアウトオブバンド管理ツールを通じて設定されてよい。BIOSは、キーボード及びコンソールからのイメージ認識を使用して、ブート順序を含む適切なBIOS設定を設定するように構成することもできる。インストーラは、ロードされた構成済みイメージに対して実行することができる。構成は、画面を見てイメージ認識を使用することによってテストすることができる。構成の後、リソースを有効にする(例えば、電源をオンにする、ブートする、アプリケーションネットワークに接続する、またはそれらの組み合わせ)ことができる(ステップ1385)。
図13Eは、ベアメタルノードなどの物理リソースをシステム100に追加するか、または管理するための別の例示的なプロセスフローであり、この場合、PXE、Flexbootまたは類似するネットワークブートを使用している。ステップ1390では、本明細書の図13A及び図13Bに示されるか、または図1〜図12に関して示されるリソース1310は、システム100のコントローラへの(1)インバンド管理接続270及び/またはSAN及び(2)アウトオブバンド管理接続260を介して接続され得る。次に、外部ネットワーク及び/またはアプリケーションネットワーク接続は、ステップ1391(ステップ1370に関連して上述したものと同様)において、無効化され得る(例えば、SDNを用いて物理的に、または仮想的に、全体的にまたは部分的に、フィルタリングまたは切断される)。例えば、システムのセットアップ、リソースの追加、システムのテスト、システムの更新またはその他のタスクもしくはコマンドの実行の前に、図13A及び図13Bに関して説明したように、インバンド管理接続またはSANを使用して、システム100のコンポーネント(または攻撃に対して脆弱なもののみ)を外部ネットワークまたはアプリケーションネットワークから無効にするか、切断するか、またはフィルタリングする。
ステップ1392では、リソースのタイプが決定される。例えば、リソースに関する情報は、アウトオブバンド管理ツールを使用して、またはディスクがリソースに接続されているかのようにディスクイメージ(例えば、ISOイメージ)をリソースに接続して、リソース情報を識別するために使用することができるツールを有するオペレーティングシステムを一時的にブートすることによって、macアドレスから収集することができる。次に、ステップ1393では、リソースは、構成されるか、またはPXEまたはflexbootなどのために事前に構成されているとして識別される。次に、ステップ1394では、リソースの電源がオンになり、PXE、Flexbootまたは同様のブートが行われる(または、リソースが一時的にブートし、再度電源がオンにされた場合)。次に、ステップ1395で、リソースはインバンド管理接続またはSANからブートする。ステップ1396では、データは、図13Dのステップ1383を参照して説明したのと同様の方法で、リソースによってアクセス可能なディスクにコピーされる。ステップ1397では、リソースは、図13Dのステップ1384に関して上に説明したのと同様の方法で、ディスク(複数可)からブートするように構成される。リソースがPXE、flexbootなどのために事前に構成されていると識別される場合、ファイルは、1393から1396までの任意のステップでコピーされ得る。インバンド管理が有効にされた場合、ステップ1398で無効化することができ、ステップ1399でアプリケーションネットワークまたは外部ネットワークを再接続するか、または有効にすることができる。
さらに、OOBM以外の技術を使用して、リソースをリモートで有効にし(電源をオンにするなど)、リソースがブートされたことを確認することができることを理解されたい。例えば、システムは、ユーザに電源ボタンを押すように促し、システムがブートしたことをコントローラに手動で伝える(または、キーボード/コントローラへのコンソール接続を使用する)。さらに、システムは、システムがブートされ、コントローラがログオンし、リブートするように指示すると、IBMを通じてコントローラにpingすることができる(例えば、ssh、telnetまたはネットワーク上の別の方法を通じて)。例えば、コントローラはsshを使用してリブートコマンドを送信することができる。PXEが使用されていて、OOBMがない場合は、いずれの場合でも、システムにはリソースにリモートで電源をオンにように指示するか、またはユーザに手動で電源をオンにするように指示する方法を有するはずである。
コントローラ及び/または環境の配備
例示的な実施形態では、コントローラは、発信コントローラ200からシステム内に配備されてよい(このような発信コントローラ200は、「メインコントローラ」と呼ばれる場合がある)。したがって、メインコントローラは、分離されるか、または分離可能なITシステムまたは環境であり得るシステムまたは環境をセットアップし得る。
本明細書に記載される環境は、互いに相互運用することができるコンピュータシステム内のリソースの集合を指す。コンピュータシステムは、その中に複数の環境を含むことができるが、これは必須ではない。環境のリソース(複数可)は、その環境で実行される1つまたは複数のインスタンス、アプリケーションまたはサブアプリケーションを備え得る。さらに、環境は、1つまたは複数の環境またはサブ環境を備えることができる。環境は、コントローラを含む場合と含まない場合があり、環境は、1つまたは複数のアプリケーションを動作させる場合がある。環境のそのようなリソースは、例えば、環境内のアプリケーションを含む特定の環境を実行するために使用されるネットワーキングリソース、コンピューティングリソース、ストレージリソース及び/またはアプリケーションネットワークを含むことができる。したがって、環境は、1つまたは複数のアプリケーションの機能を提供し得ることを理解されたい。いくつかの例では、本明細書に記載される環境は、他の環境から物理的または仮想的に分離されるか、または分離可能であり得る。さらに、他の例では、環境は、他の環境へのネットワーク接続を有し、そのような接続は、必要に応じて無効または有効にすることができる。
加えて、メインコントローラは、様々な環境において、または別個のシステムとして、1つまたは複数の追加のコントローラをセットアップ、配備及び/または管理することができる。このような追加のコントローラは、メインコントローラから独立しても、独立状態であってもよい。このような追加のコントローラは、たとえメインコントローラから独立していても、または疑似的に独立していても、動作中の様々な時点で、メインコントローラ(または監視アプリケーションを介した別個のモニタまたは環境)から指示を受けるか、またはメインコントローラに情報を送信することができる。環境は、セキュリティのために(例えば、環境を互いに及び/またはメインコントローラから分離可能にすることによって)及び/または様々な管理のために構成することができる。環境は外部ネットワークに接続することができるが、別の関連環境は外部ネットワークに接続することも、接続しないこともできる。
メインコントローラは、環境またはアプリケーションが別個のシステムであるかどうか、及びそれらがコントローラまたはサブコントローラを備えるかどうかに関わらず、環境またはアプリケーションを管理することができる。メインコントローラは、グローバル構成ファイルまたは他のデータの共有ストレージを管理することもできる。メインコントローラは、グローバルシステムルール(例えば、システムルール210)またはメインコントローラのサブセットを、異なるコントローラに対して、それらの機能に応じて解析することもできる。各々の新しいコントローラ(「サブコントローラ」と呼ばれる場合がある)は、メインコントローラの構成ルールのサブセットであり得る新しい構成ルールを受信することができる。コントローラに配備されるグローバル構成ルールのサブセットは、セットアップされているITシステムのタイプに依存するか、またはそれに対応する場合がある。メインコントローラは、新しいコントローラまたは別個のITシステムをセットアップまたは配備することができ、これらは、その後、例えば、出荷または配送またはその他のために、メインコントローラから永久的に分離される。グローバル構成ルール(またはそのサブセット)は、様々な環境においてアプリケーションまたはサブアプリケーションをセットアップするためのフレームワーク、及びそれらが相互に作用し得る方法を定義することができる。このようなアプリケーションまたは環境は、メインコントローラによって配備されるグローバル構成ルールのサブセットを備えるサブコントローラ上で実行することができる。いくつかの例では、そのようなアプリケーションまたは環境は、メインコントローラによって管理することができる。しかしながら、他の例では、そのようなアプリケーションまたは環境は、メインコントローラによって管理されない。アプリケーションまたは環境を管理するためにメインコントローラから新しいコントローラが生成される場合、新しいコントローラによる制御を容易にするために、複数のアプリケーションにまたがってアプリケーションの依存度チェックを行うことができる。
したがって、例示的な実施形態では、システムは、別のコントローラを配備するように構成されたメインコントローラ、またはそのような他のコントローラを備えるITシステムを備えることができる。このような実装システムは、メインコントローラから完全に切断されるように構成することができる。一旦独立すると、そのようなシステムは、スタンドアロンシステムとして動作するように構成されてもよく、または動作中の様々な離散時間または連続時間において、メインコントローラなどの別のコントローラ(またはアプリケーションを備えた環境)によって制御または監視されてよい。
図14Aは、メインコントローラ1401が、異なるシステム1400a及び1400b上にそれぞれ配備されたコントローラ1401a及び1401bを有する例示的なシステムを示す(ここで、1400a及び1400bは、サブシステムと呼ばれ得る。ただし、サブシステム1400a及び1400bは、環境としても機能し得ることを理解されたい)。メインコントローラ1401は、上述のコントローラ200と同様の方法で構成することができる。したがって、コントローラロジック205、グローバルシステムルール210、システム状態220及びテンプレート230を含むことができる。
システム1400a及び1400bはそれぞれ、リソース1420a、1420bにそれぞれ結合されたコントローラ1401a、1401bを備える。メインコントローラ1401は、サブシステム1400aのコントローラ1401a及びサブシステム1400bのコントローラ1401bなどの1つまたは複数の他のコントローラに結合することができる。メインコントローラ1400のグローバルルール210は、他のコントローラを管理及び制御することができるルールを含むことができる。メインコントローラ1401は、コントローラロジック205、システム状態220及びテンプレート230と共にそのようなグローバルルール210を使用して、本明細書の図1〜図13Eを参照して説明したのと同様の方法で、コントローラ1401a、1401bを通じてサブシステム1400a、1400bをセットアップ、プロビジョニング及び配備することができる。
例えば、メインコントローラ1401は、グローバルルール210(またはそのサブセット)がコントローラ1401a、1401b及びそのサブシステム1400a、1400bの動作を指示する方法で、グローバルルール210(またはそのサブセット)をそれぞれルール1410a、1410bとしてサブシステム1400a、1400bにロードすることができる。各コントローラ1401a、1401bは、グローバルルール210の同じサブセットまたは異なるサブセットであり得るルール1410a、1410bを有してよい。例えば、グローバルルール210のどのサブセットが所与のサブシステムにプロビジョニングされるかは、配備されるサブシステムのタイプに依存し得る。さらに、コントローラ1401は、システムリソース1420a、1420bまたはコントローラ1401a、1401bにロードされることになるデータをロードするか、または送ることができる。
メインコントローラ1401は、インバンド管理接続270(複数可)及び/またはアウトオブバンド管理接続260(複数可)またはSAN接続280を通じて他のコントローラ1401a、1401bに接続されてよく、これらは、例えば、図13A〜図13Eに説明されるリソースの配備及び管理を参照して、本明細書に説明されるような方法で、配備または管理の様々な段階において有効または無効にすることができる。インバンド管理接続270またはアウトオブバンド管理接続260の選択的な有効化及び無効化を使用して、サブシステム1400a、1400bは、サブシステム1400a、1400bが、様々な時点で、メインシステム100またはコントローラ1401または互いに関しての知識を全く有さない(または、知識が制限されているか、制御されているか、または禁止されている)方法で配備され得る。
例示的な実施形態では、メインコントローラ1401は、メインコントローラ1401が複数のITシステムを配備及び/または実行できるように、メインコントローラ1401によって配備及び構成されたローカルコントローラ1401a、1401bを有する集中型のITシステムを動作させることができる。このようなITシステムは、互いに独立していても、独立していなくてもよい。メインコントローラ1401は、それが作成したITシステムから隔離されるか、またはエアギャップされた別個のアプリケーションとして監視をセットアップすることができる。監視のための別個のコンソールは、メインコントローラとローカルコントローラ(複数可)との間の接続、及び/または選択的に有効化または無効化され得る環境間の接続を備え得る。コントローラ1401は、例えば、ビジネス、データストレージを備えた製造システム、データセンタならびに他の様々な機能ノードを含むが、これらに限定されず、各々が停止または危険にさられる場合に異なるコントローラを有する様々な用途のための隔離されたシステムを配備することができる。このような分離は完全であっても永久的であってもよく、または、例えば、一時的、時間またはタスクに依存して、通信方向に依存して、または他のパラメータに依存して、疑似的に分離されていてよい。例えば、メインコントローラ1401は、いくつかの定義済みの状況に限定されていても、限定されていなくてもよいシステムに対して指示を提供するように構成することができ、一方、サブシステムは、メインコントローラと通信する能力が限定されているか、または全くない場合がある。したがって、このようなサブシステムは、メインコントローラ1401を危険にさらすことができない可能性がある。メインコントローラ1401及びサブコントローラ1401a、1401bは、例えば、インバンド管理270を無効にすることによって、一方向の書き込みによって及び/または通信をアウトオブバンド管理260に制限することによって、本明細書に説明するように(以下に説明される特定の例で)互いから分離され得る。例えば、侵害が発生した場合、1つまたは複数のコントローラは、1つまたは複数の他のコントローラに対してインバンド管理接続270を無効にして、侵害またはアクセスの拡散を防ぐことができる。システムセクションは、オフにすることも、分離することもできる。
サブシステム1400a、1400bはさらに、インバンド管理270またはアウトオブバンド管理260を通じて別の環境またはシステムとリソースを共有するか、またはこれらに接続することができる。
図14B及び図14Cは、メインコントローラを備えたコントローラをプロビジョニングするための可能なステップを示す例示的なフローである。
図14Bにおいて、ステップ1460では、メインコントローラは、リソース1420aまたは1420bなどのリソースをプロビジョニングまたはセットアップする。ステップ1461では、メインコントローラは、サブコントローラをプロビジョニングまたはセットアップする。メインコントローラは、システム内にリソースをセットアップしてステップ1460及び1461を実行するために、上述の技術を使用することができる。さらに、図14Bは、ステップ1461の前にステップ1460が実行されることを示すが、これは必須ではないことを理解されたい。メインコントローラ1401は、そのシステムルール210を使用して、どのリソースが必要であるかを判断し、システムまたはネットワーク上にリソースを配置することができる。メインコントローラは、ステップ1461において、サブコントローラをセットアップするためにシステムにシステムルール210をロードすることによって(または、それ自体のシステムルールをセットアップして取得する方法についてサブコントローラに指示を提供することによって)、サブコントローラをセットアップまたは配備することができる。これらの指示には、リソースの構成、アプリケーションの構成、サブコントローラによって実行されるITシステムを作成するためのグローバルシステムルール、メインコントローラに再接続して新規のまたは変更されたルールを収集する指示、アプリケーションネットワークから切断して新しい本番環境のためのスペースを作成する指示が含まれ得るが、これらに限定されない。リソースを配備した後、ステップ1463において、メインコントローラは、システムルール210及び/またはシステム状態220への更新を介して、サブコントローラにリソースを割り当てることができる。
図14Cは、配備の代替的なプロセスフローを示す。図14Cの例では、メインコントローラは、ステップ1470でサブコントローラを配備する(ステップ1461に関して説明したように進めることができる)。次に、ステップ1475において、サブコントローラは、例えば図3C及び図7Bに示すような技術を使用してリソースを配備する。
図15Aは、システム100のメインコントローラ1501が環境1502、1503及び1504を生成する例示的なシステムを示す。環境1502はリソース1522を含み、環境1503はリソース1523を含み、環境1504はリソース1524を含む。さらに、環境1502、1503、1504は、共有リソース1525のプールへのアクセスを共有することができる。このような共有リソースは、例えば、互いに通信する必要がある共有データセット、APIまたは実行中のアプリケーションを含み得ることができるが、これらに限定されない。
図15Aの例では、各環境1502、1503、1504は、メインコントローラ1501を共有する。メインコントローラ1501のグローバルシステムルール210は、環境を配備及び管理するルールを含むことができる。リソース1522、1523及び/または1524は、1つまたは複数のアプリケーションを管理するために、それぞれの環境1501、1502、1503によって必要とされ得る。そのようなアプリケーションのための構成ルールは、そのような各環境の動作方法ならびに他のアプリケーション及び環境との相互作用方法を定義するために、メインコントローラ(または、存在する場合は、環境内のローカルコントローラ)によって実施されてもよい。メインコントローラ1401は、コントローラロジック205、システム状態220及びテンプレート230と共にグローバルルール210を使用して、本明細書の図1〜図14Cを参照して説明したリソース及びシステムの配備と同様の方法で、環境をセットアップ、プロビジョニング及び配備することができる。環境がローカルコントローラを備える場合、メインコントローラ1501は、グローバルルール(またはそのサブセット)がその環境の動作を定義するように、グローバルルール210(またはそのサブセット)をローカルコントローラまたは関連するストレージにロードすることができる。
コントローラ1501は、システムルール210を有する構成ルールを使用して、環境1502、1503、1504のそれぞれのリソース1522、1523、1524及び/または共有リソース1525を配備及び構成することができる。コントローラ1501はさらに、環境を監視するか、リソース1522、1523、1524(または共有リソース1525)を構成して、それぞれの環境1502、1503、1504の監視を可能にすることができる。このような監視は、有効または無効にすることができる別個の監視コンソールへの接続を介するか、またはメインコントローラを通じたものであってよい。メインコントローラ1501は、図13A〜図13E及び図14Aのリソースの配備及び管理を参照して本明細書に説明されるような方法で、配備または管理の様々な段階で有効または無効にすることができるインバンド管理接続270(複数可)及び/またはアウトオブバンド管理接続260(複数可)またはSAN接続280を通じて、環境1502、1503、1504のうちの1つまたは複数に接続することができる。インバンド管理接続270またはアウトオブバンド管理接続260またはSAN接続280の有効化及び無効化を使用して、環境1502、1503、1504は、それらが様々な時点で、メインシステム100またはコントローラ1501の知識を全く有さないか、知識が制限されているか、制御されているか、または互いの接続に関して知識を全く有さないか、知識が制限されているか、制御されている方法で配備され得る。
環境は、外部である外部環境に接続する外部ネットワーク1580と結合されるか、他のリソースと相互作用する1つのリソースまたは複数のリソースを備えることができる。環境は、物理的であっても非物理的であってもよい。この文脈での「非物理的」とは、環境が同じ物理ホスト(複数可)を共有しているが、仮想的に互いに分離されていることを意味する。環境及びシステムは、同一のハードウェア、類似しているが異なるハードウェアまたは同一ではないハードウェアに配備することができる。いくつかの例では、環境1502、1503、1504は互いの有効なコピーであり得るが、他の例では、環境1502、1503、1504は、互いに異なる機能性を提供し得る。一例として、環境のリソースは、サーバであってもよい。
本明細書に説明される技術に従って、システム及びリソースを別個の環境またはサブシステムに配置することにより、セキュリティ及び/または性能のために、アプリケーションを分離することが可能になり得る。環境を分離することで、危険にさられたリソースの影響を軽減することもできる。例えば、ある環境には機密データが含まれる場合があり、インターネットへの露出が少なくなるように構成することができ、一方、別の環境では、インターネット向けアプリケーションをホストすることができる。
図15Bは、図15Aに示すコントローラが環境をセットアップする例示的なプロセスフローを示す。このような例では、システムは、新しい環境を作成しセットアップするようにタスクを与えられてもよい。これは、ユーザの要求によって、または特定のタスクまたは一連のタスクを処理するときに実行されるシステムルールによってトリガされ得る。以下に説明する図17A〜図18Bは、システムが新しい環境を作成する特定の変更管理タスクまたは一連のタスクの例を示す。しかしながら、コントローラが新しい環境を作成してセットアップし得る状況は多数存在し得る。
したがって、図15Bを参照すると、新しい環境をセットアップする際に、コントローラは、環境ルールを選択する(ステップ1500.1)。環境ルールに従って、グローバルシステムルール210及びテンプレート230を使用して、コントローラは、環境のためにリソースを見つける(ステップ1500.2)。ルールは、環境に必要なリソースが見つかるまでコントローラが通過する好適なリソース選択の階層を有し得る。ステップ1500.3において、コントローラは、例えば、図3Cまたは図7Bに説明される技術を使用して、ステップ1500.2で見つけたリソースを環境に割り当てる。次に、コントローラは、新しい環境と他のシステムコンポーネントとの間の互換性のある効率的な接続を確保するために、新しい環境に関してシステムのネットワーキングリソースを構成する(ステップ1500.4)。システム状態は、各リソースが有効になり、各テンプレートが処理されると、ステップ1500.5で更新される。次に、コントローラは、環境のリソースの統合及び相互運用性をセットアップして有効にし、新しい環境を配備するために任意のアプリケーションの電源をオンにする(ステップ1500.6)。システム状態は、環境が利用可能になると、ステップ1500.7で再び更新される。
図15Cは、図15Aに示すコントローラが複数の環境をセットアップする例示的なプロセスフローを示す。複数の環境をセットアップする場合は、各環境に対して図15Bに説明する技術を使用して、環境を並列にセットアップすることができる。しかしながら、環境は、図15Cに説明されるように、連続した順序または連続してセットアップされ得ることを理解されたい。図15Cを参照すると、ステップ1500.10において、コントローラは、第1の新しい環境(図15Bのステップ1500.1に関して説明してように実行することができる)をセットアップし、配備する。異なるタイプの環境及び異なる環境の相互運用方法には、異なる環境ルールが存在し得る。ステップ1500.11において、コントローラは、次の環境に対する環境ルールを選択する。ステップ1500.12において、コントローラは、システムルール210によって定義することができる優先順位に従ってリソースを見つける。ステップ1500.13において、コントローラは、ステップ1500.12で見つけたリソースを次の環境に割り当てる。環境はリソースを共有してよく、共有しなくてもよい。ステップ1500.14において、コントローラは、システムルール210を使用して、次の環境に関して及び依存関係を有する環境間で、システムのネットワーキングリソースを構成する。システム状態は、ステップ1500.15において、各リソースが有効であり、テンプレートが処理され、ネットワーキングリソースが環境の依存関係を含めて構成されるときに更新される。次に、コントローラは、次の環境及び環境間のリソースの統合及び相互運用性をセットアップして有効にし、新しい環境を配備するために任意のアプリケーションの電源をオンにする(ステップ1500.16)。システム状態は、次の環境が利用可能になると、ステップ1500.17で更新される。
監視をサポートする一方向通信
図16Aは、第1のコントローラ1601が、1601a、1601b及び/または1601bなどの1つまたは複数のコントローラをセットアップするためのメインコントローラとして動作する例示的な実施形態を示す。メインコントローラ1601は、コントローラ200/1401/1501などのコントローラに関して上述した技術を使用して、動作において互いに依存してもよく、依存しなくてもよい環境1602、1603、1604として、複数のクラウドホスト、システム及び/またはアプリケーションを生成するために使用されてよい。図16Aに示されるように、ITシステム、環境、クラウド及び/またはそれらの任意の組み合わせ(複数可)は、環境1602、1603、1604として生成され得る。環境1602は第2のコントローラ1601aを備え、環境1603は第3のコントローラ1601bを備え、環境1604は第4のコントローラ1601cを備える。環境1602、1603、1604はそれぞれ、1つまたは複数のリソース1642、1643、1644をそれぞれ備えることもできる。リソースは、それらの上で実行され得る1つまたは複数のアプリケーション1642、1643、1644を備え得る。これらのアプリケーションは、共有されているかどうかに関わらず、割り当てられたリソースに接続できる。これらのまたは他のアプリケーションは、インターネット上で、または共有アプリケーションまたはアプリケーションネットワークを備えることもできるプール1660内の1つまたは複数の共有リソース上で実行することができる。アプリケーションは、ユーザまたは環境もしくはクラウドのうちの1つまたは複数にサービスを提供することができる。環境1602、1603、1604は、リソースまたはデータベースを共有することができ、及び/または特定の環境に特定的に割り当てられたプール1660内のリソースを備えるか、または使用することができる。メインコントローラ1601及び/または1つまたは複数の環境を含むシステムの様々なコンポーネントは、アプリケーションネットワークまたはインターネットなどの外部ネットワーク1615に接続可能であってもよい。
任意のリソース、環境またはコントローラと、別のリソース、環境、コントローラまたは外部接続との間に、本明細書の図13A〜図13Eに関して説明される方法で、選択的に有効及び/または無効にされるように構成され得る接続が存在し得る。例えば、インバンド管理接続270、アウトオブバンド管理接続270またはSAN接続280を介して、または物理的に切断することによって、任意のリソース、コントローラ、環境または外部接続を無効にするか、またはコントローラ1601、環境1602、環境1603及び/または環境1604、リソース、あるいはアプリケーションから切断することができる。一例として、コントローラ1601と環境1602、1603、1604のいずれかとの間のインバンド管理接続270は、コントローラ1601を保護するために無効にすることができる。別の例として、このようなインバンド管理接続270(複数可)は、環境1602、1603、1604の動作中に選択的に無効または有効にしてよい。本明細書の図13A〜図13Eに関して説明したセキュリティ目的に加えて、環境1602、1603、1604からメインコントローラ1601を無効にするか、または切断することにより、メインコントローラ1601は、環境1602、1603、1604を、その後、メインコントローラ1601または他のクラウドもしくは環境から分離することができるクラウドとしてスピンさせることが可能でもよい。この意味で、コントローラ1601は、複数のクラウド、ホストまたはシステムを生成するように構成される。
本明細書に説明される無効化または切断要素を使用して、ユーザは、特定の用途のために、メインコントローラ1601を通じた環境への限定的なアクセスを許可され得る。例えば、開発者は、開発環境へのアクセスを提供され得る。別の例として、アプリケーションの管理者は、特定のアプリケーションまたはアプリケーションネットワークに限定され得る。別の例として、ログは、メインコントローラ1601を通じて表示されてよく、メインコントローラが生成する環境またはコントローラによって、危険にさらすことなくデータを収集する。
メインコントローラ1601が環境1602をセットアップした後、環境1602は、メインコントローラ1601から切断され、このとき、環境1602は、メインコントローラ1601とは独立して動作することができ、及び/またはメインコントローラ1601または、環境1602に関連付けられるか、もしくは環境によって実行される他のアプリケーションによって選択的に監視及び維持されることができる。
環境1602などの環境は、購入者またはユーザによる環境1602へのアクセスを可能にするユーザインターフェースまたはコンソール1640に結合され得る。環境1602は、アプリケーションとしてユーザコンソールをホストすることができる。環境1602は、ユーザによってリモートにアクセスすることができる。各環境1602、1603、1604は、共通のまたは別個のユーザインターフェースまたはコンソールによってアクセスすることができる。
図16Bは、環境1602、1603、1604が別の環境1641に書き込むように構成され得る例示的なシステムを示し、ここで、例えば、コンソール(環境1641と直接的または間接的のいずれかで接続することができる任意のコンソールの場合がある)を使用してログを参照することができる。このようにして、環境1641は、環境1602、1603、1604のうちの1つまたは複数がイベントを書き込むログサーバとして機能することができる。次に、メインコントローラ1601は、後述するように、このような環境1602、1603、1604との直接的な接続を維持することなく、ログサーバ1641にアクセスして、環境1602、1603、1604上のイベントを監視することができる。環境1641はさらに、メインコントローラ1601から選択的に切断されることがあり、他の環境1602、1603、1604からの読み取り専用となるように構成され得る。
メインコントローラ1601は、図16Cに示すように、メインコントローラ1601がその環境1602、1603、1604のいずれかから切断されていても、その環境1602、1603、1604の一部または全てを監視するように構成することができる。図16Cは、メインコントローラ1601と環境1602、1603、1604との間のインバンド管理接続270が切断されており、これは、環境1602、1603、1604が危険にさられた場合にメインコントローラ1601を保護するのに役立つことが可能であることを示す。図16Cに示されるように、アウトオブバンド接続260は、メインコントローラ1601と環境1602との間のインバンド接続270が切断されていても、メインコントローラ1601と1602などの環境との間で継続して維持することができる。さらに、環境1641は、選択的に有効または無効にすることができるメインコントローラ1601への接続を有することができる。メインコントローラ1601は、環境1602、1603、1604から隔離されるか、またはエアギャップされた環境1641内の別個のアプリケーションとして監視をセットアップすることができる。メインコントローラ1601は、監視のために一方向通信を使用することができる。例えば、ログは、環境1602、1603、1604から環境1641への一方向通信を通じて提供されてもよい。このような一方向の書き込みを通じて、かつ環境1641とメインコントローラ1601との間の接続を介して、メインコントローラ1601は、メインコントローラ1601と環境1602、1603、1604との間にインバンド接続270がない場合であっても、環境1641を介してデータを収集して環境1602、1603、1604を監視することができ、これによって環境1602、1603、1604がメインコントローラ1601を危険にさらすリスクを軽減することができる。アクセスは、フィルタリングされるか、または制御されていてもよく、及び/またはアクセスは、インターネットから独立していてもよい。例えば、図16Dに示すように、メインコントローラ1601と環境1602との間のインバンド接続270が接続されている場合、メインコントローラ1601は、ネットワークスイッチ1650を制御して、環境1602をインターネットなどの外部ネットワーク1615から切断することができる。環境1602がインバンド接続270によってメインコントローラ1601と接続されているときに、環境1602を外部ネットワーク1615から切断すると、メインコントローラ1601のセキュリティを向上させることができる。
したがって、図16B〜図16Dの例示的な実施形態は、環境1602、1603、1604への公開を最小限に抑えながら、メインコントローラがこれらの環境1602、1603、1604を安全に監視することができる方法を示すことを理解されたい。したがって、メインコントローラ1601は、環境1602、1603、1604が一方向の書き込み権限を有することができる環境1641のログサーバを介してそれらの環境を監視するための機構を継続して維持しながら、環境1602、1603、1604からコントローラ自体を切断する(または少なくともインバンドリンクからコントローラ自体を切断する)ことができる。したがって、環境1641のログをレビューする過程で、環境1602がマルウェアによって危険にさられる可能性があることをメインコントローラ1601が発見した場合、メインコントローラ1601は、SDNツールを使用して、アウトオブバンド接続260のみが存在するように環境1602を分離することができる(例えば、図16Cを参照)。さらに、コントローラ1601は、環境1602の管理者に潜在的な問題に関する通知を送信することができる。コントローラはさらに、危険にさられた環境と他の環境1603、1604のいずれかとの間の任意の接続(例えば、インバンド管理接続270)を選択的に無効にすることによって、危険にさられた環境1602を分離することができる。別の例では、メインコントローラ1601は、ログを通じて、環境1603内のリソースが過度にホットに動作していることを発見することができる。これにより、メインコントローラが介入し、アプリケーションまたはサービスを環境1603から別の環境(既存の環境または新しく生成された環境のいずれであっても)に移行することができる。
コントローラ1601はさらに、購入者またはユーザの要求に従って同様の1つまたは複数のシステムをセットアップすることもできる。図16Eに示されるように、購入アプリケーション1650は、例えば、コンソールまたはその他で提供されてよく、これにより購入者のためにセットアップされるクラウド、ホスト、システム環境またはアプリケーションを購入者が購入または要求することを可能にする。購入アプリケーション1650は、環境1602をセットアップするようにコントローラ1601に指示することができる。環境1602は、例えば、リソースを環境1602に割り当てるか、またはアサインすることによって、ITシステムを配備または構築するコントローラ1601aを備えることができる。
図16Fは、環境1602、1603、1604がそれぞれクラウドとして動作し、コントローラを備える場合も、備えない場合もある環境で使用され得るユーザインターフェース1632、1633、1634を示す。ユーザインターフェース1632、1633、1634(それぞれ、環境1602、1603、1604に対応する)は、それぞれ、ユーザインターフェースと環境との接続を管理するメインコントローラ1601を通じて接続することができる。代替的、または追加的に、インターフェース1640a(コンソールの形態をとることができる)を環境1602に直接的に結合してよく、インターフェース1640b(コンソールの形態をとることができる)を環境1603に直接的に結合してよく、インターフェース1640c(コンソールの形態をとることができる)を環境1604に直接的に結合してよい。メインコントローラ1601との接続が分離されているか、切断されているか、または無効にされているかに関わらず、ユーザは、インターフェースのうちの1つまたは複数を使用して、環境またはクラウドを使用することができる。
変更管理サポートのためのシステムのクローニング及びバックアップ
環境1602、1603、1604のいくつかは、開発者が使用する典型的なセットアップソフトウェアのクローンであり得る。また、これらの環境は、例えば、異なる位置にある別のデータセンタの環境をクローンすることで位置が原因の遅延を削減するなど、拡張の方法として、現在の作業環境のクローンとすることもできる。
したがって、システム及びリソースを個別の環境またはサブシステムにセットアップするメインコントローラは、ITシステムの一部のクローニングまたはバックアップを可能にし得ることを理解されたい。これは、本明細書で説明するように、テスト及び変更管理で使用することができる。このような変更には、コード、構成ルール、セキュリティパッチ、テンプレートへの変更及び/または他の変更が含まれ得るが、これらに限定されない。
例示的な実施形態によれば、本明細書に説明されるITシステムまたはコントローラは、1つまたは複数の環境をクローンするように構成され得る。新しい環境またはクローン環境には、元の環境と同じリソースを備える場合と、備えない場合がある。例えば、新しい環境またはほぼクローンされた環境では、物理リソース及び/または仮想リソースの全く異なる組み合わせを使用することが望ましいか、あるいは必要になる場合がある。使用の最適化を管理することができる異なる位置または時間帯に環境をクローンすることが望ましい場合がある。仮想環境に環境をクローンすることが望ましい場合がある。環境のクローンの際、コントローラまたはメインコントローラのグローバルシステムルール210及びグローバルテンプレート230は、様々なタイプのハードウェアを構成及び/または実行する方法に関する情報を備えることができる。システムルール210内の構成ルールは、特定の利用可能なリソースを考慮して、リソース及びアプリケーションがより最適になるように、リソースの配置及び使用を指示することができる。
メインコントローラ構造は、システム及びリソースを別個の環境またはサブシステムにセットアップする機能を提供し、クローン環境のための構造を提供し、開発環境を作成するための構造を提供し、及び/またはアプリケーション及び/またはリソースの標準化されたセットを配備するための構造を提供する。このようなアプリケーションまたはリソースには、例えば、アプリケーションの開発及び/または実行、あるいはITシステム及び他の災害復旧アプリケーションの一部のバックアップまたはバックアップからの復元(例えば、LAMP(apache、mysql、php)スタック、ウェブフロントエンド及びreact/reduxを実行するサーバを含むシステム、ならびにnode.jsを実行するリソースならびにmongoデータベース及び他の標準化された「スタック」)に使用可能なものを含み得るが、これらに限定されない。場合により、メインコントローラは、別の環境のクローンである環境を配備し得、元の環境を作成するために使用された構成ルールのサブセットから構成ルールを派生させることがある。
例示的な実施形態によれば、システムまたはシステムのサブセットの変更管理は、1つまたは複数の環境、及びそのような環境の構成ルールまたは構成ルールのサブセットをクローンすることによって実行することができる。例えば、コード、構成ルール、セキュリティパッチ、テンプレートへの変更、ハードウェアの変更、コンポーネント及び依存アプリケーションの追加/削除、ならびにその他の変更を行うために、変更が必要になる場合がある。
例示的な実施形態によれば、システムに対するそのような変更は、変更の直接的な手動入力のエラーを回避するために自動化され得る。変更は、稼働中のシステムに変更を自動的に実施する前に、開発環境でユーザがテストすることができる。例示的な実施形態によれば、本番環境と同じ構成ルールを使用して構成される環境を、コントローラを使用して、自動的に電源をオンにする、プロビジョニングする及び/または構成することによって、稼働中の本番環境をクローンすることができる。クローン環境は、実行して稼働させることができる(一方、バックアップ環境は、変更をロールバックする必要がある場合に備えて、好適には緊急用にそのままにしておくことができる。これは、システムルール210、テンプレート230及び/またはシステム状態220を使用して、上の図1〜図16Fを参照して説明したような新しいシステムまたは環境を作成、構成及び/またはプロビジョニングするために、コントローラを使用して行うことができる。後で本番環境に実装する変更をテストするために、新しい環境を開発環境として使用することができる。コントローラは、そのような環境のインフラストラクチャを、ソフトウェアで定義された構造から開発環境に生成することができる。
本明細書で定義される本番環境とは、開発及びテスト専用の環境、すなわち開発環境とは対照的に、システムを動作させるために使用されている環境を意味する。
本番環境がクローンされると、インフラストラクチャまたはクローン開発環境は、本番環境と同様に、グローバルシステムルール210に従ってコントローラによって構成及び生成される。開発環境の変更は、コード、テンプレート230(既存のテンプレートの変更または新しいテンプレートの作成に関連する変更のいずれか)、セキュリティ及び/またはアプリケーションまたはインフラストラクチャ構成に対して行うことができる。開発環境に実装された新しい変更が、開発及び/またはテストを通じて必要に応じて準備されると、システムは自動的に開発環境に変更を加え、その後、本番環境として稼働状態になるか、配備されることになる。次に、新しいシステムルール210は、環境のコントローラ及び/または特定の環境に対してシステムルールの変更を適用するメインコントローラのいずれかにアップロードされる。システム状態220は、コントローラ内で更新され、追加または修正されたテンプレート230を実装することができる。したがって、インフラストラクチャの完全なシステム知識は、それを再作成する機能と共に、開発環境及び/またはメインコントローラによって維持され得る。本明細書で使用される完全なシステム知識には、リソースの状態、リソースの利用可能性及びシステム構成のシステム知識が含まれ得るが、これらに限定されない。完全なシステム知識は、コントローラによって、システムルール210、システム状態220から収集され得る、及び/またはインバンド管理接続270(複数可)、アウトオブバンド管理接続260(複数可)及び/またはSAN接続280(複数可)を使用してリソースを問い合わせることによって、収集され得る。リソースはとりわけ、リソース、ネットワークまたはアプリケーション使用率、構成の状態または利用可能性を判断するために問い合わせることができる。
クローンされたインフラストラクチャまたは環境は、システムルール210を介して定義されたソフトウェアであってもよいが、これは必須ではない。クローンされたインフラストラクチャまたは環境は、一般に、フロントエンドまたはユーザインターフェースと、計算、ネットワーク、ストレージ及び/またはアプリケーションネットワーキングリソースを含むことも、含まないこともある1つまたは複数の割り当てリソースとを備えてもよく、備えなくてもよい。この環境は、フロントエンド、ミドルウェア及びデータベースとして構成することも、しないこともできる。サービスまたは開発環境は、本番環境のシステムルール210でブートすることができる。コントローラが使用するために割り当てられるインフラストラクチャまたは環境は、特にクローンのためにソフトウェアで定義される場合がある。したがって、環境は、システムルール210によって配備可能であり、同様の手段によってクローン可能である。クローン環境または開発環境は、変更が望まれる前または変更が望まれるときに、システムルール210を使用してローカルまたはメインコントローラによって自動的にセットアップされ得る。
本番環境のデータは、開発環境が本番環境から分離されるまで、読み取り専用のデータストレージに書き込まれてよく、その後、開発環境によって開発及びテストプロセスで使用されることになる。
ユーザまたはクライアントは、本番環境がオンラインである間に、開発環境で変更を行い、テストすることができる。データストレージ内のデータは開発中に変更されることがあり、開発環境で変更がテストされる。揮発性または書き込み可能なシステムでは、開発環境がセットアップまたは配備された後に、本番環境のデータとのホット同期も使用することができる。システム、アプリケーション及び/または環境に対する所望の変更を開発環境に対して行い、テストすることができる。次に、システムルール210のスクリプトに対して所望の変更を行い、環境またはシステム全体及びメインコントローラに対して新しいバージョンを作成する。
別の例示的な実施形態によれば、新しく開発された環境は、その後、以前の本番環境が維持されるか、または完全に機能する一方で、新しい本番環境として自動的に実装されてもよく、したがって、大量のデータを失うことなく、以前の状態の本番環境への復帰が可能である。次に、システムルール210内の新しい構成ルールで開発環境がブートされ、データベースが本番データベースと同期され、書き込み可能データベースに切り替えられる。その後、元の本番データベースを読み取り専用データベースに切り替えることができる。以前の本番環境に戻すことが望ましい場合には、以前の本番環境は、以前の本番環境のコピーとして、必要な期間そのまま維持される。
環境は、物理ホスト及び/または仮想ホスト、ネットワーク及びその他のリソースを含むことができる単一のサーバまたはインスタンスとして構成することができる。別の例示的な実施形態では、環境は、物理ホスト及び/または仮想ホスト、ネットワーク及び他のリソースを含む複数のサーバとすることができる。例えば、ロードバランシングされたインターネット向けアプリケーションを形成する複数のサーバが存在してよく、それらのサーバは、複数のAPI/ミドルウェアアプリケーション(1つまたは複数のサーバ上でホストされてもよい)に接続されてよい。環境のデータベースは、APIが環境内でクエリを通信する1つまたは複数のデータベースを備えることができる。環境は、静的または揮発性の形態でシステムルール210から構築することができる。環境またはインスタンスは、仮想的であっても、物理的であっても、それぞれの組み合わせであってもよい。
アプリケーションの構成ルールまたはシステムルール210内のシステムの構成ルールは、様々な計算バックエンド(例えば、ベアメタル、AMD epycサーバ、qemu/kvm上のIntel Haswell)を指定することができ、新しい計算バックエンド上でアプリケーションまたはサービスを実行する方法に関するルールを含むことができる。したがって、例えば、テスト用のリソースの利用可能性が低下する状況がある場合には、アプリケーションを仮想化することができる。
本明細書に説明される例を使用し、これらによれば、テスト環境は、元の環境が物理リソースを使用する仮想リソース上に配備され得る。図1〜図18Bを参照して本明細書に説明されるコントローラを使用し、さらに本明細書に説明するように、システムまたは環境は、物理環境から、全体的または部分的に仮想リソースを備える場合も、備えない場合もある環境にクローンされ得る。
図17Aは、システム100が、コントローラ1701及び、1つまたは複数の環境、例えば、1702、1703、1704を備える例示的な実施形態を示す。システム100は静的システムであってよく、すなわち、アクティブなユーザデータがシステムの状態を絶えず変化させたり、頻繁にデータを操作したりしないシステム、例えば、静的ウェブページのみをホストするシステムであってもよい。システムは、ユーザ(またはアプリケーション)インターフェース110に結合することができる。
コントローラ1701は、本明細書に説明されるコントローラ200/1401/1501/1601と同様の方法で構成することができ、同様に、グローバルシステムルール210、コントローラロジック205、テンプレート230及びシステム状態要素220を含むことができる。コントローラ1701は、本明細書の図14A〜図16Fを参照して説明したような方法で、1つまたは複数の他のコントローラまたは環境に結合することができる。コントローラ1701のグローバルルール210は、他のコントローラ及び/または環境を管理及び制御することができるルールを含むことができる。そのようなグローバルルール210、コントローラロジック205、システム状態220及びテンプレート230を使用して、本明細書の図1〜図16Fを参照して説明したのと同様の方法で、コントローラ1701を通じてシステムまたは環境をセットアップ、プロビジョニング及び配備することができる。各環境は、他の環境に関して含む環境の動作を定義するグローバルシステムルール210のサブセットを使用して構成することができる。
グローバルシステムルール210は、変更管理ルール1711を備えることもできる。変更管理ルール1711は、システム100、グローバルシステムルール210及び/またはコントローラロジック205への変更が望まれ得る場合に使用され得るルール及び/または指示のセットを備える。変更管理ルール1711は、ユーザまたは開発者が変更を開発し、テスト環境で変更をテストし、その後、変更をシステムルール210内の構成ルールの新しいセットに自動的に変換することによって変更を実施することを可能にするように構成することができる。変更管理ルール1711は、(図17Aに示すように)グローバルシステムルール210のサブセットであってよく、またはグローバルシステムルール210とは別個であってよい。変更管理ルールは、グローバルシステムルール210のサブセットを使用することができる。例えば、グローバルシステムルール210は、新しい環境を作成するように構成された環境作成ルールのサブセットを備えることができる。変更管理ルール1711は、システム100の一部または全ての態様をコピー及びクローンするために、コントローラ1701によって構成及びセットアップされたシステムまたは環境をセットアップ及び使用するように構成することができる。変更管理ルール1711は、テスト及び実装のためにシステムのクローンを使用することによって、実装前に、システムに対して提案された新しい変更のテストを可能にするように構成することができる。
図17Aに示されるようなクローン1705は、特定の環境またはシステム100の一部のルール、ロジック、アプリケーション及び/またはリソースを備えることができる。クローン1705は、システム100と同様の、または異なるハードウェアを備えることができ、仮想リソースを使用してもよく、使用しなくてもよい。クローン1705は、アプリケーションとしてセットアップ可能である。クローン1705は、システム100またはコントローラ1701のシステムルール210内の構成ルールを使用してセットアップ及び構成することができる。クローン1705は、コントローラを備えてもよく、備えなくてもよい。クローン1705は、上でより詳細に説明したように、割り当てられたネットワーク、コンピューティングリソース、アプリケーションネットワーク及び/またはデータストレージリソースを備えることができる。このようなリソースは、コントローラ1701によって制御される変更管理ルール1711を使用して割り当てることができる。クローン1705は、ユーザがクローン1705に変更を加えることを可能にするユーザインターフェースに結合することができる。ユーザインターフェースは、システム100のユーザインターフェース110と同じであっても、異なっていてもよい。クローン1705は、システム100全体、または1つまたは複数の環境及び/またはコントローラなどのシステム100の一部に使用することができる。クローン1705は、システム100の完全なコピーであっても、そうでなくてもよい。クローン1705は、完全に選択的に有効及び/または無効にすることができ、及び/または単一方向の読み取り及び/または書き込み接続に変換することができる、インバンド管理接続270、アウトオブバンド管理接続260及び/またはSAN接続280を介してシステム100に結合することができる。したがって、クローン環境1705がテスト中に本番環境から分離されるとき、またはクローン環境1705が新しい本番環境としてオンラインになる準備ができるまで、クローン環境1705内のデータへの接続を変更して、クローンデータを読み取り専用にすることができる。例えば、クローン1705に環境1702へのデータ接続がある場合、このデータ接続は分離のために読み取り専用にすることができる。
任意のバックアップ1706は、システム全体、または1つまたは複数の環境及び/またはコントローラなどのシステムの一部に使用してもよく、または使用しなくてもよい。バックアップ1706は、上でより詳細に説明したように、ネットワーク、計算、アプリケーションネットワーク及び/またはデータストレージリソースを備えることができる。バックアップ1706は、コントローラを備えてもよく、備えなくてもよい。バックアップ1706は、システム100の完全なコピーであってよい。バックアップ1706は、アプリケーションとして、またはシステム100と同様の、または異なるハードウェアを使用してセットアップすることができる。バックアップ1706は、完全に選択的に有効及び/または無効にすることができ、及び/または単一方向の読み取り及び/または書き込み接続に変換することができる、インバンド管理接続270、アウトオブバンド管理接続260及び/またはSAN接続280を介してシステム100に結合することができる。
図17Bは、システム変更管理で図17Aのクローン及びバックアップシステムを使用するための例示的なプロセスフローを示す。ステップ1785において、ユーザまたは管理アプリケーションは、システムに対する変更を開始する。このような変更には、コード、構成ルール、セキュリティパッチ、テンプレートへの変更、ハードウェアの変更、コンポーネント及び/または依存アプリケーションの追加/削除ならびにその他の変更が含まれ得るが、これらに限定されない。ステップ1786において、コントローラ1701は、図14A〜図16Fに関して説明した方法で環境をセットアップして、クローン環境1705となる(ここで、クローン環境は、それ自体の新しいコントローラを有してもよいか、または元の環境に対して同じコントローラを使用してもよい)。
ステップ1787において、コントローラ1701は、変更管理ルール1711を含むグローバルルール210を使用して、システムの1つまたは複数の環境(例えば、「本番環境」)の全てまたは一部を、クローン環境1705(例えば、ここでクローン環境1705は、「開発環境」として機能することができる)にクローンすることができる。したがって、コントローラ1701は、リソースを識別して割り当て、システムルール210を使用して、クローンリソースをセットアップして割り当て、データ、構成、コード、実行ファイル及びアプリケーションの起動に必要な他の情報のうちのいずれかを環境からクローンにコピーする。ステップ1788において、コントローラ1701は、任意には、システムルール210内の構成ルールを使用して(コントローラの有無に関わらず)バックアップ1706として機能する別の環境をセットアップすることによってシステムをバックアップし、テンプレート230、コントローラロジック205及びグローバルルール210をコピーする。
クローン1705が本番環境から作成された後、クローン1705は、クローンのコード、構成ルール、セキュリティパッチ、テンプレートへの変更及びその他の変更を行うことができる開発環境として使用することができる。ステップ1789において、開発環境への変更は、実装の前にテストすることができる。テスト中、クローン1706は、本番環境(システム100)またはシステムの他のコンポーネントから分離することができる。これは、コントローラ1701に、システム100とクローン1706との間の接続のうち1つまたは複数を選択的に無効にすることによって(例えば、インバンド管理接続270を無効にし、及び/またはアプリケーションネットワーク接続を無効にすることによって)実行することができる。ステップ1790では、変更された開発環境の準備ができているかどうかが判定される。ステップ1709において、開発環境がまだ準備できていないと判定された場合(これは、通常、開発者によって行われる判定である)、プロセスフローは、クローン環境1705に対するさらなる変更のためにステップ1789に戻る。ステップ1790において、開発環境が準備できていると判定された場合、ステップ1791において、開発環境と本番環境を切り替えることができる。すなわち、コントローラは、開発環境1705を新しい本番環境に変更し、開発/新しい本番環境への移行が完了し良好な状態になるまで、以前の本番環境を維持することができる。
図18Aは、システムの変更管理においてセットアップされ使用され得るシステム100の別の例示的な実施形態を示す。図18Aの例では、システム100は、コントローラ1801及び、1つまたは複数の環境1802、1803、1804、1805を備える。システムは、クローン環境1807及びバックアップシステム1808と共に示されている。
コントローラ1801は、本明細書に説明されるコントローラ200/1401/1501/1601/1701と同様の方法で構成され、グローバルシステムルール210、コントローラロジック205、テンプレート230及びシステム状態220の要素を含むことができる。コントローラ1801は、本明細書の図14A〜図16Fを参照して説明したような方法で、1つまたは複数の他のコントローラまたは環境に結合することができる。コントローラ1801のグローバルルール210は、他のコントローラ及び/または環境を管理及び制御することができるルールを含むことができる。そのようなグローバルルール210、コントローラロジック205、システム状態220及びテンプレート230を使用して、本明細書の図1〜図17Bを参照して説明したのと同様の方法で、コントローラ1801を通じて、システムまたは環境をセットアップ、プロビジョニング及び配備することができる。各環境は、他の環境に関する動作を含む環境の動作を定義するグローバルルール210のサブセットを使用して構成することができる。
グローバルルール210は、変更管理ルール1811を備えることもできる。変更管理ルール1811は、システム、グローバルルール及び/またはロジックへの変更が望まれる場合に使用され得るルール及び/または指示のセットを備えてよい。変更管理ルールは、ユーザまたは開発者が変更を開発し、テスト環境で変更をテストし、その後、変更をシステムルール210内の構成ルールの新しいセットに自動的に変換することによって変更を実施することを可能にするように構成することができる。変更管理ルール1711は、(図18Aに示すように)グローバルシステムルール210のサブセットであってよく、またはグローバルシステムルール210とは別個であってよい。変更管理ルール1711は、グローバルシステムルール210のサブセットを使用することができる。例えば、グローバルシステムルール210は、新しい環境を作成するように構成された環境作成ルールのサブセットを備えることができる。変更管理ルール1811は、システム100の一部または全ての態様をコピー及びクローンするために、コントローラ1801によってセットアップ及び配備されたシステムまたは環境をセットアップ及び使用するように構成することができる。変更管理ルール1811は、テスト及び実装のためにシステムのクローンを使用することによって、実装前に、システムに対して提案された新しい変更のテストを可能にするように構成することができる。
図18Aに示されるように、クローン環境1807は、1つまたは複数の環境に割り当てられ、コントローラ1801のグローバルシステムルール210及び変更管理ルール1811に従ってセットアップされ得る、ルール、コントローラロジック、テンプレート、システム状態データ及び割り当てられたリソース1820を有するコントローラ1807aを備え得る。バックアップシステム1808はさらに、1つまたは複数の環境に割り当てられ、コントローラ1801のグローバルシステムルール210及び変更管理ルール1811に従ってセットアップされ得る、ルール、コントローラロジック、テンプレート、システム状態データ及び割り当てられたリソース1821を有するコントローラ1808aを備え得る。システムは、ユーザ(またはアプリケーション)インターフェース110または別のユーザインターフェースに結合することができる。
クローン環境1807は、特定の環境またはシステムの一部のルール、ロジック、テンプレート、システム状態、アプリケーション及び/またはリソースを備えることができる。クローン1807は、システム100と同様の、または異なるハードウェアを備えることができ、クローン1807は、仮想リソースを使用しても、使用しなくてもよい。クローン1807は、アプリケーションとしてセットアップ可能である。クローン1807は、環境のために、システム100またはコントローラ1801のシステムルール210内の構成ルールを使用してセットアップ及び構成することができる。クローン1807は、コントローラを備えていても、備えていなくてもよく、本番環境とコントローラを共有してもよい。クローン1807は、上でより詳細に説明したように、割り当てられたネットワーク、コンピューティングリソース、アプリケーションネットワーク及び/またはデータストレージリソースを備えることができる。このようなリソースは、コントローラ1801によって制御される変更管理ルール1811を使用して割り当てることができる。クローン1807は、ユーザがクローン1807に変更を加えることを可能にするユーザインターフェースに結合することができる。ユーザインターフェースは、システム100のユーザインターフェース110と同じであっても、異なっていてもよい。
クローン1807は、システム全体、または1つまたは複数の環境及び/またはコントローラなどのシステムの一部に使用することができる。例示的な実施形態では、クローン1807は、環境1802のデータリソース1820に結合されたホットスタンバイデータリソース1820aを含むことができる。ホットスタンバイデータリソース1820aは、クローン1807のセットアップ時及び変更のテスト時に使用することができる。ホットスタンバイデータリソース1820aは、例えば、図18Bに関して本明細書に説明されるように、変更管理の間、ストレージリソース1820から選択的に切断可能であるか、または分離され得る。クローン1807は、システム100の完全なコピーであっても、そうでなくてもよい。クローン1807は、完全に選択的に有効及び/または無効にすることができ、及び/または単一方向の読み取り及び/または書き込み接続に変換することができる、インバンド管理接続270、アウトオブバンド管理接続260及び/またはSAN接続280を介してシステム100に結合することができる。したがって、クローン環境1807がテスト中に本番環境から分離されるとき、またはクローン環境が新しい本番環境としてオンラインになる準備ができるまで、クローン環境1807内の揮発性データへの接続を変更して、クローンデータを読み取り専用にすることができる。
古い本番環境を新しい本番環境に切り替える場合、コントローラ1801は、フロントエンド、ロードバランサまたは他のアプリケーションもしくはリソースに、新しい本番環境を指すように指示することができる。したがって、ユーザ、アプリケーションリソース及び/または他の接続は、変更が行われるときにリダイレクトされ得る。これは、例えば、ip/ipoibアドレス、infiniband GUID、dnsサーバ、infinibandパーティション/opensm構成のリスト変更、または、ネットワーキングリソースに指示を送信することによって実行され得るソフトウェア定義ネットワーク(SDN)構成の変更を含むがこれらに限定されない方法によって実行され得る。フロントエンド、ロードバランサまたは他のアプリケーション及び/またはリソースは、システム、環境及び/または他のアプリケーションを指し得、データベース、ミドルウェア及び/または他のバックエンドを含むがこれらに限定されない。このようなロードバランサを変更管理に使用して、古い本番環境から新しい環境に切り替えることができる。
クローン1807及びバックアップ1808は、システムに対する変更の態様を管理する際にセットアップされ、使用され得る。このような変更には、コード、構成ルール、セキュリティパッチ、テンプレートへの変更、ハードウェアの変更、コンポーネント及び/または依存アプリケーションの追加/削除ならびにその他の変更が含まれ得るが、これらに限定されない。バックアップ1808は、システム全体、または1つまたは複数の環境及び/またはコントローラ1801などのシステムの一部に使用することができる。バックアップ1808は、上でより詳細に説明したように、ネットワーク、コンピューティングリソース、アプリケーションネットワーク及び/またはデータストレージリソースを備えることができる。バックアップ1808は、コントローラを備えてもよく、備えなくてもよい。バックアップ1808は、システム100の完全なコピーであってもよい。バックアップ1808は、バックアップに含まれる構成ルールからシステム/環境/アプリケーションを再構築するために必要なデータを備えることができ、全てのアプリケーションデータを含むことができる。バックアップ1808は、アプリケーションとして、またはシステム100と同様の、または異なるハードウェアを使用してセットアップすることができる。バックアップ1808は、選択的に有効及び/または無効にすることができ、及び/または一方向の読み取り及び/または書き込み接続に変換することができる、インバンド管理接続270、アウトオブバンド管理接続260及び/またはSAN接続280を介してシステム100に結合することができる。
図18Bは、変更管理における図18Aのシステムの使用を示す例示的なプロセスフローであり、特に、図18Aのシステムが揮発性データを含む場合、またはデータベースが書き込み可能な場合を示す。このようなデータベースは、システム内の環境によって使用されるストレージリソースの一部である可能性がある。ステップ1870では、システムは、グローバルシステムルールを使用して配備される(本番環境を含む)。
次に、ステップ1871において、変更管理ルール1811を含むグローバルシステムルール210と、メインコントローラ1801またはクローン環境内のコントローラによるリソース割り当てとを使用して、クローン環境がシステムへの書き込みを禁止される読み取り専用環境を作成するために、本番環境がクローンされる。クローン環境はその後、開発環境として使用することができる。
ステップ1872では、ホットスタンバイ1820aが有効になり、システム100内で変更されている任意の揮発性データを格納するためにクローン環境1807に割り当てられる。クローンデータが更新され、開発環境内の新しいバージョンを更新データでテストすることができる。ホット同期データは、いつでもオフにすることができる。例えば、古い環境または本番環境から開発環境への書き込みがテストされているときに、ホット同期データをオフにすることができる。
次に、ステップ1873において、ユーザは、クローン環境1807を開発環境として使用して、変更を行うことができる。次に、ステップ1874で、開発環境に対する変更がテストされる。ステップ1875では、変更された開発環境の準備ができているかどうかが判定される(通常、このような判定は開発者によって行われる)。ステップ1875において、変更の準備ができていないと判定された場合、ユーザが戻って開発環境に他の変更を加えることができるように、プロセスフローはステップ1873に戻ることができる。ステップ1875において、変更を有効にする準備ができていると判定された場合、プロセスフローはステップ1876に進み、ここで、特定の環境に関してシステムまたはコントローラ内で構成ルールが更新され、新しい更新された環境を配備するために使用されることになる。
ステップ1877において、次に、開発環境(または、新しい環境)が、稼働前に、所望のリソース及びハードウェア割り当てを有する所望の最終構成で変更を伴って再配備されてよい。次のステップ1878において、元の本番環境の書き込み機能が無効にされ、元の本番環境は、読み取り専用になる。元の本番環境が読み取り専用である一方、1878の一部として、元の本番環境(または、おそらく、新しい本番環境も)からの新しいデータはいずれも、移行データとしてキャッシュ及び識別されてよい。一例として、データは、データベースサーバまたは他の適切な場所(例えば、共有環境)にキャッシュされてよい。次に、開発環境(または、新しい環境)と古い本番環境が、ステップ1879で切り替えられて、開発環境(または、新しい環境)が、本番環境になる。
この切り替えの後、新しい本番環境は、ステップ1880で、書き込み可能にされる。ステップ1881で、新しい本番環境が開発者が決定したように機能しているとみなされると、切り替えプロセス中のデータ損失は全て(このようなデータはステップ1878でキャッシュされている)は、データが新しい環境に書き込まれて、ステップ1884で照合されてよい。このような照合の後、変更が完了する(ステップ1885)。
ステップ1881の結果、新しい本番環境が機能していない(例えば、システムを古いシステムに戻す必要がある問題が識別される)と判断された場合、ステップ1882で、環境は戻されて、古い本番環境が再び本番環境になる。ステップ182の一部として、コントローラ1801の対象環境の構成ルールは、現在戻されている本番環境に対して使用されていた以前のバージョンに戻される。
ステップ1883において、データベースの変更が、例えば、キャッシュデータを用いて決定されてよく、データは、古い構成ルールを有する古い本番環境に復元される。ステップ1883をサポートするために、データベースは、データベースに行われた変更のログを維持できるので、ステップ1883は、無効にすることが必要な可能性のある変更を判別できる。キャッシュデータを追跡及び時間を記録するバックアップデータベースを使用して、上記のようにデータをキャッシュしてよく、クロックを戻して、どの変更を行ったかを判別することができる。スナップショット及びログをこの目的のために使用してよい。
1883でキャッシュデータを復元した後、再び、開始したい場合、プロセスはステップ1871に戻ってよい。
本明細書に記載の変更管理システムの例は、例えば、ハードウェアまたはソフトウェアを更新、追加、もしくは、削去する時、ソフトウェアにパッチを適用する時、システム障害が検出された時、ハードウェア障害または検出中にホストを移行させる時、動的なリソース移行のために、構成ルールもしくはテンプレートの変更のために、及び/または、任意の他のシステムに関連する変更を行う際に、使用されてよい。コントローラ1801またはシステム100は、障害を検出するように構成されてよく、障害を検出すると、システムがコントローラに利用可能な他のハードウェアに、変更管理ルールまたは既存の構成ルールを自動的に実施してよい。使用可能な障害検出法の例は、ホストにpingすること、アプリケーションにクエリすること、及び、様々なテストもしくはテストスイートを実行することを含むが、これらに限定されない。本明細書に記載の変更管理構成ルールは、障害が検出されると、実施されてよい。このようなルールは、障害が検出されると、バックアップ環境の自動生成、コントローラが実施しているデータもしくはリソースの自動的な移行をトリガしてよい。バックアップリソースの選択は、リソースパラメータに基づいてよい。このようなリソースパラメータは、使用情報、速度、構成ルール、並びに、データ容量及び使用量を含んでよいが、これらに限定されない。
本明細書に記載するように、変更が生じる時はいつも、コントローラは、変更のログと、実際に実行されたことを作成する。セキュリティまたはシステムの更新のために、本明細書に記載のコントローラは、構成ルールに従って自動的にオンオフし、且つ、ITシステム状態を更新するように構成されてよい。コントローラは、リソースをオフにして電力を節約してよい。コントローラは、時間によって効率を異ならせるためにリソースをオンにしてよい、または、移行してよい。移行時は、構成ルールに従い、環境またはシステムのバックアップまたはコピーが作成されてよい。セキュリティ侵害があった場合、コントローラは、攻撃されたエリアを切り離し、遮断してよい。
例示の実施形態に関して発明を記載したが、発明の範囲内にある様々な修正を行ってよい。発明へのこのような修正は、本明細書の教示を読むと認識できる。
付属書類A:ストレージ接続プロセスの例
複数のシステム間でストレージリソースを共有することに関するプロセスの例とルールの例を記載する。これは、ストレージ接続プロセスのほんの一例にすぎず、コンピューティングリソースをストレージリソースに接続する他の技術を使用できることを理解されたい。別段の記載のない限り、これらのルールは、ストレージ接続の開始を試みる全てのシステムに当てはまる。
この付属書類Aにおける定義
ストレージリソース:ストレージトランスポートを介して共有できるブロック、ファイル、または、ファイルシステム
ストレージトランスポート:ストレージリソースをローカルにまたはリモートに共有する方法。例は、iSCSI/iSER、NVMEoF、NFS、Sambaファイル共有である。
システム:指定されたストレージトランスポートを介してストレージリソースに接続を試みる任意のもの。システムは、任意の数のストレージトランスポートをサポートしてよく、どのトランスポートを使用するべきかをシステム自体が決定できてよい。
読み取り専用:読み取り専用ストレージリソースは、そのストレージリソースが含むデータの修正を許可しない。この制約は、ストレージトランスポートでストレージリソースのエクスポートを処理するストレージデーモンによって課される。さらに保証するために、幾つかのデータストアが、データをバックアップするストレージリソースを読み取り専用に設定してよい(例えば、LVM LVを読み取り専用に設定)。
読み書き(または、揮発性):読み書き(揮発性)ストレージリソースは、そのコンテンツがストレージリソースに接続するシステムによって修正されてよいストレージリソースである。
ルール:システムが所与のストレージリソースに接続し得るか否かをコントローラが判断する時、従わなければならないルールのセットがある。
1.読み書きストレージリソースは、1つのストレージトランスポートでのみエクスポートされるものとする。
2.読み書きストレージリソースは、1つのシステムによってのみ接続されるものとする。
3.読み書きストレージリソースは、読み取り専用として接続されてはならない。
4.読み取り専用ストレージリソースは、複数のストレージトランスポートでエクスポートされてよい。
5.読み取り専用ストレージリソースは、複数のシステムから接続されてよい。
6.読み取り専用ストレージリソースは、読み書きとして接続されてはならない。
プロセス
接続プロセスを関数と考える場合、接続プロセスは、2つの独立変数を取る。
1.ストレージリソースID
2.サポートされたストレージトランスポートのリスト(順序によって優先付け)
最初に、要求されたストレージリソースが、読み取り専用か読み書きかを判断する。
読み書きである場合、読み書きストレージリソースは1つの接続に制限されるので、ストレージリソースが既に接続されているか否かをチェックしなければならない。既に接続を有する場合、ストレージリソースを要求しているシステムが、現在接続されているシステムであることを確認する(これは、例えば、再接続の場合に生じる場合がある)。そうでない場合、複数のシステムは同じ読み書きストレージリソースに接続できないので、エラーを出す。要求しているシステムが、このストレージリソースに接続されているシステムである場合、利用可能なストレージトランスポートのうちの1つが、このストレージリソースの現在のエクスポートに一致することを確認する。一致する場合、接続情報を要求しているシステムに伝える。一致しない場合、複数のストレージトランスポートで読み書きストレージリソースを供給できないので、エラーを出す。
読み取り専用ストレージリソース及び接続されていない読み書きストレージリソースに関しては、供給されたストレージトランスポートのリストを順に処理し、そのトランスポートを用いて、ストレージリソースのエクスポートを試みる。エクスポートに失敗すると、エクスポートに成功するまで、または、ストレージトランスポートが無くなるまで、リストの順にエクスポートの試みを継続する。ストレージトランスポートが無くなると、要求しているシステムに、ストレージリソースは接続できなかったことを通知する。エクスポートに成功すると、接続情報と、新しい(リソース、トランスポート)=>(システム)関係とをデータベースに記憶する。次に、要求しているシステムは、ストレージトランスポート接続情報を伝えられる。
システム:ストレージ接続は、現在、通常動作中、コントローラと計算デーモンによって行われる。しかしながら、将来の繰り返しは、サービスが、ストレージリソースに直接接続し、計算デーモンをバイパスしてよい。これは、サービスの物理的配備の例の要件であってよく、仮想マシン配備に対しても同じプロセスを使用することは理に適う。
付属書類B:OverlayFSへの接続の例
サービスは、OverlayFSを利用して、共通ファイルシステムのオブジェクトを再利用し、サービスパッケージサイズを低減する。
この例のサービスは、3つ以上のストレージリソースを含む。
1.プラットフォーム。これは、ベースのlinuxファイルシステムを含み、読み取り専用でアクセスされる。
2.サービス。これは、サービスのオペレーションに直接関連する全てのソフトウェア(NetThunder ServiceDaemon、OpenRCスクリプト、バイナリ等)を含む。このストレージリソースは、読み取り専用でアクセスされる。
3.揮発性。これらのストレージリソースは、システムに対する全ての変更を含み、(物理的、コンテナ、及び、仮想マシン配備のために)サービス内からLVMによって管理される。
仮想マシンで実行する時、サービスは、以下を行うロジックを含むinitramfsと共にカスタムのLinuxカーネルを用いて、Qemuでカーネルから直接ブート(Direct Kernel Boot)される。
1.利用可能な読み書きディスクからLVMボリュームグループ(VG)をアセンブル
*このVGは、サービスのための全ての揮発性ストレージデータを含む1つのロジカルボリューム(LV)を含む。
2.プラットフォーム、サービス、及び、LVをマウント
3.ユニオンファイルシステム(ここでは、OverlayFS)を用いて、3つのファイルシステムを結合
同じプロセスが、物理的配備に使用できる。1つの選択肢は、PXEBootまたはIPMI ISO Bootを介してブートされた軽量OSにリモートでカーネルを提供し、次に、新しい実際のカーネルにkexecを使用する。または、軽量OSをスキップし、カーネル内に直接、PXEブートする。このようなシステムは、ストレージリソースに接続するためにカーネルinitramfsの追加のロジックを必要とする場合がある。
OverlayFS構成は、次のようになり得る。
/―――――――――――\
|揮発性レイヤ(LV)(RW)|
+――――――――――――+
|サービスレイヤ(RO)|
+――――――――――――+
|プラットフォームレイヤ(RO)|
\――――――――――――/
OverlayFSの幾つかの制限によって、特別なディレクトリ‘/data’を「アウトオブツリー」としてマーク付けすることが可能になる。このディレクトリは、サービスパッケージを作成する時、‘/data’ディレクトリを作成すると、サービスに利用可能になる。この特別なディレクトリは、‘mount−−rbind’を介してマウントされて、OverlayFS内にはないサブセットの揮発性レイヤへのアクセスを可能にする。これは、OverlayFSの一部である共有ディレクトリをサポートしていないNFS(ネットワークファイルシステム)等のアプリケーションに必要である。
カーネルファイルシステムレイアウト:
/
+−−platform/
+−−bin/
+−−.../
+−−service/
+−−data/[optional]
+−−bin/
+−−...
+−−volatile
+−−work/
+−−root/
+−−bin/
+−−data/[if present in/service/]
+−−...
+−−new_root/
+−−...
/new_rootディレクトリを作成し、そのディレクトリをOverlayFSを構成するためのターゲットとして使用する。OverlayFSが構成されると、/new_directory内にexec_rootを行うと、システムは、全ての利用可能なリソースと共に正常に開始する。