コンピュート・インスタンスの高可用性の計画

Oracle Cloud Infrastructure Computeには、ベア・メタル・インスタンスと仮想マシン(VM)インスタンスの両方が用意されています。これにより、単一コアを使用する小規模なVMから、多数のコアと大量のRAMを備えた大規模なVMまたはベア・メタル・サーバーに、必要なサイズのサーバーをデプロイできます。これらのオプションにより、最も要求の厳しいアプリケーションおよびワークロードをクラウドで実行するためのパフォーマンス、柔軟性および制御が保証されます。

コンピュート・インスタンスの高可用性を計画するために、考慮する必要がある主な設計戦略は次のとおりです。
  • フォルト・ドメインとアベイラビリティ・ドメインを適切に活用することで、単一障害点を排除します。
  • モニタリング、インスタンス・プールおよびロード・バランサの使用。
  • 設計によって、コンピュート・インスタンスのデータ可用性と整合性の両方が保護されるようにします。
この記事では、これらの戦略について説明します。

フォルト・ドメイン間でのインスタンスの分散

高可用性ソリューションを設計する主な原則の1つは、単一障害点を回避することです。次に、重要な設計の原則は、複数のフォルト・ドメインにインスタンスを分散することです。

単一可用性ドメイン・デプロイメントでは、フォルト・ドメインを適切に利用することで、Oracle Cloud Infrastructureで実行されるアプリケーションの可用性を向上できます。フォルト・ドメインを使用してインスタンスを分離するかグループ化するかは、アプリケーションのアーキテクチャによって決まります。
  • シナリオ1: 高可用性アプリケーション・アーキテクチャ

    このシナリオでは、高可用性アプリケーション(2つのWebサーバーと1つのクラスタ・データベースなど)があります。ここでは、1つのWebサーバーと1つのデータベース・ノードを1つのフォルト・ドメインにグループ化し、もう一方の組を別のフォルト・ドメインにグループ化します。このアーキテクチャでは、いずれかのフォルト・ドメインに障害が発生しても、アプリケーションが停止することはありません。

  • シナリオ2: 1つのWebサーバーとデータベース・インスタンスのアーキテクチャ

    このシナリオでは、アプリケーション・アーキテクチャは高可用性ではありません。たとえば、1つのWebサーバー・インスタンスと1つのデータベース・インスタンスがあります。ここでは、Webサーバーとデータベース・インスタンスの両方を同じフォルト・ドメインに配置する必要があります。このアーキテクチャにより、アプリケーションが影響を受けるのはその単一フォルト・ドメインの障害のみになります。

複数のアベイラビリティ・ドメイン間でのインスタンスの分散

高可用性への別のアプローチは、複数の可用性ドメインにわたって同じタスクを実行するコンピュート・インスタンスをデプロイすることです。この設計により、データ・センター全体で冗長性を導入することで単一障害点がなくなります。

複数可用性ドメイン・デプロイメントでは、インスタンスのグループを可用性ドメインごとに分離します。これにより、停電、物理インフラストラクチャ障害、計画メンテナンス・イベントなどのデータ・センター・レベルの障害からアプリケーションが保護されます。

インスタンスが可用性ドメインまたはフォルト・ドメイン全体に分散されている場合、Load Balancerは、リソース使用率の向上、スケーリングの促進、および高可用性の保証によく使用されます。各種バックエンド・セットまたはコンピュート・インスタンスのグループに受信リクエストをルーティングして、それらの間のネットワーク・トラフィックのバランスをとることがサポートされています。

次の図は、ロード・バランサとともに冗長性を実装するために2つの可用性ドメインにデプロイされたWebサーバーVMを示しています。



ノート:

アーキテクチャには、複数の可用性ドメイン(AD)が表示されます。単一のADを持つリージョンの場合、AD内のフォルト・ドメイン全体にリソースを分散するようにアーキテクチャを調整します。
システムまたはアプリケーションの要件に応じて、このアーキテクチャ冗長性をスタンバイ・モードまたはアクティブ・モードで実装できます。
  • スタンバイ・モードでは、プライマリ・コンポーネントに障害が発生すると、スタンバイ・コンポーネントが引き継がれます。通常、スタンバイ・モードは、状態を維持する必要があるアプリケーションに使用されます。
  • アクティブ・モードでは、コンポーネントはプライマリまたはスタンバイとして指定されず、すべてのコンポーネントが同じタスクの実行にアクティブに参加しています。いずれかのコンポーネントで障害が発生した場合、関連タスクは単に別のコンポーネントに分散されます。通常、アクティブ・モードはステートレス・アプリケーションに使用されます。

データの高可用性と整合性の保証

高可用性アーキテクチャの場合、必ず、コンピュート・インスタンスのデータ可用性と整合性の両方を保護するように設計してください。コンピュート・インスタンスのデータ可用性を保護するには、データを別の場所にレプリケートまたはバックアップします。

  • ブロック・ボリューム・サマリー

    Oracle Cloud Infrastructure Block Volumeサービスにより、ブロック・ストレージ・ボリュームを動的にプロビジョニングおよび管理できます。ストレージ、パフォーマンスおよびアプリケーションの要件を満たすように、ボリュームを作成、アタッチ、接続および移動し、必要に応じてボリューム・パフォーマンスを変更できます。ボリュームをインスタンスにアタッチおよび接続した後は、そのボリュームを通常のハード・ドライブのように使用できます。また、データが失われることなく、ボリュームを切断して別のインスタンスにアタッチすることもできます。

  • ボリュームの耐久性

    Oracle Cloud Infrastructure Block Volumeサービスは、標準のアタッチされたドライブよりも高度なデータ耐久性を提供します。すべてのボリュームが自動的にレプリケートされるため、データ損失を未然に防ぐことができます。データの複数のコピーは、組込みの修復メカニズムを使用して複数のストレージ・サーバー間で重複して格納されます。サービス・レベル目標値のために、Block Volumeサービスは、ブロック・ボリュームおよびブート・ボリュームに99.99%の年間耐久性を提供するように設計されています。ただし、可用性ドメインの障害を防ぐために、定期的なバックアップを作成することをお薦めします。

  • ボリュームレプリケーション

    Block Volumeサービスによって、ブロック・ボリュームとブート・ボリュームの他のリージョンまたは同じリージョン内の可用性ドメインへの進行中の自動非同期レプリケーションを実行する機能が用意されています。同じリージョン内のクロスアベイラビリティ・ドメイン・レプリケーションは、複数のアベイラビリティ・ドメインが存在するリージョンでのみサポートされます。複数の可用性ドメインを含むリージョンを確認するには、「リージョンおよび可用性ドメインについて」のリージョンをリストする表の「可用性ドメイン」フィールドを参照してください。この機能は、ボリューム・バックアップを必要とせずに、ディザスタ・リカバリ、移行および事業拡張のシナリオをサポートします。詳細は、「ボリュームのレプリケート」を参照してください。このトピックには、このプレイブックの別の場所にある「詳細の参照」トピックからアクセスできます。

ブロック・ボリューム・バックアップについて

Oracle Cloud Infrastructure Block Volumeサービスのバックアップ機能を使用すると、ブロック・ボリューム上のデータのポイントインタイム・スナップショットを作成できます。ボリュームのバックアップは、インスタンスへのアタッチ時またはデタッチ時に作成できます。これらのバックアップは、バックアップ直後またはそれ以降の任意の時点で、新しいボリュームにリストアできます。

バックアップは暗号化されてOCIオブジェクト・ストレージに格納され、格納されたリージョン内の任意の可用性ドメインに新しいボリュームとしてリストアできます。この機能によってボリュームのスペア・コピーができるため、同じリージョン内でディザスタ・リカバリを成功させることができます。

バックアップを開始するには、2つの方法があります: バックアップを手動で開始する方法と、バックアップ・スケジュールの設定を定義するポリシーを割り当てる方法です。ブロック・ボリュームの詳細は、ブロック・ボリューム・バックアップの概要を参照してください。この概要には、このプレイブックの別の場所にある「詳細の参照」トピックからアクセスできます。https://docs.oracle.com/en-us/iaas/Content/Block/Concepts/blockvolumebackups.htm

同期または非同期レプリケーションの使用

コンピュート・インスタンスに障害が発生した場合、同期レプリケーションまたは非同期レプリケーションを使用してデータを保護できます:

  • リージョン内の可用性ドメインは、同期レプリケーションをサポートする高パフォーマンスのネットワークによって相互接続されます。アプリケーションで即時フェイルオーバーが必要で、データ損失を許容できない場合は、同期レプリケーションを使用します。ネットワーク・パフォーマンス要件のため、同期レプリケーションは通常、1つのリージョン内で使用されます。
  • リージョン間のデータ可用性の保護が必要なアプリケーションの場合、非同期レプリケーションを使用します。

従来のバックアップは、データを保護するもう1つの方法です。データ耐久性を最大限にするため、バックアップを元のコンピュート・インスタンスと同じアベイラビリティ・ドメインに格納しないでください。Oracle Cloud Infrastructure Object Storageを使用して、コンピュート・インスタンスのデータをバックアップする必要があります。ローカルNVMeドライブを使用したコンピュート・インスタンスの場合、保護されたRAIDアレイは、NVMeデバイス障害から保護する最適な方法です。

詳細は、このプレイブックの他の場所にある「参照」のトピックからアクセスできる「NVMeデバイスのデータの保護」を参照してください。