(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-09-05
(54)【発明の名称】コンテナオーケストレーション(COS)クラスタドメインネームシステムに基づく複数のCOSクラスタにわたるCOSサービスディスカバリ
(51)【国際特許分類】
G06F 8/60 20180101AFI20230829BHJP
G06F 9/46 20060101ALI20230829BHJP
【FI】
G06F8/60
G06F9/46 420A
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023509637
(86)(22)【出願日】2021-01-28
(85)【翻訳文提出日】2023-03-07
(86)【国際出願番号】 IB2021050692
(87)【国際公開番号】W WO2022034378
(87)【国際公開日】2022-02-17
(32)【優先日】2020-08-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヘグデ,ディラジ
(72)【発明者】
【氏名】パレク,アシュトッシュ
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376AA21
5B376AA35
5B376AB01
(57)【要約】
コンテナオーケストレーション(COS)クラスタドメインネームシステム(DNS)に基づく複数のCOSクラスタにわたるCOSサービスディスカバリが説明される。第1のCOSクラスタで第1のCOSサービス及び第1のCOSエンドポイントが作成されたことを示すメッセージが受信される。指標の受信に応答して、第2のCOSクラスタ内に第2のCOSサービスと第2のCOSエンドポイントを作成する要求が伝送される。第2のCOSサービスと第2のCOSエンドポイントは、第1のCOSサービスと第1のCOSエンドポイントに対応する。第2のCOSサービスと第2のCOSエンドポイントの作成は、第2のCOSクラスタにローカルな第1のDNSサーバ内の第1のDNSレコードの挿入を引き起し、第2のCOSクラスタのCOSポッドが、ネットワークを介して第1のCOSクラスタのCOSポッドと通信することが可能となる。
【特許請求の範囲】
【請求項1】
第1のCOSサービスと1つ以上の第1のCOSエンドポイントが第1のCOSクラスタ内に作成されたことの指標を受信することであって、
前記第1のCOSサービスは、前記第1のCOSクラスタ内の1つ以上のCOSポッドのセットを定義し、
前記1つ以上の第1のCOSエンドポイントのうちのCOSエンドポイントは、前記1つ以上のCOSポッドのセットのうちのCOSポッドのネットワークアドレスを含む、ことと、
第2のCOSクラスタ内に、前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントに対応する第2のCOSサービスと1つ以上の第2のCOSエンドポイントを作成する要求を伝送することであって、
前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントの作成は、前記第2のCOSクラスタにローカルな第1のDNS(Domain Name System)サーバ内に1つ以上の第1のDNSレコードの挿入を引き起こし、
前記1つ以上の第1のDNSレコードが挿入されて、前記第2のCOSクラスタの1つ以上のCOSポッドが、ネットワークを介して前記第1のCOSクラスタの前記1つ以上のCOSポッドのセットと通信することが可能となる、ことと、を含む、方法。
【請求項2】
前記ネットワークを介して前記第1のCOSクラスタと通信する必要がある1つ以上のCOSクラスタを決定することとであって、前記1つ以上のCOSクラスタは、前記第2のCOSクラスタを含む、ことをさらに含む、請求項1に記載の方法。
【請求項3】
第3のCOSクラスタ内に、前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントに対応する第3のCOSサービスと1つ以上の第3のCOSエンドポイントを作成する別の要求を前記第3のCOSクラスタに伝送することであって、
前記第3のCOSサービスと前記1つ以上の第3のCOSエンドポイントの作成は、前記第3のCOSクラスタにローカルな第2のDNSサーバ内に1つ以上の第2のDNSレコードの挿入を引き起こし、
前記1つ以上の第2のDNSレコードが挿入されて、前記第3のCOSクラスタの1つ以上の第3のCOSポッドが、前記ネットワークを介して前記第1のCOSクラスタの前記1つ以上のCOSポッドのセットと通信することが可能となる、ことをさらに含む、請求項2に記載の方法。
【請求項4】
前記第1のCOSサービスが更新されたことの指標を受信することと、
前記第2のCOSクラスタに、前記第2のCOSサービスを更新する要求を伝送することであって、前記第2のCOSサービスの更新は、第1のDNSサーバ内の前記1つ以上の第1のDNSレコードの更新を引き起こす、ことと、をさらに含む、請求項1~3のいずれか一項に記載の方法。
【請求項5】
前記第1のCOSクラスタ内で前記第1のCOSサービスが削除されたことの指標を受信することと、
前記第2のCOSクラスタに、前記第2のCOSサービスを削除する要求を伝送することであって、前記第2のCOSクラスタ内の前記第2のCOSサービスの削除は、前記第1のDNSサーバ内の前記1つ以上の第1のDNSレコードの削除を引き起こす、ことと、をさらに含む、請求項1~4のいずれか一項に記載の方法。
【請求項6】
前記第2のCOSサービスと前記第2のCOSエンドポイントの作成は、前記作成が許可されていると前記第2のCOSクラスタが決定するときに実行される、請求項1~5のいずれか一項に記載の方法。
【請求項7】
前記第1のCOSサービスが、前記第2のCOSクラスタにサービスを提供する複数のCOSクラスタに共通である名前空間において定義される、請求項1~6のいずれか一項に記載の方法。
【請求項8】
前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントが作成されたことの前記指標を受信することが、前記第1のCOSクラスタを含むCOSクラスタを監視しながら実行される、請求項1~7のいずれか一項に記載の方法。
【請求項9】
前記第1のCOSサービスは、前記第1のCOSサービスが監視されるべきことの指標に関連付けられる、請求項8に記載の方法。
【請求項10】
前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントが、前記第1のCOSサービス及び前記1つ以上の第1のCOSエンドポイントのレプリカである、請求項1~10のいずれか一項に記載の方法。
【請求項11】
前記第1のCOSサービスと前記1つ以上の前記第1のCOSエンドポイントが作成されたことの前記指標を受信すること、及び前記第2のCOSクラスタ内に、前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントを作成する前記要求を伝送することが、前記第1のCOSクラスタ内の前記第1のCOSサービス及び前記1つ以上の第1のCOSエンドポイントの前記作成に応答して実行される、請求項1~10のいずれか一項に記載の方法。
【請求項12】
機械によって実行される場合に、前記機械に請求項1~11に記載の方法の動作を実行させる命令を提供する、機械可読記憶媒体。
【請求項13】
機械によって実行される場合に、前記機械に請求項1~11に記載の方法の動作を実行させる命令を提供する、機械可読記憶媒体を含むシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年8月13日に出願された米国特許出願第16/993,118号の利益を主張する、これは、参照により本明細書に組み込まれる。
【0002】
1つ以上の実装は、クラウドオーケストレーションシステムの分野に関連しており、より具体的には、COSクラスタDNSに基づく複数のCOSクラスタにわたるCOSサービスのディスカバリに関連する。
【背景技術】
【0003】
「クラウド」サービスは、要求があると、共有リソース、ソフトウェア、及び情報をコンピュータ及び他の電子デバイスに提供する。クラウドコンピューティング環境では、ソフトウェアは、組織内のコンピュータシステムにローカルにインストールされるのではなく、インターネット経由でアクセス可能にすることができる。クラウドサービスは、通常、動的にスケーラブルで、しばしば仮想化されたリソースのインターネット経由の提供を伴う。技術的な詳細は、サポートする「クラウド内」の技術インフラストラクチャの専門知識や制御をもはや必要としなくなったユーザから抽出され得る。
【0004】
「マイクロサービスアーキテクチャ」という用語は、マイクロサービスの各々がただ1つのことを効率的に行い、必要に応じて他のマイクロサービスと対話するアーキテクチャを指す。これは、複雑なソフトウェアが単一の強力なサーバ上で動作するモノリシックアーキテクチャとは対照的である。マイクロサービスの各々は、異なるタイプのハードウェア及び/又はソフトウェアを使用して、それぞれ、他のマイクロサービスによって実行されるタイプの処理とは異なる特殊なタイプの処理を実行してもよい。さらに、マイクロサービスアーキテクチャは、アプリケーションをこれらのより小さなマイクロサービスの異なるものに分解することを可能にし、モジュール性を改善し、プログラムコードをより理解しやすく、設計しやすく、試験しやすいようにする。例えば、個々のマイクロサービスは、アプリケーションによって使用される他のマイクロサービスの動作に影響を与えることなく、修正(例えば、更新、スワップアウト)されてもよい。
【0005】
コンテナオーケストレーションシステム(COS)は、コンテナ化されたアプリケーション(コンテナ化されたソフトウェア及びコンテナ化されたアプリとも呼ばれる)のデプロイ、スケーリング及び管理を自動化し、言い換えれば、ホストのクラスタにわたるアプリケーションコンテナのデプロイ、スケーリング及び動作を自動化するためのプラットフォームを提供する。例えば、Kubernetesは、ドッカーを含む様々なコンテナツールの範囲で動作するCOSである。COSの別の例は、Docker Swarmである。コンテナは、Linux実行環境のような自己完結的な実行環境であり、言い換えれば、コンテナは、コードとその依存関係をすべてパッケージ化するソフトウェアの標準的な単位であるので、アプリケーションは、1つのコンピューティング環境から別のコンピューティング環境まで迅速かつ確実に動作する。コンテナイメージは、動作時に1つ以上のコンテナを作成するために使用される。コンテナイメージは、アプリケーションを動作させるために必要なすべてのものを含む、軽量でスタンドアロンの実行可能なソフトウェア・パッケージである(例えば、Dockerコンテナは、Dockerエンジン上で動作されるときに、Dockerコンテナになり、別のコンテナエンジンは、Rktである)。
【0006】
ハードウェアに関して、COSは、1)ノード(本明細書ではCOSノードとも呼ばれる)であって、ノードは、COSクラスタ内の単一マシンの表現であり、その単一マシンは、データセンタ内の物理マシン又はクラウドプロバイダ上にホストされた仮想マシンとすることができる、ノードと、2)クラスタ(本明細書ではCOSクラスタとも呼ばれる)であって、クラスタは、クラスタ内のノードのリソース(CPU及びRAM)をプールすることによってもたらされるより強力なマシンを表す、クラスタと、3)永続ボリューム(永続ボリュームは、特定のノードと関連付けることなく、クラスタにマウントされ得るファイルシステムであり、一方、各ノードに関連付けられる従来のローカルストレージは、プログラム及びデータを保持するための一時的なキャッシュとして扱われる。)と、を含んでもよい。
【0007】
ソフトウェアに関して、COSは、1)コンテナ(COSコンテナ、Dockerコンテナなどとも呼ばれる)と、2)ポッド(本明細書では、「レプリカ」、「COSポッド」、又はKubernetes実装において「kpod」とも呼ばれる)であって、ポッドは、レプリケーションのユニットであり、同じリソース及びローカルネットワークを共有する1つ以上のコンテナを包む、ポッドと、3)デプロイメントであって、デプロイメントは、ポッドのレプリカの数を宣言し、ポッドを監視することを含む、ポッドを管理する、デプロイメントと、4)イングレスであって、ポッド内で動作するサービスと外部の世界との間の通信チャネルを指し、典型的には、イングレスコントローラ、ロードバランサ、Kube-proxy(ネットワークプロキシとロードバランサの組み合わせ)のいずれかである、イングレスと、を含んでもよい。追加的に、COSは、論理的なポッドのセットと、それらにアクセスするためのポリシー(COSサービスと呼ばれる場合もある)を定義する抽象化(例えば、Kubernetesサービス)と、API (例えば、Kubernetes Endpoints API)のサポートを有しており、そのような抽象化の1つによって提供されるサービスが、別の抽象化によって提供されるサービスを呼び出すことができるようにする。
【0008】
動作中、ノードのCOSクラスタが形成され、1つ以上の永続ボリュームのセットがそのクラスタにアタッチされ、COSデプロイメントがそのクラスタ上に開始され、これが、宣言された数のCOSポッドのスピンアップ(COSポッドをスピンアップすることは、そのCOSポッドに対して識別されたコンテナイメージに指定されたコンテナアプリケーションを実行することを含む)を引き起こし、それらを監視する。
【図面の簡単な説明】
【0009】
以下の図は、同様の要素を参照するために、同様の参照番号を使用する。以下の図は、種々の例示的な実装を示すが、代替的な実装は、添付の特許請求の範囲の精神及び範囲内にある。
【0010】
【
図1A】いくつかの例示的な実装による、COSクラスタDNSに基づく複数のCOSクラスタにわたるCOSサービスのディスカバリを可能にするためのコンテナオーケストレーションシステムを例示するブロック図である。
【0011】
【
図1B】いくつかの実装による、COSクラスタDNSサーバ内の例示的なDNSレコードのブロック図を例示する。
【0012】
【
図1C】いくつかの実装による、DNSレプリケータにアクセス可能な例示的なCOSクラスタピアのブロック図を例示する。
【0013】
【
図1D】DNSレプリケータ150の例示的な実装のブロック図を例示する。
【0014】
【
図2A】いくつかの例示的な実装による、COSクラスタにわたるCOSサービスのディスカバリのためのCOSにおける方法を例示するフロー図である。
【0015】
【
図2B】いくつかの実装による、第1のCOSサービスの更新に基づいてDNSレコードを更新するために実行され得る例示的な動作のフロー図を例示する。
【0016】
【
図2C】いくつかの実装による、第1のCOSサービスの削除に基づいてDNSレコードを削除するために実行され得る例示的な動作のフロー図を例示する。
【0017】
【
図2D】いくつかの実装による、第2のCOSサービスと第2のCOSエンドポイントを作成する要求が受信されると実行され得る例示的な動作のフロー図を例示する。
【0018】
【
図2E】いくつかの実装による、第1のCOSサービスが更新されるときに実行され得る例示的な動作のフロー図を例示する。
【0019】
【
図2F】いくつかの実装による、第1のCOSサービスが削除されるときに実行され得る例示的な動作のフロー図を例示する。
【0020】
【
図3A】いくつかの例示的な実装による、電子デバイスを例示するブロック図である。
【0021】
【
図3B】いくつかの実装による、上で論じたCOSサービスディスカバリ技術が使用され得る環境のブロック図である。
【発明を実施するための形態】
【0022】
COSポッドは、COSクラスタの基本的なビルディングブロックである。COSポッドは、オンデマンド作成され、かつ破壊され得るリソースである。COSポッドは、COSクラスタの別のノードに移動又は再スケジュールされ得るので、このポッドに割り当てられた内部ネットワークアドレス(例えば、IP(Internet Protocol)アドレス)は、時間の経過と共に変更される可能性がある。別のアプリケーションがこのCOSポッドに接続される場合、次回の再デプロイメントでは、COSポッドのIPアドレスが変更されるため、接続は動作しない。
【0023】
COSサービス(例えば、Kubernetesサービス)は、COSがサポートする抽象概念であり、COSポッドのセット上で動作するアプリケーションをネットワークサービスとして公開するために使用される。COSサービスは、1つ以上のポッドの論理セットと、それらにアクセスするポリシーを定義する。COSサービスは、COSクラスタ間で一様に動作するCOSポッドへのネットワーク接続を提供する。サービスディスカバリとは、COSサービスに接続する方法を解明する処理である。COSクラスタにデプロイされたCOSポッドのセットに対してCOSサービスが作成されるときに、COSエンドポイントがCOSクラスタ内に自動的に作成される。COSエンドポイントは、COSサービスに関連付けられ、かつCOSサービスの一部であるCOSポッドのネットワークアドレスを含む抽象コンストラクトである。COSポッドは、COSポッドがCOSクラスタにデプロイされるときに、COSサービスのCOSポッドに対して自動的に作成される。
【0024】
COS102は、ローカルCOSクラスタDNSサーバ内のDNSレコードのレプリケーションに基づく複数のCOSクラスタ103A~103KにわたるCOSサービスディスカバリを可能にする。COSクラスタは、サーバCOSクラスタ又はクライアントCOSクラスタと呼ばれ得る。サーバCOSクラスタは、COS102における他のクラスタに対して1つ以上のサービスを提供する。例えば、COSクラスタは、COSクラスタのCOSポッド上で動作し、かつ他のCOSクラスタ上で動作するフロントエンドアプリケーションにアクセス可能である必要があるバックエンドサービスを含んでもよい。本明細書で論じられる例では、第1のCOSクラスタ103Aが、サーバCOSクラスタである。COSクラスタ103Aは、COS102において他のCOSクラスタに対して/によって、第1のCOSサービス105Aを利用可能/ディスカバリ可能にする必要がある。クライアントCOSクラスタは、COSクラスタ上に実装されたサービスにアクセスするためにCOS102における1つ以上の他のCOSクラスタと通信する必要があるCOSクラスタである。例えば、第2のCOSクラスタ103Bは、第1のCOSサービス105AにアクセスするためにCOSクラスタ103Aと通信する必要がある。いくつかの実装では、COSクラスタは、サーバCOSクラスタ及びクライアントCOSクラスタとして活動してもよい。他の実装では、COSクラスタは、サーバ又はクライアントCOSクラスタのいずれか1つとして活動してもよい。
【0025】
一実装では、第1のCOSサービス105Aが第1のCOSクラスタ103A内に作成されるときに、第1のCOSサービス105A及び1つ以上の第1のCOSエンドポイント、例えば第1のCOSエンドポイント114Aが受信される。第1のCOSサービスは、第1のCOSクラスタ内の1つ以上のCOSポッドのセットを定義し、第1のCOSエンドポイントは、COSポッド104Aのネットワークアドレスを含む。第1のCOSサービス105Aと第1のCOSエンドポイント114Aの受信に応答して、第2のCOSクラスタ内に第2のCOSサービスと1つ以上の第2のCOSエンドポイントを作成する要求が伝送される。第2のCOSサービスと第2のCOSエンドポイントは、第1のCOSサービス105Aと1つ以上の第1のCOSエンドポイント114Aに対応する。第2のCOSサービスと第2のCOSエンドポイントの作成は、第2のCOSクラスタ103B内のローカルな第1のDNSサーバ(COSクラスタDNSサーバ120B)内の1つ以上の第1のDNSレコードの挿入を引き起こす。第1のDNSレコードが挿入されて、第2のCOSクラスタの1つ以上のCOSポッドが、ネットワークを介して第1のCOSクラスタの1つ以上のCOSポッドのセットと通信することが可能となる。したがって、COSクラスタ103Bでインスタンス化されたCOSポッドは、COSクラスタ103BのローカルDNSサーバ内のDNS要求解決に基づいてCOSクラスタ103Aのサービスをディスカバリすることが可能である。
【0026】
COS102を使用するいくつかの実装では、COSクラスタ103A内の第1のCOSサービスに対する更新は、第1のDNSサーバ120B内の第1のDNSレコードの自動更新を引き起こし、その結果、第1のCOSサービスが、第2のCOSクラスタ103B上で動作しているアプリケーションに検出可能及び利用可能となることがもたらされる。いくつかの実装では、第1のCOSクラスタ103A内の第1のCOSサービスの削除は、第1のDNSサーバ120B内の第1のDNSレコードの自動削除を引き起こし、第1のCOSサービスが、もはや第2のCOSクラスタ103BのCOSポッドに到達不能又は利用可能でなくなることがもたらされる。
【0027】
上記の実装は、いくつかの従来のシステムと比較して有利である。例えば、第1の従来のシステムは、COSクラスタDNSサーバを使用して、COSクラスタ内のCOSサービスディスカバリを可能にする。COSクラスタDNSサーバは、クラスタ内のCOSサービスを検出するためのDNS名前解決を提供する。しかし、COSクラスタDNSサーバは、COSクラスタにわたるDNS名前解決を可能にしない。COSクラスタDNSサーバは、他のCOSクラスタのDNSレコードの知識を有さない。他の従来のシステムは、COSクラスタにわたるサービスディスカバリを可能にするために、パブリックDNSサービスを使用する。これらのシステムは、1)COSコントローラからリソースのリスト(Services、 Ingressesなど)を取得し、2)リソースのリストに基づいてDNSレコードのリストを決定し、3)中央DNSサービス(AWS route 53又はGoogle Cloud DNSなど)をDNSレコードで設定するサービス(例えば、Kubernetesに対するExternalDNS)を使用する。DNSレコードが中央DNSサービスに追加されると、すべてのCOSクラスタによって解決可能となる。しかし、これらのシステムは、いくつかの欠陥及び欠点を有する。例えば、COSクラスタの数が増加するにつれて、これらのCOSクラスタに関連付けられたDNSレコードを更新するための中央DNSサービスへのレートコールが劇的に増加する。この増加により、中央DNSサービスが、受信したDNSレコード更新のコールをスロットリングすることをトリガする。スロットリングに対処するために、DNSレコード更新をバッチで、より遅いレートで提出する必要がある。スロットリングは、COSクラスタのCOSポッドのDNSレコードの更新を遅延させ、これらのCOSポッドがディスカバリ可能であることを妨げ、したがって数分間利用可能であることを妨げる。さらに、COSポッドが更新されるときに、その関連付けられたDNSレコードはCOSクラスタ内で変化する(例えば、更新されたCOSポッドは、更新プロセス中に新しいIPアドレスをゲットする)。さらに、更新プロセスは、典型的には、一度にCOSポッドの小さなセットを更新し、これらのポッドに対するDNSレコードの更新の遅延を引き起して、数百又は数千のCOSポッドが関与するときに、数百分の遅延をもたらし、重要な更新においては数時間の遅延を引き起こす可能性がある。追加的に、複数のCOSクラスタは、中央DNSサービスを更新する。どのCOSクラスタがDNSレコードのセットの更新を許可され、どのCOSクラスタが許可されないかを定義することは難しい。中央DNSサービスでは、アクセス制御は、典型的には、DNSゾーンへのアクセスを制限することによって強制され、逆引きDNSゾーンを定義することは特に困難である。なぜなら、それらのゾーンは、細かい粒度のサブネットに対して定義可能である必要があるためである。この問題に対処する代わりに、ネットワーク管理者は、すべてのCOSクラスタが共有DNSゾーンを更新することが可能とすることに行き着く。COSクラスタの任意の1つが、他のCOSクラスタのDNSレコードを削除又は修正することができる。さらに、上で論じたスロットリングとセキュリティの問題を解決するために、所与の中央DNSサービスに対して解決策が実装されるときでも、COSシステムが異なる中央DNSサービスで動作するときは、別の解決策を開発する必要がある。なぜなら、上で挙げられた問題の解決策が、使用されている中央DNSサービスに固有のものである傾向があるためである。
【0028】
したがって、上の実装は、1)中央DNSサービスを必要とせずに、COSクラスタにわたるCOSサービスディスカバリを可能にすること、2)ピアCOSクラスタのローカルDNSサーバの更新により、COSサービスのディスカバリを可能にし、ピアCOSクラスタの各クラスタに送信される要求の数が少なくなることをもたらすこと、3)中央DNSサービスと比較して、このCOSクラスタによって受信される要求の数が少ないため、要求を受信するピアCOSクラスタの過負荷を回避すること、及び3)ピアCOSクラスタで受信される要求の数が少ないため、要求のスロットリングを回避することの点で有利である。
【0029】
さらに、いくつかの実装では、第1のCOSサービスと第1のCOSエンドポイントは、複数のCOSクラスタ間で共有される名前空間で作成され、第2のCOSサービスと第2のエンドポイントもこの名前空間において定義される。これにより、第2のCOSサービスと第2のCOSエンドポイントが、第2のCOSクラスタの他の名前空間内のこのようなコンストラクトと衝突しないようにする。いくつかの実装では、第1のCOSサービスと第2のCOSサービスの名前は、COSクラスタの名前を含み、これらのCOSサービスに対する一意の名前をもたらす。これらの実装では、COSサービスに対して作成されるDNS名はCOSクラスタの名前から導出されるため、第2のCOSクラスタのローカルCOSクラスタDNSサーバに記憶されている他のリソースのDNSレコードを上書きする危険はない。
【0030】
上記の実装は、さらに、第2のCOSクラスタの所有者が、COSシステムによって提供されるアクセス制御コンストラクトを使用して、所望に応じてアクセス制御ルールを定義することができるので、第2のCOSクラスタ内のサービス作成に対するシームレスなアクセス制御を可能にする。COSクラスタの所有者は、どのCOSクラスタがクラスタ内の名前空間へのアクセスを許可されるかを定義することができ、所有者は、その名前空間内のサービスの生成を制御し、その結果、そのCOSサービスのDNSレコードを自動生成することを制御するようにする。
【0031】
さらに、上記の実装は、COSが実装されるクラウドプロバイダプラットフォームとは独立している。本明細書で提示されるCOSサービスディスカバリのためのソリューションは、クラウドプロバイダプラットフォームから独立したCOSアクセス制御コンストラクトに依拠しているので、クラウドプロバイダプラットフォームから別のクラウドプロバイダプラットフォームへ移植可能である。さらに、上記の実装は、効率的にスケールアップし、クラウドプラットフォームのコストを削減し、高い信頼性を維持する。
【0032】
追加的な詳細
COS102は、COSクラスタ103A~103K及びDNSレプリケータ150を含む。COSクラスタ103A~103K及びDNSレプリケータ150は、ネットワーク110を介して通信するように動作可能である。COSクラスタは、COSコントローラ、1つ以上のCOSポッド、及びオプションのCOSクラスタDNSサーバを含む。例えば、COSクラスタ103Aは、COSコントローラ126A、第1のCOSポッド104A、COSポッド104N~104O、及びオプションのDNSサーバ120Aを含む。COSクラスタ103Bは、COSコントローラ126B、COSポッド104D~104Q、及びDNSサーバ120Bを含む。
【0033】
COSコントローラは、COSクラスタの動作を制御する。COSコントローラは、COSコンストラクトの観点からアプリケーションの所望の状態を記述する設定情報(マニフェスト、「アプリケーションプログラミングインターフェース(API)オブジェクト記述」、又は「アプリケーション設定情報」と呼ばれる場合がある)に従った動作を受信することができる。アプリケーションがCOSクラスタにデプロイされるときに、COSコントローラは、アプリケーションを実装するCOSポッドのコンテナを開始する。COSコントローラは、COSクラスタのノード(図示せず)上で動作するコンテナをスケジュールするように動作可能である。いくつかの実装では、ノードは、COSコントローラが公開するCOSアプリケーションプログラミングインターフェース(API) (例えば、Kubernetes API)を使用してCOSコントローラと通信する。エンドユーザ及び/又は他のCOSクラスタは、COS APIを使用してCOSクラスタと直接対話することができる。
【0034】
COSクラスタはまた、1つ以上のCOSポッドのセット、例えば、COSクラスタ103A内に、COSポッド104A及びオプションのCOSポッド104N~104Oを含む。本明細書の実装では、COSポッドは、COSサービス及びCOSエンドポイントに関連付けられる。COSサービスは、1つ以上のCOSポッドのセットを定義し、これらのCOSポッドに対するポリシーを定義するCOSコンストラクトである。例えば、第1のCOSサービスは、第1のCOSポッド104A及び関連付けられるポリシーを定義する。COSクラスタにけるCOSサービスは、そのタイプのリソースに一意の名前(本明細書ではサービス名と呼ばれる)を有する。つまり、サービスの名前は、COSクラスタにおいて定義されたすべてのサービスにわたって一意である。いくつかの実装では、COSサービスは、名前空間のコンテキストにおいて定義される。これらの実装では、COSサービスの名前は、名前空間に対してCOSクラスタにおいて定義されたすべてのサービスにわたって一意である。いくつかの実装では、COSサービスは、COSクラスタ(COSクラスタにおいて定義されている異なるタイプのリソース及びコンストラクト)にわたって一意である識別子(UID)も有する。いくつかの実装では、サービス名にCOSクラスタの名前を含む。追加的又は代替的に、COSサービスが定義される名前空間は、クラスタの名前を含む。これにより、COSサービスの名前が複数のCOSクラスタにわたって一意となることを可能にする。
【0035】
第1のCOSポッドは、第1のCOSポッドに対するネットワークアドレスを含む第1のCOSエンドポイント114Aに関連付けられる。ネットワークアドレスは、IPアドレス及びポート番号とすることができる。第1のCOSエンドポイントは、第1のCOSポッドを含むCOSポッドを定義するCOSサービスに関連付けられる。COSサービスと第1のCOSエンドポイントは、第1のCOSポッドに対するサービスディスカバリを提供するのに役立つ。
【0036】
COSクラスタDNSサーバは、COSクラスタ内で動作しているCOSポッドにローカルDNSサービスを提供する。COSクラスタDNSサーバは、特定のCOSクラスタ内でのDNS名前解決を提供し、クラスタ内のCOSサービスディスカバリを可能にする。例えば、COSクラスタDNSサーバ120Bは、COSクラスタ103B内のCOSポッド104D~104DQにDNSサービスを提供する。従来のCOSとは対照的に、本明細書の実装は、COSクラスタ103BのCOSポッドが、COSクラスタDNSサーバ120Bを介して、内部及び外部COSポッドへのDNS要求を解決することを可能にする。COSクラスタDNSサーバ120Bは、DNS名に対する要求を受信し、そのDNS名に関連付けられたネットワークリソースのネットワークアドレスを返すように動作可能である。いくつかの実装では、COSクラスタDNSサーバ120Bは、ネットワークアドレスに対する要求を受信し、そのネットワークアドレスに関連付けられたネットワークリソースのDNS名を返すように動作可能である。COSクラスタDNSサーバ120Bは、DNSレコード122Bを含む。
図1Bは、いくつかの実装による、COSクラスタDNSサーバ内の例示的なDNSレコードのブロック図を例示する。DNSレコードは、DNS要求に応答するために使用される。DNSレコードは、COSクラスタに対して自動的に維持される。1つの実装では、DNSレコードは、検索のためのキー-値ペアを含むデータベース131Bを含む。キーはCOSサービスの名前を含み、値はそれらのサービスが動作しているCOSポッドのネットワークアドレス(例えば、IPアドレスとポート番号)である。キーは、COSサービス内のCOSポッドの一意の名前を含むことができ、そのCOSポッドのIPアドレスを含む値にマップされる。いくつかの実装では、COSポッドの名前は、COSポッドの名前の1つのコンポーネントとしてサービスの名前を含む。DNSレコードはまた、キー-値ペアを含む別のデータベース136Bを含んでもよく、キーはネットワークアドレス(例えば、IPアドレス及びポート番号)であり、値はサービス名である。データベース131Bは、COSポッド104Aのネットワークアドレスに関連付けられた第1のCOSサービス105Aの名前である第1のCOSサービス名を含む。COSサービスが複数のCOSポッドを定義するときに、COSポッドの各々のネットワークアドレスは、そのCOSサービスに対するデータベース131Bに含まれる。データベース131Bはまた、COSクラスタ103Bの内部にあるCOSサービスの名前と、COSクラスタ103Bの外部にあるゼロ個以上の追加のCOSサービスとを含んでもよい。ある実装では、COSクラスタDNSサーバ(例えば、KubernetesのKube-DNS)は、COSポッドをラップアップするCOSサービスである(例えば、Kubernetesでは、Kube-DNSサービスは、「Kube-DNS」という名前のCOSポッドをラップアップする)。
【0037】
COS102はさらに、COS名前空間コンストラクトをサポートする。COS名前空間は、クラスタのサブセクション又は複数クラスタのサブセクションの組み合わせに許可とポリシーを付加することを可能にする抽象化である。COS名前空間は、クラスタのリソース名に対するスコープを提供する。リソースの名前は、名前空間内では一意である必要がありますが、複数の名前空間にわたって一意である必要はない。いくつかの実装では、同じ名前空間内のCOSリソース(例えば、2つのCOSサービス)は、同じアクセス制御ポリシーを有するだろう。例えば、名前空間は、複数のチーム、又はプロジェクトにまたがる多くのユーザがいる環境で使用され得る。
【0038】
また、いくつかの実装では、コンストラクト(本明細書ではサービスコレクションと呼ぶ)が、提供されるべき1つ以上のサービスのセットを作成、組織化、及び監視するために使用される。
図1Aは、サービスコレクション107Aを示すことによって、複数サービスコレクションを有するオプションを例示している。サービスコレクションは、それぞれが1つ以上のサービスを提供するポッド(例えば、kpod)でり、複数のマイクロサービス(例えば、Kubernetesサービス)の可能性もある。サービスコレクションは、1)異なるCOSポッドを介して、同じサービス及び/又はマイクロサービスの複数のインスタンスを提供すること、及び/又は、2)異なるCOSポッドを介して、異なるタイプのサービス及び/又はマイクロサービスを提供することの点でコレクションである。例えば、実装は、各サービスコレクション107Aに割り当てられたサービスコレクションIDを含めることによって、各サービスコレクション107Aに対する別個の設定情報の解放をサポートしてもよい。追加的又は代替的に、実装は、異なる地理的位置の異なるデータセンタ内の複数のCOS102をサポートしてもよく、これらのCOS102のCOSコントローラ126の各々は、1)それらがホストしているサービスコレクションIDを追跡し、2)サービスの各々に対する各更新に対する設定情報122のブロードキャストを受信し、各設定情報内のサービスコレクションIDが、そのCOS102によってホストされているコレクションサービスのうちの1つに割り当てられたサービスに割り当てられているかどうかに基づいて、各それぞれの設定情報に対して活動するかどうかについて判断してもよい。追加的又は代替的に、異なる顧客(又は顧客のグループ)は、異なる(同一の可能性もある)サービスコレクション107Aに割り当てられてもよい。
【0039】
動作中、DNSレプリケータ150は、COSクラスタDNSサーバ内のDNSレコードの更新に基づいて、COS102の複数のCOSクラスタにわたるCOSサービスディスカバリを可能にするように動作可能である。いくつかの実装では、DNSレプリケータ150は、COSクラスタ103C内の1つ以上のCOSポッドを包むCOSサービスとして実装される。他の実装では、DNSレプリケータ150は、COSインフラストラクチャなしでネットワークデバイス上で動作するアプリケーションとして実装され得る。DNSレプリケータ150とCOSクラスタ、例えば、COSクラスタ103AとCOSクラスタ103Bとの間の通信は、HTTP(HyperText Transfer Protocol)を介して提供されるリソースベースの(RESTful)プログラムインターフェースを介して実行され得る。APIは、標準HTTPメソッド(POST、PUT、PATCH、DELETE、GET)を介してリソース(例えば、COSサービス、COSエンドポイント)の取得、作成、更新、削除をサポートする。APIはまた、細かい粒度の許可とアクセス制御を可能にする多くのオブジェクト(例えば、COSサービスとCOSエンドポイント、名前空間など)のための追加のサブリソースを含む。また、リソース、特にCOSサービスとCOSエンドポイントの状態のキャッシュと同期を可能にするために、「watch」コマンドと一貫性のあるリストを介してリソースに関する効率的な変更通知をサポートする。
【0040】
DNSレプリケータ150は、第1のCOSクラスタ103Aを含む1つ以上のCOSクラスタを監視する。一実装では、COSクラスタ、例えば、COSクラスタ103A~103Kの監視は、COSクラスタ内のCOSサービスの動作を監視する要求を伝送することによって開始される。一実装では、DNSレプリケータ150は、COSクラスタ103Aを監視する要求を伝送し、要求は、監視するリソースのタイプ(例えば、COSサービスタイプ及びCOSエンドポイントタイプ)の指標を含む。オプションで、要求は、COSサービスが属する名前空間を含んでもよい。他の実装では、要求は名前空間を含まない。いくつかの実装では、要求はGET要求であり、要求されたリソースのタイプと、これらのリソースが定義されている名前空間を含むURLを含む。要求は、さらに、COSクラスタ103Aに、ウォッチされるリソースのタイプに関して発生するすべての変更(作成、削除、及び更新)を返すようにする、COSサービスをウォッチする指標を含む。これにより、DNSレプリケータ150は、任意の更新を欠くことなく、変更に対するウォッチを可能にする。ウォッチが切断された場合、DNSレプリケータ150は、COSサービスのCOSサービスの最後に返されたバージョンから新しいウォッチを再開するか、又は新しい要求を実行し、再始動することができる。いくつかの実装では、DNSレプリケータ150は、ウォッチされるべきリソースが、第1のCOSサービスが監視されるべきことの指標に関連付けられたCOSサービスであることを指定する。いくつかの実装では、COSサービスが監視されるべきことの指標は、COSサービスのアノテーションに含められ得る。したがって、COSサービスを監視する要求は、この指標に関連付けられたCOSクラスタ103Aで作成された新規又は既存のCOSサービスに適用される。他の実装では、この指標は伝送されず、DNSレプリケータ150は、作成されたすべてのCOSサービスについてCOSクラスタ103Aからの更新を監視し、取得する。
【0041】
第1のCOSサービス105A及び第1のCOSエンドポイント114AがCOSクラスタ103Aで生成されるときに、指標がCOSクラスタ103AからDNSレプリケータ150に伝送される。この指標は、第1のCOSサービス及び第1のCOSエンドポイントがCOSクラスタ103A内に作成されることを示す。いくつつかの実装形態では、DNSレプリケータ150は、監視(ウォッチ)動作の結果として、第1のCOSサービス105Aと第1のCOSエンドポイント114Aを受信する。他の実装では、COSクラスタ103AがCOSサービス及びエンドポイントの作成、更新、又は削除をDNSレプリケータ150に伝送することを可能にするために、異なるメカニズムが使用され得る。
【0042】
第1のCOSサービス105Aと第1のCOSエンドポイント114Aが作成されたことの指標は、DNSレプリケータ150で受信される。第1のCOSサービスは、第1のCOSクラスタ内の1つ以上のCOSポッドのセットを定義し、例えば、第1のCOSサービス105Aが、COSポッド104Aを定義する。第1のCOSエンドポイントのCOSエンドポイントは、1つ以上のCOSポッドのセットのCOSポッドのネットワークアドレスを含む。例えば、COSポッド104AのCOSエンドポイントは、COSポッド104AのIPアドレス及びポート番号を含む。
【0043】
いくつかの実装では、DNSレプリケータ150は、ネットワークを介して第1のCOSクラスタと通信する必要がある1つ以上のCOSクラスタを決定する。1つ以上のCOSクラスタは、第2のCOSクラスタ103Bを含む。いくつかの実装では、DNSレプリケータ150は、COSクラスタの各々が1つ以上のピアCOSクラスタに関連付けられているCOSクラスタのセットへのアクセスを有する。COSクラスタピアは、COSクラスタ103Aと通信する必要があるCOSクラスタである。COSクラスタピア、例えば、COSクラスタ103Bは、COSクラスタ103Aに対するクライアントCOSクラスタとして活動し、COSクラスタ103A上でインスタンス化されたサービスを要求しアクセスするように動作可能である。
図1Cは、いくつかの実装による、DNSレプリケータにアクセス可能であり得る例示的なCOSクラスタピアのブロック図を例示する。COSクラスタピアセット155は、サーバCOSクラスタとして活動するCOSクラスタと、関連するCOSクラスタピアと、を含み、COSクラスタがこれらのクラスタピアに対して1つ以上のCOSサービスを提供する。例えば、
図1Cは、一意の識別子によって識別されるCOSクラスタ103Aに対する、1つ以上の関連付けられたCOSクラスタピア(第2のCOSクラスタ103BのID、及びオプションで第3のCOSクラスタ103KのID)を示す。データ構造(例えば、テーブル)は、DNSレプリケータ150の一部として記憶され得る。代替的には、データ構造155は、ネットワークを介してDNSレプリケータ150にアクセス可能な外部データストア(例えば、データベース)上に実装され得る。例えば、COSクラスタピアセット155は、COSクラスタ103C内の別のサービスとして、COS102の別のCOSクラスタ上に、又はネットワーク110内の別のネットワークデバイス上に、DNSレプリケータ150の外部に実装されてもよい。COSクラスタは、単一のCOSクラスタがCOSクラスタと通信する必要があることを示す単一のCOSクラスタピアを有してもよい。例えば、
図1Cのテーブル内のCOSクラスタ103Gは、そのピアとしてCOSクラスタ103Bを有する。他の例では、COSクラスタは、複数のCOSクラスタがCOSクラスタと通信する必要があることを示す複数のCOSクラスタピアを有してもよい。例えば、
図1Cのテーブル内のCOSクラスタ103Aは、2つのCOSクラスタピア、COSクラスタ103B及びCOSクラスタ103Kを有する。COSクラスタの識別子は、システム102においてCOSクラスタを一意に識別する。いくつかの実装では、COSクラスタIDは、所与のネットワークサブドメイン内で一意である。ネットワークサブドメインは、上位ドメイン内の他のそのようなサブドメインの中でも一意の名前を有する。COSクラスタIDは、サブドメインIDとドメインIDによって適格化されて、グローバルに一意にされ、グローバルに一意であるDNSキーをもたらす。いくつかの実装では、2つのCOSクラスタ間のピア関係は、データ構造155を投入することを含む設定プロセスを介して定義され得る。いくつかの実装では、COSクラスタがデプロイされるときに設定が実行され得る。
【0044】
図1Aを再度参照すると、DNSレプリケータ150は、第1のCOSサービスと第1のCOSエンドポイントを受信すると、第2のCOSクラスタ103B内に第1のCOSサービスと第1のCOSエンドポイントに対応する第2のCOSサービスと第2のCOSエンドポイントを作成する要求を伝送する。いくつかの実装では、第2のCOSサービスと第2のCOSエンドポイントは、それぞれ、第1のCOSサービス及び第1のCOSエンドポイントのレプリカである。第2のCOSサービスと第2のCOSエンドポイントの作成は、第2のCOSクラスタ103BのCOSクラスタDNSサーバ120B内の1つ以上の第1のDNS(Domain Name System)レコードの挿入を引き起こす。第1のDNSレコードが挿入されて、第2のCOSクラスタの1つ以上のCOSポッドが、ネットワーク110を介して第1のCOSクラスタの1つ以上のCOSポッドのセットと通信することが可能となる。例えば、第2のCOSサービスと第2のCOSエンドポイントを作成する要求の受信により、DNSレコード135Bの挿入をもたらす。DNSレコード135Bは、COSポッド104Aの第1のCOSサービス名及び第1のネットワークアドレスを含む。第1のCOSサービスが複数のCOSポッドを含むときに、第1のCOSサービス名は、追加のCOSポッドの追加のネットワークアドレスに関連付けられる。第2のCOSサービス120の作成は、COSクラスタ103B内の第2のCOSサービスに対するCOSポッドのデプロイを生成しない。代わりに、COSクラスタ103B内の第2のCOSサービス120の作成は、第1のCOSクラスタ103Aにデプロイされた第1のCOSサービス及び第1のCOSサービスのCOSポッドのディスカバリを可能にするためのDNSレコードを生成する。
【0045】
いくつかの実装では、COSクラスタ103Bは、第2のCOSサービスと第2のCOSエンドポイントを作成する要求を受信すると、作成が許可されているかどうかを決定する。これらの実装では、第2のCOSサービスと第2のCOSエンドポイントの作成は、作成が許可されていると決定されるとき(例えば、DNSレプリケータがそのような要求を行うことが許可されている)に実行される。作成が許可されていない場合、第2のCOSサービス及び第2のCOSエンドポイントは作成されず、COSサービスの第1のCOSサービス及びポッドに対してDNSレコードは挿入されない。
【0046】
いくつかの実装では、COSクラスタ103Bは、COSリソースのアクセス及び修正のためのポリシーのセットを定義してもよい。ポリシーのセット、例えば、ポリシー127Bは、DNSレプリケータ150が、第2のCOSサービスを作成及び/又は修正することを許可されているかどうかを決定するために使用され得る。いくつかの実装では、ポリシー127Nは事前定義された名前空間に関連付けられる。例えば、第2のCOSサービスと第2のCOSエンドポイントを作成する要求は、第1の名前空間(第1のCOSサービスと第1のCOSエンドポイントが定義される)に関連付けられる。この第1の名前空間に基づいて、COSクラスタ103Bは、この第1の名前空間において定義されたリソースの修正がDNSレプリケータ150に対して許可されているかどうかを決定する。ポリシーのセットの作成は、COSクラスタ103Bの管理者によって所有されるので、COSクラスタ103Bは、誰がこれらのコンストラクト(例えば、第2のCOSサービスと第2のCOSエンドポイント)をCOSクラスタ103Bに注入することができるかを制御し、また、誰がこれを行うことができるかの名前空間がどれかを指定することが動作可能である。さらに、ポリシーのセットが所与の名前空間及び/又はDNSレプリケータに対して定義されるときにエラーが発生する場合、このエラーはその名前空間及び/又はCOSクラスタにのみに適用され、他のCOSクラスタ及び/又は名前空間には伝搬されない。ポリシーのセットはCOSレベルで実装されるので、COS102が実装されるクラウドプラットフォームとは独立しており、複数のクラウドプロバイダのクラウドプラットフォーム間で変更されずに使用され得る。
【0047】
いくつかの実装では、COSクラスタ103Bの管理者は、(COSクラスタサーバとして活動する)複数のCOSクラスタに共通する名前空間を定義することができる。これらのCOSクラスタのうちの1つによって定義される各COSサービスは、COSクラスタの名前を含み、共通の名前空間において定義される。これにより、他のCOSクラスタ上にデプロイされたCOSサービスに対応してCOSクラスタ103B内に作成されたCOSサービスが、この共通名前空間において定義され、COSクラスタ103Bのノード上にローカルにデプロイされたCOSサービスの名前空間と重複しないことが可能となる。さらに、いくつかの実装では、COSクラスタ103AからCOSクラスタ103BにレプリケーションされるCOSサービスの名前は、COSクラスタ103Aの一意の識別子(例えば、COSクラスタ103Aの名前)を含むように設定されてもよい。この一意の識別子は、COSクラスタ103Bが、COSクラスタの粒度でCOSサービスを作成、更新、及び削除するためのポリシーをセットすることを可能にする。したがって、ポリシー127Bのセットは、COSクラスタ粒度で定義することも、代替的には、名前空粒度で定義することもできる。
【0048】
したがって、いくつかの実装では、第2のCOSサービスを作成する前に、COSクラスタ103Bは、DNSレプリケータ150が第2のCOSサービスと第2のCOSエンドポイントを作成することを許可されていると決定する。COSクラスタ103Bが、DNSレプリケータが第2のCOSサービスと第2のCOSエンドポイントを作成することを許可されていないと決定する場合、要求は満たされない。
【0049】
いくつかの実装では、COSクラスタ103Aが複数のCOSクラスタピアを有する場合、DNSレプリケータ150は、COSサービス及びCOSエンドポイントを作成する要求をこれらの他のピアに伝送する。例えば、DNSレプリケータ150は、第1のCOSサービス105A及び第1のCOSエンドポイント114Aに対応する第3のCOSサービス及び第3のCOSエンドポイントを作成する別の要求を第3のCOSクラスタ103Kに伝送してもよい。第3のCOSサービスと第3のCOSエンドポイントの作成は、第3のCOSクラスタ103Kにローカルな第2のDNSサーバ120K内の1つ以上の第2のDNSレコードの挿入を引き起こす。第2のDNSレコードが挿入されて、第3のCOSクラスタ103Kの1つ以上の第3のCOSポッドが、ネットワーク110を介して第1のCOSクラスタ103AのCOSポッド104Aと通信することを可能にすることが可能となる。
【0050】
DNSレコード135Bの作成後、COSクラスタ103のCOSポッド、例えばCOSポッド104Dは、DNS要求をCOSクラスタDNSサーバ120Bに伝送してもよい。DNS要求は第1のCOSサービスの名前(例えばドメイン名)を含んでもよい。COSクラスタDNSサーバ120Bは、COSポッド104Aのネットワークアドレス(例えば、IPアドレス及びポート番号)を返す。COSポッド104Dは、COSポッド104Aのネットワークアドレスを受信し、ネットワーク110を介して第1のCOSサービス105Aと第1のCOSポッド104Aと通信することが可能である。別の例では、DNS要求はネットワークアドレスを含んでもよく、COSクラスタDNSサーバ120Bは、COSサービスの名前を返してもよい。
【0051】
COSサービスの更新
本明細書で説明される解決策は、さらに、第1のCOSサービスとCOSポッド104Aに対するDNSレコードの自動更新を可能にする。第1のCOSサービスの第1のCOSサービス及び/又はCOSポッドが更新されると、DNSレプリケータ150は、第1のCOSサービスに対する更新を受信する。いくつかの実装では、第1のCOSサービスに対する更新は、第1のCOSサービスに対してインスタンス化された新しいCOSポッドの結果であり、第1のサービスに対する新しいCOSエンドポイントの生成をもたらす。例えば、所与のノード上のCOSポッドの障害、所与のノードからのCOSポッドの退去、又はノード自体の障害は、COSポッドをそのノードから除去し、別のノードに移動させる。これにより、COSポッドのIPアドレスの変更をもたらし、COSポッドに関連付けられたCOSエンドポイントに対する更新をもたらす。DNSレプリケータ150は、第2のCOSエンドポイントを更新する要求を第2のCOSクラスタ103Bに伝送する。第2のCOSサービスの更新は、第2のCOSクラスタ103Bの第1のCOSクラスタDNSサーバ120B内の第1のDNSレコードの更新を引き起こす。したがって、第2のCOSクラスタ103B内の、第1のCOSサービスのCOSポッドに対するDNSレコードの自動更新は、第1のCOSサービスが更新されるときでさえ、第2のCOSクラスタ103BのCOSポッドが第1のサービスのCOSポッドに到達することを可能にする。第1のCOSサービスの更新の受信は、DNSレプリケータ150が第1のCOSクラスタ103Aを継続的に監視することからもたらされてもよい。
【0052】
いくつかの実装では、第2のCOSサービスと第2のCOSエンドポイントを更新する要求を受信すると、COSクラスタ103Bは、更新が許可されているかどうかを決定する。これらの実装では、第2のCOSサービスと第2のCOSエンドポイントの更新は、この更新が許可されていると決定されるとき(例えば、DNSレプリケータがそのような要求を行うことが許可されている)に実行される。作成が許可されていない場合、第2のCOSサービスと第2のCOSエンドポイントは更新されず、第1のCOSサービスと第1のCOSサービスのポッドに対するDNSレコードは更新されない。いくつかの実装では、COSクラスタ103Bは、COSリソースのアクセス及び修正のために、ポリシー127Bのセットに基づいて更新が許可されているかどうかの決定を実行してもよい。この決定は、第2のCOSサービスが定義されている名前空間及び/又はCOSクラスタ103Aの名前に基づいて実行され得る。
【0053】
第2のCOSサービスに対するDNSレコードCOSの更新後、COSクラスタ103BのCOSポッド、例えばCOSポッド104Dは、DNS要求をCOSクラスタDNSサーバ120Bに伝送してもよい。DNS要求は第1のCOSサービスの名前(例えばドメイン名)を含んでもよい。COSクラスタDNSサーバ120Bは、COSポッド104Aの更新されたネットワークアドレス(例えば、更新されたIPアドレス及びポート番号)を返す。COSポッド104Dは、COSポッド104Aの更新されたネットワークアドレスを受信し、更新されたネットワークアドレスに基づいてネットワーク110を介して第1のCOSサービス105Aと第1のCOSポッド104Aと通信することが可能である。
【0054】
COSサービスの削除
第1のCOSサービスが削除されるときに、DNSレプリケータ150は、第1のCOSクラスタ103Aから、第1のCOSサービスが第1のCOSクラスタ103A内で削除されたことの指標を受信する。削除は、システムの管理者によって実行され得る。DNSレプリケータ150は、第2のCOSサービスと第2のCOSエンドポイントを削除する要求を第2のCOSクラスタ103Bに伝送する。第2のCOSサービスを削除する要求は、第2のCOSクラスタ103Bの第1のCOSクラスタDNSサーバ120B内の第1のDNSレコードの削除を引き起こす。したがって、第2のCOSクラスタ103B内の第1のCOSサービスのCOSポッドに対するDNSレコードの自動削除は、第2のCOSクラスタ103BのCOSポッドが第1のサービスのCOSポッドに到達できなくなることを可能にする。第1のCOSサービスが削除されたことの指標の受信は、DNSレプリケータ150が第1のCOSクラスタ103Aを継続的に監視することからもたらされてもよい。
【0055】
いくつかの実装では、第2のCOSサービスを削除する要求を受信すると、COSクラスタ103Bは、削除が許可されているかどうかを決定する。これらの実装では、第2のCOSサービスと第2のCOSエンドポイントの削除は、この削除が許可されていると決定されるとき(例えば、DNSレプリケータがそのような要求を行うことが許可されている)に実行される。削除が許可されていない場合、第2のCOSサービスと第2のCOSエンドポイントは削除されず、第1のCOSサービスと第1のCOSサービスのポッドに対するDNSレコードは削除されない。いくつかの実装では、COSクラスタ103Bは、削除がポリシー127Bのセットに基づいて許可されているかどうかの決定を実行してもよい。ポリシー127Aのセットは、名前空間及び/又はCOSクラスタ103Aの名前に関連付けられ得る。削除が許可されているかどうかの決定は、第2のCOSサービスが定義されている名前空間及び/又はCOSクラスタ103Aの名前に基づいて実行され得る。
【0056】
第2のCOSサービスに対するDNSレコードCOSの更新後、COSクラスタ103BのCOSポッド、例えばCOSポッド104Dは、DNS要求をCOSクラスタDNSサーバ120Bに伝送してもよい。DNS要求は第1のCOSサービスの名前(例えばドメイン名)を含んでもよい。COSクラスタDNSサーバ120Bは、COSサービスに対するDNSレコードが削除されるので、COSポッド104Aのネットワークアドレス(例えば、更新されたIPアドレス及びポート番号)を返さない。第1のCOSサービスは、もはやCOSクラスタ103BのCOSポッドにアクセス可能ではない。
【0057】
図1Dは、DNSレプリケータ150の例示的な実装のブロック図を例示する。一部の実装では、例えば、
図1Aでは、DNSレプリケータは、COSクラスタ103A~103Bの外部にあるコンポーネントとして例示されているが、他の実装では、DNSレプリケータ150は、1つ以上のCOSクラスタの一部として実装され得る。
図1Dは、DNSレプリケータ150が、2つのCOSクラスタ103A~103Bに分散された複数の論理コンポーネント、COSサービス監視ユニット152、及び同期ユニット154を含む例示的な実装を例示する。COSサービス監視ユニット152は、COSサービスを監視し、COSサービス及びCOSエンドポイントが作成、更新、及び/又は削除されたことの指標を受信するように動作可能である。これらの指標を受信することに応答して、COSサービス監視ユニット152は、第1のCOSサービスと第1のCOSエンドポイントに対応する第2のCOSサービスと第2のCOSエンドポイントを作成する要求を伝送する。要求は、COSクラスタ103B内の第2のCOSサービスと第2のCOSエンドポイントの作成/更新/削除を引き起こすように動作可能な同期ユニット154によって受信される。さらに、この例示的な実装では、COSクラスタのピアCOSクラスタは、COSクラスタ103AのCOSサービス監視ユニット152から要求を受信するそれぞれの同期ユニットを含んでもよい。いくつかの実装では、COSクラスタは、COSサービス監視ユニット152及び同期ユニット154の両方の要素を含んでもよい。監視ユニット152は、COSクラスタの内部にあるCOSサービスを監視するために使用され、同期ユニット154は、他のCOSクラスタから提供される要求を受信し、応答するように動作可能である。DNSレプリケータ150の複数の実装は、本明細書に説明される実装の範囲から逸脱することなく企図される。
【0058】
例示的な動作
図2Aは、いくつかの例示的な実装によるCOSクラスタにわたるCOSサービスのディスカバリのシステムのための方法を例示するフロー図である。
図2Aの動作は、DNSレプリケータ150で実行される。オプションのボックス202は、第1のCOSクラスタを含む1つ以上のCOSクラスタを監視することを示す。一実装では、COSクラスタ、例えば、COSクラスタ103A~103Kの監視は、COSクラスタ内のマイクロサービスに対する動作を監視する要求を伝送することによって開始される(ブロック203)。
【0059】
ブロック204では、第1のCOSサービスと1つ以上の第1のCOSエンドポイントが作成されたことの指標が受信される。この指示は、第1のCOSサービスと第1のCOSエンドポイントが第1のCOSクラスタ103A内に生成されることに応答して受信される。指標は、第1のCOSクラスタ内で発生した修正のタイプ(例えば、第1のCOSサービスとCOSエンドポイントの作成)を記述するシリアルメッセージとすることができる。第1のCOSサービスは、第1のCOSクラスタ内の1つ以上のCOSポッドのセットを定義し、例えば、第1のCOSサービス105Aが、COSポッド104Aを定義する。第1のCOSエンドポイントのCOSエンドポイントは、1つ以上のCOSポッドのセットのCOSポッドのネットワークアドレスを含む。例えば、COSポッド104AのCOSエンドポイントは、COSポッド104AのIPアドレス及びポート番号を含む。第1のCOSサービスと第1のCOSエンドポイントの受信は、第1のCOSクラスタ内の第1のCOSサービスと1つ以上の第1のCOSエンドポイントの作成に応答して実行される。
【0060】
動作は、ブロック204からブロック206に移動する。オプションのブロック206では、DNSレプリケータは、ネットワークを介して第1のCOSクラスタと通信する必要がある1つ以上のCOSクラスタを決定する。1つ以上のCOSクラスタは、第2のCOSクラスタを含む。いくつかの実装では、DNSレプリケータは、COSクラスタの各々が1つ以上のピアCOSクラスタに関連付けられているCOSクラスタのセットへのアクセスを有する。ピアCOSクラスタは、COSクラスタと通信する必要があるCOSクラスタである。ピアCOSクラスタは、COSクラスタに対するクライアントCOSクラスタとして活動し、COSクラスタ上でインスタンス化されたサービスを要求しアクセスするように動作可能である。例えば、DNSレプリケータ150は、
図1Cのデータ構造へのアクセスを有し、
図1Cでは、一意な識別子によって識別されるCOSクラスタに対して、1つ以上の関連付けられたCOSクラスタピアが識別される。データ構造(例えば、テーブル)は、DNSレプリケータ150の一部として記憶され得る。代替的には、データ構造は、ネットワークを介してDNSレプリケータ150にアクセス可能な外部データストア(例えば、データベース)上に実装され得る。一例では、COSクラスタは、単一のCOSクラスタがCOSクラスタと通信する必要があることを示す単一のCOSクラスタピアを有してもよい。例えば、
図1Cのテーブル内のCOSクラスタ103Gは、そのピアとしてCOSクラスタ103Bを有する。他の例では、COSクラスタは、複数のCOSクラスタがCOSクラスタと通信する必要があることを示す複数のCOSクラスタピアを有してもよい。例えば、
図1Cのテーブル内のCOSクラスタ103Aは、2つのCOSクラスタピア103B及び103Cを有する。COSクラスタの識別子は、システム102においてCOSクラスタを一意に識別する。
【0061】
動作は、ブロック206からブロック208に移動する。いくつかの実装形態では、ブロック206の動作がスキップされるときに、動作のフローがブロック204からブロック208に移動する。ブロック208では、DNSレプリケータ150は、第2のCOSクラスタ内に第1のCOSサービス及び1つ以上の第1のCOSエンドポイントに対応する第2のCOSサービスと1つ以上の第2のCOSエンドポイントを作成する要求を伝送する。いくつかの実装では、第2のCOSサービスと第2のCOSエンドポイントは、それぞれ、第1のCOSサービス及び第1のCOSエンドポイントのレプリカである。第2のCOSサービスと1つ以上の第2のCOSエンドポイントの作成は、第2のCOSクラスタにローカルな第1のDNSサーバ内の1つ以上の第1のDNS(Domain Name System)レコードの挿入を引き起こす。1つ以上の第1のDNSレコードが挿入されて、第2のCOSクラスタの1つ以上のCOSポッドが、ネットワークを介して第1のCOSクラスタの1つ以上のCOSポッドのセットと通信することが可能となる。
【0062】
いくつかの実装では、動作は、ブロック208からブロック210に移動する。ブロック210では、DNSレプリケータ150は、第3のCOSクラスタ103K内に第1のCOSサービスと1つ以上の第1のエンドポイントに対応する第3のCOSサービスと1つ以上の第3のCOSエンドポイントを作成する別の要求を、1つ以上のCOSクラスタのうちの第3のCOSクラスタ、例えばCOSクラスタ103Kに伝送する。第3のCOSサービスと1つ以上の第3のCOSエンドポイントの作成は、第3のCOSクラスタにローカルな第2のDNSサーバ内の1つ以上の第2のDNSレコードの挿入を引き起こす。1つ以上の第2のDNSレコードが挿入されて、第3のCOSクラスタ103Kの1つ以上の第3のCOSポッドが、ネットワークを介して第1のCOSクラスタ103Aの1つ以上のCOSポッドのセットと通信することが可能となる。オプションのブロック210の動作は、第1のCOSクラスタが複数のCOSクラスタピアに関連付けられているときに実行される。第1のCOSクラスタが単一のCOSクラスタピアに関連付けられているシナリオでは、第1のCOSサービスに対応するCOSサービス(と第1のCOSエンドポイントに対応するCOSエンドポイント)を作成する要求が、そのCOSクラスタピアにのみ送信される。
図1Cの例示された例示は、2つのCOSクラスタピアを有するCOSクラスタと、1つのCOSクラスタピアを有するCOSクラスタを示すが、他の例が、COSクラスタが任意の数のCOSクラスタピアに関連付けられる本明細書で論じられる実装の範囲内にある。
【0063】
図2Bは、いくつかの実装による、第1のCOSサービスの更新に基づいてDNSレコードを更新するために実行され得る例示的な動作のフロー図を例示する。
図2Bの動作は、DNSレプリケータ150によって実行される。ブロック212Aでは、DNSレプリケータ150は、第1のCOSサービスに対する更新を受信する。いくつかの実装では、第1のCOSサービスに対する更新は、第1のCOSサービスに対してインスタンス化された新しいCOSポッドの結果であり、第1のサービスに対する新しいCOSエンドポイントの自動生成をもたらす。様々なタイプの更新が考えられる。例えば、COSサービスをバックアップするCOSポッドの数が変更され、IPアドレス及びCOSポッド名がCOSエンドポイントにおいて変更されることを引き起こす。さらに、COSポッドがそのIPアドレスを変更されるときに、COSエンドポイントが更新される。別の更新として、COSサービスがリネームされて、前のCOSサービス及び関連付けられたCOSエンドポイントが削除され、新しいものが作成されることを引き起こすこととすることができる。更新は、何が修正され、何のタイプの修正であったか(例えば、更新)を記述するシリアルメッセージで受信され得る。動作のフローは、ブロック212Aからブロック214Aに移動する。ブロック214Aでは、DNSレプリケータ150は、第2のCOSサービスを更新する要求を第2のCOSクラスタ103Bに伝送する。第2のCOSサービスの更新は、第2のCOSクラスタ103Bの第1のCOSクラスタDNSサーバ120B内の第1のDNSレコードの更新を引き起こす。したがって、第2のCOSクラスタ103B内の、第1のCOSサービスのCOSポッドに対するDNSレコードの自動更新は、第1のCOSサービスが更新されると、第2のCOSクラスタ103BのCOSポッドが第1のサービスのCOSポッドに到達する能力を有することに可能にする。第1のCOSサービスの更新の受信は、DNSレプリケータ150が第1のCOSクラスタ103Aを継続的に監視することからもたらされてもよい。
【0064】
図2Cは、いくつかの実装による、第1のCOSサービスの削除に基づいてDNSレコードを削除するために実行され得る例示的な動作のフロー図を例示する。
図2Cの動作は、DNSレプリケータ150によって実行される。ブロック212Bでは、DNSレプリケータ150は、第1のCOSサービスが第1のCOSクラスタ内で削除されたことの指標を受信する。第1のCOSサービスが削除されたことの指標は、第1のCOSレプリケータ150が第1のCOSクラスタ103Aで削除されるときに受信される。指標は、何が修正され、何のタイプの修正であったか(例えば、作成、更新、削除)を記述するシリアルメッセージで受信され得る。削除は、システムの管理者によって実行され得る。動作のフローは、ブロック212Aからブロック214Aに移動する。ブロック214Bでは、DNSレプリケータ150は、第2のCOSサービスを削除する要求を第2のCOSクラスタ103Bに伝送する。第2のCOSサービスを削除する要求は、第2のCOSクラスタ103Bの第1のDNSサーバ120B内の第1のDNSレコードの削除を引き起こす。したがって、第2のCOSクラスタ103B内の第1のCOSサービスのCOSポッドに対するDNSレコードの自動削除は、第2のCOSクラスタ103BのCOSポッドが第1のサービスのCOSポッドに到達できなくなることを可能にする。第1のCOSサービスが削除されたことの指標の受信は、DNSレプリケータ150が第1のCOSクラスタ103Aを継続的に監視することからもたらされてもよい。
【0065】
図2Dは、いくつかの実装による、第2のCOSサービスと第2のCOSエンドポイントを作成する要求が受信されると実行され得る例示的な動作のフロー図を例示する。
図2Dの動作は、COSクラスタ103Aと通信する必要があるクライアントCOSクラスタ、例えば、COSクラスタ103B又はCOSクラスタ103Kによって実行され得る。いくつかの実装では、
図2Dの動作の一部又は全部がCOSコントローラ126Bによって実行され得る。
【0066】
ブロック222では、第1のCOSサービスと1つ以上の第1のCOSエンドポイントに対応する第2のCOSサービスと1つ以上の第2のCOSエンドポイントを作成する要求が受信される。いくつかの実装では、ブロック224では、COSクラスタ103Bが、第2のCOSサービスと第2のCOSエンドポイントの作成が許可されていると決定する。いくつかの実装では、第2のCOSサービスの生成が許可されているとの決定は、COSクラスタ103B内のCOSサービスの生成に対して定義されたポリシーのセットに基づいて実行される。いくつかの実装では、ポリシーのセットは、所定の名前空間に関連付けられる。異なる名前空間は、異なるポリシーのセットに関連付けられてもよい。
【0067】
第2のCOSサービスと第2のCOSエンドポイントの作成が許可されていると決定すると、フローはブロック226に移動する。第2のCOSサービスと第2のCOSエンドポイントの作成が許可されていないと決定されるときに、要求はグラントされず、COSサービスとCOSエンドポイントは、COSクラスタ103B内に作成されない。ブロック226では、第2のCOSサービスと第2のCOSエンドポイントが作成される。第2のCOSサービスと第2のCOSエンドポイントは、第1のCOSサービスと第1のCOSエンドポイントに対応する。いくつかの実装では、第2のCOSサービスと第2のCOSエンドポイントは、第1のCOSサービスと第1のCOSエンドポイントのレプリカである。
【0068】
フローはブロック228に移動する。第2のCOSサービスと第2のCOSエンドポイントの作成の結果として、第2のCOSクラスタにローカルな第1のDNSサーバ内に1つ以上のDNSレコードを挿入する。第1のDNSレコードは、第2のCOSクラスタのCOSポッドが、ネットワーク110を介して第1のCOSクラスタのCOSポッドのセットと通信することを可能にする。第1のCOSクラスタのCOSポッドのセットは、第1のCOSサービスと第1のCOSエンドポイントによって定義される。
【0069】
図2Eは、いくつかの実装による、第1のCOSサービスが更新されるときに実行され得る例示的な動作のフロー図を例示する。
図2Eの動作は、COSクラスタ103Aと通信する必要があるクライアントCOSクラスタ、例えば、COSクラスタ103B又はCOSクラスタ103Kによって実行され得る。いくつかの実装では、
図2Eの動作の一部又は全部がCOSコントローラ126Bによって実行され得る。
【0070】
ブロック232Aでは、COSクラスタ103Bは、第2のCOSサービスを更新する要求を受信する。ブロック234Aでは、COSクラスタ103Bは、第2のCOSサービスの更新が許可されていると決定する。COSクラスタ103Bは、第2のCOSサービスの更新が許可されていると決定すると、第2のCOSサービスと1つ以上の第2のCOSエンドポイントを更新する。いくつかの実装では、1つ以上のCOSエンドポイントを更新することは、第2のCOSサービスに対するCOSエンドポイントを削除すること、COSエンドポイントを更新すること、及び/又はCOSエンドポイントを追加することを含んでもよい。ブロック236Aでは、第2のCOSサービスの更新の結果として、第1のCOSサービスに関連付けられたDNSレコードが、第2のCOSクラスタ103Bの第1のDNSサーバ120B内で更新される。
【0071】
図2Fは、いくつかの実装による、第1のCOSサービスが削除されるときに実行され得る例示的な動作のフロー図を例示する。
図2Fの動作は、COSクラスタ103Aと通信する必要があるクライアントCOSクラスタ、例えば、COSクラスタ103B又はCOSクラスタ103Kによって実行され得る。いくつかの実装では、
図2Fの動作の一部又は全部がCOSコントローラ126Bによって実行され得る。ブロック232Bでは、COSクラスタ103Bは、第2のCOSサービスを削除する要求を受信する。ブロック234Bでは、COSクラスタ103Bは、第2のCOSサービスの削除が許可されていると決定する。COSクラスタ103Bは、第2のCOSサービスの削除が許可されていると決定すると、COSクラスタ103Bは、第2のCOSサービスと第2のCOSエンドポイントを削除する。代替的には、削除が許可されていないと決定される場合、削除は実行されず、要求はグラントされない。ブロック236Bでは、第2のCOSサービスの削除の結果として、第1のCOSサービスに関連付けられたDNSレコードは、第2のCOSクラスタ103Bの第1のDNSサーバ120B内で削除される。
【0072】
例示的な実装
「参照」は、データ構造を特定するために使用可能なデータを指し、様々な方法(例えば、ポインタ、インデックス、ハンドル、キー、識別子など)で実装されてもよい。
【0073】
システムによるデータの受信は、異なる実装で異なって発生してもよい(例えば、システムにプッシュされる(プッシュモデルと呼ばれる場合が多い)、システムによってプルされる(プルモデルと呼ばれる場合が多い)などである)。
【0074】
「ユーザ」という用語は、システム及び/又はサービスを使用するエンティティ(例えば、個人)を指す一般的な用語である。マルチテナントアーキテクチャは、各テナントに、ソフトウェアインスタンスの固有の共有、及びソフトウェアインスタンスの専用シェアと、ユーザ管理、テナント固有の機能、設定、カスタマイズ、非機能プロパティ、関連付けられたアプリケーションなどに対するテナント固有のデータを入力する(典型的には)アビリティを提供する。個別のソフトウェアインスタンスが異なるテナントのためにするマルチインスタントアーキテクチャを有するマルチテナントコンストラクトテナントは、サービスを提供するソフトウェアインスタンスに対する特定の権限で共通のアクセスを共有するユーザのグループを含む。テナントは、組織(例えば、企業、企業内の部署など)であってもよい。テナントは、システム及び/又はサービスに関して1つ以上の役割を有してもよい。例えば、顧客関係管理(CRM)システム又はサービスの文脈において、テナントは、CRMシステム又はサービスを使用するベンダであって、テナントがベンダの1つ以上の顧客に関して有する情報を管理してもよい。別の例として、DAAS(Data as a Service)の文脈において、テナントの1つのセットは、データを提供するベンダであってもよく、テナントの別のセットは、ベンダのデータの異なるもの又は全てのものの顧客であってもよい。別の例として、PAAS(Platform as a Service)の文脈において、テナントの1つのセットは、アプリケーション/サービスを提供するサードパーティのアプリケーション開発者であってもよく、テナントの別のセットは、サードパーティのアプリケーション開発者の異なるもの又は全てのものの顧客であってもよい。ユーザは、システム及び/又はサービスに関して1つ以上の役割を有してもよい。いくつかの例を提供するために、ユーザは、テナント(例えば、ベンダー又は顧客)の代表者(「エンドユーザ」と呼ばれる場合がある)、システム及び/又はサービスを提供する会社の代表者(例えば、管理者)、及び/又はプラットフォームアズアサービス(PAAS)上でアプリケーションを作成し、維持しているサードパーティアプリケーション開発者の代表者(例えば、プログラマ)であってもよい。
【0075】
電子デバイス及び機械可読媒体
上記の実装の1つ以上の部分は、ソフトウェア及び/又はソフトウェアとハードウェアの組み合わせを含んでもよい。電子デバイス(コンピューティングデバイス、コンピュータなどとも呼ばれる)は、プロセッサのセット上での実行のためのコード(ソフトウェア命令から構成され、コンピュータプログラムコード又はコンピュータプログラムと呼ばれる場合がある)を記憶し、及び/又はデータを記憶する1つ以上の機械可読記憶媒体(例えば、磁気ディスク、光ディスク、読み出し専用メモリ(ROM)、フラッシュメモリ、相変化メモリ、ソリッドステートドライブ(SSD))に結合された1つ以上のプロセッサのセットなどのハードウェア及びソフトウェアを含む。例えば、電子デバイスは、不揮発性メモリ(例えば、磁気ディスク、光ディスク、読み出し専用メモリ(ROM)、フラッシュメモリ、相変化メモリ、SSDであるより遅い読み出し/書き込み時間を有するもの)及び揮発性メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM))を含んでもよく、不揮発性メモリは、たとえ電子デバイスがオフにされても、又は電力が他の方法で除去されても、コード/データを保持し、典型的には、揮発性メモリはより速い読み出し/書き込み時間を有するので、電子デバイスは、動作中に、その電子デバイスのプロセッサのセットによって実行されるべきコードの一部を不揮発性メモリからその電子デバイスの揮発性メモリに複製する。別の例として、電子デバイスは、電子デバイスがオフにされるときにコード/データを保持し、かつ十分に高速な読み出し/書き込み時間を有する不揮発性メモリ(例えば、相変化メモリ)を含んでもよく、実行されるべきコード/データの一部を揮発性メモリに複製するのではなく、コード/データが、プロセッサのセットに直接提供(例えば、プロセッサのセットのキャッシュにロード)されてもよいようにする。言い換えれば、この不揮発性メモリは、長期記憶ストレージ及びメインメモリの両方として動作し、したがって、電子デバイスは、メインメモリのための揮発性メモリを全く有さないか、又はわずかな量しか有さない。コード及び/又はデータを機械可読記憶媒体に記憶することに加えて、典型的な電子デバイスは、1つ以上の機械可読伝送媒体(キャリアとも呼ばれる)(例えば、電気、光学、無線、音響、又は他の形態の搬送信号、搬送波、赤外線信号など)を介してコード及び/又はデータを伝送することができる。例えば、典型的な電子デバイスはまた、他の電子デバイスとの(伝搬信号を使用してコード及び/又はデータを伝送及び/又は受信する)ネットワーク接続を確立する1つ以上の物理ネットワークインターフェースのセットを含む。したがって、電子デバイスは、1つ以上の機械可読媒体(コンピュータ可読媒体とも呼ばれる)と共にコード及び/又はデータを(内部に及び/又はネットワークを介して他の電子デバイスを用いて)記憶及び伝送してもよい。
【0076】
電子デバイスは、様々な目的のために使用されている。例えば、電子デバイス(サーバ電子デバイスと呼ばれる場合がある)は、サービスと通信するようにクライアントソフトウェア(クライアントコード又はエンドユーザクライアントと呼ばれる場合がある)を実行する別の電子デバイス(クライアント電子デバイス、クライアントコンピューティングデバイス、又はクライアントデバイスと呼ばれる場合がある)にサービスを提供するために使用される1つ以上のサーバとして動作させるコードを実行してもよい。サーバ及びクライアントの電子デバイスは、それぞれ、管理者(管理ユーザとしても知られる)及びエンドユーザの役割において、ユーザによって動作されてもよい。
【0077】
図3Aは、いくつかの例示的な実装による、電子デバイスを例示するブロック図である。
図3Aは、1つ以上のプロセッサ322のセットと、1つ以上のネットワークインターフェース324のセット(無線及び/又は有線)と、(1つ以上のプロセッサ322のセットによって実行可能な命令を含む)ソフトウェア328を記憶した機械可読記憶媒体326と、を含むハードウェア320を含む。前述のCOSクラスタ及びDNSレプリケータの各々は、1つ以上の電子デバイス300に実装されてもよい。一実装では、1)COSクラスタの各々が、電子デバイス300の別個のもの(例えば、ソフトウェア328が、上述のDNSレプリケータとインターフェースするCOSクラスタを実装するソフトウェア(例えば、ウェブブラウザ、ネイティブクライアント、ポータル、コマンドラインインターフェース、及び/又はSOAP(Simple Object Access Protocol)に基づくアプリケーションプログラミングインターフェース(API)、REST(Representational State Transfer)など)を表す、ユーザによって動作されるユーザ電子デバイス)に実装され、2)上述のDNSレプリケータが、電子デバイス300のうちの1つ以上の別個のセット(例えば、ソフトウェア328が、上述のDNSレプリケータを実装するソフトウェアを表す1つ以上のサーバ電子デバイスのセット)に実装され、3)動作において、COSクラスタを実装する電子デバイスと上述のDNSレプリケータは、(例えば、ネットワークによって)通信可能に結合され、上述のDNSレプリケータへの要求をサブミットし、エンドCOSクラスタへの応答を返すためにそれらの間に(、又は1つ以上の他の層を介して)接続を確立する。電子デバイスの他の構成は、他の実装(例えば、COSクラスタ及びDNSレプリケータが単一の電子デバイス300上に実装される実装)で使用されてもよい。
【0078】
コンピュータ仮想化を使用する電子デバイスでは、1つ以上のプロセッサ322のセットは、典型的には、仮想化層308及び1つ以上のソフトウェアコンテナ304A~304Rをインスタンス化するソフトウェアを実行する(例えば、オペレーティングシステムレベルの仮想化では、仮想化層308は、1つ以上のアプリケーションのセットを実行するように各々が使用され得る複数のソフトウェアコンテナ304A~304R(別個のユーザ空間インスタンスを表し、また、仮想化エンジン、仮想プライベートサーバ、又はジェイルと呼ばれる)の作成を可能にするオペレーティングシステムのカーネル(又はベースオペレーティングシステム上で実行するシム)を表し、完全な仮想化では、仮想化層408は、ハイパーバイザ(仮想化機械モニタ(VMM)と呼ばれる場合がある)、又はホストオペレーティングシステムの上で実行されるハイパーバイザを表し、ソフトウェアコンテナ304A~3044Rは各々、ハイパーバイザによって動作され、ゲストオペレーティングシステムを含んでもよい仮想機械と呼ばれる厳密に隔離された形態のソフトウェアコンテナを表し、並行仮想化では、仮想機械と共に動作するオペレーティングシステム及び/又はアプリケーションが、最適化のための仮想化の存在を認識してもよい。)。繰り返しになるが、コンピュータ仮想化が使用される電子デバイスでは、動作中に、(インスタンス306Aとして例示される)ソフトウェア328のインスタンスが、仮想化層308上のソフトウェアコンテナ304A内で実行される。コンピュータ仮想化が使用されない電子デバイスでは、ホストオペレーティングシステムの上のインスタンス306Aは、「ベアメタル」電子デバイス300上で実行される。インスタンス306Aのインスタンス化、並びに実装された場合の仮想化層308及びソフトウェアコンテナ304A~304Rは、集合的にソフトウェアインスタンス302と呼ばれる。
【0079】
電子デバイスの代替的な実装は、上述したものとは多くの変形を有してもよい。例えば、カスタマイズされたハードウェア及び/又はアクセラレータが電子デバイスにおいて使用される可能性もある。
【0080】
例示的な環境
図3Bは、いくつかの実装による、上で論じたCOSサービスディスカバリを可能にする技術が使用されてもよい環境のブロック図である。システム340は、サービス342を提供するためのハードウェア(1つ以上の電子デバイスのセット)及びソフトウェアを含む。システム340は、ネットワーク382を介してユーザ電子デバイス380A~380Sに結合される。サービス342は、1つ以上の他の組織のために作業するユーザ384A~384S(外部ユーザと呼ばれる場合がある)のうちの1人以上に利用可能にされるオンデマンドサービスであってもよく、これらの組織は、必ずしもシステムの構築及び/又は維持に関与する必要はなく、代わりに(例えば、ユーザ384A~384Sの要求に応じて)必要に応じてサービス342を利用する。サービス342は、1つ以上のAPI(Application Programming Interface)(例えば、REST(Representational State Transfer)API)を介して、互いに及び/又はユーザ電子デバイス380A~380Sのうちの1つ以上と通信してもよい。ユーザ電子デバイス380A~380Sは、ユーザ384A~384Sによって動作される。
【0081】
したがって、システム340は、
図1AのCOS102の少なくとも1つのインスタンスを含む。
【0082】
システム340は、単一のデータセンタ又は複数のデータセンタにわたって実装されてもよい。いくつかの実装では、COS102の少なくとも1つのインスタンスが、これらの1つ以上のデータセンタの各々に実装される。
【0083】
上に論じたリリースオーケストレーション技術を使用して、COSポッドを使用してデプロイされるアプリケーションによって提供される1つ以上のサービスを含むサービスは、顧客関係管理(CRM)サービス(例えば、salesforce.com, Inc.によるSales Cloud)、契約/提案/見積サービス(例えば、salesforce.com, Inc.によるSalesforce CPQ)、顧客サポートサービス(例えば、salesforce.com, Inc.によるService Cloud and Field Service Lightning)、マーケティングサービス(例えば、salesforce.com, Inc.によるMarketing Cloud, Salesforce DMP, and Pardot)、コマースサービス(例えば、salesforce.com, Inc.によるCommerce Cloud Digital, Commerce Cloud Order Management, and Commerce Cloud Store)、外部ビジネスデータソースとの通信(例えば、salesforce.com, Inc.によるSalesforce Connect)、生産性サービス(例えば、salesforce.com, Inc.によるQuip)、データベースアズアサービス(例えば、salesforce.com, Inc.によるDatabase.com)、データアズアサービス(DAAS)(例えば、salesforce.com, Inc.によるData.com)、プラットフォームアズアサービス(PAAS)(例えば、実行ランタイム及びアプリケーション(アプリ)開発ツール、Heroku(登録商標) Enterprise、Thunder、Force.com、及びsalesforce.com,Inc.によるLightningなど)、分析サービス(例えば、salesforce.com, Inc.によるEinstein Analytics, Sales Analytics, and/or Service Analytics)、コミュニティサービス(例えば、salesforce.com, Inc.によるCommunity Cloud and Chatter)、モノのインターネット(IoT)サービス(salesforce.com, Inc.によるSalesforce IoT and IoT Cloud)、業界固有のサービス(例えば、salesforce.com, Inc.によるFinancial Services Cloud and Health Cloud)、人工知能サービス(例えば、Salesforce.com, Inc.によるEinstein)、及び/又はインフラストラクチャアズアサービス(IAAS)(例えば、仮想マシン、サーバ、及び/又はストレージ)を含む。例えば、システム340は、アプリケーションプラットフォーム344のプロバイダによって開発される1つ以上のアプリケーションを作成、管理、及び実行し、かつユーザがユーザデバイス380A~380Sのうちの1つ以上を介してシステム440にアクセスするか、又はサードパーティアプリケーション開発者がユーザデバイス380A~380Sのうちの1つ以上を介してシステム340にアクセスするためのPAASを可能にするアプリケーションプラットフォーム344を含んでもよい。
【0084】
いくつかの実装では、システム340は、マルチテナントクラウドコンピューティングアーキテクチャであり、サービス342のうちの1つ以上は、システム340にアクセス可能なシステムデータ352のためのシステムデータストレージ350、並びに1つ以上のマルチテナントデータベース346を使用してもよい。特定の実装では、システム340は、サーバ電子デバイス上で動作し、任意のテナントに関連付けられた許可されたユーザに対する要求を処理するように構成されている1つ以上のサーバのセットを含む(特定のサーバに対するユーザ及び/又はテナントに対するサーバアフィニティは存在しない)。ユーザ電子デバイス380A~380Sは、システム340のサーバと通信して、システム340によってホストされるテナントレベルデータ及びシステムレベルデータを要求及び更新し、それに応答して、システム340(例えば、システム440内の1つ以上のサーバ)は、自動的に、マルチテナントデータベース346及び/又はシステムデータストレージ350から所望の情報にアクセスするように設計されている1つ以上のSQL(Structured Query Language)ステートメント(例えば、1つ以上のSQLクエリ)を生成してもよい。
【0085】
いくつかの実装形態では、サービス342は、ユーザ電子デバイス380A~380Sからのクエリに応答して動作時に、メタデータに従って動的に生成される仮想アプリケーションを使用して実装され、メタデータは、1)複数のテナントに共通する設定(例えば、フォーム、レポート、ワークフロー、ユーザアクセス権、ビジネスロジック)を記述するメタデータ及び/又は、2)テナント固有であり、テナント固有の設定(例えば、テーブル、レポート、ダッシュボード、インターフェースなど)を記述し、マルチテナントデータベースにされるメタデータを含む。そのために、プログラムコード360は、メタデータからアプリケーションデータを具現化するランタイムエンジンであってもよく、すなわち、コンパイルされたランタイムエンジン(システムカーネルとしても知られる)、テナントデータ、及びメタデータの明確な分離があり、これにより、1つのものが他のものに影響を及ぼすリスクを実質的にゼロにして、システムカーネル並びにテナント固有のアプリケーション及びスキーマを独立して更新することが可能となる。さらに、一実装では、アプリケーションプラットフォーム344は、アプリケーション開発者によるアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズムを含み、これは、保存ルーチンによってメタデータとして保存されてもよい。上述のクラウドサービスを含む、このようなアプリケーションへの呼び出しは、プログラミング言語スタイルインターフェースを提供するPL/SOQL(Procedural Language/Structured Object Query Language)を使用してコーディングされてもよい。いくつかのPL/SOQL言語の実装の詳細な記述は、2007年9月21日に出願されたCraig WeissmanによるMETHOD AND SYSTEM FOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI-TENANT ON-DEMAND DATABASE SERVICEと題する米国特許第7,730,478号に論じられている。アプリケーションへの呼び出しは、1つ以上のシステムプロセスによって検出されてもよく、このプロセスは、呼び出しをなすテナントに対するアプリケーションメタデータを取得し、ソフトウェアコンテナ(例えば、仮想マシン)においてアプリケーションとしてメタデータを実行することを管理する.。
【0086】
ネットワーク382は、LAN(local area network)、WAN(wide area network)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な設定のいずれか1つ又は任意の組み合わせであってもよい。ネットワークは、IEEE(Institute of Electrical and Electronics Engineers)プロトコル、3GPP(3rd Generation Partnership Project)プロトコル、4G(4th generation wireless protocol)(例えば、LTE(Long Term Evolution)標準、LTE Advanced、LTE Advanced Pro)、5G(fifth generation wireless protocol)、又は同様の有線及び/又は無線プロトコルを含む1つ以上のネットワークプロトコルに準拠してもよく、システム340とユーザ電子デバイス480A~480Sとの間でデータをルーティングするための1つ以上の中間デバイスを含んでもよい。
【0087】
各ユーザ電子デバイス380A~380S(例えば、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA(Personal Digital Assistant)、スマートフォン、拡張リアリティ(AR)デバイス、仮想リアリティ(VR)デバイスなど)は、典型的には、ページ、フォーム、アプリケーション、及びシステム340によって提供される他の情報に関連して、ディスプレイ(例えば、モニタスクリーン、液晶ディスプレイ(LCD)、ヘッドアップディスプレイ、ヘッドマウントディスプレイなど)に提供されるグラフィカルユーザインターフェース(GUI)と対話するための、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペンなどの1つ以上のユーザインターフェースデバイスを含む。例えば、ユーザインターフェースデバイスは、システム340によってホストされるデータ及びアプリケーションにアクセスし、記憶されたデータに対する検索を実行し、そうでなければ、ユーザ384が、その1つ以上のユーザ384に提示されてもよい様々なGUIページと対話することを可能にするように使用され得る。ユーザ電子デバイス380A~380Sは、TCP/IP (Transfer Control Protocol and Internet Protocol)を使用してシステム340と通信し、より上位のネットワークレベルでは、HTTP(Hypertext Transfer Protocol)、FTP、AFS(Andrew File System)、WAP(Wireless Application Protocol )、FTP(File Transfer Protocol)、NFS(Network File System)、SOAP(Simple Object Access Protocol)、REST(Representational State Transfer)などのプロトコルに基づくAPI(application program interface)などの他のネットワークプロトコルを使用する可能性がある。HTTPが使用される一例では、1つ以上のユーザデバイス380A~380Sは、システム340のサーバとの間でHTTPメッセージを送受信するために、一般に「ブラウザ」と呼ばれるHTTPクライアントを含む可能性があり、このため、ユーザ電子デバイス380A~380Sのユーザ384は、ネットワーク382を介してシステム340からそれに利用可能な情報、ページ及びアプリケーションにアクセスし、処理し、閲覧することが可能となる。
【0088】
まとめ
上述の説明では、より完全に理解するために、リソースパーティショニング/共有/複製の実装、システムコンポーネントのタイプ及び相互関係、及び論理パーティショニング/統合の選択など、多数の特定の詳細が記載されている。しかしながら、当業者であれば、このような特定の詳細なしに本発明が実施されてもよいと理解するであろう。他のインスタンスでは、制御構造、論理実装、演算コード、オペランドを指定するための手段、及び完全なソフトウェア命令シーケンスは、当業者が、含まれる説明を用いて、過度の実験を行うことなく、説明されているものを実装することができるので、詳細には示されていない。
【0089】
明細書における「1つの実装」、「実装」、「例示的な実装」などへの参照は、説明された実装が特定の特徴、構造、又は特性を含んでもよいが、すべての実装が必ずしも特定の特徴、構造、又は特性を含まなくてもよいことを示す。さらに、このような句は、必ずしも同じ実装を指さない。さらに、特定の特徴、構造、又は特性が実装に関連して説明されているときに、当業者は、明示的に説明されているかどうかにかかわらず、他の実装に関連して、そのような特徴、構造、及び/又は特性に影響を及ぼすことは当業者の知識の範囲内である。
【0090】
例えば、フロー図を例示する図は、ブロックダイアグラムを例示する図を参照して説明される場合があり、その逆の場合もある。明示的に説明されているかどうかにかかわらず、ブロック図を例示する図を参照して論じられている代替的な実装は、フロー図を例示する図を参照して論じられている実装にも適用され、その逆の場合もある。同時に、フロー図を実行するための、ブロック図を参照して論じられたもの以外の実装は本明細書の範囲内であり、その逆の場合もある。
【0091】
破線(例えば、大きなダッシュ、小さなダッシュ、ドット-ダッシュ、及びドット)で囲まれたテキスト及びブロックは、本明細書において、追加の特徴をいくつかの実装に追加するオプションの動作及び/又は構造を例示するために使用されてもよい。しかし、そのような表記は、これらが唯一のオプション又はオプションの動作であること、及び/又は、実線の境界を有するブロックが特定の実装において任意選択ではないことを意味すると解釈されるべきではない。
【0092】
詳細な説明及び特許請求の範囲において、「結合された」という用語は、その派生形と共に使用されることがある。「結合された」は、互いに直接的に物理的又は電気的に接触していてもしなくてもよい2つ以上の要素が、互いに協働し、又は対話することを示すために使用される。
【0093】
図におけるフロー図は、特定の実装によって実行される特定の動作順序を示しているが、そのような順序は、例示的なものであると理解されたい(例えば、代替的な実装が、異なる順序で動作を実行すること、特定の動作を組み合わせること、特定の動作を重複させることなどを行ってもよい)。
【0094】
上記の説明は、いくつかの例示的な実装を含むが、当業者であれば、本発明は、説明された実装に限定されず、添付の特許請求の範囲の精神及び範囲内で修正及び変更を加えて実施され得ると理解するであろう。したがって、説明は限定するのではなく、例示的である。
【手続補正書】
【提出日】2023-03-07
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
第1の
コンテナオーケストレーションシステム(COS
)サービスと1つ以上の第1のCOSエンドポイントが第1のCOSクラスタ内に作成されたことの指標を受信することであって、
前記第1のCOSサービスは、前記第1のCOSクラスタ内の1つ以上のCOSポッドのセットを定義し、
前記1つ以上の第1のCOSエンドポイントのうちのCOSエンドポイントは、前記1つ以上のCOSポッドのセットのうちのCOSポッドのネットワークアドレスを含む、ことと、
第2のCOSクラスタ内に、前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントに対応する第2のCOSサービスと1つ以上の第2のCOSエンドポイントを作成する要求を伝送することであって、
前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントの作成は、前記第2のCOSクラスタにローカルな第1のDNS(Domain Name System)サーバ内に1つ以上の第1のDNSレコードの挿入を引き起こし、
前記1つ以上の第1のDNSレコードが挿入されて、前記第2のCOSクラスタの1つ以上のCOSポッドが、ネットワークを介して前記第1のCOSクラスタの前記1つ以上のCOSポッドのセットと通信することが可能となる、ことと、を含む、方法。
【請求項2】
前記ネットワークを介して前記第1のCOSクラスタと通信する必要がある1つ以上のCOSクラスタを決定することとであって、前記1つ以上のCOSクラスタは、前記第2のCOSクラスタを含む、ことをさらに含む、請求項1に記載の方法。
【請求項3】
第3のCOSクラスタ内に、前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントに対応する第3のCOSサービスと1つ以上の第3のCOSエンドポイントを作成する別の要求を前記第3のCOSクラスタに伝送することであって、
前記第3のCOSサービスと前記1つ以上の第3のCOSエンドポイントの作成は、前記第3のCOSクラスタにローカルな第2のDNSサーバ内に1つ以上の第2のDNSレコードの挿入を引き起こし、
前記1つ以上の第2のDNSレコードが挿入されて、前記第3のCOSクラスタの1つ以上の第3のCOSポッドが、前記ネットワークを介して前記第1のCOSクラスタの前記1つ以上のCOSポッドのセットと通信することが可能となる、ことをさらに含む、請求項2に記載の方法。
【請求項4】
前記第1のCOSサービスが更新されたことの指標を受信することと、
前記第2のCOSクラスタに、前記第2のCOSサービスを更新する要求を伝送することであって、前記第2のCOSサービスの更新は、第1のDNSサーバ内の前記1つ以上の第1のDNSレコードの更新を引き起こす、ことと、をさらに含む、請求項
1に記載の方法。
【請求項5】
前記第1のCOSクラスタ内で前記第1のCOSサービスが削除されたことの指標を受信することと、
前記第2のCOSクラスタに、前記第2のCOSサービスを削除する要求を伝送することであって、前記第2のCOSクラスタ内の前記第2のCOSサービスの削除は、前記第1のDNSサーバ内の前記1つ以上の第1のDNSレコードの削除を引き起こす、ことと、をさらに含む、請求項
1に記載の方法。
【請求項6】
前記第2のCOSサービスと前記第2のCOSエンドポイントの作成は、前記作成が許可されていると前記第2のCOSクラスタが決定するときに実行される、請求項
1に記載の方法。
【請求項7】
前記第1のCOSサービスが、前記第2のCOSクラスタにサービスを提供する複数のCOSクラスタに共通である名前空間において定義される、請求項
1に記載の方法。
【請求項8】
前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントが作成されたことの前記指標を受信することが、前記第1のCOSクラスタを含むCOSクラスタを監視しながら実行される、請求項
1に記載の方法。
【請求項9】
前記第1のCOSサービスは、前記第1のCOSサービスが監視されるべきことの指標に関連付けられる、請求項8に記載の方法。
【請求項10】
前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントが、前記第1のCOSサービス及び前記1つ以上の第1のCOSエンドポイントのレプリカである、請求項
1に記載の方法。
【請求項11】
前記第1のCOSサービスと前記1つ以上の前記第1のCOSエンドポイントが作成されたことの前記指標を受信すること、及び前記第2のCOSクラスタ内に、前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントを作成する前記要求を伝送することが、前記第1のCOSクラスタ内の前記第1のCOSサービス及び前記1つ以上の第1のCOSエンドポイントの前記作成に応答して実行される、請求項
1に記載の方法。
【請求項12】
命令を提供する非一時的な機械可読記憶媒体であって、前記命令は、機械によって実行される場合、前記機械に動作を実行させ、前記動作は、
第1のコンテナオーケストレーションシステム(COS)サービスと1つ以上の第1のCOSエンドポイントが第1のCOSクラスタ内に作成されたことの指標を受信することであって、
前記第1のCOSサービスは、前記第1のCOSクラスタ内の1つ以上のCOSポッドのセットを定義し、
前記1つ以上の第1のCOSエンドポイントのうちのCOSエンドポイントは、前記1つ以上のCOSポッドのセットのうちのCOSポッドのネットワークアドレスを含む、ことと、
第2のCOSクラスタ内に、前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントに対応する第2のCOSサービスと1つ以上の第2のCOSエンドポイントを作成する要求を伝送することであって、
前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントの作成は、前記第2のCOSクラスタにローカルな第1のDNS(Domain Name System)サーバ内に1つ以上の第1のDNSレコードの挿入を引き起こし、
前記1つ以上の第1のDNSレコードが挿入されて、前記第2のCOSクラスタの1つ以上のCOSポッドが、ネットワークを介して前記第1のCOSクラスタの前記1つ以上のCOSポッドのセットと通信することが可能となる、ことと、を含む、非一時的な機械可読記憶媒体。
【請求項13】
前記動作は、
前記ネットワークを介して前記第1のCOSクラスタと通信する必要がある1つ以上のCOSクラスタを決定することとであって、前記1つ以上のCOSクラスタは、前記第2のCOSクラスタを含む、ことをさらに含む、請求項12に記載の非一時的な機械可読記憶媒体。
【請求項14】
前記動作は、
第3のCOSクラスタ内に、前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントに対応する第3のCOSサービスと1つ以上の第3のCOSエンドポイントを作成する別の要求を前記第3のCOSクラスタに伝送することであって、
前記第3のCOSサービスと前記1つ以上の第3のCOSエンドポイントの作成は、前記第3のCOSクラスタにローカルな第2のDNSサーバ内に1つ以上の第2のDNSレコードの挿入を引き起こし、
前記1つ以上の第2のDNSレコードが挿入されて、前記第3のCOSクラスタの1つ以上の第3のCOSポッドが、前記ネットワークを介して前記第1のCOSクラスタの前記1つ以上のCOSポッドのセットと通信することが可能となる、ことをさらに含む、請求項13に記載の非一時的な機械可読記憶媒体。
【請求項15】
前記動作は、
前記第1のCOSサービスが更新されたことの指標を受信することと、
前記第2のCOSクラスタに、前記第2のCOSサービスを更新する要求を伝送することであって、前記第2のCOSサービスの更新は、第1のDNSサーバ内の前記1つ以上の第1のDNSレコードの更新を引き起こす、ことと、をさらに含む、請求項12に記載の非一時的な機械可読記憶媒体。
【請求項16】
前記動作は、
前記第1のCOSクラスタ内で前記第1のCOSサービスが削除されたことの指標を受信することと、
前記第2のCOSクラスタに、前記第2のCOSサービスを削除する要求を伝送することであって、前記第2のCOSクラスタ内の前記第2のCOSサービスの削除は、前記第1のDNSサーバ内の前記1つ以上の第1のDNSレコードの削除を引き起こす、ことと、をさらに含む、請求項12に記載の非一時的な機械可読記憶媒体。
【請求項17】
前記第2のCOSサービスと前記第2のCOSエンドポイントの作成は、前記作成が許可されていると前記第2のCOSクラスタが決定するときに実行される、請求項12に記載の非一時的な機械可読記憶媒体。
【請求項18】
前記第1のCOSサービスが、前記第2のCOSクラスタにサービスを提供する複数のCOSクラスタに共通である名前空間において定義される、請求項12に記載の非一時的な機械可読記憶媒体。
【請求項19】
前記第1のCOSサービスと前記1つ以上の第1のCOSエンドポイントが作成されたことの前記指標を受信することが、前記第1のCOSクラスタを含むCOSクラスタを監視しながら実行される、請求項12に記載の非一時的な機械可読記憶媒体。
【請求項20】
前記第1のCOSサービスは、前記第1のCOSサービスが監視されるべきことの指標に関連付けられる、請求項19に記載の非一時的な機械可読記憶媒体。
【請求項21】
前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントが、前記第1のCOSサービス及び前記1つ以上の第1のCOSエンドポイントのレプリカである、請求項12に記載の非一時的な機械可読記憶媒体。
【請求項22】
前記第1のCOSサービスと前記1つ以上の前記第1のCOSエンドポイントが作成されたことの前記指標を受信すること、及び前記第2のCOSクラスタ内に、前記第2のCOSサービスと前記1つ以上の第2のCOSエンドポイントを作成する前記要求を伝送することが、前記第1のCOSクラスタ内の前記第1のCOSサービス及び前記1つ以上の第1のCOSエンドポイントの前記作成に応答して実行される、請求項12に記載の非一時的な機械可読記憶媒体。
【国際調査報告】