(57)【特許請求の範囲】
【請求項１】
1つまたは複数のコンピュータにインストールされたバックアップオーケストレータにより、1つまたは複数のデプロイメントジョブを含むデプロイメントをバックアップするまたは復元する要求をクライアントデバイスから受け取るステップであって、前記要求は、前記デプロイメントを識別するデプロイメント識別子に関連付けられている、ステップと、
前記バックアップオーケストレータにより、前記デプロイメント識別子に基づいて、前記デプロイメントの構成パラメータを指定する仕様ファイルに従ってそれぞれのデプロイメントジョブに関連付けられた各ジョブ特定スクリプトを保存する、スクリプトの場所を判定するステップと、
各デプロイメントジョブのためのプレバックアップスクリプトまたはプレ復元スクリプトを実行すること、次に各デプロイメントジョブのためのバックアップスクリプトまたは復元スクリプトを実行すること、次に各デプロイメントジョブのためのポストバックアップスクリプトまたはポスト復元スクリプトを実行することを含む、前記スクリプトの場所に保存されたジョブ特定スクリプトをスクリプトタイプごとに逐次的に実行するステップであって、前記ジョブ特定スクリプトは、前記1つまたは複数のデプロイメントジョブをバックアップするかまたは前記1つまたは複数のデプロイメントジョブを復元する、ステップと、
前記バックアップオーケストレータにより、前記クライアントデバイスに、前記バックアップまたは復元の状態を示すステータスレポートを、前記要求に対する応答として提供するステップと、
を含む方法。
【請求項２】
前記デプロイメントは、仮想マシンの集合および永続的ディスクの集合において実装され、
各デプロイメントジョブは、それぞれの仮想マシンにおいて実行され、
各デプロイメントジョブは、前記仕様ファイル内で定義される、請求項１に記載の方法。
【請求項３】
前記スクリプトの場所を判定する前記ステップは、前記仕様ファイル内で指定されるような前記スクリプトの場所を識別するステップを含む、請求項１または２に記載の方法。
【請求項４】
前記仕様ファイルは、各ジョブに対し、
それぞれのプレバックアップスクリプト、
それぞれのバックアップスクリプト、
それぞれのポストバックアップスクリプト、
それぞれのプレ復元スクリプト、
それぞれの復元スクリプト、または
それぞれのポスト復元スクリプト、
のうちの1つまたは複数を定義する、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記仕様ファイルは、それぞれのスクリプトのそれぞれの場所を指定することによって前記それぞれのスクリプトを定義する、請求項４に記載の方法。
【請求項６】
前記プレバックアップスクリプトまたはプレ復元スクリプトは、1つまたは複数のジョブをロックするためのスクリプトを含み、
前記ポストバックアップスクリプトまたはポスト復元スクリプトは、1つまたは複数のジョブをロック解除するためのスクリプトを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
第2のタイプのスクリプトは、第1のタイプのスクリプトがすべてのデプロイメントジョブに対して完了した後で実行される、請求項１から６のいずれか一項に記載の方法。
【請求項８】
各スクリプトタイプについて、そのスクリプトタイプを有するジョブ特定スクリプトは、各デプロイメントジョブに対して逐次的に実行される、請求項７に記載の方法。
【請求項９】
1つまたは複数のコンピュータと、前記1つまたは複数のコンピュータによって実行されるとき、請求項１から８のいずれか一項に記載の方法を前記1つまたは複数のコンピュータに行わせるように動作可能な命令を記憶する1つまたは複数の記憶デバイスと、
を含むシステム。
【請求項１０】
コンピュータプログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、前記コンピュータプログラムは、データ処理装置によって実行されるとき、前記データ処理装置に請求項1から8のいずれか一項に記載の方法を行わせるように動作可能な命令を含む、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は一般に、クラウドコンピューティング技術に関する。
【背景技術】
【０００２】
クラウドコンピューティングでは、一式の共有コンピューティングリソース、記憶リソース、およびネットワークリソースを、通常、仮想マシンの形態でユーザにプロビジョニングできる。複数の物理的コンピューティング機器、例えば、サーバファーム内のコンピュータは、これらのリソースをプロビジョニングするためのサービスプラットフォームを提供できる。サービスプラットフォームは、サービスとしてのインフラストラクチャ(IaaS)と呼ばれることもある。デプロイメントシステムは、アプリケーションのソースコードまたはバイナリコード表現をIaaSリソースを使用するそのアプリケーションのサービスインスタンスへ変換するのを自動化および簡素化することができる。それにより、エンドユーザは、クラウドコンピューティングプラットフォーム上のサービスインスタンスにアクセスできる。クラウドコンピューティングプラットフォームの例には、一式のクラウド機器上にデプロイされるPivotal Cloud Foundry(登録商標)ソフトウェア製品がある。デプロイメントシステムの例には、クラウドコンピューティングプラットフォーム上のサービスインスタンスをデプロイおよび管理するBOSH(登録商標)システムがある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書は、クラウドコンピューティングプラットフォーム上のデプロイメントを、バックアップするおよび復元するための、方法、システム、およびコンピュータ読み取り可能な媒体について説明する。クラウドコンピューティングプラットフォーム上のデプロイメントとは、一式の仮想マシンおよび対応する非一時的記憶デバイス(例えば、ディスク)のことである。デプロイメントには、デプロイメントジョブと呼ばれる複数のサブユニットを含んでもよい。それぞれのジョブ仕様ファイルは、各デプロイメントジョブによって使用されるそれぞれのリソースを指定する。リソースには、バックアップまたは復元動作の前、動作中、後に行われる作動を指定する様々なスクリプトが含まれる。バックアップオーケストレータは、デプロイメントに対するバックアップまたは復元要求を受け取ると、スクリプトタイプごとに整列された予め指定された順番でスクリプトをそのデプロイメントジョブのために実行する。特定のタイプのスクリプトが実行される際、そのタイプに対応する各デプロイメントジョブのための、対応するスクリプトが実行される。特定のタイプのすべてのスクリプトが実行し終わると、次のタイプを有するスクリプトが実行される。このようにして、複数のデプロイメントジョブのバックアップおよび復元プロセスは、同期されオーケストレーションされる。
【０００４】
本明細書で説明される主題の特定の実施形態は、以下の1つまたは複数の利点を実現するために実装され得る。開示される技術は、大規模分散コンピューティングシステム上の大規模なデプロイメントをバックアップするおよび復元するための簡単なコマンドラインインタフェースを提供できる。複数のジョブを並行して実行している大規模なシステムにおけるバックアップおよび復元プロセスは、本質的に複雑である。開示される技術は、バックアップおよび復元の作動を各デプロイメントジョブに委託することによって複雑なプロセスを簡素化するフレームワークを提供する。バックアップおよび復元のデプロイメントのための従来型の技術と比較して、本明細書で説明される技術は、より柔軟性の高いバックアップおよび復元を提供する。本開示の技術は、複数のジョブのバックアップおよび復元動作をオーケストレーションすることによって、異なるジョブが異なる時間にロックアップすることから生じる競合を防ぎ、システムのサブコンポーネントが、バックアップが行われる前に安定した状態で確実に一時停止するようにする。したがって、従来型のバックアップシステムと比較して、本開示の技術は、複数のサブコンポーネントを有する大規模なデプロイメントに、より適している。
【０００５】
本明細書で説明される主題の1つまたは複数の実施形態の詳細は、下記の添付の図面および説明に記載される。他の特徴、態様および主題の利点は、説明、図面および特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【０００６】
【図１】バックアップおよび復元フレームワークを実装する例示的システムのアーキテクチャを示すブロック図である。
【図２】バックアップおよび復元スクリプトの予め定義された順序の例を示すブロック図である。
【図３】複数のジョブのためのバックアップおよび復元スクリプトのオーケストレーションの例を示す図である。
【図４】バックアッププロセスにおけるスクリプトの実行プロセスの例を示すフローチャートである。
【図５】デプロイメントをバックアップするまたは復元するプロセスの例を示すフローチャートである。
【発明を実施するための形態】
【０００７】
様々な図面中の同様の参照番号および呼称は、同様の要素を示す。
【０００８】
図1は、バックアップおよび復元フレームワークを実装する例示的システムのアーキテクチャを示すブロック図である。バックアップオーケストレータ102は、クライアントデバイス106からデプロイメント110をバックアップするためのバックアップ要求104を受け取る。バックアップオーケストレータ102は、バックアップまたは復元を行う1つまたは複数のプログラムを実行する1つまたは複数のコンピュータを含む。バックアップ要求104は、1つまたは複数のプログラムを呼び出すコマンドライン入力を含み得る。バックアップ要求104は、デプロイメント110を明示的または暗黙的に識別できる。例えば、バックアップ要求104は、1つまたは複数のパラメータ、例えば、デプロイメントの名前、デプロイメントのネットワークパス、または両方を指定することができる。クライアントデバイス106は、コマンドライン入力を受け取るように構成されたコマンドラインインタフェース(CLI)を含み得る。バックアップ動作は、デプロイメント110を再作成するために使用され得るデータを非一時的記憶デバイスにダンプすることを含む。復元動作は以前ダンプされたデータからデプロイメント110を再作成することを含む。
【０００９】
デプロイメント110は、仮想マシン(VM)およびディスクなどの永続的記憶デバイスの集合を含む。VMは、1つまたは複数のユーティリティおよび構成ファイルを含むIaaS特定のパッケージでラップされたオペレーティングシステムイメージを含むstemcellにより構築される。デプロイメントのVMは、デプロイメントのマニフェスト112に基づいたソフトウェアの特定のリリースによって事前設定(populate)され、デプロイメントディレクタ、例えば、BOSH Directorによって管理される。各リリースには、構成プロパティ、構成テンプレート、スクリプト、ソースコードおよびバイナリ加工物のバージョン化された集合を含む。デプロイメントマニフェスト112は、stemcell、リリースおよび各リリースによって使用されるリソースのバージョンを指定するファイルである。
【００１０】
デプロイメント110は、インスタンスグループ、例えば、インスタンスグループ116および118内に論理的にグループ化された複数のデプロイメントジョブを含む。インスタンスグループ116および118のそれぞれは、複数のアベイラビリティーゾーン(availability zone)にわたって広がる1つまたは複数のインスタンス、例えばVM、を含み得る。インスタンスグループのそれぞれ、例えば、インスタンスグループ116は、1つまたは複数のデプロイメントジョブ、例えば、デプロイメントジョブ120および122を含み得る。各デプロイメントジョブとは、長期のサービス、またはエランド(errand)とも呼ばれる短期のタスクを表すデプロイメントの論理ユニットである。デプロイメントジョブ120および122のそれぞれは、デプロイメントマニフェスト112で定義される。デプロイメントジョブ120および122のそれぞれは、メタデータ、1つまたは複数の構成ファイル、および1つまたは複数のスクリプトを含み得る。ジョブ仕様ファイル、例えば、BOSHのspecファイル(BOSH spec file)は、そのジョブに関連するジョブ名、ジョブ記述、テンプレートおよびスクリプトの場所などを含む、メタデータを定義できる。デプロイメントマニフェスト112は、デプロイメントジョブ120および122のそれぞれに対し、それぞれのジョブ名、1つまたは複数のそれぞれのジョブテンプレート、それぞれのリソースプール、1つまたは複数のそれぞれのネットワーク、および1つまたは複数のバックアップスクリプトまたは復元スクリプトを指定できる。バックアップスクリプトまたは復元スクリプトは、バックアップまたは復元動作のための準備およびクリーンアップの作動を行う。
【００１１】
例えば、デプロイメントマニフェスト112は、第1のデプロイメントジョブ120が、第1のプレバックアップ(pre-backup)スクリプト、第1のバックアップスクリプト、および第1のポストバックアップ(post-backup)スクリプトに関連付けられるよう指定する。デプロイメントマニフェスト112は、第2のデプロイメントジョブ122が、第2のプレバックアップスクリプト、第2のバックアップスクリプト、および第2のポストバックアップスクリプトに関連付けられるよう指定する。各スクリプトは、リリース作成者(release author)が作成できる。各スクリプトは、通常のシェルスクリプトであってよい。ERB(埋め込みRuby(Embedded Ruby))タグは、各スクリプトでテンプレート用に使用してもよい。
【００１２】
各スクリプトは、バックアップまたは復元の各々の具体的な段階で行われるそれぞれの動作を定義する。バックアップは、複数の段階で行われる複数のタスクを含み得る。タスクおよびそれに対応する段階には、例えば、特定のデプロイメントジョブがバックアップ可能である(例えば、バックアップに適している)かどうかを判定するためのプレバックアップチェック、デプロイメントジョブが修正され同期を外れることを妨げるプレバックアップロック(pre-backup lock)、デプロイメントジョブのデータをダンプする(例えば、書き込む)バックアップ、デプロイメントジョブが修正されるのを可能にするポストバックアップロック解除(post-backup unlock)、および加工物(artifact)を保存するポストバックアップクリーンアップを含んでよい。復元の段階には、例えば、プレ復元(pre-restore)チェック、復元ロック、復元、復元ロック解除、復元検証、および復元クリーンアップを含んでよい。これらのタスクは、例として提供される。各段階のタスクは、リリース作成者が望む任意の作動を行えるよう、ユーザによって設定可能(configurable)である。
【００１３】
第1のデプロイメントジョブ120および第2のデプロイメントジョブ122のそれぞれについて、各段階は、それぞれのスクリプトに対応し得る。各デプロイメントジョブは、必ずしもすべての段階のためのスクリプトを有する必要はない。特定の段階に対応する全ジョブのためのスクリプトは、1つのディレクトリ、例えば、/var/vcap/jobs/[job name]/bin/backupまたは/var/vcap/jobs/[job name]/bin/restoreに一緒に保存することができる。リリース内のデプロイメントジョブのための1つまたは複数の仕様ファイルは、各段階のためのそれぞれのディレクトリを指定できる。
【００１４】
バックアップ要求104を受け取ると、バックアップオーケストレータ102は、デプロイメントジョブ120および122に関連するスクリプトを探し当て(locate)、そのスクリプトを実行する。バックアップオーケストレータ102は、スクリプトを段階ごとに実行するように構成される。例えば、バックアップオーケストレータ102は、プレバックアップロックスクリプトを実行する前に、すべてのデプロイメントジョブのためのプレバックアップチェック段階のスクリプトを実行できる。各段階内で、バックアップオーケストレータ102は、すべてのデプロイメントジョブのためのスクリプトを特定の順序で実行しても、特定の順序で実行しなくてもよい。スクリプトは、1つまたは複数の加工物124を生成してもよい。各加工物124は、バックアップについての情報、例えばバックアップのバージョンを含み得る。バックアップオーケストレータ102は、加工物を収集および保存し得、また、その加工物をクライアントデバイス106に提供し得る。バックアップオーケストレータ102は、クライアントデバイス106にバックアップのステータスを報告するための応答を生成できる。
【００１５】
一般に、バックアップオーケストレータ102は、バックアップ動作を特定し呼び出して、共通バックアップ先を構成するための共通ユーザインタフェースを提供する。便宜上、バックアップオーケストレータ102の動作は、上記では一般的にバックアップの観点から説明した。復元プロセスも同様である。
【００１６】
図2は、バックアップおよび復元スクリプトの定義済みの順序の例を示すブロック図である。バックアップオーケストレータ、例えば、図1のバックアップオーケストレータ102は、リリース作成者が使用するライフサイクルフック(lifecycle hook)を提供する。ライフサイクルフックは、バックアップおよび復元のためのスクリプトを実行する様々な段階を定義する。段階は、デプロイメントジョブ間で同期される。リリース作成者は、ライフサイクルフックを複数のデプロイメントジョブのためのバックアップ動作および復元動作を調整するために使用できる。
【００１７】
バックアップスクリプト202についてのライフサイクルフックには、プレバックアップチェック204、プレバックアップロック206、バックアップ208、ポストバックアップロック解除210、およびポストバックアップクリーンアップ212の段階が含まれる。復元スクリプト222についてのライフサイクルフックには、プレ復元チェック224、プレ復元ロック226、復元228、ポスト復元ロック解除230、復元検証232、および復元クリーンアップ234の段階が含まれる。バックアップオーケストレータは、図2に示されるような順番に従って順次、スクリプトを実行できる。
【００１８】
バックアップオーケストレータは、クラスタ化されたデプロイメントにおける一貫性を保つために、次の段階のスクリプト、例えばバックアップ208、の実行前に、ある特定の段階、例えば、プレバックアップロック206、のすべてのジョブのためのすべてのスクリプトを逐次的に実行できる。例えば、第1のデプロイメントジョブのためのプレバックアップチェック204は、第2のデプロイメントジョブのためのプレバックアップチェック204が開始される前に完了する。バックアップオーケストレータは、特定の段階のスクリプトがデプロイメントジョブ間でコール(call)される順序を制御しても、制御しなくてもよい。バックアップオーケストレータは、異なる段階のスクリプトがコールされる順序を制御する。加えて、いくつかの実装形態では、バックアップオーケストレータは、デプロイメント横断的な(cross-deployment)一貫性を維持するために、デプロイメント間の(inter-deployment)オーケストレーションを行ってもよい。
【００１９】
デプロイメントジョブは、デプロイメントジョブがバックアップ可能かどうかをチェックするプレバックアップチェック204を行うスクリプトを有してもよい。このスクリプトによって、デプロイメントジョブは、バックアップ動作を開始できるかどうかをチェックできる。このスクリプトは任意選択であり、プレバックアップチェックが要求されない場合は含まれる必要はない。例えば、MySQLをバックアップする際、プレバックアップチェック204のためのスクリプトは、そのジョブがロックできるかどうかを判定することができる。
【００２０】
プレバックアップチェック204のためのスクリプトを作成するために、リリース作成者は、デプロイメントのテンプレートディレクトリ内に任意の名前でシェルスクリプトを保存することができる。デプロイメントジョブ仕様ファイルのテンプレートセクションにおいて、リリース作成者は、キー/値ペア(key value pair)として、スクリプト名およびbin/pre-backup-checkディレクトリを追加できる。ジョブ仕様ファイルは、リリースと関連付けされ得る。プレバックアップチェック204のための入力の例は、下記のリスト1に示される。
name: a_node
templates:
pre-backup-check.erb: bin/pre-backup-check
リスト1
【００２１】
プレバックアップチェック204のためのスクリプトは、結果を示すために終了コード(exit code)を使用する。例えば、終了コード0(ゼロ)は、成功を示し、それ以外の終了コードは失敗を示し得る。終了に成功したことは、そのデプロイメントジョブが、バックアップ可能であることを示す。プレバックアップチェック204のためのスクリプトは、デプロイメントの任意のノードにおいてプレバックアップロック206のための任意のスクリプトがコールされる前に、コールされる。プレバックアップチェック204のためのスクリプトは、デプロイメント内の全ジョブにわたって任意の順序でコールされてよい。
【００２２】
プレバックアップチェック204のためのスクリプトは、標準出力(standard output)ストリームおよび標準エラー出力(standard error)ストリーム(例えば、stdoutストリームおよびstderrストリーム)の形態でログを生成できる。これらのストリームは、キャプチャされ、バックアップを呼び出すクライアントデバイスに送られる。バックアップオーケストレータはまた、様々なディレクトリにログを保存できる。例えば、stdoutストリームは、/var/vcap/sys/log/<job-name>/pre-backup-check.stdout.logファイルに、stderrストリームは、/var/vcap/sys/log/<job-name>/pre-backup-check.stderr.logファイルに追加できる。
【００２３】
デプロイメントジョブは、バックアップ可能であると判定されているデプロイメントジョブをロックするプレバックアップロック206のためのスクリプトを有し得る。このスクリプトによって、デプロイメントジョブは、バックアップがクラスタにわたって一貫性を持つようにロックすることができる。例えば、MySQLをバックアップする際、プレバックアップロック206のためのスクリプトはバックアップ中にマイグレーションが実行されないようジョブをロックできる。
【００２４】
デプロイメントジョブにバックアップロックスクリプトを追加するために、リリース作成者は、デプロイメントジョブのテンプレートディレクトリ内に任意の名前でスクリプトを作成することができる。デプロイメントジョブ仕様ファイルのテンプレートセクションは、キー/値ペアとして、スクリプト名およびbin/pre-backup-lockディレクトリを含む。プレバックアップロック206のためのスクリプトの入力例は、下記のリスト2に示される。
name: a_node
templates:
backup-lock.erb: bin/backup-lock
リスト2
【００２５】
プレバックアップロック206のためのスクリプトは、結果を示すために終了コードを使用する。例えば、終了コード0(ゼロ)は、成功を示し、それ以外の終了コードは失敗を示し得る。終了に成功したことは、そのデプロイメントジョブが、ロックされることに成功したことを示す。プレバックアップロック206のためのスクリプトは、デプロイメントの任意のノードにおいてプレバックアップ208のための任意のスクリプトがコールされる前に、コールされる。プレバックアップロック206のためのスクリプトは、デプロイメント内の全ジョブにわたって任意の順序でコールされてよい。
【００２６】
プレバックアップロック206のためのスクリプトは、stdoutストリームおよびstderrストリームの形態でログを生成できる。これらのストリームは、キャプチャされ、バックアップを呼び出すオペレータに送られる。バックアップオーケストレータはまた、様々なディレクトリにログを保存できる。例えば、stdoutストリームは、/var/vcap/sys/log/<job-name>/pre-backup-lock.stdout.logファイルに、stderrストリームは、/var/vcap/sys/log/<job-name>/pre-backup-lock.stderr.logファイルに追加できる。
【００２７】
デプロイメントジョブは、デプロイメントジョブのバックアップを、特定のディレクトリ、例えば、$BACKUP_DIRECTORYパラメータによって指定されるディレクトリにダンプするバックアップ208スクリプトを有することができる。例えば、MySQLをバックアップする際、バックアップ208スクリプトは、データダンプコマンド、例えば、mysql dumpを呼び出す。デプロイメントをバックアップ可能にするためには、デプロイメントにおいて少なくとも1つのバックアップ208スクリプトが存在する。
【００２８】
デプロイメントジョブにバックアップスクリプトを追加するために、リリース作成者は、デプロイメントジョブのテンプレートディレクトリ内に任意の名前でスクリプトを作成することができる。デプロイメントジョブ仕様ファイルのテンプレートセクションは、キー/値ペアとして、スクリプト名およびbin/backupディレクトリを含む。バックアップ208のための入力の例は、下記のリスト3に示される。
name: a_node
templates:
backup.erb: bin/backup
リスト3
【００２９】
バックアップ208スクリプトは、結果を示すために終了コードを使用する。例えば、終了コード0(ゼロ)は、成功を示し、それ以外の終了コードは失敗を示し得る。終了に成功したことは、そのデプロイメントジョブが、バックアップに成功したことを示す。バックアップ208スクリプトは、デプロイメントのすべてのノードですべてのプレバックアップロック206がコールされた後で、コールされる。バックアップ208スクリプトは、デプロイメントの任意のノードで任意のポストバックアップロック解除210スクリプトがコールされる前に、コールされる。バックアップ208スクリプトは、デプロイメント内の全ジョブにわたって任意の順序でコールされてよい。
【００３０】
バックアップ208スクリプトは、stdoutストリームおよびstderrストリームの形態でログを生成できる。これらのストリームは、キャプチャされ、バックアップを呼び出すオペレータに送られる。バックアップオーケストレータはまた、様々なディレクトリにログを保存できる。例えば、stdoutストリームは、/var/vcap/sys/log/<job-name>/backup.stdout.logファイルに、stderrストリームは、/var/vcap/sys/log/<job-name>/backup.stderr.logファイルに追加できる。
【００３１】
ポストバックアップロック解除210スクリプトおよびポストバックアップクリーンアップ212スクリプトは、上記開示と同様の構造を有し得る。同様に、復元スクリプトもまた同様の構造を有し得る。
【００３２】
図3は、複数のジョブのためのバックアップスクリプトおよび復元スクリプトのオーケストレーションの例を示す図である。デプロイメントの例、例えば、図1のデプロイメント110は、複数のインスタンスグループ、例えば第1のインスタンスグループ116および第2のインスタンスグループ118を含み得る。第1のインスタンスグループ116は、第1のデプロイメントジョブ120および第2のデプロイメントジョブ122を含む。第2のインスタンスグループ118は、第3のデプロイメントジョブ304を含む。
【００３３】
第1のデプロイメントジョブ120は、第1のプレバックアップチェックスクリプト306、第1のプレバックアップロックスクリプト308、第1のバックアップスクリプト310、第1のポストバックアップロック解除スクリプト312、および第1のポストバックアップクリーンアップスクリプト314に関連付けられる。第2のデプロイメントジョブ122は、第2のプレバックアップチェックスクリプト316、第2のプレバックアップロックスクリプト318、第2のバックアップスクリプト320、第2のポストバックアップロック解除スクリプト322、および第2のポストバックアップクリーンアップスクリプト324に関連付けられる。第3のデプロイメントジョブ304は、第3のプレバックアップチェックスクリプト326、第3のバックアップスクリプト330、第3のポストバックアップクリーンアップスクリプト334に関連付けられる。
【００３４】
バックアップオーケストレータ、例えば、図1のバックアップオーケストレータ102は、これらのスクリプト306〜334の実行を調整する。バックアップオーケストレータは、スクリプトを段階ごとに実行する。第1の段階340では、バックアップオーケストレータは、必ずしもこの順序ではないが、第1のプレバックアップチェックスクリプト306、第2のプレバックアップチェックスクリプト316、および第3のプレバックアップチェックスクリプト326を実行する。これらのスクリプトを実行した後、バックアップオーケストレータは、第2の段階342に移行する。第2の段階342では、バックアップオーケストレータは、第1のプレバックアップロックスクリプト308および第2のプレバックアップロックスクリプト318を実行する。示される例では、第3のデプロイメントジョブ304は、プレバックアップロックスクリプトを持たない。これらのスクリプトを実行した後、バックアップオーケストレータは、第3の段階344に移行し、バックアップスクリプト310、320、330を実行する。バックアップスクリプト310、320、330の実行に続いて、バックアップオーケストレータは、第4の段階346に移行し、ポストバックロック解除スクリプト312および322を実行する。最後に、バックアップオーケストレータは、第5の段階348に移行し、ポストバックアップクリーンアップスクリプト414、324、334を実行する。各移行は、前段階のすべてのスクリプトが実行を終了した後で行われる。
【００３５】
便宜上、デプロイメントのバックアップに関するスクリプトのみが図3に示される。デプロイメントの復元に関するスクリプトの実行も同様にグループ化、段階化され得る。
【００３６】
図4は、バックアップにおけるスクリプト実行のプロセス400の例を示すフローチャートである。プロセス400は、1つまたは複数のプロセッサ、例えば、図1のバックアップオーケストレータ102を含むシステムによって行われ得る。
【００３７】
システムは、デプロイメントをバックアップするまたは復元するための要求を受け取る(402)。要求は、デプロイメントの場所または名前を提供することによってデプロイメントを指定できる。システムは、指定されたデプロイメントが存在するかどうかを判定する(404)。デプロイメントが存在しないとの判定に応答して、システムはバックアップを終了する(406)。デプロイメントが存在するとの判定に応答して、システムは、例えば、mkdirコマンドを実行することによって、バックアップ加工物を保存するためのローカルディレクトリを作成する(408)。
【００３８】
システムは、ローカルディレクトリの作成に成功したかどうかを判定する(410)。ローカルディレクトリの作成が不成功であるとの判定に応答して、システムはバックアップを終了する(406)。ローカルディレクトリの作成が成功であるとの判定に応答して、システムは、そのデプロイメントにおけるデプロイメントジョブのためのプレバックアップスクリプトを実行する(412)。プレバックアップスクリプトは、プレバックアップチェックおよびプレバックアップロックのためのスクリプトを含み得る。システムは、図3を参照して説明されるように、グループ内および段階内でプレバックアップスクリプトを実行できる。
【００３９】
システムは、プレバックアップスクリプトの実行が成功したかどうかを判定する(414)。プレバックアップスクリプトの実行が成功であったとの判定に応答して、システムは、そのデプロイメントジョブのデータをダンプするためのバックアップスクリプトを実行する(416)。システムは、次にポストバックアップスクリプトを実行する(418)。システムが、プレバックアップスクリプトの実行が不成功であったと判定した場合、システムは、バックアップスクリプトをスキップして、ポストバックアップスクリプトを実行できる。ポストバックアップスクリプトは、ポストバックアップロック解除およびポストバックアップクリーンアップのためのスクリプトを含み得る。システムは、図3を参照して説明されるように、グループ内および段階内でポストバックアップスクリプトを実行できる。
【００４０】
システムは、バックアップが成功したことを判定する(420)。バックアップが成功であったとの判定に応答して、システムは、加工物を排出する(422)。加工物は、デプロイされたインスタンスから排出され、したがってバックアップをコピーするためにかかる時間はそのジョブがロックされる時間には含まれない。システムは、次にインスタンスからバックアップを除去する(424)。バックアップがオペレータのVMにコピーされたので、バックアップを除去するステップには、デプロイされたインスタンスからバックアップのコピーを削除することを含む。バックアップが不成功であったとの判定に応答して、システムは、加工物の排出をスキップする。システムは、インスタンスからバックアップを除去する(424)。システムは、次にバックアップを終了する。
【００４１】
プロセス400は、デプロイメントをバックアップするプロセスである。デプロイメントを復元するプロセスは、同様の動作を含み得る。
【００４２】
図5は、デプロイメントをバックアップするまたは復元するプロセス500の例を示すフローチャートである。プロセス500は、1つまたは複数のプロセッサ、例えば、図1のバックアップオーケストレータ102、を含むシステムによって行われ得る。
【００４３】
システムは、クライアントデバイスから、デプロイメントをバックアップまたは復元する要求を受け取る(502)。デプロイメントは、1つまたは複数のデプロイメントジョブを含む。デプロイメントは、仮想マシンの集合および1つまたは複数の非一時的記憶デバイス、例えば、永続的ディスクの集合において実装される。各デプロイメントジョブは、それぞれの仮想マシンにおいて実行される。各デプロイメントジョブは、デプロイメントマニフェストにおいて定義される。要求は、バックアップオーケストレータプログラムを起動するコマンドライン入力であり得る。要求は、デプロイメントを識別するデプロイメント識別子に関連付けられる。デプロイメント識別子は、デプロイメントの名前または場所を指定できる。デプロイメント識別子は、要求のパラメータであってもよく、その要求を発行するクライアントデバイスに暗黙的に関連付けられていてもよい。
【００４４】
システムは、デプロイメント識別子に基づいて、ジョブ特定スクリプトを保存する、スクリプトの場所を判定する(504)。スクリプトの場所の判定には、ジョブ仕様ファイルに指定されるように、例えば、上記リスト1〜3に示された入力のように、スクリプトの場所を識別することを含む。各ジョブ特定スクリプトは、デプロイメントマニフェストおよび1つまたは複数のジョブ仕様ファイルに従って、それぞれのデプロイメントジョブに関連付けられる。デプロイメントマニフェストおよび1つまたは複数のジョブ仕様ファイルは、そのデプロイメントの構成パラメータを指定できる。
【００４５】
各ジョブに関して、デプロイメントマニフェストおよび1つまたは複数のジョブ仕様ファイルは、1つまたは複数のそれぞれのプレバックアップスクリプト(例えば、プレバックアップチェックスクリプトおよびプレバックアップロックスクリプト)、それぞれのバックアップスクリプト、1つまたは複数のそれぞれのポストバックアップスクリプト(例えば、ポストバックアップロック解除スクリプトおよびポストバックアップクリーンアップスクリプト)、1つまたは複数のそれぞれのプレ復元スクリプト(例えば、プレ復元チェックスクリプトおよびプレ復元ロックスクリプト)、それぞれの復元スクリプト、または1つまたは複数のそれぞれのポスト復元スクリプト(例えば、ポスト復元ロック解除スクリプト、ポスト復元検証スクリプト、およびポスト復元クリーンアップスクリプト)、を指定できる。スクリプト、およびそのスクリプトによって行われる作動の内容は、ユーザによって定義可能であり、リリース作成者が編集できる。システムはこのように、柔軟で、様々なデプロイメントのニーズに適応できるフレームワークを提供する。デプロイメントマニフェストおよび1つまたは複数のジョブ仕様ファイルは、それぞれのスクリプトのそれぞれの場所、例えば、ディレクトリまたは他の形態のアクセスパスを指定することによってそれぞれのスクリプトを指定できる。
【００４６】
システムは、スクリプトの場所に保存されたジョブ特定スクリプトを所定の順序で実行する(506)。実行している間、システムは、各デプロイメントジョブのためのプレバックアップスクリプトまたはプレ復元スクリプトを実行する。システムは、次に、各デプロイメントジョブのためのバックアップスクリプトまたは復元スクリプトを実行する。システムは、次に、各デプロイメントジョブのためのポストバックアップスクリプトまたはポスト復元スクリプトを実行する。スクリプトの場所に保存されたジョブ特定スクリプトを所定の順序で実行するステップには、ジョブ特定スクリプトを、段階に対応する各スクリプトタイプごとに逐次的に実行することを含む。実行している間、第1のタイプのスクリプトがすべてのデプロイメントジョブに対して完了した後、第2のタイプのスクリプトが実行される。各スクリプトタイプについて、当該のスクリプトタイプを有するジョブ特定スクリプトは、各デプロイメントジョブに対して逐次的に実行される。特に、例えば、実行順序は、図3を参照して上記で説明される。ジョブ特定スクリプトは、1つまたは複数のデプロイメントジョブをバックアップするか、または1つまたは複数のデプロイメントジョブを復元する。
【００４７】
システムは、要求に対する応答として、バックアップまたは復元の状態を示すステータスレポートをクライアントデバイスに提供する(508)。ステータスレポートは、標準入出力ストリームまたは標準エラー出力ストリームであり得、または、新規のバックアップおよび復元が生じたときは、特定の場所に保存され、追加され得る。状態には、成功時のためのコードまたは失敗時のためのエラーコードを含み得る。
【００４８】
本明細書で説明される主題および機能的動作の実施形態は、本明細書で開示される構造およびその構造的等価物を含む、デジタル電子回路で、有形に具現化されるコンピュータソフトウェアまたはファームウェアで、コンピュータハードウェアで、またはそれらのうちの1つまたは複数の組合せで、実装することができる。本明細書で説明される主題の実施形態は、1つまたは複数のコンピュータプログラム、つまり、データ処理装置で、またはその動作を制御して実行するために有形の非一時的プログラム担体上にコード化されたコンピュータプログラム命令の1つまたは複数のモジュールとして、実装され得る。代替的にまたは追加として、プログラム命令は、データ処理装置による実行のために適切な受信装置に伝送するための情報をコード化するために生成される、人工的に生成される伝搬信号、例えば機械的に生成される電気信号、光学的信号、または電磁的信号によってコード化できる。コンピュータ記憶媒体は、機械読み取り可能な記憶デバイス、機械読み取り可能な記憶基板、ランダムアクセスメモリデバイスまたはシリアルアクセスメモリデバイス、または1つまたは複数のそれらの組合せであり得る。
【００４９】
「データ処理装置」という用語は、データ処理ハードウェアを意味し、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくは複数のコンピュータを含む、データ処理のためのすべての種類の装置、デバイスおよび機械を包含する。装置はまた、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)であるか、またはそれらをさらに含み得る。装置は、任意選択で、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、または1つまたは複数のそれらの組合せの構成要素となるコードを含んでよい。
【００５０】
プログラムソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれたり説明されたりするコンピュータプログラムは、コンパイラ言語またはインタープリタ言語、もしくは宣言型言語または手続き型言語を含むどのような形態のプログラミング言語で書かれてもよく、かつ、スタンドアロンプログラムとしてのまたはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境での使用に適する他のユニットとしての形態を含むいかなる形態でデプロイされてもよい。コンピュータプログラムは、ファイルシステム内のファイルに対応してもよいが、必須ではない。プログラムは、他のプログラムまたはデータ(例えば、マークアップ言語の文書に保存された1つまたは複数のスクリプト)を保持するファイルの一部分内に、当該のプログラムに特化した単一のファイル内に、または複数の調整されたファイル(例えば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を保存するファイル)内に保存され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるかもしくは複数のサイトにわたって分散され通信ネットワークによって相互接続される複数のコンピュータ上で実行されるようデプロイされ得る。
【００５１】
本明細書で説明されるプロセスおよび論理フローは、入力データに対して動作して出力を生成することによって機能を行うための1つまたは複数のコンピュータプログラムを実行する、1つまたは複数のプログラマブルコンピュータによって行われ得る。プロセスおよび論理フローはまた、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって行うこともでき、装置として実装することもできる。
【００５２】
コンピュータプログラムの実行に適するコンピュータは、例として、汎用または専用マイクロプロセッサまたはそれら両方、もしくは任意の他の種類の中央処理装置を含む。一般的には、中央処理装置は、リードオンリメモリまたはランダムアクセスメモリもしくはそれら両方から命令およびデータを受け取る。コンピュータの本質的な要素は、命令を行うまたは実行するための中央処理装置ならびに、命令およびデータを保存するための1つまたは複数のメモリデバイスである。一般的に、コンピュータはまた、データの受け取りまたは転送またはそれら両方のために、1つまたは複数のデータ保存用の大容量記憶デバイス、例えば、磁気ディスク、光磁気ディスク、または光学ディスクを含むかまたは動作可能に結合される。しかしながら、コンピュータが、このようなデバイスを持つことは必須ではない。さらに、いくつかの例を挙げると、コンピュータは別のデバイス(例えば、携帯電話、携帯情報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機)、またはポータブル記憶デバイス(例えば、ユニバーサルシリアルバス(USB)フラッシュドライブ)などに組み込まれ得る。
【００５３】
コンピュータプログラム命令およびデータの保存に適したコンピュータ読み取り可能な媒体には、例としてEPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、およびCD-ROMおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスが含まれる。プロセッサおよびメモリは、専用論理回路によって補完されてよく、またはそれに組み込まれてもよい。
【００５４】
ユーザとの対話を提供するために、本明細書で説明される主題の実施形態は、ユーザに情報を表示するためのCRT(cathode ray tube:陰極線管)またはLCD(liquid crystal display:液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびにユーザがそれによりコンピュータに入力を提供できる、マウスまたはトラックボールなどのキーボードおよびポインティングデバイスを有するコンピュータ上で実装できる。他の種類のデバイスも同様にユーザとの対話を提供するために使用でき、例えば、ユーザに提供されるフィードバックは、視覚フィードバック、聴覚フィードバックまたは触覚フィードバックなどの任意の形態の感覚フィードバックであり得、またユーザからの入力は、音響、音声、または触覚的入力を含む任意の形態で受け取られ得る。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信することおよびデバイスからの文書を受信することにより、例えば、ウェブブラウザから受信した要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってユーザと対話できる。
【００５５】
本明細書で説明される主題の実施形態は、データサーバなどとしてのバックエンドコンポーネントを含むコンピューティングシステム、またはアプリケーションサーバなどのミドルウェアコンポーネントを含むコンピューティングシステム、またはグラフィカルユーザインタフェースまたはウェブブラウザを有し、それを通じてユーザが本明細書で説明される主題の実装形態と対話できるための、クライアントコンピュータなどのフロントエンドコンポーネントを含むコンピューティングシステムもしくは1つまたは複数のそのようなバックエンド、ミドルウェア、またはフロントエンドコンポーネントの任意の組合せで実装できる。システムのコンポーネントは、任意の形態または媒体によるデジタルデータ通信、例えば、通信ネットワークによって相互接続できる。通信ネットワークの例には、ローカルエリアネットワーク(LAN)および広域ネットワーク(WAN)、例えば、インターネットが含まれる。
【００５６】
コンピューティングシステムは、クライアントおよびサーバを含んでよい。クライアントおよびサーバは一般に、互いに遠隔にあり、一般的には通信ネットワークを通じて対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、相互にクライアントとサーバとの関係を有するコンピュータプログラムによって発生する。
【００５７】
本明細書は、多くの具体的な実装形態の詳細を含むが、これらは、いかなる発明の範囲または特許請求の範囲であり得る範囲の制限としてではなく、むしろ特定の発明の特定の実施形態に固有であり得る特徴についての説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明されるある特定の特徴はまた、単一の実施形態に組み合わせて実装できる。逆に、単一の実施形態の文脈で説明される様々な特徴はまた、複数の実施形態において別々にまたは任意の適切なサブコンビネーションにおいて実装できる。さらに、特徴は、ある特定の組合せにおける作用として上記で説明され、当初はそのように特許請求される場合もあるが、特許請求される組合せのうちの1つまたは複数の特徴は、場合によってはその組合せから削除され得、特許請求される組合せはサブコンビネーションまたはサブコンビネーションの変形形態に振り向けられる場合もある。
【００５８】
同様に、動作は図面において特定の順序で図示されているが、所望の結果を達成するために、このような動作は示される特定の順序または順番で行われること、または例示されるすべての動作が行われることが必要であると理解されるべきではない。ある特定の状況では、マルチタスクおよび並行処理も有利であり得る。さらに、上記の実施形態における様々なシステムのモジュールおよびコンポーネントの分離は、すべての実施形態でそのような分離が必要であると理解されるべきではなく、説明されるプログラムコンポーネントおよびシステムは、一般に、単一のソフトウェア製品にともに統合されてよく、または複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
【００５９】
このように、主題についての具体的な実施形態が、説明された。他の実施形態は、以下の特許請求の範囲内にある。例えば、主題は、科学論文の文脈において説明される。主題は、探求に深さの側面を加える他の索引づけされた作業に適用できる。ある場合には、特許請求の範囲に記載される作動は、異なる順序で行われてもよく、なおかつ所望の結果を達成し得る。加えて、添付の図面で図示されるプロセスは、所望の結果を達成するために、必ずしも示される特定の順序、または順番を要請しない。ある特定の実装形態では、マルチタスクおよび並行処理も有利であり得る。
【符号の説明】
【００６０】
102  バックアップオーケストレータ
104  CLIリクエスト
106  クライアントデバイス(CLI)
110  デプロイメント
112  マニフェスト
116  第1のインスタンスグループ
118  第2のインスタンスグループ
120  第1のデプロイメントジョブ
122  第2のデプロイメントジョブ
124  加工物
202  バックアップスクリプト
204  プレバックアップチェック
206  プレバックアップロック
208  バックアップ
210  ポストバックアップロック解除
212  バックアップクリーンアップ
222  復元スクリプト
224  プレ復元チェック
226  プレ復元ロック
228  復元
230  ポスト復元ロック解除
232  復元検証
234  復元クリーンアップ
304  第3のデプロイメントジョブ
306  第1のプレバックアップチェックスクリプト
308  第1のプレバックアップロックスクリプト
310  第1のバックアップスクリプト
312  第1のポストバックアップロック解除スクリプト
314  第1のポストバックアップクリーンアップスクリプト
316  第2のプレバックアップチェックスクリプト
318  第2のプレバックアップロックスクリプト
320  第2のバックアップスクリプト
322  第2のポストバックアップロック解除スクリプト
324  第2のポストバックアップクリーンアップスクリプト
326  第3のプレバックアップチェックスクリプト
330  第3のバックアップスクリプト
334  第3のポストバックアップクリーンアップスクリプト
340  第1の段階
342  第2の段階
344  第3の段階
346  第4の段階
348  第5の段階
400  バックアップにおけるスクリプト実行のプロセス
402  要求を受け取る
404  指定されたデプロイメントが存在するかどうかを判定する
406  バックアップを終了する
408  バックアップ加工物を保存するためのローカルディレクトリを作成する
410  ローカルディレクトリの作成に成功したかどうかを判定する
412  プレバックアップスクリプトを実行する
414  プレバックアップスクリプトの実行が成功したかどうかを判定する
416  バックアップスクリプトを実行する
418  ポストバックアップスクリプトを実行する
420  バックアップが成功したことを判定する
422  加工物を排出する
424  インスタンスからバックアップを除去する
500  デプロイメントを、バックアップするまたは復元するプロセス
【図１】
0006968903.tif 000002
【図２】
0006968903.tif 000003
【図３】
0006968903.tif 000004
【図４】
0006968903.tif 000005
【図５】
0006968903.tif 000006