JP6518346B2 - 分散型コンピューティング環境における仮想マシンインスタンス上のコマンドの実行 - Google Patents

分散型コンピューティング環境における仮想マシンインスタンス上のコマンドの実行 Download PDF

Info

Publication number
JP6518346B2
JP6518346B2 JP2017557909A JP2017557909A JP6518346B2 JP 6518346 B2 JP6518346 B2 JP 6518346B2 JP 2017557909 A JP2017557909 A JP 2017557909A JP 2017557909 A JP2017557909 A JP 2017557909A JP 6518346 B2 JP6518346 B2 JP 6518346B2
Authority
JP
Japan
Prior art keywords
command
execution
instances
instance
client computing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2017557909A
Other languages
English (en)
Other versions
JP2018523192A (ja
Inventor
アムジャド フセイン
アムジャド フセイン
スティーブン メルリン トイッチェル
スティーブン メルリン トイッチェル
マッツ エリック ランナー
マッツ エリック ランナー
マニバナン サンダラム
マニバナン サンダラム
シバプラサド ベンカタ パディセティ
シバプラサド ベンカタ パディセティ
マーティン チェン マオ
マーティン チェン マオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of JP2018523192A publication Critical patent/JP2018523192A/ja
Application granted granted Critical
Publication of JP6518346B2 publication Critical patent/JP6518346B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/04Real-time or near real-time messaging, e.g. instant messaging [IM]
    • H04L51/046Interoperability with other network applications or services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/18Commands or executable codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Description

クラウドコンピューティングとは、遠隔地で利用可能であり及びインターネット等のネットワークを通してアクセス可能であるコンピューティングリソース(ハードウェア及びソフトウェア)を使用することである。仮想サーバー等の多くのコンピューティングデバイスが用いられるコンピューティング環境、または多くのサーバーコンピュータが用いられるクラウドコンピューティング環境において、コンピューティングリソースの使用は、コスト利点を含む多くの利点及び/または変化するコンピューティングリソースの必要性に迅速に対応できる能力を提供することができる。
データセンタリソースの利用の増加を容易にするために、仮想化技術は、単一の物理的コンピューティングマシンが、接続されたユーザへの独立インスタンスとして現れ及び動作する1つ以上の仮想マシンインスタンスをホストすることを可能にし得る。仮想化によって、単一の物理的コンピューティングデバイスは、動的な様式で、仮想マシンインスタンスを作成、維持、または削除することができる。同様に、ユーザは、「必要に応じて」または少なくとも「要求に応じて」、コンピュータリソースをデータセンタから要求することができ、ユーザには、様々な仮想マシンリソースが提供されることができる。様々な構成、トラブルシューティング、及びリソース再割り当てに関する問題は、アプリケーションを起動する複数(例えば、一団)のインスタンスを管理する、または、他の作業負荷を管理するクラウドコンピューティング環境の顧客に対して生じ得る。クラウドコンピューティングリーソスの使用が増加するにつれて、仮想マシンの運用、管理、及びトラブルシューティングは、時間がかかり及び非効率であり得るインスタンス毎ベースで行われる場合がある。
本開示に従った様々な実施形態を、図面を参照して説明する。
本開示の実施形態に従った、コマンド実行サービスをサポートする例示的ネットワーク環境の図である。 本開示の実施形態に従った、インスタンス上でコマンドを実行するための例示的通信シーケンスのブロック図である。 本開示の実施形態に従った、コマンド実行サービスを使用するサービスプロバイダ環境のコマンド拡張性を例示するブロック図である。 本開示の実施形態に従った、コマンド実行サービスを使用するマルチテナント環境で起動する複数の仮想マシンを示す例示的システム図である。 一実施形態による、コマンド実行サービスを提供するために使用され得る、制御プレーンと関連付けられる複数の管理コンポーネントを含む、さらに詳細な例示的システムを示す。 一実施形態に従って構成され得るコマンド実行と関連する機能性を有するホストコンピュータを用いて、仮想マシンインスタンスを起動するために使用されるハードウェア資産である、複数のホストコンピュータ、ルータ、及びスイッチの例を示す。 本開示の実施形態に従った、サービスプロバイダ環境の仮想マシンインスタンス上でコマンドを実行する例示的方法のフローチャートである。 本開示の実施形態に従った、サービスプロバイダ環境の仮想マシンインスタンス上でコマンドを実行する例示的方法のフローチャートである。 説明される技術革新が実施され得る好適なコンピューティング環境の一般例を示す。
以下の説明は、分散型コンピューティング環境における仮想マシンインスタンス上のコマンドの実行をサポートする技術及び解決策を対象とするものである。より具体的には、分散型コンピューティング環境のユーザは、クライアントコンピューティングデバイスを使用して、コマンド実行要求を分散型コンピューティングに送信する。コマンド実行サービス(CES)は、要求を受信してもよく、その要求に基づいて(例えば、要求において識別されたインスタンスIDまたはタグに基づいて)、1つ以上のインスタンスIDを読み出してもよい。要求は、所望のコマンドと、そのコマンドの1つ以上のパラメータとをさらに識別してもよい。CESは、コマンドを定義するコマンド仕様書/コマンド定義書を読み出すことができる。コマンド実行メッセージは、識別されたインスタンス毎に生成されてもよく、各実行メッセージは、コマンド仕様書と、読み出された要求によって識別されたパラメータとを含んでもよい。CESは、インスタンスメッセージサービス(または、他の種類の通信サービス)を使用して、各コマンド実行メッセージを対応する仮想マシンインスタンスに送信してもよい。インスタンスにおける構成エージェントは、コマンド仕様書に基づいて、プラグインを読み出してもよく、そのプラグインは、インスタンス上でコマンドを実行するために使用されることができる。コマンド実行の結果は、CESに戻されることができ、その後、クライアントコンピューティングデバイスに戻されることができる。コマンド仕様書は、CESを介して、維持/管理されることができ、グローバルコマンド仕様書(分散型コンピューティングの全てのクライアントによって使用されるためのグローバルコマンド)の使用と、カスタムコマンドの使用とを可能にすることができる。例えば、コマンド仕様書及び対応するコマンドプラグインは、クライアントによって生成され、CES及び/またはクライアントインスタンスを起動させるサーバーコンピュータにアップロードされる(例えば、仕様は、CESにアップロードされることができ、プラグインは、インスタンス構成エージェントによって使用されるためのクライアントのインスタンスを起動させるサーバーコンピュータにアップロード/記憶されることができる)。これに関連して、CESは、分散型コンピューティング環境に統合され、安全な様式で、コマンド拡張性(例えば、増加している利用可能なコマンド)及びインスタンス上の実行のためのコマンドのバルク通信を可能にする。
仮想マシンイメージは、仮想環境で仮想マシンを開始するために必要なオペレーティングシステム(例えば、Linux)及び他のデータを含有する。仮想マシンイメージは、物理コンピュータのディスクボリュームに類似し、マシンを起動させるために必要なファイルシステム、オペレーティングシステム、及び他のコンポーネントを含んでもよい。仮想マシンを開始するために、ハードウェアを選択する必要がある。ハードウェアの選択は、種々の異なるサイズのメモリ、CPU容量、I/O性能の多様性を可能にし得る、インスタンスタイプにより達成されてもよい。仮想マシンイメージ及びインスタンスタイプの組み合わせは、マルチテナント環境におけるホストサーバーコンピュータ等のコンピューティングリソース上で開始され得る「インスタンス」または仮想マシンを作成するために使用されることができる。本明細書で使用される場合、用語「仮想マシン」及び「仮想マシンインスタンス」は、代替可能である。
本明細書で使用される場合、用語「計算サービスプロバイダ」は、1つ以上のエンド受信側へのサービスとしてコンピューティング及び記憶容量を提供することが可能である「クラウドプロバイダ」を指すことができる。計算サービスプロバイダは、ある組織によって、または、その組織の代わりによって、別の組織(例えば、テナント)のために設けられることができる(すなわち、計算サービスプロバイダは、「プライベートクラウド環境」を提供してもよい)。他の場合、計算サービスプロバイダは、複数の顧客(例えば、テナント)が独立して運用するマルチテナント環境(すなわち、パブリッククラウド環境)をサポートできる。これに関連して、複数の顧客(例えば、複数の企業またはテナント)は、マルチテナント環境内において、サーバーコンピュータ等のリソースをレンタルすることができる。
本明細書で使用される場合、用語「サービスプロバイダ」(または、「サービスプロバイダ環境」)は、1つ以上のエンド受信側へのプライベートまたはパブリッククラウド環境と関連付けられる1つ以上の分散型コンピューティングサービスの役割を果たすプロバイダを指す場合がある。ある場合、サービスプロバイダは、クラウドサービスプロバイダと同一であってもよい。他の場合、サービスプロバイダは、計算サービスプロバイダによって提供されたサービスのサブセットだけを提供する。さらに他の場合、サービスプロバイダは、業務用コンピューティングサービスに関する業務用サービスプロバイダである。
本明細書で使用される場合、用語「タグ」は、共通性(例えば、サービスプロバイダ環境の顧客のアカウントと関連付けられる仮想マシンインスタンス)がある1つ以上のネットワークリソース(例えば、仮想マシンインスタンス)を識別する文字列(例えば、テキスト)を指す場合がある。例えば、所定の顧客の複数の仮想マシンインスタンスは、(例えば、サービスプロバイダ環境の顧客または管理者によって、)タグ付けまたはラベリングされることができる。これに関連して、単一のタグは、複数の顧客インスタンスを識別するために使用されてもよく、インスタンス(例えば、インスタンスID)に関する識別情報は、(例えば、ルックアップテーブル、データベース等から)タグによって読み出されることができる。
図1は、本開示の実施形態に従った、コマンド実行サービスをサポートする例示的ネットワーク環境の図である。図1を参照すると、ネットワーク環境100は、ネットワーク環境108を介して、クライアントコンピューティングデバイス104と通信するサービスプロバイダ102を含んでもよい。サービスプロバイダ102は、マルチテナントネットワーク環境であってもよく、その環境では、1人以上のクライアント(例えば、クライアントコンピューティングデバイス104のユーザ)は、1つ以上のサーバーコンピュータ上で1つ以上の仮想マシンインスタンス(VMI)を起動させてもよい(例えば、インスタンス170、・・・、172がホストサーバー169等の1つ以上のサーバーコンピュータ上で起動することができ、または、それらの複数のインスタンスが他の物理ハードウェア上で起動することができる)(図1に単一のサーバーコンピュータ169のみが例示されているが、複数のサーバーコンピュータは、サービスプロバイダ102によって使用されることができる)。サーバーコンピュータ(例えば、169)は、例えば、サービスクライアント102の1人以上のクライアント(または、その代わりに)によって運用されるクライアントサーバーであってもよい。サービスクライアント102は、インスタンス識別サービス140、インスタンスメッセージサービス130、及びコマンド実行サービス(CES)120をさらに備えてもよい。
クライアントコンピューティングデバイス104は、デバイス104のユーザに、仮想マシンインスタンス170、・・・、172の1つ以上へのアクセスを提供するために使用されてもよい。例示的実施形態では、クライアントコンピューティングデバイス104は、パーソルコンピューティングデバイス、ラップトップコンピュータデバイス、ハンドヘルドコンピューティングデバイス、端末コンピューティングデバイス、モバイルデバイス(例えば、携帯電話、タブレットコンピューティングデバイス、電子ブックリーダ等)、ワイヤレスデバイス、様々な電子デバイスと電気器具などを含む、幅広い種類のコンピューティングデバイスに対応することができる。例示的実施形態では、クライアントコンピューティングデバイス104は、インターネット、ワイドエリアネットワーク、及び/またはローカルエリアネットワークを含み得る通信ネットワーク108を通した通信を確立するために必要なハードウェア及びソフトウェアコンポーネントを含む。例えば、クライアントコンピューティングデバイス104は、サービスプロバイダ102の1つ以上のサーバーコンピュータ(例えば、169)とのインターネットまたはイントラネットを介した通信を容易にするネットワーク機器及びブラウザーソフトウェアアプリケーションが装備されてもよい。コンピューティングデバイス104は、中央処理装置及びアーキテクチャ、メモリ、マスストレージ、グラフィック処理装置(GPU)、通信ネットワーク可用性及び帯域幅などを有してもよい。
一実施形態では、クライアントコンピューティングデバイス104は、インスタンス管理アプリケーション106を起動させてもよい。インスタンス管理アプリケーション106は、VMI170、・・・、172の1つ以上にアクセスし及びそれらを管理するために使用されてもよい。加えて、インスタンス管理アプリケーション106は、VMI170、・・・、172の少なくとも1つでの実行のために、1つ以上のコマンドをサービスプロバイダ102に通信するために使用され得る、コマンドラインインターフェース(CLI)及び/またはコンソールユーザインターフェースを含むことができる。
コマンド実行サービス(CES)120は、好適な論理回路、電気回路、インターフェース、及び/またはコードを備えてもよく、VMI170、・・・、172の1つ以上で実行するコマンドと関連付けられる機能性を提供するように、動作可能であってもよい。また、CES120は、コマンド仕様記憶部122及びコマンド状態記憶部124を含んでもよい。コマンド仕様記憶部122は、グローバルコマンド仕様(GCS)126、・・・、128及び1つ以上のカスタムコマンド仕様(CCS)130等の1つ以上のコマンド仕様書を記憶するために使用されてもよい。本明細書で使用される用語「コマンド仕様」(または「コマンド定義」)は、インスタンス上の実行のためのコマンドの定義を提供するドキュメントを指す。例示的実施形態では、コマンド仕様は、属性値のペアから成るデータオブジェクトを伝送するために使用される人間が解読可能なテキストを伴うJavaScript(登録商標)オブジェクト表記(JSON)ドキュメントである。グローバルコマンド仕様126、・・・、128は、サービスプロバイダ環境102のいずれかのクライアントによって使用されてもよい。カスタムコマンド仕様130は、サービスプロバイダ環境のクライアント(例えば、クライアントデバイス104のユーザ)によって提供されるコマンド仕様を含む。
コマンド状態記憶部124は、VMI上のコマンドを実行することから得られた1つ以上のコマンド実行結果(例えば、132)を記憶するために使用されてもよい。コマンド実行結果132は、所定のコマンドに関する実行の状態及び/またはVMI上でコマンドを実行することから得られた結果/出力を含んでもよい。記憶部122及び124が別々の記憶部として例示されているが、本発明は、この点に限定されるわけではなく、記憶部122及び124の組み合わされたものとして、単体の記憶部が使用されてもよい。
インスタンス識別サービス140は、好適な電気回路、インターフェース、論理回路、及び/またはコードを備えてもよく、サービスプロバイダ環境102で起動するVMIにインスタンスIDを提供するために使用されてもよい。例えば、インスタンス識別サービス140は、ルックアップテーブルまたはデータベースを使用することができ、タグに基づいてVMIのIDを提供してもよい(例えば、利用可能なVMI170、・・・、172の1つ以上のVMIは、タグと関連付けられることができる)。
コマンドメッセージサービス130は、好適な電気回路、インターフェース、論理回路、及び/またはコードを備えてもよく、CES120とVMI170、・・・、172の1つ以上のものとの間で、メッセージ(例えば、コマンド)及び応答(例えば、コマンド実行結果)を通信させるように動作可能であってもよい。
また、仮想マシンインスタンス170、・・・、172は、対応する構成エージェント174、・・・、176を含んでもよい。各構成エージェント174、・・・、176は、好適な論理回路、インターフェース、及び/またはコードを備えてもよく、コマンド(例えば、コマンド実行メッセージ150、・・・、152)を受信することと、コマンドを実行するために複数の利用可能なプラグイン(例えば、174、・・・、184)のうちの1つを選択することとを含む、VMIの実行と起動を管理するように動作可能であってもよい。例示的実施形態では、構成エージェント174、・・・、176は、対応する仮想マシンインスタンス170、・・・、172上のアプリケーションとして起動してもよい。
本開示の実施形態に従って、コマンド実行サービス120は、(図1に例示されるような)サービスプロバイダ102内の独立型サービスとして実施されてもよく、または、1つ以上のサーバーコンピュータ(例えば、169)内のコードライブラリ(すなわち、ソフトウェア)として実施されてもよい。
図2は、本開示の実施形態に従った、インスタンス上でコマンドを実行するための例示的通信シーケンスのブロック図である。図1〜2を参照すると、例示的動作では、サービスプロバイダ102のユーザ/クライアントは、デバイス104上のアプリケーション106を使用して、コマンド実行要求(CER)110をCES120に送信してもよい(インデックス1a)。CER110は、インスタンス170、・・・、172の1つ以上でユーザが実行することを望むコマンドを識別してもよい。また、CER110は、タグ112(及び/または142等の1つ以上のVMIのID)と、随意に、コマンドパラメータ116とを含んでもよい(タグ112は、2つ以上のタグ及び/またはVMIのID等の1つ以上のVMI識別子を含むことができる)。CES120がコマンド実行要求110を受信した後、CES120は、要求を行うユーザを最初に認証してもよく、ユーザのログイン認証情報がタグと関連付けられるVMIへのアクセスを可能にすることを検証してもよい。その次に、CES120は、タグ112をインスタンス識別サービス140に通信させ、タグ112と関連付けられるVMI170、・・・、172のインスタンスID142を取得してもよい。その次に、CES120は、記憶部122からコマンド仕様書(例えば、126または130)を読み出してもよく、読み出されたコマンド仕様書は、CER110によって識別されたコマンド114と関連付けられる。その次に、CES120は、タグ112及びインスタンスID142によって識別されたVMI(例えば、VMI 1、・・・、VMI K)毎に、コマンド実行メッセージ(CEM)を生成してもよい。CEM150、・・・、152のそれぞれは、インスタンスID142、読み出された仕様書(例えば、グローバルドキュメント126または仕様書130)、及びCER110によって受信されたコマンドパラメータ116を含むことができる。パラメータ116は、識別されたコマンドを実行するために仕様書(例えば、プラグイン)を用いて使用されることができる。コマンド114は、事前に定義されてもよい(例えば、複数の利用可能なコマンドから選択されてもよい)。
例示的実施形態では、仕様書126及び/または130は、仕様書サイズに基づいて、CEM150、・・・、152に含まれてもよい。例えば、仕様書が事前に決定されたサイズ(例えば、閾値)よりも小さい場合、ドキュメント126/130は、CEM150、・・・、152に含まれることができる。しかしながら、仕様書が事前に決定されたサイズ(例えば、閾値)よりも大きい場合、ドキュメントの識別(ドキュメントへのリンク)は、CEMに含まれることができる。CEMの受信後すぐに、対応するVMI構成エージェントは、ドキュメント識別(例えば、リンク)を使用してもよく、ドキュメントと関連付けられるコマンドが実行されることができるように、完全な仕様書を抽出/読み出してもよい。
次に、生成されたCEM150、・・・、152は、インスタンスメッセージサービス130を介して、CEMによって識別されたそれぞれのVMIに通信されてもよい(図2のインデックス2及び3)。例えば、CEM150は、VMI170に通信されてもよい。構成エージェント174は、コマンド実行メッセージ150内のコマンド仕様書を使用して、利用可能なプラグイン178、・・・、180から1つのプラグイン(例えば、178)を選択してもよい(インデックス4)。その次に、VMI構成エージェント174は、プラグイン178を使用して、仕様書126及びコマンドパラメータ116を用いてコマンド114を実行してもよい(インデックス5)。コマンド実行結果132は、コマンドの実行中(または実行後)に生成されてもよく、インスタンスメッセージサービス130を介して、CES120に通信されてもよい(インデックス6)。CES120は、コマンド状態記憶部124に結果132を記憶してもよく(インデックス7)、結果132をクライアントデバイス104に通信してもよい(インデックス8)。結果132は、コマンド実行状態及び/またはコマンドが実行された後に生成された出力であってもよい。例示的な実装では、VMI1、・・・、Kのそれぞれから得られたコマンド実行結果132は集約され、集約後にデバイス104に送信されることができる。CERがコマンドパラメータ116を含む場合、パラメータ116はコマンド状態記憶部124に記憶されることができる。
図3は、本開示の実施形態に従った、コマンド実行サービスを使用するサービスプロバイダ環境のコマンド拡張性を例示するブロック図である。図1〜3を参照すると、コマンド仕様記憶部122のさらなる詳細図が例示されている。より具体的には、記憶部122は、グローバルコマンド仕様書310、・・・、312と、カスタムコマンド仕様書314、・・・、316とを記憶してもよい。
例えば、2つの別々のユーザ302、304は、それぞれ、クライアントデバイス306、308を使用して、サービスプロバイダ102にアクセスしてもよい。ユーザ302は、複数のカスタムコマンドを生成し、対応するカスタム定義/仕様書314、・・・、316を記憶部122にアップロードしてもよい。また、ユーザ302は、対応するプラグイン322、・・・、324を、記憶部122及び/またはVMI170、・・・、172の1つ以上にアップロードしてもよい。例えば、カスタムプラグイン322は、VMI170にアップロードされてもよい。さらに、アップロードを行うユーザ302は、カスタムコマンド仕様314、・・・、316にアクセスし/それらの仕様を使用するために、それぞれ、許可318、・・・、320を設定してもよい。許可318、・・・、320は、対応するプラグイン及び仕様書にアクセス/それらを使用する許可された1人以上のユーザを識別してもよい。ユーザ302がカスタムコマンド仕様(例えば、314)を使用する許可を他のユーザ(例えば、304)に与えることを決めた場合、ユーザ304はまた、許可318で識別されることができる。
また、サービスプロバイダ122は、コマンド実行サービスと関連する1つ以上のポリシーを指定するポリシードキュメント(例えば、340)を使用してもよい。例えば、顧客アカウントポリシー340は、コマンド実行結果132を提示するための1つ以上の優先事項、CES120にアクセスし及びそれを使用するための証明書または認証情報等を指定してもよい。
図4は、本開示の実施形態に従った、コマンド実行サービスを使用するマルチテナント環境で起動する複数の仮想マシンを示す例示的システム図である。より具体的には、図4は、本明細書で説明された実施形態が使用されることができる一環境を例示するネットワーク基盤サービスプロバイダ400のコンピューティングシステム図である。背景として、サービスプロバイダ400(すなわち、クラウドプロバイダ)は、エンド受信側(例えば、テナントまたは顧客)のコミュニティへのサービスとして、コンピューティング及び記憶容量の役割を果たすことが可能である。サービスプロバイダ400は、図1〜3に例示されるクラウドサービスプロバイダ102と同一であってもよい。
例示的実施形態では、サービスプロバイダ400は、ある組織によって、または、その組織の代わりによって、別の組織のために設けられることができる。すなわち、サービスプロバイダ400は、「プライベートクラウド環境」を提供してもよい。別の実施形態では、サービスプロバイダ400は、複数の顧客が独立して運用するマルチテナント環境(すなわち、パブリッククラウド環境)をサポートする。一般的に、サービスプロバイダ400は、サービス(「IaaS」)のようなインフラストラクチャ、サービス(「PaaS」)のようなプラットフォーム、及び/またはサービス(「SaaS」)のようなソフトウェアなどのモデルを提供することができる。他のモデルも提供することができる。IaaSモデルに関して、サービスプロバイダ400は、物理または仮想マシン、及び他のリソースとして、コンピュータを提供することできる。仮想マシンは、以下にさらに説明するように、ハイパーバイザによって、ゲストとして、起動されることができる。PaaSは、オペレーティングシステム、プログラミング言語実行環境、データベース、及びウェブサーバーを含むことができるコンピューティングプラットフォームの役割を果たす。アプリケーション開発者は、基盤のハードウェア及びソフトウェアを購入及び管理する費用を発生させることなく、サービスプロバイダプラットフォーム上でのソフトウェアソリューションを開発し及び起動させることができる。SaaSモデルは、サービスプロバイダのアプリケーションソフトウェアのインストール及ぶその動作を可能にする。ある実施形態では、エンドユーザは、ウェブブラウザまたは他の軽量の顧客アプリケーションを起動する、デスクトップコンピュータ、ラップトップ、タブレット、スマートフォン等のネットワーク化された顧客デバイスを使用して、サービスプロバイダ400にアクセスする。当業者は、サービスプロバイダ400が「クラウド」環境として説明されることを認識するであろう。
特定の例示されたサービスプロバイダ400は、複数のサーバーコンピュータ402A〜402Dを含む。4台のサーバーコンピュータだけが示されているが、あらゆる数のものが使用されることができ、大規模のセンタは何千台ものサーバーコンピュータを含むことができる。サーバーコンピュータ402A〜402Dは、ソフトウェアインスタンス406A〜406Dを実行するためのコンピューティングリソースを提供することができる。一実施形態では、インスタンス406A〜406Dは、仮想マシンである。当該技術分野で周知のように、仮想マシンは、物理マシンのようなアプリケーションを実行させるマシン(例えば、コンピュータ)のソフトウェア実施のインスタンスである。本例では、サーバーコンピュータ402A〜402Dのそれぞれは、単一のサーバー上の複数のインスタンス406の実行を可能するように構成されたハイパーバイザ408または他の種類のプログラムを実行するように構成されることができる。例えば、サーバー402A〜402Dのそれぞれは、1つ以上の仮想マシンパーティションをサポートするように(例えば、ハイパーバイザ408を介して)構成されることができ、仮想マシンパーティションは、仮想マシンインスタンスを起動することが可能である(例えば、サーバーコンピュータ402Aは、対応する仮想マシンインスタンスを起動する3つの仮想マシンパーティションのそれぞれをサポートするように構成され得る)。加えて、インスタンス406のそれぞれは、構成エージェント409等の1つ以上のアプリケーションを実行するように構成されることができる。構成エージェント409は、プラグイン411を使用して、1つ以上のコマンドを実行するために使用されてもよい。構成エージェント409及びプラグイン411は、図1を参照して説明されたような構成エージェント174、・・・、176及びプラグイン178、・・・、184と類似するものである。
また、サービスプロバイダ400は、CES120と関連して本明細書に説明される機能性を有し得るコマンド実行サービス440を備えてもよい。コマンド実行サービス440は、1つ以上のサーバー402内のコードライブラリのような、専用サーバー(サーバー402A〜402Dに類似するもの)のように、プロバイダ400内で独立型サービスとして実施されてもよい、及び/または管理機能を行うサーバーコンピュータ404の一部として実施されてもよい。例えば、プルトコル選択サービス440は、管理コンポーネント410(図5に示すようなもの)の一部として実施されてもよい。
本明細書に開示された実施形態は主に仮想マシンに関連して説明されるが、他の種類のインスタンスは、本明細書に開示された概念及び技術を用いて利用されることができることを理解されたい。例えば、本明細書に開示された技術は、ストレージリソース、データ通信リソース、及び他の種類のコンピューティングデバイスを用いて、利用されることができる。また、本明細書に開示された実施形態は、仮想マシンインスタンスを利用することなく、コンピュータシステム上で、直接、アプリケーションの全てまたは一部を実行してもよい。
1つ以上のサーバーコンピュータ404は、サーバーコンピュータ402、インスタンス406、ハイパーバイザ408、構成エージェント409、プラグイン411、及び/またはコマンド実行サービス440の動作を管理するためのソフトウェアコンポーネントを実行するために保有されることができる。例えば、サーバーコンピュータ404は、管理コンポーネント410を実行することができる。顧客は管理コンポーネント410にアクセスし、顧客によって購入されたインスタンス406の動作の様々な態様を構成することができる。例えば、顧客は、インスタンスを購入、レンタル、またはリースし、インスタンスの構成を変更することができる。また、顧客は、要求に応じた購入されたインスタンスのスケーリングの方法に関する設定を指定することができる。
サーバーコンピュータ404は、コマンド実行サービス440よって、処理メモリとして使用され得るメモリ452をさらに備えてもよい。自動スケーリングコンポーネント412は、顧客によって定義されたルールに基づいて、インスタンス406をスケーリングすることができる。一実施形態では、自動スケーリングコンポーネント412は、顧客が、新しいインスタンスが例示化されるべきタイミングを決定する際に使用されるスケールアップルールと、既存のインスタンスが終了されるべきタイミングを決定する際に使用されるスケールダウンルールとを指定することを可能にする。自動スケーリングコンポーネント412は、異なるサーバーコンピュータ402または他のコンピューティングデバイス上で実行する多数のサブコンポーネントを構成することができる。自動スケーリングコンポーネント412は、内部の管理ネットワークを通して利用可能なコンピューティングリソースを監視することができ、必要に基づいて利用可能であるリソースを修正することができる。
配置コンポーネント414は、コンピューティングリソースの新しいインスタンス406の配置において、顧客を援助するために使用されることができる。配置コンポーネントは、アカウントのオーナーが誰であるかの情報、クレジットカード情報、オーナーの国等のインスタンスと関連付けられたアカウント情報にアクセスすることができる。配置コンポーネント414は、どのように新しいインスタンス406が構成されるべきかを記述するデータを含む構成を顧客から受信することができる。例えば、その構成は、新しいインスタンス406にインストールされた1つ以上のアプリケーションを指定することができ、新しいインスタンス406を構成するために実行されるスクリプト及び/または他の種類のコードを提供し、どのようにアプリケーションキャッシュが準備されるべきかを指定するキャッシュロジックを提供し、ならびに他のタイプの情報を提供することができる。配置コンポーネント414は、顧客が提供する構成及びキャッシュロジックを利用し、新しいインスタンス406を構成、用意、及び開始することができる。構成、キャッシュロジック、及び他の情報は、管理コンポーネント410を使用する顧客によって、または配置コンポーネント414に直接、この情報を提供することによって指定されてもよい。インスタンスマネージャ(例えば、図5の550)は、配置コンポーネント414の一部として見なすことができる。
顧客アカウント情報415は、マルチテナント環境の顧客と関連付けられるいずれかの所望の情報を含むことができる。例えば、顧客アカウント情報は、顧客用の固有の識別子、顧客アドレス、課金情報、ライセンス情報、インスタンスを開始するためのカスタマイズパラメータ、スケジュール情報、自動スケーリングパラメータ、アカウントにアクセスするために使用される以前のIPアドレス等を含むことができる。
ネットワーク430は、サーバーコンピュータ402A〜402D及びサーバーコンピュータ404を相互接続するために利用されることができる。ネットワーク430は、インターネット、ローカルエリアネットワーク(LAN)、または他の種類のネットワークの1つ以上のものを含むことができ、エンドユーザがサービスプロバイダ400にアクセスすることができるようにワイドエリアネットワーク(WAN)440に接続されることができる。図4に例示されたネットワークトポロジーが簡略化されていることと、より多くのネットワーク及びネットワークデバイスが本明細書に開示された様々なコンピューティングシステムを相互接続するために利用されることができることを理解されたい。
図5は、一実施形態による、コマンド実行サービスを提供するために使用され得る、制御プレーンと関連付けられる複数の管理コンポーネントを含む、さらに詳細な例示的システムを示す。より具体的には、図5は、サービスプロバイダ400のマルチテナント環境内のコマンド実行サービス440を実施し得る、管理ホストサーバー404内のさらなる詳細なコンポーネントを例示する。
インスタンス(図4のインスタンス406等)にアクセスし及びそれを利用するために、顧客デバイス510を使用することができる。顧客デバイス510は、携帯電話、スマートフォン、ハンドヘルドコンピュータ、携帯情報端末(PDA)、デスクトップコンピュータ等を含む、種々のコンピューティングデバイス、モバイルデバイス、その他のいずれかであることができる。顧客デバイス510は、サービスプロバイダ400のコマンド実行サービス440と通信することができる。随意に、CES440との通信は、CES440の一部として実施されることができるエンドポイントサービス512(または、ロードバランサ)を使用して行ってもよい。API要求を使用して、顧客デバイス510は、本明細書に説明された機能性のいずれかを実施する要求、またはサービスプロバイダ400によって提供される1つ以上のサービスにアクセスする要求を行うことができる。サービスプロバイダ400(及び/または管理コンポーネント410もしくはサーバー404内)に含まれる、または含まれない場合がある他の一般的な管理サービスは、承認/認証制御部514、例えば、承認/認証制御ウェブサービスとして共に動作する1つ以上のコンピュータ、を含む。承認制御部514は、CES440によって提供されるサービスに関するAPI要求を認証して有効にし、及び展開することができる。CES440は、クライアントの認証、クライアント要求等を提供する目的のために、承認制御部514を呼び出してもよい。
コマンド実行サービス440は、本明細書に説明されたコマンド実行機能性(例えば、CES120と関連して本明細書に説明される機能性)を実行してもよい。CES440は、承認/認証制御部514と、パーティションのネットワーク540(ターゲットインスタンス用)(例えば、コマンドを実行するためにサーバーコンピュータ上で起動する仮想デスクトップインスタンスにアクセスするためのもの)及びポリシードキュメント340と通信してもよい。ターゲットインスタンスホスト540との通信は、インスタンスメッセージサービス513を介して、達成されることができる。
図6は、一実施形態に従って構成され得るコマンド実行と関連する機能性を有するホストコンピュータを用いて、仮想マシンインスタンスを起動するために使用されるハードウェア資産である、複数のホストコンピュータ、ルータ、及びスイッチの例を示す。より具体的には、図6は、パーティションのネットワーク(またはターゲットインスタンスホスト)540及びそれに関連付けられる物理ハードウェアを例示する。パーティションのネットワーク540は、ルータ616等のルータによって共に連結されるデータセンタ610a、・・・、610n等の複数のデータセンタを含むことができる。
ルータ616は、受信パケットのアドレス情報を読み取り、パケットの移動先を決定する。異なるデータセンタがホストサーバーコンピュータを含有することをルータが決める場合、パケットはそのデータセンタに転送される。パケットがデータセンタ610aのホストにアドレス指定され、パケットのパブリックIPアドレスを、プライベートIPアドレスに変換するネットワークアドレス変換器(NAT)618に移動する。また、NAT618は、プライベートアドレスを、データセンタ610aの外側にバインドされるパブリックアドレスに転換する。別のルータ620は、ホストサーバーコンピュータの1つ以上のラック630にパケットを送るために、NAT618に連結されることができる。各ラック630は、複数のホストサーバーコンピュータに連結されるスイッチ632を含むことができる。詳細なホストサーバーコンピュータは、641の拡大図に示される。
各ホスト641は、基本的なハードウェア650を有する。ハードウェア650上の層で起動しているのは、ハイパーバイザまたはカーネル層660である。ハイパーバイザまたはカーネル層660は、タイプ1またはタイプ2のハイパーバイザとして分類されることができる。タイプ1のハイパーバイザは、ホストハードウェア650を直接起動させ、ハードウェアを制御し、ゲストオペレーティングシステムを管理する。タイプ2のハイパーバイザは、従来のオペレーティングシステム内で起動する。したがって、タイプ2の環境では、ハイパーバイザは、オペレーティングシステム上で起動する違う層である可能性があり、そのオペレーティングシステムは、システムハードウェアと相互作用する。異なる種類のハイパーバイザは、Xen−based、Hyper−V、ESXi/ESX、Linux等を含むが、他のハイパーバイザも使用することできる。例示的実施形態では、ハイパーバイザ660は、本明細書に説明されるように、DSNまたはDMNをインストールするために使用され得るDFSソフトウェア409を含んでもよい。
管理層670は、ハイパーバイザの一部であり、またはそれと別々になっている可能性があり、概して、ハードウェア650にアクセスするために必要なデバイスドライバーを含む。パーティション680は、ハイパーバイザにより分離した論理ユニットである。各パーティション680は、割り当てられた、それ自体の部分のハードウェア層のメモリ、CPU割り当て、ストレージ等であることができる。加えて、各パーティションは、仮想マシン及びそれ自体のゲストオペレーティングシステムを含むことができる。(例えば、VMI1は、パーティション1上で起動してもよく、VMInは、パーティションn上で起動してもよい)。したがって、各パーティション680は、他のパーティションから独立した、それ自体の仮想マシンをサポートするように設計された抜粋部分である。また、パーティション680上のVMI(VMI1、・・・、VMIn)の1つ以上のものは、1つ以上のプラグインを使用して構成エージェントを実行し、VMI上でコマンドを実行する。
図7〜8は、本開示の実施形態に従った、サービスプロバイダ環境の仮想マシンインスタンス上でコマンドを実行する例示的方法のフローチャートである。図1及び図7を参照すると、サービスプロバイダ環境内の1つ以上の仮想マシンインスタンス上でコマンドを実行するためのコマンド実行要求がクライアントコンピューティングデバイスから受信され得るとき、例示的方法700は702で開始する。例えば、コマンド実行要求110は、クライアントデバイス104からCES120によって受信されてもよい。コマンド実行要求は、タグ112等のタグを含んでもよい。704において、1つ以上の仮想マシンインスタンスに関するインスタンス識別情報は、タグに基づいて読み出されてもよい。例えば、CES120は、タグ112をインスタンス識別サービス140に通信させ、タグ112と関連付けられるID142を取得してもよい。例示的実施形態では、インスタンス識別サービス140及び/またはインスタンスメッセージサービス130は、CES120の一部として実施されてもよい。
706において、コマンド実行要求によって指定されたコマンドと関連付けられるコマンド仕様書は、読み出されてもよい。例えば、CES120は、コマンド実行要求110によって識別されたコマンド114を使用して、記憶部122からコマンド仕様書(例えば、126)を読み出してもよい。708において、コマンド実行メッセージは、1つ以上の仮想マシンインスタンスのそれぞれに通信される。例えば、CES120は、ID142と関連付けられる識別されたVMIに関するコマンド実行メッセージ150、・・・、152を生成することができる。コマンド実行メッセージは、コマンド仕様書(例えば、126)と、コマンド実行要求(例えば、110)によって識別された少なくとも1つのコマンドパラメータ(例えば、116)とを含んでもよい。710において、コマンドを実行すること(例えば、構成エージェント174及びプラグイン178を使用して、VMI170でコマンドを実行すること)から得られたコマンド実行結果(例えば、132)は、1つ以上の仮想マシンインスタンス(例えば、170)から受信されてもよい。712において、コマンド実行結果(例えば、132)は、ネットワーク108を介して、クライアントコンピューティングデバイス(104)に通信されてもよい。
図1及び図8を参照すると、サービスプロバイダ環境で起動する複数のインスタンスに関するインスタンス識別情報が、クライアントコンピューティングデバイスから、コマンド(少なくとも1つのインスタンス上で実行されるためのもの)を使用して読み出されるとき、例示的方法800は802で開始する。例えば、コマンド(例えば、コマンド実行要求110)は、クライアントデバイス104からCES120によって受信されてもよい。コマンド実行要求は、タグ112等のタグ(または、インスタンスID等の情報を識別する他のインスタンス)を含んでもよい。インスタンス識別情報(例えば、142)は、受信されたコマンド実行要求110内のタグ112に基づいて、(例えば、サービス140から)取得されることができる。
804において、コマンドは、読み出されたインスタンス識別情報を使用して、複数のインスタンスに通信されることができる。例えば、受信されたコマンド(例えば、要求110内の114)は、コマンド仕様書(例えば、126)を読み出すために、CES120によって使用されることができる。その次に、CES120は、インスタンスID142と関連付けられる識別されたVMIに関するコマンド実行メッセージ150、・・・、152を生成することができる。コマンド実行メッセージは、コマンド仕様書(例えば、126)と、コマンド実行要求(例えば、110)によって識別された少なくとも1つのコマンドパラメータ(例えば、116)とを含んでもよい。コマンド実行メッセージ150、・・・、152は、識別されたコマンド114と関連付けられるプラグインを使用して、対応する構成エージェントによる実行のために、メッセージサービス130を使用して、対応するVMIに通信されることができる。806において、少なくとも第1のコマンド実行結果は、複数のインスタンスの少なくとも第1のインスタンス上でコマンドを実行することから受信されてもよい。例えば、VMI170の構成エージェント174は、コマンドの仕様書(例えば、126)及びコマンドと関連付けられるプラグイン(例えば、178)を使用して、コマンド114を実行してもよい。コマンドを実行することから得られたコマンド実行結果は、構成エージェント174によって生成されることができ、さらなる処理(例えば、デバイス104のユーザへの通信/表示のために、結果編集/保存能力を提供すること等)のためにCES120に通信されることができる。
図9は、説明される技術革新が実施され得る好適なコンピューティング環境の一般例を示す。図9を参照すると、コンピューティング環境900は、本技術革新が多様な汎用または専用コンピューティングシステムで実施され得るような、使用または機能性の範囲について何らかの制限を提案することを意図するものではない。例えば、コンピューティング環境900は、種々のコンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、サーバーコンピュータ、タブレットコンピュータ等)のいずれかであることができる。
図9を参照すると、コンピューティング環境900は、1つ以上の処理装置910、915と、メモリ920、925とを含む。図9では、この基本構成930は、点線内に含まれる。処理装置910、915は、コンピュータ実行可能命令を実行する。処理装置は、汎用中央処理装置(CPU)、特定用途向け集積回路(ASIC)のプロセッサ、または他のいずれかの種類のプロセッサであることができる。マルチ処理システムでは、複数の処理装置は、コンピュータ実行可能命令を実行し、処理能力を向上させる。例えば、図9は、中央処理装置910と、グラフィック処理装置またはコプロセッシング装置915とを示す。有形メモリ920、925は、処理装置(複数可)によってアクセス可能である、揮発性メモリ(例えば、レジスタ、キャッシュ、RAM)、不揮発性メモリ(例えば、ROM、EEPROM、フラッシュメモリ等)、または、それら2つのメモリのいくつかの組み合わせであってもよい。メモリ920、925は、処理装置(複数可)による実行のために好適なコンピュータ実行可能命令の形態で、本明細書に説明される1つ以上の技術革新(例えば、機能性)を実施するソフトウェア980を記憶する。
コンピューティングシステムは、さらなる特徴を有し得る。例えば、コンピューティング環境900は、ストレージ940、1つ以上の入力デバイス950、1つ以上の出力デバイス960、及び1つ以上の通信接続970を含む。バス、コントローラ、またはネットワーク等の相互接続機構(図示しない)は、コンピューティング環境900のコンポーネントを相互接続させる。典型的に、オペレーティングシステム(図示しない)は、コンピューティング環境900で実行する他のソフトウェアに、動作環境を提供し、コンピューティング環境900のコンポーネントの活動を連携させる。
有形ストレージ940は、取り外し可能または取り外し不可能であってもよく、持続的な方法で情報を記憶するために使用されることができ及びコンピューティング環境900内でアクセスされることができる、磁気ディスク、磁気テープもしくはカセット、CD−ROM、DVD、またはいずれかの他の媒体であってもよい。ストレージ940は、本明細書に説明される1つ以上の技術革新を実施するソフトウェア980に関する命令を記憶する。
入力デバイス(複数可)950は、キーボード、マウス、ペン、もしくはトラックボール等のタッチ入力デバイス、音声入力デバイス、スキャンデバイス、またはコンピューティング環境900に入力を提供する他のデバイスであってもよい。出力デバイス(複数可)960は、ディスプレイ、プリンタ、スピーカ、CDライタ、またはコンピューティング環境900からの出力を提供する他のデバイスであってもよい。
通信接続(複数可)970は、他のコンピューティング組織に通信媒体を介した通信を可能にする。通信媒体は、コンピュータ実行可能命令、オーディオもしくはビデオの入力もしくは出力、または変調データ信号内の他のデータ等の情報を伝達する。変調データ信号は、信号内の情報のエンコードに関するそのような様式で、設定または変化される1つ以上の特徴を有する信号である。例として、及び制限されないが、通信媒体は、電気、光、RF、または他のキャリアを使用することができる。
本開示方法の一部の動作は便利な提示のために具体的な順序で説明されないが、この様式の説明は、特定の順序が以下に説明される特殊言語によって要求されない場合、再配列を包含することを理解されたい。例えば、連続して説明される動作は、いくつかの場合で、再配列され、または同時に行われてもよい。さらに、単純性のために、添付図は、本開示方法が他の方法と併せて使用されることができる様々な方法を示さない場合がある。
本開示方法のいずれかは、1つ以上のコンピュータ可読記憶媒体(例えば、1つ以上の光媒体ディスク、揮発性メモリコンポーネント(DRAMまたはSRAM等)、または不揮発性メモリ(フラッシュメモリまたはハードドライブ等))上に記憶され、及びコンピュータ(例えば、コンピューティングハードウェアを含むスマートフォンまたは他のモバイルデバイスを含む、いずれかの市販コンピュータ)上で実行される、コンピュータ実行可能命令のように、実施されることができる。用語「コンピュータ可読記憶媒体」は、信号及び搬送波等の通信接続を含まない。本開示の技術を実施するためのいずれかのコンピュータ実行可能命令ならびに本開示の実施形態の実施の間に作成及び使用されるいずれかのデータは、1つ以上のコンピュータ可読記憶媒体に記憶されることができる。コンピュータ実行可能命令は、ウェブブラウザまたは他のソフトウェア(リモートコンピューティングアプリケーション等)を介してアクセスまたはダウンロードされる、例えば、専用ソフトウェアアプリケーションまたはソフトウェアアプリケーションの一部であることができる。そのようなソフトウェアは、例えば、単一のローカルコンピュータ(例えば、いずれかの好適な市販コンピュータ)上で、または1つ以上のネットワークコンピュータを使用するネットワーク環境(例えば、インターネット、ワイドエリアネットワーク、ローカルエリアネットワーク、顧客サーバーネットワーク(クラウドコンピューティングネットワーク等)、またはそのような他のネットワーク)で、実行されることができる。
明確性のために、ソフトウェアベースの実施の一部の選択された態様だけが説明される。当該技術分野で既知の他の詳細は省略される。例えば、本開示の技術は、いずれかの特定のコンピュータ言語またはプログラムに限定されないことを理解されたい。例えば、本開示の技術は、C++、Java、Perl、JavaScript、Adobe Flash、またはその他の好適なプログラミング言語で、書き込まれたソフトウェアによって実施されることができる。同様に、本開示の技術は、いずれかの特定のコンピュータまたはハードウェアの種類に限定されない。好適なコンピュータ及びハードウェアの詳細の一部は、既知であり、本開示で詳細に説明される必要はない。
また、本明細書に説明されるいずれかの機能性は、ソフトウェアの代わりに、1つ以上のハードウェアロジックコンポーネントによって、少なくとも部分的に、行われることができることを理解されたい。例えば、限定することなく、使用されることができるハードウェアロジックコンポーネントの例示する種類は、フィールドプログラマブルゲートアレイ(FPGA)、特定プログラム向け集積回路(ASIC)、特定プログラム向け標準製品(ASSP)、システムオンチップシステム(SOC)、結合プログラム可能論理回路(CPLD)等を含む。
さらに、ソフトウェアベースの実施形態(例えば、コンピュータに本開示の方法のいずれかを行わせるためのコンピュータ実行可能命令をふくむもの)のいずれかは、好適な通信手段を経由して、アップロード、ダウンロード、またはリモートでアクセスされることができる。そのような好適な通信手段は、例えば、インターネット、ワールドワイドウェブ、イントラネット、ソフトウェアアプリケーション、ケーブル(光ファイバーケーブルを含む)、磁気通信、電磁通信(RF、マイクロ波、及び赤外線通信を含む)、電子通信、またはそのような他の通信手段を含む。
本開示の実施形態は、以下の条項を考慮して、説明されることができる。
1.分散型コンピューティング環境における仮想マシンインスタンス上でコマンドの実行するための方法であって、
クライアントコンピュータデバイスから、前記分散型コンピューティング環境内の1つ以上の仮想マシンインスタンス上でコマンドを実行するためのコマンド実行要求を受信することであって、前記コマンド実行要求はタグを含む、前記受信することと、
前記タグに基づいて、前記1つ以上の仮想マシンインスタンスに関するインスタンス識別情報を読み出すことと、
前記コマンド実行要求によって指定された前記コマンドと関連付けられるコマンド仕様書を読み出すことと、
前記1つ以上の仮想マシンインスタンスのそれぞれに、コマンド実行メッセージを通信することであって、前記コマンド実行メッセージは、前記コマンド仕様書及び前記コマンド実行要求によって識別された少なくとも1つのコマンドパラメータを含む、前記通信することと、
前記1つ以上の仮想マシンインスタンスから、前記1つ以上の仮想マシンインスタンスにおいて前記コマンドを実行することから得られたコマンド実行結果を受信することと、
前記コマンド実行結果を前記クライアントコンピューティングデバイスに通信することと、
を含む、前記方法。
2.前記1つ以上の仮想マシンインスタンスは、複数のインスタンスを備え、前記方法は、さらに、
アプリケーションプログラミングインターフェース(API)を介して、前記コマンド実行要求を受信すること、
を含む、条項1に記載の方法。
3.前記複数のインスタンス毎に、前記コマンド実行メッセージを生成することと、
前記コマンドと関連付けられるプラグインを使用して、実行のために、前記生成されたメッセージを、前記複数のインスタンに通信することと、
をさらに含む、条項2に記載の方法。
4.前記コマンド実行結果は、コマンド実行状態または前記コマンドを実行することから生成された出力を含む、先行条項のいずれかに記載の方法。
5.前記分散型コンピューティング環境は、業務用コンピューティングサービスを含む、先行条項のいずれかに記載の方法。
6.前記コマンド仕様書は、前記コマンドの少なくとも1つの定義を含み、前記少なくとも1つのコマンドパラメータは、前記少なくとも1つの定義によって使用されるキーと値のペアのパラメータを含む、先行条項のいずれかに記載の方法。
7.命令を含むコンピュータ可読記憶媒体であって、実行時に、コンピュータシステムに、
クライアントコンピューティングデバイスからのコマンドを使用し、分散型コンピューティング環境で起動する複数のインスタンスに関するインスタンス識別情報を読み出すことであって、前記コマンドは、少なくとも1つの前記インスタンス上の実行のためのものである、前記読み出すこと、
前記読み出されたインスタンス識別情報を使用して、前記コマンドを前記複数のインスタンスに通信すること、
前記複数のインスタンスの少なくとも第1のインスタンス上で前記コマンドを実行することから得られた少なくとも第1のコマンド実行結果を受信すること、
を行わせる、前記コンピュータ可読記憶媒体。
8.前記命令は、実行時に、さらに、前記コンピュータシステムに、
アプリケーションプログラミングインターフェース(API)を介して、前記クライアントコンピューティングデバイスから前記コマンドを受信させる、
条項7に記載のコンピュータ可読記憶媒体。
9.前記受信されたコマンドは、タグを含み、前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記タグを使用して、前記インスタンス識別情報を読み出させる、
条項8に記載のコンピュータ可読記憶媒体。
10.前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記受信されたコマンドの少なくとも一部に基づいて、コマンド仕様書を読み出させ、前記コマンド仕様書は、前記クライアントコンピューティングデバイスから受信されたカスタム仕様書である、
条項8または9に記載のコンピュータ可読記憶媒体。
11.前記複数のインスタンスの少なくとも1つは、物理ハードウェア上で起動する、条項7〜10のいずれかに記載のコンピュータ可読記憶媒体。
12.前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記コマンド仕様書の少なくとも一部を含むように、前記通信することより前に前記受信されたコマンドを更新させる、
条項7〜10のいずれかに記載のコンピュータ可読記憶媒体。
13.前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記クライアントコンピューティングデバイスへの受信後すぐに、前記少なくとも第1のコマンド実行結果を通信させる、
条項7〜12のいずれかに記載のコンピュータ可読記憶媒体。
14.前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記複数のインスタンスの少なくとも第2のインスタンス上で前記コマンドを実行することから得られた少なくとも第2のコマンド実行結果を受信させる、
条項7〜13のいずれかに記載のコンピュータ可読記憶媒体。
15.前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記第1及び第2のコマンド実行結果を集約し、集約結果を生成させる、
条項14に記載のコンピュータ可読記憶媒体。
16.前記命令は、実行時に、さらに、前記コンピュータシステムに、
前記集約結果を前記クライアントコンピューティングデバイスに通信させる、
条項15に記載のコンピュータ可読記憶媒体。
17.システムであって、
分散型コンピューティング環境を形成するネットワークを経由して共に連結される複数のサーバーコンピュータであって、複数の仮想マシンインスタンスを実行するための前記複数のサーバーコンピュータと、
前記複数のサーバーコンピュータ及びクライアントコンピューティングデバイスに連結されるコマンド実行サービスと、を備え、前記コマンド実行サービスは、
前記クライアントコンピュータデバイスから、前記分散型コンピューティング環境内の少なくとも1つの前記仮想マシンインスタンス上でコマンドを実行するためのコマンド実行要求を受信することであって、前記コマンド実行要求は、インスタンス識別情報または1つ以上のタグを備える、前記受信すること、
前記インスタンス識別情報または前記1つ以上のタグに基づいて、前記複数の仮想マシンインスタンスのうちの1つ以上のものを選択すること、
前記選択された1つ以上の仮想マシンインスタンス毎に、コマンド実行メッセージを生成することであって、前記コマンド実行メッセージは、前記コマンドの少なくとも1つの定義を伴うコマンド仕様書を備える、前記生成すること、
前記コマンドと関連付けられるプラグインを使用して、実行のために、前記生成されたコマンド実行メッセージを、前記選択された1つ以上の仮想マシンインスタンスのそれぞれに通信すること、を行うように、
動作可能である、前記システム。
18.前記システムは、前記コマンド実行サービス及び前記複数の仮想マシンインスタンスに連結されたインスタンスメッセージサービスをさらに備え、前記コマンド実行サービスは、さらに、
前記インスタンスメッセージサービスを使用して、前記生成されたコマンド実行メッセージを、前記1つ以上の仮想マシンインスタンスのそれぞれに通信するように、
動作可能である、条項17に記載のシステム。
19.前記コマンド実行サービスは、さらに、
前記1つ以上の仮想マシンインスタンスから、前記コマンドを実行することから得られたコマンド実行結果を受信し、
前記コマンド実行結果を前記クライアントコンピューティングデバイスに通信するように、
動作可能である、条項17または18に記載のシステム。
20.前記コマンド実行サービスは、さらに、
APIを介して、前記クライアントコンピューティングデバイスから、前記コマンド仕様書または前記コマンドと関連付けられるプラグインを受信するように、
動作可能である、条項17〜19のいずれかに記載のシステム。
本開示の方法、装置、及びシステムは、いずれかの方法において、限定的であると解釈されるべきではない。その代わり、本開示は、単独または互いの様々な組み合わせ及び部分的組み合わせにおける、様々な開示された実施形態の全ての新規かつ非自明の特徴及び態様を対象とするものである。本開示の方法、装置、及びシステムは、それらのいずれかの特定の態様もしくは特徴または組み合わせに限定されるわけではなく、また、本開示の実施形態は、いずれかの1つ以上の特定の利点を提示することまたは問題を解決することを要求するものでもない。
本開示の発明が適用され得る多くの可能な実施形態を考慮すると、例示された実施形態が本発明の好ましい例であり、本発明の範囲を限定するものとして解釈されるべきではないことを理解されたい。むしろ、本発明の範囲は、次の特許請求の範囲によって定義される。したがって、本発明として請求されるものは、これらの請求項の範囲内にある全てのものである。

Claims (15)

  1. 方法であって、
    クライアントコンピューティングデバイスからインスタンス上の実行のためのコマンドを使用し、分散型コンピューティング環境で起動する複数のインスタンスに関するインスタンス識別情報を読み出すことと、
    読み出された前記インスタンス識別情報を使用して、前記コマンドを前記複数のインスタンスに通信することと、
    前記複数のインスタンスが前記コマンドを受信し、特定の前記クライアントコンピューティングデバイスによって使用されるカスタムコマンド仕様書と、すべての前記クライアントコンピューティングデバイスによって使用されるグローバルコマンド仕様書とを含むコマンド仕様書を読み出すこと、
    前記カスタムコマンド仕様書又は前記グローバルコマンド仕様書に基づいて、前記複数のインスタンスの少なくとも第1のインスタンス上で前記コマンドを実行することから得られた少なくとも第1のコマンド実行結果を受信することと、
    を含む、前記方法。
  2. 命令を含むコンピュータ可読記憶媒体であって、実行時に、コンピュータシステムに、
    クライアントコンピューティングデバイスからインスタンス上の実行のためのコマンドを使用し、分散型コンピューティング環境で起動する複数の前記インスタンスに関するインスタンス識別情報を読み出すこと
    前記読み出されたインスタンス識別情報を使用して、前記コマンドを前記複数のインスタンスに通信すること、
    前記複数のインスタンスが前記コマンドを受信し、特定の前記クライアントコンピューティングデバイスによって使用されるカスタムコマンド仕様書と、すべての前記クライアントコンピューティングデバイスによって使用されるグローバルコマンド仕様書とを含むコマンド仕様書を読み出すこと、
    前記カスタムコマンド仕様書又は前記グローバルコマンド仕様書に基づいて、前記複数のインスタンスの少なくとも第1のインスタンス上で前記コマンドを実行することから得られた少なくとも第1のコマンド実行結果を受信すること、
    を行わせる、前記コンピュータ可読記憶媒体。
  3. 前記命令は、実行時に、さらに、前記コンピュータシステムに、
    アプリケーションプログラミングインターフェース(API)を介して、前記クライアントコンピューティングデバイスから前記コマンドを受信させる、
    請求項2に記載のコンピュータ可読記憶媒体。
  4. 前記受信されたコマンドは、タグを含み、前記命令は、実行時に、さらに、前記コンピュータシステムに、
    前記タグを使用して、前記インスタンス識別情報を読み出させる、
    請求項3に記載のコンピュータ可読記憶媒体。
  5. 前記命令は、実行時に、さらに、前記コンピュータシステムに、
    前記受信されたコマンドの少なくとも一部に基づいて、コマンド仕様書を読み出させ、前記コマンド仕様書は、前記クライアントコンピューティングデバイスから受信されたカスタム仕様書である、
    請求項3に記載のコンピュータ可読記憶媒体。
  6. 前記複数のインスタンスの少なくとも1つは、物理ハードウェア上で起動する、請求項2〜5のいずれかに記載のコンピュータ可読記憶媒体。
  7. 前記命令は、実行時に、さらに、前記コンピュータシステムに、
    前記コマンド仕様書の少なくとも一部を含むように、前記通信することより前に前記受信されたコマンドを更新させる、
    請求項5に記載のコンピュータ可読記憶媒体。
  8. 前記命令は、実行時に、さらに、前記コンピュータシステムに、
    前記クライアントコンピューティングデバイスへの受信後に、前記少なくとも第1のコマンド実行結果を通信させる、
    請求項2〜7のいずれかに記載のコンピュータ可読記憶媒体。
  9. 前記命令は、実行時に、さらに、前記コンピュータシステムに、
    前記複数のインスタンスの少なくとも第2のインスタンス上で前記コマンドを実行することから得られた少なくとも第2のコマンド実行結果を受信させる、
    請求項2〜8のいずれかに記載のコンピュータ可読記憶媒体。
  10. 前記命令は、実行時に、さらに、前記コンピュータシステムに、
    前記第1及び第2のコマンド実行結果を集約し、集約結果を生成させる、
    請求項9に記載のコンピュータ可読記憶媒体。
  11. 前記命令は、実行時に、さらに、前記コンピュータシステムに、
    前記集約結果を前記クライアントコンピューティングデバイスに通信させる、
    請求項10に記載のコンピュータ可読記憶媒体。
  12. システムであって、
    分散型コンピューティング環境を形成するネットワークを経由して共に連結される複数のサーバーコンピュータであって、複数の仮想マシンインスタンスを実行するための前記複数のサーバーコンピュータと、
    前記複数のサーバーコンピュータ及びクライアントコンピューティングデバイスに連結されるコマンド実行サービスと、を備え、前記コマンド実行サービスは、
    前記クライアントコンピューティングデバイスから、前記分散型コンピューティング環境内の少なくとも1つの前記仮想マシンインスタンス上でコマンドを実行するため、インスタンス識別情報または1つ以上のタグを含むコマンド実行要求を受信すること
    前記インスタンス識別情報または前記1つ以上のタグに基づいて、前記複数の仮想マシンインスタンスのうちの1つ以上のものを選択すること、
    前記選択された1つ以上の仮想マシンインスタンス毎に、前記コマンドの少なくとも1つの定義を伴うコマンド仕様書を含むコマンド実行メッセージを生成すること
    前記コマンドと関連付けられるプラグインを使用して、実行のために、前記生成されたコマンド実行メッセージを、前記選択された1つ以上の仮想マシンインスタンスのそれぞれに通信すること、を行うように動作可能であり、
    前記コマンド仕様書は、特定の前記クライアントコンピューティングデバイスによって使用されるカスタムコマンド仕様書と、すべての前記クライアントコンピューティングデバイスによって使用されるグローバルコマンド仕様書とを含む、前記システム。
  13. 前記システムは、前記コマンド実行サービス及び前記複数の仮想マシンインスタンスに連結されたインスタンスメッセージサービスをさらに備え、前記コマンド実行サービスは、さらに、
    前記インスタンスメッセージサービスを使用して、前記生成されたコマンド実行メッセージを、前記1つ以上の仮想マシンインスタンスのそれぞれに通信するように、動作可能である、
    請求項12に記載のシステム。
  14. 前記コマンド実行サービスは、さらに、
    前記1つ以上の仮想マシンインスタンスから、前記コマンドを実行することから得られたコマンド実行結果を受信し、
    前記コマンド実行結果を前記クライアントコンピューティングデバイスに通信するように、
    動作可能である、請求項12または13に記載のシステム。
  15. 前記コマンド実行サービスは、さらに、
    APIを介して、前記クライアントコンピューティングデバイスから、前記コマンド仕様書または前記コマンドと関連付けられるプラグインを受信するように、
    動作可能である、請求項12〜14のいずれかに記載のシステム。

JP2017557909A 2015-05-19 2016-05-17 分散型コンピューティング環境における仮想マシンインスタンス上のコマンドの実行 Expired - Fee Related JP6518346B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/716,713 US20160344671A1 (en) 2015-05-19 2015-05-19 Executing commands on virtual machine instances in a distributed computing environment
US14/716,713 2015-05-19
PCT/US2016/032857 WO2016187192A1 (en) 2015-05-19 2016-05-17 Executing commands on virtual machine instances in a distributed computing environment

Publications (2)

Publication Number Publication Date
JP2018523192A JP2018523192A (ja) 2018-08-16
JP6518346B2 true JP6518346B2 (ja) 2019-05-22

Family

ID=56098371

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017557909A Expired - Fee Related JP6518346B2 (ja) 2015-05-19 2016-05-17 分散型コンピューティング環境における仮想マシンインスタンス上のコマンドの実行

Country Status (7)

Country Link
US (1) US20160344671A1 (ja)
EP (1) EP3298489A1 (ja)
JP (1) JP6518346B2 (ja)
KR (1) KR20180004777A (ja)
CN (1) CN107637026A (ja)
CA (1) CA2985082A1 (ja)
WO (1) WO2016187192A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9794292B2 (en) * 2015-10-26 2017-10-17 Amazon Technologies, Inc. Providing fine-grained access remote command execution for virtual machine instances in a distributed computing environment
US10243809B2 (en) 2016-06-29 2019-03-26 Nicira, Inc. Centralized troubleshooting tool for distributed virtual network
US10691501B1 (en) * 2016-10-25 2020-06-23 Amazon Technologies, Inc. Command invocations for target computing resources
US10466991B1 (en) 2017-03-03 2019-11-05 Amazon Technologies, Inc. Computing instance software package installation
US10684840B1 (en) 2017-03-03 2020-06-16 Amazon Technologies, Inc. Software package installation and monitoring
US11144363B1 (en) 2017-09-18 2021-10-12 Amazon Technologies, Inc. Workflow management system
US11108702B1 (en) * 2017-12-11 2021-08-31 Amazon Technologies, Inc. Customized command execution for a computing resource fleet
US10785291B2 (en) * 2018-05-09 2020-09-22 Bank Of America Corporation Executing ad-hoc commands on-demand in a public cloud environment absent use of a command line interface
US11163786B2 (en) * 2019-05-31 2021-11-02 Bae Systems Information And Electronic Systems Integration Inc. Data layer architecture, open data layer module and translation layer
CN112148935B (zh) * 2019-06-26 2024-05-17 腾讯美国有限责任公司 用于多实例的nbmp功能执行的方法和装置
CN110286937B (zh) * 2019-07-04 2021-06-15 深圳市指尖互动娱乐有限公司 一种分布式软件运行的方法及其系统
US11240185B2 (en) * 2019-11-22 2022-02-01 Digitalocean Llc Managing and executing serverless function command sets in a messaging service
US11966351B2 (en) * 2021-03-11 2024-04-23 Xilinx, Inc. Network interface device
CN112804376B (zh) * 2021-03-22 2022-02-15 北京浩瀚深度信息技术股份有限公司 一种nat环境下批量命令执行方法、装置及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06131226A (ja) * 1992-10-19 1994-05-13 Nec Corp 利用者管理ファイル・ファイルカタログの自動更新方式
JPH09106363A (ja) * 1995-10-12 1997-04-22 Nec Corp ユーザコマンド自動実行方式
JP2002108838A (ja) * 2000-10-02 2002-04-12 Ntt Comware Corp エージェント実行装置およびエージェント実行方法
JP5520929B2 (ja) * 2008-03-31 2014-06-11 アマゾン テクノロジーズ インコーポレイテッド コンピューティングノード間の通信の構成
US8370493B2 (en) * 2008-12-12 2013-02-05 Amazon Technologies, Inc. Saving program execution state
US8583920B1 (en) * 2012-04-25 2013-11-12 Citrix Systems, Inc. Secure administration of virtual machines
US9342353B2 (en) * 2012-10-06 2016-05-17 International Business Machines Corporation Techniques for implementing information services with tenant specific service level agreements
MY167516A (en) * 2012-12-11 2018-09-04 Mimos Berhad A system and method for peer-to-peer entity authentication with nearest neighbours credential delegation
US9002997B2 (en) * 2013-01-22 2015-04-07 Amazon Technologies, Inc. Instance host configuration
JP5975003B2 (ja) * 2013-09-13 2016-08-23 日本電気株式会社 仮想化制御装置、仮想化システム、仮想化方法、および、仮想化制御プログラム。
US20150263900A1 (en) * 2014-03-11 2015-09-17 Schlumberger Technology Corporation High performance distributed computing environment particularly suited for reservoir modeling and simulation

Also Published As

Publication number Publication date
KR20180004777A (ko) 2018-01-12
WO2016187192A1 (en) 2016-11-24
CN107637026A (zh) 2018-01-26
EP3298489A1 (en) 2018-03-28
US20160344671A1 (en) 2016-11-24
JP2018523192A (ja) 2018-08-16
CA2985082A1 (en) 2016-11-24

Similar Documents

Publication Publication Date Title
JP6518346B2 (ja) 分散型コンピューティング環境における仮想マシンインスタンス上のコマンドの実行
JP6621838B2 (ja) 仮想デスクトップ・インフラストラクチャにおける複数のプロトコルの使用
US10320674B2 (en) Independent network interfaces for virtual network environments
US10037220B2 (en) Facilitating software-defined networking communications in a container-based networked computing environment
US10091055B2 (en) Configuration service for configuring instances
JP6397568B2 (ja) 仮想デスクトップの移行
US9674103B2 (en) Management of addresses in virtual machines
US9471352B1 (en) Capability based placement
US20130034021A1 (en) Automated network configuration in a dynamic virtual environment
US20190342391A1 (en) Requesting storage performance models for a configuration pattern of storage resources to deploy at a client computing environment
US20150172117A1 (en) System, Method, Apparatus, and Computer Program Product for Enabling Management of a Converged Infrastructure Through a User Interface
US10021111B2 (en) Location based authentication of users to a virtual machine in a computer system
US10063445B1 (en) Detecting misconfiguration during software deployment
US10333901B1 (en) Policy based data aggregation
US10476809B1 (en) Moving virtual machines using migration profiles
US10104163B1 (en) Secure transfer of virtualized resources between entities
US10936330B2 (en) Instantaneous boot of virtual machine instances via remote direct memory access
US10617955B1 (en) Testing and delivery of game design assets in a service provider environment

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190306

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190325

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190419

R150 Certificate of patent or registration of utility model

Ref document number: 6518346

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees