IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7473287コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法、装置及びコンピュータ・プログラム
<>
  • 特許-コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法、装置及びコンピュータ・プログラム 図1
  • 特許-コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法、装置及びコンピュータ・プログラム 図2
  • 特許-コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法、装置及びコンピュータ・プログラム 図3
  • 特許-コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法、装置及びコンピュータ・プログラム 図4
  • 特許-コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法、装置及びコンピュータ・プログラム 図5
  • 特許-コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法、装置及びコンピュータ・プログラム 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-15
(45)【発行日】2024-04-23
(54)【発明の名称】コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法、装置及びコンピュータ・プログラム
(51)【国際特許分類】
   G06F 9/445 20180101AFI20240416BHJP
   G06F 8/60 20180101ALI20240416BHJP
【FI】
G06F9/445 120
G06F8/60
【請求項の数】 12
(21)【出願番号】P 2022512464
(86)(22)【出願日】2020-09-14
(65)【公表番号】
(43)【公表日】2022-11-10
(86)【国際出願番号】 IB2020058509
(87)【国際公開番号】W WO2021053485
(87)【国際公開日】2021-03-25
【審査請求日】2023-02-24
(31)【優先権主張番号】16/571,223
(32)【優先日】2019-09-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】ホワイトヘッド、マシュー
【審査官】円子 英紀
(56)【参考文献】
【文献】特表2014-511045(JP,A)
【文献】特表2018-506756(JP,A)
【文献】特開2017-107555(JP,A)
【文献】特開2009-205655(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
G06F 8/60-8/658
(57)【特許請求の範囲】
【請求項1】
コンピュータの情報処理により、コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための方法であって、
複数のインスタンスを含むコンピュータ・システムの第1のインスタンスから第1のリソースにアクセスするための呼び出しをインターセプトすることと、
前記インターセプトされた呼び出しが、前記第1のインスタンスから前記第1のリソースにアクセスするための第1の呼び出しであることに応答して、
前記コンピュータ・システムの前記複数のインスタンスから前記第1のリソースにアクセスするためのさらなる呼び出しをブロックすることと、
前記第1のインスタンスを前記第1のリソースにバインドすることと、
前記第1のリソースを設定することと、
前記コンピュータ・システムの前記複数のインスタンスから前記第1のリソースにアクセスするためのさらなる呼び出しをブロック解除することと
を含み、
前記第1のリソースは実行時に割り当てられ、
前記第1のリソースは、前記コンピュータ・システムの前記複数のインスタンスのうち、前記第1のリソースを用いるインスタンスのサブセットに対してのみ割り当てられる、方法。
【請求項2】
前記第1のリソースは、ストレージ・ボリューム又はネットワーキング・コンポーネントのうちの1つであり、
前記設定することは、前記第1のリソースをマウントすることを含む、請求項1に記載の方法。
【請求項3】
前記第1のリソースは、必須コンポーネント、設定ファイル、又はシークレット情報である、請求項1に記載の方法。
【請求項4】
前記ブロックすること、前記バインドすること、及び前記ブロック解除することは、関数フック層によって行われる、請求項1、請求項2又は請求項3に記載の方法。
【請求項5】
前記コンピュータ・システムの前記第1のインスタンスは、マウントの失敗に応答して割り当てられるローカル・ストレージを含む、請求項1、請求項2、請求項3又は請求項4に記載の方法。
【請求項6】
コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための装置であって、
複数のインスタンスを含むコンピュータ・システムの第1のインスタンスから第1のリソースにアクセスするための呼び出しをインターセプトし、
前記インターセプトされた呼び出しが、前記第1のリソースにアクセスするための第1の呼び出しであることに応答して、
前記コンピュータ・システムの前記複数のインスタンスから前記第1のリソースにアクセスするためのさらなる呼び出しをブロックし、
前記第1のインスタンスを前記第1のリソースにバインドし、
前記第1のリソースを設定し、
前記コンピュータ・システムの前記複数のインスタンスから前記第1のリソースにアクセスするためのさらなる呼び出しをブロック解除する
関数フック層モジュールを含み、
前記第1のリソースは実行時に割り当てられ、
前記第1のリソースは、前記コンピュータ・システムの前記複数のインスタンスのうち、前記第1のリソースを用いるインスタンスのサブセットに対してのみ割り当てられる、装置。
【請求項7】
前記第1のリソースは、ストレージ・ボリューム又はネットワーキング・コンポーネントのうちの1つであり、
前記設定することは、前記第1のリソースをマウントすることを含む、請求項6に記載の装置。
【請求項8】
前記第1のリソースは、必須コンポーネント、設定ファイル、又はシークレット情報である、請求項6に記載の装置。
【請求項9】
前記ブロックすること、前記バインドすること、及び前記ブロック解除することは、関数フック層によって行われる、請求項6、請求項7又は請求項8に記載の装置。
【請求項10】
前記コンピュータ・システムの前記第1のインスタンスは、マウントの失敗に応答して割り当てられるローカル・ストレージを含む、請求項6、請求項7、請求項8又は請求項9に記載の装置。
【請求項11】
請求項1から請求項5までのいずれか1項に記載の方法をコンピュータに実行させるプログラム命令を含むコンピュータ・プログラム。
【請求項12】
請求項11に記載のコンピュータ・プログラムを格納したコンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンテナ・オーケストレーションに関し、より具体的には、ライブ・ランタイム・インフラストラクチャ・オーケストレーションに関する。
【背景技術】
【0002】
オーケストレーション・フレームワークを用いて所与のコンピュータ・システムのリソースを事前定義することにより、コンピュータ・システムのコンポーネントを起動する前に、コンピュータ・システムの必要なリソースの全てが存在し、設定されることを保証することができる。デプロイメントの例として、ネットワーキングの設定、ストレージ、必須コンポーネント、設定ファイル、及びコンピュータ・システムの各インスタンスについてのセキュリティ証明書を挙げることができる。こうしたデプロイメントは、コンピュータ・システムのありとあらゆるインスタンスのリソースの全てを前もって予約する必要があることを意味する。これは、コンピュータ・システムのあらゆるインスタンスがリソースの全てを必要とする環境においては機能する。しかしながら、コンピュータ・システムの多数のインスタンスのうち、コンピュータ・システムの単一のインスタンスだけが特定のリソースを必要とする場合には、こうしたデプロイメントはあまり効率的でない。
【発明の概要】
【0003】
本発明の実施形態によれば、コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするコンピュータ実施方法であって、このリソースは、実行時に割り当てられ、かつ該リソースを用いるコンピュータ・システムのインスタンスに対してのみ割り当てられ、このコンピュータ実施方法は、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするための呼び出しをインターセプトすることと、インターセプトされた呼び出しが、コンピュータ・システムの複数のインスタンスの1つによりアクセスするための第1の呼び出しであることに応答して、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするためのさらなる呼び出しをブロックすることと、リソースの1つを設定することと、コンピュータ・システムの複数のインスタンスの1つをリソースの1つにバインドすることと、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするためのさらなる呼び出しをブロック解除することとを含む。
【0004】
本発明の実施形態は、コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするための装置が提供され、リソースは、実行時に割り当てられ、かつ該リソースを用いるコンピュータ・システムの複数のインスタンスのインスタンスに対してのみ割り当てられ、この装置は、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするための呼び出しをインターセプトし、インターセプトされた呼び出しが、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスのための第1の呼び出しであることに応答して、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするためのさらなる呼び出しをブロックし、リソースの1つを設定し、コンピュータ・システムの複数のインスタンスの1つをリソースの1つにバインドし、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするためのさらなる呼び出しをブロック解除する関数フック層モジュールを含む。
【0005】
本発明の実施形態は、コンピュータ・システムの複数のインスタンスと関連付けられたリソースをプロビジョニングするためのコンピュータ・プログラム製品も提供し、このリソースは、実行時に割り当てられ、かつ該リソースを用いるコンピュータ・システムのインスタンスに対してのみ割り当てられ、このコンピュータ・プログラム製品は、命令のセットが格納されたコンピュータ可読ストレージ媒体を含み、プログラム命令は、コンピュータにより実行可能であり、コンピュータに、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするための呼び出しをインターセプトさせ、インターセプトされた呼び出しが、コンピュータ・システムの複数のインスタンスの1つによりアクセスするための第1の呼び出しであることに応答して、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするためのさらなる呼び出しをブロックさせ、リソースの1つを設定させ、コンピュータ・システムの複数のインスタンスの1つをリソースの1つにバインドさせ、コンピュータ・システムの複数のインスタンスの1つによりリソースの1つにアクセスするためのさらなる呼び出しをブロック解除させる。
【図面の簡単な説明】
【0006】
ここで本発明の実施形態を、以下の添付図面を参照して、単なる例示として説明する。
【0007】
図1】本発明の実施形態を実装することができるコンピュータ・システムのブロック図である。
図2図1のPVCのブロック図である。
図3図1の永続ボリュームに対する読み出し/書き込み要求をインターセプトするブロック図である。
図4図1の永続ボリュームに対する読み出し/書き込み要求をインターセプトする、コンピュータ実施方法のフローチャートである。
図5図1のネットワーキング・コンポーネントに対する読み出し/書き込み要求をインターセプトする、コンピュータ実施方法のフローチャートである。
図6】本発明の実施形態を実装することができるコンピュータ・システムのブロック図である。
【発明を実施するための形態】
【0008】
オーケストレーションとは、コンピュータ・システム及びソフトウェアの自動化された設定、調整、及び管理である。コンテナは、コード及びその全ての従属物をパッケージ化する、アプリケーション層における抽象化であり、アプリケーションは、1つのコンピューティング環境から別のコンピューティング環境へと迅速かつ確実に動作する。複数のコンテナが、同一コンピュータ上で動作すること、及びオペーレーション・システム・カーネルを他のコンテナと共有することが可能であり、各コンテナは、ユーザ空間において分離したプロセスとして動作する。
【0009】
図1は、システム・インスタンス104を含むコンテナ102と、システム・インスタンス144を含むコンテナ142とを示し、本明細書では、コンテナ102を第1のコンテナ102と呼び、システム・インスタンス104を第1のシステム・インスタンス104と呼び、コンテナ142を第2のコンテナ142と呼び、システム・インスタンス144を第2のシステム・インスタンス144と呼ぶ。第1のコンテナ102のボリューム要件は、永続ボリューム・クレーム(PVC:persistent volume claim)110~114を用いて、永続ボリューム(VOL)120、122、128にマッピングされる。第2のコンテナ142のボリューム要件は、永続ボリューム・クレーム(PVC)150~154を用いて、永続ボリューム124、126、130(VOL)にマッピングされる。例示的な実施形態では、第1のコンテナ102は、PVC110を用いて永続ボリューム120にマッピングされることによって、データを読み出すためにアクセスすることができるようになり、PVC112を用いて永続ボリューム122にマッピングされることによって、ログ及びトレース・ファイルを書き込むことができるようになり、PVC114を用いて永続ボリューム128にマッピングされることによって、永続状態で読み書きすることができるようになる。同様に、第2のコンテナ142は、PVC150を用いて永続ボリューム124にマッピングされることによって、データを読み出すためにアクセスすることができるようになり、PVC152を用いて永続ボリューム126にマッピングされることによって、ログ及びトレース・ファイルを書き込むことができるようになり、PVC154を用いて永続ボリューム130にマッピングされることによって、永続状態で読み書きすることができるようになる。本発明の実施形態は、他の目的のために、他のPVC110~114、150~154を用いる他のマッピングを有していてもよく、また、上述したマッピングの一部又はいずれも有していなくてもよい。本発明の実施形態は、リソースの少なくとも1つがストレージ・ボリュームであるように、任意の数の永続ボリューム120~130への任意の数のマッピングを有することができる。
【0010】
第1のコンテナ102は、ネットワーキング設定(NETC)160を用いて、ネットワーキング・コンポーネント(NET)170にマッピングすることもでき、第2のコンテナ142は、ネットワーキング設定(NETC)162を用いて、ネットワーキング・コンポーネント(NET)172にマッピングすることもできる。本発明の実施形態は、リソースの少なくとも1つがネットワーキング・コンポーネントであるように、任意の数のネットワーキング・コンポーネント又はリソースへのマッピングを有することができる。本発明の実施形態は、リソースの少なくとも1つが必須コンポーネント、設定ファイル、又はシークレットであるように、必須コンポーネント及び設定ファイルなどの他のリソースへのマッピングを有することができる。
【0011】
図2は、図1のPVC110及びPVC114のブロック図である。PVC110は、アクセス・モード202、ボリューム・モード204、及びリソース206を含むことができる。PVC114は、ボリュームの動的プロビジョニングのためのストレージ・クラス208を含むことができる。PVC110及びPVC114は従来のPVCであり、その形式及び使用は、当業者にはよく知られたものである。
【0012】
コンテナ102もしくはコンテナ142又はその両方が起動されると、PVC110~114、150~154の各々が、利用可能な永続ボリューム120~130に対して調整(reconcile)される。当業者に周知であるように、永続ボリューム120~130は、ファイル・システム内のパスにマウントされる。典型的には、第1のシステム・インスタンス104は、診断のためにユーザがトレースのキャプチャを必要とするまで、トレース・ファイルに書き込む必要はないことがある。通常、永続ボリューム120~130は、トレース・ファイルが書き込まれる場合に備えて、第1のシステム・インスタンス104に恒久的に割り当てられる。本発明の実施形態では、トレース・ファイルの書き込みに使用される永続ボリューム120~130は、マウントされたものとしてマーク付けされ、コンテナ102もしくはコンテナ142又はその両方のマウント・ポイントが存在する。しかしながら、マウント・ポイントの下にファイル・パスを開くことが要求されない限り、及びその要求が行われるまで、永続ボリューム120~130は、コンテナ102もしくはコンテナ142又はその両方にバインドされない。AmazonのAWS EKSのような、マウント時にAWS EBSボリュームに対して料金が請求されるパブリック・クラウド環境を用いる本発明の実施形態では、システム・リソースがオーケストレートされるときではなく、ボリュームが実際に必要になるまで、料金を支払う必要はない。
【0013】
同様に、実際に使用されるときにのみバインドされ得る他のリソースは、シークレット及び設定マップを含む。シークレットは、該シークレットへのアクセスを必要とするコンテナに安全に配布される機密データを含むことができる。本発明の実施形態では、システム・インスタンス104もしくはシステム・インスタンス144又はその両方によってシークレットをロードしようとする試みが行われるまで、コンテナへのシークレットの配布は実施されない。これは、シークレット・データが伝送されるノード数が、シークレット・データへのアクセスを実際に必要とするノード数に低減されるという利点がある。設定マップは、特定の設定マップを必要とするシステム・インスタンス104もしくはシステム・インスタンス144又はその両方に対してのみマウントすることができる。これは、全体の構成が大きい場合に、ネットワーク・トラフィックが減少するという利点がある。
【0014】
本発明の実施形態の利点として、システムの露出、特にシークレット・データに関するシステムの露出を、実行時にシークレット・データが必要なシステム・インスタンスに留め、ストレージが実行時に実際に必要な場合にのみマウントされるのでストレージ・コストを削減し、さらに、場当たり的又は不正確なオーケストレーションの補償を助けることができる一般的に整った環境を提供することを挙げることができる。
【0015】
図3を参照すると、コンテナ102もしくはコンテナ142又はその両方からファイル・システム310内の永続ボリューム120~130に対して行われる読み出し/書き込み呼び出し302が、関数フック層306によりインターセプトされる。種々の実施形態において、ファイル・システム310は、専用ファイル・システムとすることができる。アプリケーション・プログラミング・インターフェース(API)サーバ308は、永続ボリューム120~130を作成するために使用され、実際の永続ボリューム120~130に対してPVC110~114及びPVC140~144を満たすためにも使用される。第1の読み出し/書き込み呼び出し302を行うことによって、コンテナ102もしくはコンテナ142又はその両方は、PVC110~114、140~144の実際の利用を要求しているため、読み出し/書き込み呼び出し302と関連付けられたPVC110~114、140~144を満たすように、APIサーバ308に効率的に要求している。
【0016】
関数フック層306は、ダイナミック・リンキング・ライブラリ(例えば、Unix(登録商標)ダイナミック・リンキング・ライブラリ)などの機構を用いて実装することができる。本発明の実施形態は、Unixオペレーティング・システムと共に使用するのに限定されず、同じ機能を達成する他の機構を他のオペレーティング・システムと共に使用することもできる。UNIXは、米国及び他の国におけるThe Open Groupの登録商標である。
【0017】
関数フック層306はまた、永続ボリューム120~130に対する読み出し/書込み呼び出し302について上述したのと同様の方法で、ネットワーキング・コンポーネント170もしくはネットワーキング・コンポーネント172又はその両方との間の読み出し及び書き込みを行う呼び出し302をインターセプトすることもできる。
【0018】
以下は、ネットワーク接続(network attached)ファイル・ストレージの動的インスタンス化の際に使用されるfopen()関数フックの例示的な実施形態の疑似コードである。この擬似コードは、新しいファイル・ストレージを作成するために使用される、ストレージ・プロバイダにより提供されるRepresentational State Transfer(REST)APIを用いる。ストレージの作成に続いて、新しいNFS共有をマウントするための第2の呼び出しが行われてから、fopen()又はfclose()呼び出しなど、最初に要求された呼び出しが行われる。以下のプログラム・ロジックで説明する。例えば:
#include <dlfcn.h>
#include <curl.h>
#include <process.h>
FILE *(*original_fopen)(const char *filename, const char *mode);
/* 動的にプロビジョニングされたファイル・システムのユーザ数を追跡する */
/* このディレクトリ内のファイルを閉じる最後の呼び出し元は次に */
/* プロビジョニングされたファイル・システムを任意に破棄する */
Int usageCount = 0;
int main()
{
/* fopen()のオリジナル・プラットフォームの実装をロードして、それを */
/* fopen()関数をインターセプトする際に幾つかの追加のステップを */
/* 行った後で呼び出す関数ポインタに保存する */
original_fopen = dlsym(RTLD_NEXT, “fopen”);
}
/* デフォルトのfopen()と同一の関数シグネチャを用いた */
/* 独自のfopen()の実装 */
FILE * fopen(const char *filename, const char *mode)
{
/* オリジナル・アプリケーションは、fopen()のデフォルト・プラットフォームの */
/* 実装ではなく、ここに到着する */
/* 必要なクラウド・リソースをインスタンス化するための作業を行い */
/* 次に要求をオリジナルのfopen()に転送して */
/* 通常通り処理を続ける */
If (strncmp(filename, “/mnt/dynamic-fs”, 15) == 0)
{
int rc = OK;
if (usageCount == 0)
{
CURL *curl;
char * RESTApiURL = ”https://cloud-provider.com/filestorage/generate”
/* 新しいファイル・システム・リソースを作成する */
rc = curl_easy_setopt(curl, CURLOPT_URL, RESTApiUrl);
rc = curl_easy_perform(curl);
}
if (rc == OK)
{
/* 新しいファイル・ストレージをマウントする */
char *args[5];
args[0] = “-t”;
args[1] = “nfs”;
args[2] = “acme-cloud-provider.com/filestorage/ID392434234”;
args[3] = “/mnt/dynamic-fs”
args[4] = NULL;
rc = spawnl(P_WAIT, “mount”, args);
}
if (rc == OK)
{
/* ここで動的プロビジョニングのための、及び */
/* 使用するファイル・システムに対する追加の作業が完了し */
/* オリジナルのfopen()呼び出しを続行する */
usageCount++;
return original_fopen(filename, mode);
}
}
else
{
/* /mnt/dynamic-fsにないファイルに対するあらゆるfopen()要求は */
/* オリジナルのfopen()へそのまま渡される */
return original_fopen(filename, mode);
}
}
【0019】
プロビジョニングされたファイル・システム・リソースの破棄は、最後のfclose()呼び出しの際に任意に行うことができる。例えば:
#include <dlfcn.h>
#include <curl.h>
#include <process.h>
int (*original_fclose)(FILE *file);
int main()
{
/* fclose()のオリジナル・プラットフォームの実装をロードして、それを */
/* fclose()関数をインターセプトする際に幾つかの追加のステップを */
/* 行った後で呼び出す関数ポインタに保存する */
original_fclose = dlsym(RTLD_NEXT, “fclose”);
}
/* デフォルトのfclose()と同一の関数シグネチャを用いた */
/* 独自のfclose()の実装 */
int fclose(FILE *file)
{
int fclose_rc = OK;
if (strncmp(filename, “/mnt/dynamic-fs”, 15) == 0)
{
/* 最初にオリジナルのfclose()を呼び出し、全てのOS呼び出しを完了してから */
/* ストレージをアンマウントして削除する */
fclose_rc = original_fclose(file);
usageCount--;
if (usageCount == 0)
{
/* 今は誰もこのストレージを使っていない。アンマウントして削除する */
char *args[2];
args[0] = “/mnt/dynamic-fs”
args[1] = NULL;
rc = spawnl(P_WAIT, “umount”, args);
if (rc == OK)
{
CURL *curl;
char * RESTApiURL = “https://cloud-provider.com/filestorage/delete/ID392434234”
/* もう使用されていないファイル・システムを削除する */
rc = curl_easy_setopt(curl, CURLOPT_URL, RESTApiUrl);
rc = curl_easy_perform(curl);
}
}
}
else
{
/* /mnt/dynamic-fsにないファイルに対するあらゆるfclose()要求は */
/* オリジナルのfclose().へそのまま渡される */
return original_fclose(file);
}
}
【0020】
ファイルの開閉を行わせることができる種々のオペレーティング・システム呼び出しがある。本発明の実施形態は、open()、opendir()、freopen()等といった関数について、関数フック層306内に類似の関数フックを含む。しかしながら、これらの関数フックの実装の大部分は、これらの呼び出しの間でほぼ同一である可能性が高く、従って、これらの間で共通であり得る。
【0021】
図4を参照すると、ステップ402において、永続ボリューム120~130のライブ・ランタイム・インフラストラクチャ・オーケストレーションの本発明による方法のコンピュータにより実施される実施形態が開始する。ステップ404において、システム・インスタンス104もしくはシステム・インスタンス144又はその両方が永続ボリューム120~130へのアクセスを必要とするかどうかについてのチェックが行われる。システム・インスタンス104もしくはシステム・インスタンス144又はその両方が永続ボリューム120~130へのアクセスを必要としない場合(いいえ(NO)ステップ)、永続ボリューム120~130をプロビジョニングする必要はなく、その永続ボリューム120~130との間の読み出し及び書き込みを行う呼び出し302をインターセプトする必要はないため、ステップ418において、コンピュータ実施方法は終了する。必須コンポーネント、設定ファイル、又はシークレットなどの他のリソースへのマッピングがある本発明の実施形態では、必須コンポーネント、設定ファイル、又はシークレットがこのシステム・インスタンスにより必要とされるかどうかがチェックされる。例えば、シークレットへのアクセスは、一部のシステム・インスタンスに必要であるが、この特定のシステム・インスタンスには必要ないことがある。これらの実施形態に関して、以下のステップ406~416における永続的ボリュームへの言及は、必須コンポーネント、設定ファイル、又はシークレットへの言及として解釈されるべきである。
【0022】
システム・インスタンス104もしくはシステム・インスタンス144又はその両方が永続ボリューム120~130へのアクセスを必要とする場合(はい(YES)ステップ)、本発明の実施形態はステップ406に進む。ステップ406において、コンテナ102もしくはコンテナ142又はその両方からファイル・システム310内の永続ボリューム120~130に対して行われた読み出し/書き込みの呼び出し302が、関数フック層306によってインターセプトされる。一般に、様々な実施形態において、コンピュータ実施方法は、コンピュータ・システムによる、リソースへのアクセスのための呼び出しをインターセプトする。
【0023】
ステップ408において、これがこの永続ボリューム120~130に対する第1の読み出し/書き込み呼び出し302であるかどうか、ここでは、この永続ボリューム120~130のマウント・ポイントにアクセスする第1の試みであるかどうかについてのチェックが行われる。ボリューム・マウント・ポイントは、他のボリュームへのエントリ・ポイントをマウントして提供するために用いられる専用ファイル・システム310のオブジェクトである。マウント・ポイントは、ファイル・システム310上のディレクトリ内に作成することができ、それにより、マウントされた永続ボリューム120~130のルート・ディレクトリへの参照が与えられる。それが、この永続ボリューム120~130に対する第1の読み出し/書き込み呼び出し302でない場合(いいえステップ)、ステップ418において、コンピュータ実施方法は終了する。インターセプトされた呼び出しが、コンピュータ・システムによる、永続ボリューム120~130などのリソースへのアクセスのための、読み出し/書き込み呼び出し302などの第1の呼び出しであることに応答して(はいステップ)、処理はステップ410に進む。
【0024】
ステップ410において、システム・インスタンス104もしくはシステム・インスタンス144又はその両方による、永続ボリューム120~130などのリソースへのアクセスのためのさらなる読み出し及び書き込み呼び出し302が、関数フック層306によってブロックされる。ステップ412において、APIサーバ308は、システム・インスタンス104もしくはシステム・インスタンス144又はその両方を永続ボリューム120~130などのリソースにバインドすることによって、実際の永続ボリューム120もしく永続ボリューム122又はその両方に対してPVC110~114、150~154を満たすために用いられる。ステップ414において、ボリューム120~130などのリソースが実際にマウントされる。ステップ416において、永続ボリューム120~130に対する読み出し及び書き込み呼び出し302は、システム・インスタンス104もしくはシステム・インスタンス144又はその両方による、永続ボリューム120~130などのリソースへのアクセスのためのさらなる呼び出しのために、ここで関数フック層306によりブロック解除(unblock)される。1つの実施形態では、関数フック層によって、ブロックするステップ410、バインドするステップ412、マウントするステップ414、及びブロック解除するステップ416が実行される。ステップ418において、コンピュータ実施方法は終了する。
【0025】
上記のステップ416の後、永続ボリューム120~130に対する読み出し及び書き込み呼び出し302は、従来技術のコンピュータ・システムにおけるように正常に機能する。しかしながら、本発明の実施形態においては、永続ボリューム120~130のレイジーな動的プロビジョニングのために、動的アクティビティが失敗するリスクがある。しかしながら、本発明の実施形態は、一般的に、トレース及びエラー・ログなどの必須ではないファイルのために使用されることから、こうしたレイジーな動的プロビジョニングは、どんな問題も生じないであろう。これらのファイルには異なるボリュームのマウントが用いられるため、重要なシステム・ファイルは、トレース又はエラー・ログのファイルが大き過ぎることによる影響を受けないことが、当技術分野では知られている。
【0026】
必要であれば、システム・インスタンス104もしくはシステム・インスタンス144又はその両方が動作を継続できるように、ローカル・ファイル・ストレージを順番に割り当てることによって、失敗した場合のフォールバック・オプションを実装することができる。本実施形態では、コンピュータ・システムのインスタンス(システム・インスタンス104)もしくはシステム・インスタンス144又はその両方は、ローカル・ストレージを含み、ローカル・ストレージは、リソースのマウントの失敗に応じて割り当てられる。例えば、そのAPIサーバ308がダウンした場合に、永続ボリューム120~130のクラウド・プロバイダが幾つかのファイル・ストレージを一時的にプロビジョニングすることが不可能な間も、ローカル・ストレージを使用することができる。別のフォールバック・オプションは、動的プロビジョニングを行うことができないポイントまで、コンテナ102もしくはコンテナ142又はその両方を機能させないようにするものであってもよい。幾つかの点で、このことは、デプロイ時に永続ボリューム120~130などのリソースが利用できない場合、コンテナ102もしくはコンテナ142又はその両方をデプロイできないことと何ら変わりがない。
【0027】
fopen()及びfclose()などの関数に対するシステム呼び出しは、様々な理由でいつでも失敗する可能性がある。一般的には、アプリケーションのコンテナ102もしくはコンテナ142又はその両方をコード化して、これらのタイプの失敗に対処し、それを適切に処理することが予想される。動的プロビジョニングに起因するこうした失敗は、ネットワーク接続されたストレージへのネットワーク活動を伴う他のファイル操作による失敗よりも可能性が高くない。さらに、アプリケーションのタイプごとに、本発明の実施形態をオン又はオフに設定するというオプションも常に存在する。
【0028】
図5を参照すると、ステップ502において、ネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方のライブ・ランタイム・インフラストラクチャ・オーケストレーションの本発明による方法のコンピュータにより実施される実施形態が開始する。ステップ504において、システム・インスタンス104もしくはシステム・インスタンス144又はその両方がネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方へのアクセスを必要とするかどうかについてのチェックが行われる。システム・インスタンス104もしくはシステム・インスタンス144又はその両方がネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方へのアクセスを必要としない場合(いいえステップ)、ネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方がプロビジョニングされる必要はなく、ネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方との間の読み出し及び書き込み呼び出し302をインターセプトする必要はないため、ステップ518において、コンピュータ実施方法は終了する。システム・インスタンス104もしくはシステム・インスタンス144又はその両方がネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方へのアクセスを必要とする場合(はいステップ)、コンピュータ実施方法は506に進む。ステップ506において、コンテナ102もしくはコンテナ142又はその両方からネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方に対して行われた読み出し/書き込み呼び出し302は、関数フック層306によってインターセプトされる。ステップ508において、これがネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方に対する第1の読み出し/書き込み呼び出し302であるかどうかについてチェックが行われる。これがネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方に対する第1の読み出し/書き込み呼び出し302ではない場合(いいえステップ)、ステップ518において、コンピュータ実施方法は終了する。これがネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方に対する第1の読み出し/書き込み呼び出し302である場合(はいステップ)、処理はステップ510に進む。
【0029】
ステップ510において、ネットワーク・コンポーネント170もしくはネットワーキング・コンポーネント172又はその両方に対する読み出し及び書き込み呼び出し302は、関数フック層306によってブロックされる。ステップ512において、APIサーバ308は、実際のネットワーク・コンポーネント170もしくはネットワーク・コンポーネント172又はその両方に対して、ネットワーク設定160もしくは162又はその両方、及びPVC150~154を満たすために用いられる。ステップ514において、ネットワーク・コンポーネント170もしくはネットワーキング・コンポーネント172又はその両方が実際に設定される。ステップ516において、ネットワーク・コンポーネント170もしくはネットワーキング・コンポーネント172又はその両方に対する読み出し及び書き込み呼び出し302は、ここで関数フック層306によりブロック解除される。ステップ516の後、ネットワーク・コンポーネント170もしくはネットワーキング・コンポーネント172又はその両方に対する読み出し及び書き込み呼び出し302は、従来技術のコンピュータ・システムのように正常に機能する。ステップ518において、コンピュータ実施方法は終了する。種々の実施形態において、第1のリソースを用いるインスタンスのサブセットに基づいて、コンピュータ・システムの複数のインスタンスのうちのインスタンスのサブセットに対してのみ、第1のリソースが割り当てられる。
【0030】
本発明の実施形態は、ファイル・アクセスのインターセプトに基づいて、別のサービス内での最初の使用時にクラウド・サービスを動的にプロビジョニングし、名前付きリソースを持つシステムの重複インスタンスを設定する。
【0031】
ここで図6を参照すると、コンピューティング・システムの一例の概略が示される。コンピューティング・システム612は、好適なコンピューティング・ノードの一例に過ぎず、本発明で説明される実施形態の使用範囲又は機能に関する何らかの制限を示唆することを意図するものではない。それにも関わらず、コンピューティング・システム612は、上述した機能のいずれも実施もしくは実行し又はその両方を行うことができる。
【0032】
コンピュータ・システム/サーバ612は、多数の他の汎用又は専用コンピューティング・システム環境又は構成で動作可能である。コンピュータ・システム/サーバ612と共に用いるのに好適であり得る周知のコンピューティング・システム、環境もしくは構成又はそれらの組み合わせの例として、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び上記のシステムもしくはデバイスのいずれかを含む分散型クラウド・コンピューティング環境などが含まれる。
【0033】
コンピュータ・システム/サーバ612は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。コンピュータ・システム/サーバ612は、通信ネットワークを通じてリンクされた遠隔処理デバイスによってタスクが実行される分散型クラウド・コンピューティング環境で実施することができる。分散型クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含む、ローカル及び遠隔両方のコンピュータ・システム・ストレージ媒体内に配置することができる。
【0034】
図6に示すように、コンピュータ・システム/サーバ612は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム/サーバ612のコンポーネントは、これらに限定されるものではないが、1つ又は複数のプロセッサ又は処理ユニット(プロセッサ)616、システム・メモリ628、及びシステム・メモリ628を含む種々のシステム・コンポーネントをプロセッサ616に結合するバス618を含むことができる。
【0035】
バス618は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のいずれかの1つ又は複数を表す。限定ではなく例として、このようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture、ISA)バス、マイクロ・チャネル・アーキテクチャ(Micro Channel Architecture、MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、及びPeripheral Component Interconnect(PCI)バスを含む。
【0036】
コンピュータ・システム/サーバ612は、典型的には、種々のコンピュータ・システム可読媒体を含む。こうした媒体は、コンピュータ・システム/サーバ612によってアクセス可能ないずれかの利用可能な媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【0037】
システム・メモリ628は、ランダム・アクセス・メモリ(RAM)630もしくはキャッシュメモリ632又はその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ612は、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体(図示されておらず、典型的には「ハード・ドライブ」と呼ばれる)との間の読み出し及び書き込みのために、ストレージ・システム634を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー・ディスク」)との間の読み出し及び書き込みのための磁気ディスク・ドライブと、CD-ROM、DVD-ROM又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。こうした事例においては、それぞれを、1つ又は複数のデータ媒体インターフェースによってバス18に接続することができる。以下でさらに示され説明されるように、メモリ628は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
【0038】
限定ではなく例として、メモリ628内に、プログラム・モジュール642のセット(少なくとも1つ)を有するプログラム/ユーティリティ640、並びにオペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、1つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装を含むことができる。プログラム・モジュール642は、一般に、本明細書で説明される本発明の実施形態の機能もしくは方法又はその両方を実行する。
【0039】
コンピュータ・システム/サーバ612は、キーボード、ポインティング・デバイス、ディスプレイ624等といった1つ又は複数の外部デバイス614、ユーザがコンピュータ・システム/サーバ612と対話することを可能にする1つ又は複数のデバイス、もしくはコンピュータ・システム/サーバ612が1つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス(例えば、ネットワーク・カード、モデムなど)、又はそれらの組み合わせと通信することもできる。こうした通信は、入力/出力(I/O)インターフェース622を経由して行うことができる。さらにまた、コンピュータ・システム/サーバ612は、ネットワーク・アダプタ620を介して、ローカル・エリア・ネットワーク(LAN)、汎用広域ネットワーク(WAN)もしくはパブリック・ネットワーク(例えば、インターネット)、又はそれらの組み合わせのような、1つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ620は、バス618を介して、コンピュータ・システム/サーバ612の他のコンポーネントと通信する。図示されていないが、コンピュータ・システム/サーバ612と共に他のハードウェア及び/又はソフトウェア・コンポーネントも使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【0040】
本発明は、システム、方法、もしくはコンピュータ・プログラム製品又はそれらの組み合わせとすることができる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をその上に有する1つ又は複数のコンピュータ可読ストレージ媒体を含むことができる。
【0041】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用される命令を保持及び格納できる有形デバイスとすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁気記憶装置、半導体記憶装置、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的なリストとして、以下のもの:すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、命令がそこに記録された機械的にエンコアされたデバイス、及び上記のいずれかの適切な組み合わせが挙げられる。本明細書で使用される場合、コンピュータ可読ストレージ媒体は、電波、又は他の自由に伝搬する電磁波、導波管若しくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通る光パルス)、又はワイヤを通って送られる電気信号などの、一時的信号自体として解釈されない。
【0042】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスに、又は、例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくは無線ネットワーク又はそれらの組み合わせなどのネットワークを介して、外部コンピュータ又は外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、もしくはエッジ・サーバ又はそれらの組み合わせを含むことができる。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カード又はネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、コンピュータ可読プログラム命令を転送して、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納する。
【0043】
本開示のオペレーションを実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコア、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで記述されるソース・コア又はオブジェクト・コアとすることができる。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。最後のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネットサービスプロバイダを用いたインターネットを通じて)。幾つかの実施形態において、例えば、プログラム可能論理回路、フィールド・プログラム可能ゲート・アレイ(FPGA)、又はプログラム可能論理アレイ(PLA)を含む電子回路は、本開示の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行して、電子回路を個別化することができる。
【0044】
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図もしくはブロック図又はその両方を参照して説明される。フローチャート図もしくはブロック図又はその両方の各ブロック、並びにフローチャート図もしくはブロック図又はその両方内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施できることが理解されるであろう。
【0045】
これらのコンピュータ可読プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて機械を製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロック内で指定された機能/動作を実施するための手段を作り出すようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、もしくは他のデバイス又はその組み合わせを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作の態様を実施する命令を含む製品を含むようにすることもできる。
【0046】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ、他のプログラム可能装置、又は他のデバイス上で実行される命令が、フローチャートもしくはブロック図又はその両方の1つ又は複数のブロックにおいて指定された機能/動作を実行するためのプロセスを提供するようにすることもできる。
【0047】
図面内のフローチャート及びブロック図は、本開示の種々の実施形態による、システム、方法、及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、テンソルレット、ブロック、又は命令の一部を表すことができる。幾つかの代替的な実装において、ブロック内に示される機能は、図に示される順序とは異なる順序で行われることがある。例えば、連続して示される2つのブロックは、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はこれらのブロックはときとして逆順で実行されることもある。ブロック図もしくはフローチャート図又はその両方の各ブロック、及びブロック図もしくはフローチャート図又はその両方におけるブロックの組み合わせは、指定された機能又は動作を実行する、又は専用のハードウェアとコンピュータ命令との組み合わせを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
【0048】
本開示の種々の実施形態の説明は、例証の目的のために提示されたが、これらは、網羅的であること、又は開示した実施形態に限定することを意図するものではない。当業者には、説明される実施形態の範囲及び趣旨から逸脱することなく、多くの修正及び変形が明らかであろう。本明細書で用いられる用語は、実施形態の原理、実際の適用、又は市場に見られる技術に優る技術的改善を最もよく説明するため、又は、当業者が、本明細書に開示される実施形態を理解するのを可能にするために選択された。
図1
図2
図3
図4
図5
図6