免責事項: 以下は、オラクルの一般的な製品の方向性の概要です。情報提供のみを目的としており、いかなる契約にも組み込むことはできません。これは、何らかの資料、コード、または機能を提供することを約束するものではなく、購入を決定する際の根拠にするべきではありません。オラクル製品について説明されている機能の開発、リリース、時期、価格は変更される可能性があり、Oracle Corporationの単独の裁量により決定されます。
このFAQは、オラクルがコア・インフラストラクチャ・サービスおよびホスティング・プラットフォームでどのように耐障害性と継続的な可用性を実現しているかについてのよくある質問に回答しています。次のような理由から、これらの回答は、Oracle Cloudのお客様が対象となります。
オラクルでは、このような区別はしていません。かわりに、依存性レベル、アベイラビリティ・スコープおよびデータ・プレーンとコントロール・プレーンでサービスを分類しています。これらのカテゴリは、アベイラビリティ、耐久性、パフォーマンス、および利便性の間で、様々な有用なトレードオフを提供するように設計されています。
依存性レベル
アーキテクチャ・ブロック図では、これらのレベルがレイヤーまたは層とみなされる場合があります。各レイヤーが依存するのは、その下のレイヤーのみです。
下から順に、次のとおりです。
可用性スコープ
サービスに対する可用性と耐久性の目標を達成するため、各サービスには、次のいずれかのアベイラビリティ・スコープが選択されています。
コントロール・プレーンとデータ・プレーン
サービスのデータ・プレーンは、データ処理インタフェースおよびコンポーネントのコレクションで、アプリケーションで使用することを目的としたサービスの機能を実装します。たとえば、仮想クラウド・ネットワーク(VCN)のデータ・プレーンには、ネットワーク・パケット処理システム、仮想化ルーター、ゲートウェイが含まれ、Block Volumesのデータ・プレーンには、iSCSIプロトコルの実装とボリューム・データ向けのレプリケートされたストレージ・システムが含まれます。
サービスのコントロール・プレーンは、次のタスクを担当するAPIおよびコンポーネントのセットです。
フォルト・トレラントでスケーラブルな分散システムを構築する際の基本的な設計課題は、どのタイプのサービスでも同じであるため、オラクルは、どのタイプのサービスでも同じ設計原則のセットを使用して自己回復性と可用性を実現しています。
自己回復性および継続的な可用性を実現するには、クラウドスケール・システム内の非可用性(パフォーマンスおよび未処理の失敗)のすべての原因を理解し、処理する必要があります。そのような原因は多数あるので、基本的な性質に従ってカテゴリにグループ化します。
従来の、エンタープライズITシステムの可用性の分析は、ハードウェア障害のカテゴリに焦点が当てられてきました。一方、クラウド・システムでは、ハードウェア障害は比較的軽度で、理解の進んでいる問題です。現在、ハードウェアの単一点の大部分の障害を回避または軽減することが比較的簡単になりました。たとえば、ラックでは二系電源フィードと関連付けられた電力配分装置を設置し、多くのコンポーネントはホットスワップ可能です。自然な災害などが原因の大規模なハードウェアの障害や損失はもちろん可能です。しかし、オラクルの経験と、他のクラウド・ベンダーが公開している事後分析のレポートによると、非可用性のその他の原因に比べ、データ・センター全体の障害または喪失はまれに発生しません。それでも、(障害回復やその他のメカニズムなどで)大規模なハードウェア障害に対応する必要はありますが、決して可用性の高い主要な問題ではありません。
クラウドスケール・システムの非可用性の主要な原因は次のとおりです。
これらは一般的な課題で、クラウドスケールの分散システムにおける物理法則の一部です。
前述の各カテゴリについて、オラクルは実証済の設計戦略を使用して、問題に対応します。最も重要なものを、次に示します。
アーキテクチャおよびシステム設計の原則
多くの原則がありますが、自己回復性と可用性に最も関連するものに焦点を当てます。
リカバリ指向コンピューティング
比較的影響がローカライズされたソフトウェア・バグとオペレータのミスに対応するため、オラクルは、リカバリ志向のコンピュータの原則に従います1。大まかに言うと、これは問題が1つもないことを保証しようとする(これはテストすることが不可能です)よりも、テスト可能な方法で、問題が表面化しないよう対応することに集中するという意味です。具体的には、平均検出時間、平均診断時間および平均所要時間の組合せである平均タイム・ツー・リカバリ(MTTR)に焦点を当てます。
オラクルの目標は、この問題によって人間のユーザーが迷惑にならないように、すばやくリカバリすることです。この目標の達成には、次の点が役立ちます。
問題の影響の最小化
影響が大きくなる可能性があるバグやミスに対応するために、オラクルは、すべての問題の影響範囲を最小化するメカニズムを作成します。つまり、問題の影響を受ける顧客やシステム、リソースの数の最小化に重点を置いているということです。この問題には、マルチテナントのノイジー・ネイバー、過負荷状態の発生、容量の低下、分散スラッシュなど、特に難しい問題も含まれています。これは、様々な分離境界や変更管理プラクティスを使用して実現しています(次の項を参照)。
デザインの原則からなる建築コンセプト
多くの概念が存在しますが、影響の範囲を制限する概念に焦点を当てます。
パブリックAPIに規定されている配置概念: リージョン、可用性ドメインおよびフォルト・ドメイン
フォルト・ドメインは比較的新しいため、これについて詳しく説明します。
フォルト・ドメインは、デプロイメント、パッチ適用、ハイパーバイザ再起動、物理メンテナンスなど、システムがアクティブに変更されているときに発生する問題のブラスト半径を制限するために使用されます。
特定の可用性ドメインで、最大1つのフォルト・ドメインにあるリソースがどの時点でも変更されることが保証されます。変更プロセスで何かがうまくいかなかった場合、そのフォルト・ドメイン内のリソースの一部またはすべてをしばらく使用できなくなりますが、アベイラビリティ・ドメインの他のフォルト・ドメインは影響を受けません。各アベイラビリティ・ドメインには少なくとも3つのフォルト・ドメインがあるため、クォーラムベースのレプリケーション・システム(Oracle Data Guardなど)を、1つのアベイラビリティ・ドメイン内の高可用性でホスティングできます。
そのため、可用性問題の主要なカテゴリ(ソフトウェアのバグ、構成エラー、オペレータのミス、変更手順中に発生するパフォーマンスの問題)について、各フォルト・ドメインは、可用性ドメイン内の独立した論理データ・センターとして機能します。
フォルト・ドメインでは、ある種のローカライズされたハードウェア障害からも保護されます。フォルト・ドメインのプロパティは、異なるフォルト・ドメインに配置されているリソースが、アベイラビリティ・ドメイン内のハードウェアの潜在的な単一障害ポイントを共有しないことを可能なかぎり最大限に保証します。たとえば、異なるフォルト・ドメイン内のリソースは、同じトップオブラック・ネットワーク・スイッチを共有しません。このようなスイッチの標準設計に冗長性がないためです。
ただし、ハードウェア内または物理環境内の問題から保護するフォルト・ドメインの機能は、そのローカル・レベルに止まります。フォルト・ドメインは、アベイラビリティ・ドメインおよびリージョンとは異なり、インフラストラクチャの大規模な物理分離を提供しません。自然災害や可用性ドメイン全体のインフラストラクチャ障害といったまれなケースでは、複数のフォルト・ドメイン内のリソースが同時に影響を受ける可能性があります。
オラクルの内部サービスでは、お客様が使用するのと同様にフォルト・ドメインを使用します。たとえば、ブロック・ボリューム、オブジェクト・ストレージおよびファイル・ストレージ・サービスは、3つの異なるフォルト・ドメインにデータのレプリカを格納します。すべてのコントロール・プレーンおよびデータ・プレーンのすべてのコンポーネントは、3つの障害ドメインすべてにホストされます(または、複数の可用性ドメインからなるリージョン、複数の可用性ドメイン)。
サービス・セル
サービス・セルは、システムがアクティブに変更されていないときでも発生する問題の影響範囲を制限するために使用されます。この問題は、マルチテナント・クラウド・システムのワークロードが任意の時点で極端な方法で変更される可能性があり、大規模な分散システムで任意の時点に複雑な部分障害が発生する可能性があるために発生します。これらのシナリオは、隠れた小さなバグまたは突発的なパフォーマンスの問題をトリガーする可能性があります。
また、サービスセルは、システムがアクティブに変更されているときに、まれではあるが難しいシナリオでの影響の大きい半径も制限します。従来の例は、個々のフォルト・ドメインへのデプロイメントが成功した(エラーやパフォーマンスの変化がない)ように見えるが、2番目または最後のフォルト・ドメインが更新された直後に、システム内の新しいインタラクション(本番ワークロードのフル・クラウド・スケール)によってパフォーマンスの問題が発生することです。
サービス・セルの使用はアーキテクチャ・パターンであり、Oracle Cloud APIまたはSDKで明示的に指定されている概念ではありませんことに注意してください。マルチテナント・システムでは、このアーキテクチャ・パターンを使用できます。クラウド・プラットフォームによる特殊なサポートは必要ありません。
サービス・セルは次のように動作します。
結果として、各サービス・セルはまだ単一の可用性ドメインまたはリージョン内の別の種類の"論理データ・センター"(パフォーマンス分離と障害分離の論理グループ)です。
要約すると、サービス・セルおよびフォルト・ドメインは次の方法で相互に補完します。
フォルト・ドメインとサービス・セルのプロパティを、デプロイメントとパッチ適用の実行時に統合戦略に結合します。
サービス設計手順
クラウド・システムの信頼性にはテストとオペレーショナル・パフォーマンスの両方が不可欠であるため、当社は数多くの設計手順を持っています。次に、前の項で説明する概念を活用する重要な手順の一部を示します。
その答えは「はい」です。リージョンごとに、すべての可用性ドメインでは、同じ一連のサービスが提供されています。
顧客は、単一可用性ドメインのリージョンで、フォルト・ドメイン(グループ間で相関していない障害モードを持つ論理グループ)を使用して、独立した"論理データ・センター"のプロパティを最大限に活用できます。お客様は、障害回復(DR)に複数の領域を使用することもできます。
複数の可用性ドメインからなるリージョンでは、お客様も同様に障害ドメインを使用できます。お客様は、アベイラビリティ・ドメイン・ローカル・サービス、アベイラビリティ・ドメイン間フェイルオーバー機能(Data GuardのあるDBaaSなど)およびリージョン別サービス(Object Storage、Streaming)の組合せを使用して、高レベルの"論理データ・センター"(可用性ドメイン)全体で完全なHAを実現することもできます。最後に、お客様はDRに複数のリージョンを使用することもできます。
どの場合でも、顧客はサービス・セルという概念を使用して、分散スラッシュなどの最も重大な問題さえも分離できます。
これは、フォルト・ドメイン、サービス・セル、および増分デプロイメントと検証の運用手順を介して実現します。このドキュメントで前述した説明を参照してください。
その答えは「はい」です。耐障害性と継続的な可用性のために、サービスのすべてのカテゴリは、複数の論理データ・センター(障害分離とパフォーマンス分離の個別の論理グループ)にデプロイされます。
単一可用性ドメイン・リージョンでは、このドキュメントの他の場所で説明しているように、フォルド・ドメインを「複数論理データ・センター」のメカニズムとして提供しています。
複数の可用性ドメインからなるリージョンでは、(リージョン内の可用性ドメイン間の距離による適度なパフォーマンス・コストおよび光の速度で)同期的にレプリケーションされるデータの物理的な持続性をさらに高めるサービスと機能を提供します。
リージョン全体に自動的なHAまたはフェイルオーバー・メカニズムは提供しません。これにより、リージョン間にクローズ・カップリング関係が作成され、複数のリージョンで同時に問題が発生する可能性があります。かわりに、リージョン間の様々な形態の非同期レプリケーションを有効にし、非同期コピーおよびバックアップなど、ますます数が多くなる機能を提供して、リージョン間のディザスタ・リカバリを有効にします。
これは複雑な質問なので、明確化のために、いくつかの別の方法で言い換えます。
回答は2つの部分に分かれます。
オラクルでは、依存サービス間の相関する障害を大幅に削減するアーキテクチャ理念を使用します。場合によっては、この手法により、相関する障害の確率は、可用性サービス・レベル合意(SLA)を満たすという観点からは無視できる程度にまで減ります。
特に、このドキュメントで前述したサービス・セルを使用します。内部サービスAが依存関係の1つであるサービスBの問題の影響を受ける場合、サービスBの問題はおそらく1つのセルに限定されます。サービスBを使用する他の高レベル・サービス、および顧客固有のアプリケーションは、影響を受けない他のセルを使用する可能性があります。これは、セルの数により異なる確率的な引数で、変化(増加)しない非表示の内部パラメータであるため、サービスAおよびBのスタンドアロン・サービスSLAを超えて定量化や保証は提供されません。しかし実際には、これはサービス間の障害を大幅に分離できます。
コントロール・プレーンのワークフローおよびMetadataサービス、およびストリーミング/メッセージング・サービスなどの共有内部サービスの多くは、サービス・セルを使用して、それらを使用するアップストリーム・サービスの停止を分離します。
低レベルの実装およびサービスの詳細は変更される可能性があるため、次のガイダンスは概要レベルです。しかし、コンピュート、ストレージ、ネットワークおよび認証/認可のキー・ディメンションについて、次の依存関係を示します。
コントロール・プレーンの場合、一般的な依存関係は次のとおりです。
一部のコントロール・プレーンには、明らかにサービス固有の依存関係があります。たとえば、コンピュート・コントロール・プレーンは、ベア・メタルまたはVMインスタンスの起動時に次のものによって異なります。
コア・サービス・データ・プレーンの場合、一般原則は、高可用性、迅速な診断および迅速なリカバリを実現するために、各データ・プレーンが意図的に依存性を最小限にするように設計されることです。その原則の結果は次のようになります。
IaaSデータ・プレーンの場合、一般原則は、コアまたは下位レベルのデータ・プレーンにのみ依存することです(循環依存関係を回避するため)。
はい。Oracle Cloud Infrastructureサービスはリージョンに依存しない設計されているため、Oracle Cloud Infrastructureリージョン内のサービスは、リージョンが他のOracle Cloud Infrastructureリージョンまたはグローバル・コントロール・プレーンから分離されている場合でも引き続き動作できます。サービスAPIエンドポイントを含むデータ・プレーンとコントロール・プレーンの両方の機能は、リージョンが分離されている場合でも引き続き使用できます。
Oracle Cloud Infrastructureサービスの多くは、Oracle Cloud Infrastructure Object Storageで提供されるリージョン間オブジェクト・コピー機能など、リージョン間機能を提供します。Oracle Cloud Infrastructureのクロスリージョン機能は、コア・サービスの上にレイヤーとして常に設計されるため、リージョン分離は、リージョン間機能に影響する場合でもコア・サービスに影響を与えません。たとえば、Oracle Cloud Infrastructureオブジェクト・ストアのリージョン間コピー機能は、オブジェクト・ストア・サービスの上にレイヤーとして設計されるため、リージョンの分離は関連するリージョン間コピー機能に影響しますが、リージョンのコア・オブジェクト・ストレージ・サービスには影響しません。
はい。Oracle Cloud Infrastructureサービスは、対応するリージョナル・コントロール・プレーンから分離されたものでも、すべての論理データ・センターのデータ・プレーン機能が引き続き動作するように設計されています。例として、データ・センター内のOracle Cloud Infrastructureコンピュート・インスタンスは、コンピュート、ブロック・ストレージ、VCNまたはアイデンティティおよびアクセス管理のコントロール・プレーン機能からデータ・センターが分離されている場合でも、アタッチされたブロック・ボリュームおよび関連付けられた仮想ネットワーク機能とともに引き続き機能します。
その答えは「はい」です。Oracle Cloud Infrastructureは、すべての商用リージョンで複数の冗長プロバイダを通じてインターネットに接続されています。これらの接続では、BGP (Border Gateway Protocol)が使用されます。