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