Persistent Disk 非同期レプリケーションを構成する


このドキュメントでは、Persistent Disk 非同期レプリケーション(PD 非同期レプリケーション)を構成する方法について説明します。PD 非同期レプリケーションを構成するには、プライマリ ディスクとセカンダリ ディスクを作成して、ディスクのレプリケーション ペアを設定します。

レプリケーションを構成したら、レプリケーションを開始できます。

PD 非同期レプリケーションは、低 RPO、低 RTO の障害復旧に役立ちます。PD 非同期レプリケーションの詳細については、Persistent Disk の非同期レプリケーションについてをご覧ください。

制限事項

セカンダリ ディスクは、作成された時点で空白でなければなりません。イメージ、スナップショット、他のディスクから作成することはできません。

始める前に

ディスクのレプリケーション ペアを設定する

ディスク間でデータを複製する前に、次の作業を行ってレプリケーションを構成する必要があります。

  1. リージョンペアを選択し、プライマリ リージョンとセカンダリ リージョンを決定します。
  2. 省略可: 一連のディスクの間でレプリケーションを調整する必要がある場合は、プライマリ リージョンに整合性グループを作成します。レプリケーションを開始する前に、プライマリ ディスクを整合性グループに追加する必要があります。
  3. プライマリ ディスクを作成または選択します。必要に応じて、これらのディスクを整合性グループに追加できます。
  4. 新しい空のセカンダリ ディスクを作成します。

ディスクの要件

PD 非同期レプリケーションでプライマリ ディスクまたはセカンダリ ディスクとして使用するディスクは、次の要件を満たしている必要があります。

プライマリ ディスクを作成または選択する

プライマリ ディスクは、ワークロードが実行されている VM にアタッチされるブートディスクまたはデータディスクです。ディスク要件を満たす既存のディスクをプライマリ ディスクとして使用できます。また、プライマリ ディスクとして新しいディスクを作成することもできます。既存のディスクをプライマリ ディスクとして使用する場合は、ディスクで追加の構成を行う必要はありません。セカンダリ ディスクを作成する手順に進み、PD 非同期レプリケーションの構成を完了します。

プライマリ ディスクを作成する

次のいずれかのドキュメントで説明されている方法で、プライマリ ディスクを作成します。

  • VM の作成時にプライマリ ブートディスクを作成する。必要に応じて、Google Cloud CLI または Compute Engine API を使用して VM を作成し、次のいずれかを指定して、整合性グループにディスクを追加します。

    • Google Cloud CLI を使用して VM を作成する場合は、--create-disk フラグを指定します。

      --create-disk=disk-resource-policy=projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME
      
    • Compute Engine API を使用して VM を作成する場合は、resourcePolicies プロパティを指定します。

      "disks":
      {
      …
      "resourcePolicies": "projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME"
      }
      
  • VM の作成時にプライマリ データディスクを作成する。必要に応じて、Google Cloud CLI または Compute Engine API を使用して VM を作成し、次のいずれかを指定して、整合性グループにディスクを追加します。

    • Google Cloud CLI を使用して VM を作成する場合は、--create-disk フラグを指定します。

      --create-disk=disk-resource-policy=projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME
      
    • Compute Engine API を使用して VM を作成する場合は、resourcePolicies プロパティを指定します。

      "disks":
      {
      …
      "resourcePolicies": "projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME"
      }
      
  • VM を作成せずにプライマリ データディスクを作成する。必要に応じて、Google Cloud コンソール、Google Cloud CLI、または Compute Engine API を使用して VM を作成し、次のいずれかを指定して、整合性グループにディスクを追加します。

    • Google Cloud コンソールを使用してディスクを作成する場合は、[整合性グループ] プルダウンから整合性グループを選択します。

    • Google Cloud CLI を使用してディスクを作成する場合は、--resource-policies フラグを指定します。

      --resource-policies=projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME
      
    • Compute Engine API を使用してディスクを作成する場合は、resourcePolicies プロパティを指定します。

      "disks":
      {
      …
      "resourcePolicies": "projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME"
      }
      

    次のように置き換えます。

    • PROJECT: 整合性グループを含むプロジェクト
    • REGION: 整合性グループが存在するリージョン
    • CONSISTENCY_GROUP_NAME: ディスクを追加する整合性グループの名前

セカンダリ ディスクを作成する

セカンダリ ディスクは、プライマリ ディスクとは別のリージョンにあるデータディスクで、プライマリ ディスクから複製されたデータを受信して書き込みます。PD 非同期レプリケーションを構成する際に、プライマリ ディスクを参照する新しい空のセカンダリ ディスクを作成する必要があります。

セカンダリ ディスクを作成するには、Google Cloud コンソール、Google Cloud CLI、または Compute Engine API を使用します。

コンソール

次の手順に沿ってセカンダリ ディスクを作成し、レプリケーションを開始します。

  1. Google Cloud コンソールで、[ディスク] ページに移動します。

    [ディスク] に移動

  2. プライマリ ディスクの名前をクリックします。[ディスクの管理] ページが開きます。

  3. [セカンダリ ディスクの作成] をクリックします。

  4. [名前] フィールドに、ディスクの名前を入力します。

  5. [ロケーション] セクションで、次のいずれかを行います。

  6. [作成] をクリックします。Compute Engine がディスクを作成し、レプリケーションを開始します。

gcloud

gcloud compute disks create コマンドを使用して、セカンダリ ディスクを作成します。

gcloud compute disks create SECONDARY_DISK_NAME \
    --SECONDARY_LOCATION_FLAG=SECONDARY_LOCATION \
    --size=SIZE \
    --primary-disk=PRIMARY_DISK_NAME \
    --PRIMARY_DISK_LOCATION_FLAG=PRIMARY_LOCATION \
    --primary-disk-project=PRIMARY_DISK_PROJECT

リージョン セカンダリ ディスクを作成するには、さらに --replica-zones フラグを指定します。

--replica-zones=ZONE_1,ZONE_2

次のように置き換えます。

  • SECONDARY_DISK_NAME: セカンダリ ディスクの名前。
  • SECONDARY_LOCATION_FLAG: セカンダリ ディスクのロケーション フラグ。リージョン セカンダリ ディスクを作成するには、--region を使用します。ゾーン セカンダリ ディスクを作成するには、--zone を使用します。
  • SECONDARY_LOCATION: セカンダリ ディスクのリージョンまたはゾーン。
  • SIZE: 新しいディスクのサイズ(GB)。サイズは、プライマリ ディスクのサイズと同じにする必要があります。使用できるサイズは、1 GB 単位で 10 GB~2,000 GB の範囲です。
  • PRIMARY_DISK_NAME: セカンダリ ディスクが受信するデータの送信元プライマリ ディスクの名前。
  • PRIMARY_LOCATION_FLAG: プライマリ ディスクのロケーション フラグ。
    • リージョン プライマリ ディスクの場合は、--primary-disk-region を使用します。
    • ゾーン プライマリ ディスクの場合は、--primary-disk-zone を使用します。
  • PRIMARY_LOCATION: プライマリ ディスクのリージョンまたはゾーン。
    • リージョン ディスクの場合は、リージョンを使用します。
    • ゾーンディスクの場合は、ゾーンを使用します。
  • PRIMARY_PROJECT: プライマリ ディスクを含むプロジェクト。
  • ZONE_1: リージョン ディスクのレプリケート先ゾーンのいずれか。指定したリージョン内のゾーンで、ZONE_2 とは異なるゾーンでなければなりません。
  • ZONE_2: リージョン ディスクのレプリケート先ゾーンのいずれか。指定したリージョン内のゾーンで、ZONE_1 とは異なるゾーンでなければなりません。

API

次のいずれかの方法を使用して、ゾーンまたはリージョン セカンダリ ディスクを作成します。

  • ゾーン セカンダリ ディスクを作成するには、disks.insert メソッドを使用します。

    POST https://compute.googleapis.com/compute/v1/projects/SECONDARY_DISK_LOCATION/zones/SECONDARY_DISK_ZONE/disks
    
    {
    "name": "SECONDARY_DISK_NAME",
    "sizeGb": "DISK_SIZE",
    "type": "DISK_TYPE"
    "asyncPrimaryDisk": {
      "disk": "projects/PRIMARY_DISK_PROJECT/PRIMARY_DISK_LOCATION_PARAMETER/PRIMARY_DISK_LOCATION/disks/PRIMARY_DISK_NAME"
      }
    }
    
  • リージョン セカンダリ ディスクを作成するには、regionDisks.insert メソッドを使用します。

    POST https://compute.googleapis.com/compute/v1/projects/SECONDARY_DISK_PROJECT/regions/SECONDARY_DISK_LOCATION/disks
    
    {
    "name": "SECONDARY_DISK_NAME",
    "sizeGb": "DISK_SIZE",
    "type": "DISK_TYPE"
    "asyncPrimaryDisk": {
      "disk": "projects/PRIMARY_DISK_PROJECT/PRIMARY_DISK_LOCATION_PARAMETER/PRIMARY_DISK_LOCATION/disks/PRIMARY_DISK_NAME"
      }
    }
    

次のように置き換えます。

  • SECONDARY_DISK_PROJECT: セカンダリ ディスクのプロジェクト。
  • SECONDARY_DISK_LOCATION: セカンダリ ディスクのリージョンまたはゾーン。
    • リージョン ディスクの場合は、リージョンを使用します。
    • ゾーンディスクの場合は、ゾーンを使用します。
  • SECONDARY_DISK_NAME: セカンダリ ディスクの名前。
  • DISK_SIZE: セカンダリ ディスクのサイズ。プライマリ ディスクのサイズと同じにする必要があります。
  • SECONDARY_DISK_TYPE: ディスクタイプ。pd-ssdpd-balanced のいずれかにする必要があります。
  • PRIMARY_DISK_PROJECT: プライマリ ディスクを含むプロジェクト。
  • PRIMARY_DISK_LOCATION_PARAMETER: プライマリ ディスクのロケーション パラメータ。
    • リージョン プライマリ ディスクの場合は、regions を使用します。
    • ゾーン プライマリ ディスクの場合は、zones を使用します。
  • PRIMARY_DISK_LOCATION: プライマリ ディスクのリージョンまたはゾーン。リージョン ディスクの場合は、リージョンを使用します。ゾーンディスクの場合は、ゾーンを使用します。
  • PRIMARY_DISK_NAME: セカンダリ ディスクが受信するデータの送信元プライマリ ディスクの名前。

次のステップ