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


このドキュメントでは、Persistent Disk 非同期レプリケーション(PD 非同期レプリケーション)を構成する方法について説明します。PD 非同期レプリケーションは、低 RPO、低 RTO の障害復旧に役立ちます。

レプリケーションを開始する前に、ディスクのレプリケーション ペアを設定して、PD 非同期レプリケーションを構成する必要があります。ディスクのレプリケーション ペアは、プライマリ ディスクとセカンダリ ディスクで構成されます。

ディスクのレプリケーション ペアを作成したら、レプリケーションを開始して、プライマリ ディスクとセカンダリ ディスク間のデータのレプリケーションを開始する必要があります。

制限事項

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

始める前に

  • リージョンペアを選択します
  • 必要に応じて整合性グループを作成します
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

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

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

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

ディスクの要件

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

プライマリ ディスクと同じプロパティでセカンダリ ディスクを作成するには、プライマリ ディスクと同一のセカンダリ ディスクを作成するの手順を行います。セカンダリ ディスクは、ブート構成やラベルなど、プライマリ ディスクのプロパティを継承します。

プライマリ ディスクとは異なるセカンダリ ディスクを作成するには、カスタム セカンダリ ディスクを作成するをご覧ください。

プライマリ ディスクと同一のセカンダリ ディスクを作成する

このセクションでは、プライマリ ディスクと同一のセカンダリ ディスクを作成する方法について説明します。

セカンダリ ディスクは、Google Cloud コンソール、gcloud CLI、または REST で作成できます。

コンソール

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

  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 とは異なるゾーンでなければなりません。

REST

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

  • ゾーン セカンダリ ディスクを作成するには、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: セカンダリ ディスクが受信するデータの送信元プライマリ ディスクの名前。

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

このセクションでは、カスタム セカンダリ ディスク、つまり、プロパティがプライマリ ディスクと異なるセカンダリ ディスクを作成する方法について説明します。

プライマリ ディスクがブートディスクの場合、プライマリ ディスクのゲスト OS 機能を変更または削除することはできません。ゲスト OS の機能のみさらに追加できます。詳細については、セカンダリ ディスクのカスタマイズをご覧ください。

カスタム セカンダリ ディスクは、gcloud CLI または REST で作成できます。Google Cloud コンソールからセカンダリ ディスクをカスタマイズすることはできません。

gcloud

カスタム セカンダリ ディスクを作成するには、プライマリ ディスクと同一のセカンダリ ディスクを作成するで説明されているように gcloud compute disks create コマンドを使用します。追加のフラグを使用して、セカンダリ ディスクのプロパティをカスタマイズします。

セカンダリ ディスクをカスタマイズする方法の例を次に示します。

  • 追加のゲスト OS の機能を指定するには、--guest-os-features パラメータを使用します。プライマリ ディスクのゲスト OS の機能を含める必要はありません。セカンダリ ディスクは、プライマリ ディスクのゲスト OS の機能を自動的に継承します。

     --guest-os-features=UEFI_COMPATIBLE,GVNIC,MULTI_IP_SUBNET
     

  • セカンダリ ディスクに追加のラベルを割り当てるには、--labels パラメータを使用します。プライマリ ディスクのラベルを含める必要はありません。セカンダリ ディスクは、プライマリ ディスクのラベルを自動的に継承します。
      --labels=secondary-disk-for-replication=yes
      

REST

カスタム セカンダリ ディスクを作成するには、プライマリ ディスクと同一のセカンダリ ディスクを作成するで説明したものと同じ方法を使用します。追加のフィールドを指定して、セカンダリ ディスクのプロパティをカスタマイズします。

セカンダリ ディスクをカスタマイズする方法の例を次に示します。

  • 追加のゲスト OS 機能を指定するには、guestOsFeatures フィールドを使用します。プライマリ ディスクのゲスト OS の機能を含める必要はありません。セカンダリ ディスクは、プライマリ ディスクのゲスト OS の機能を自動的に継承します。
    "guestOsFeatures": [
      {
        "type": "NEW_FEATURE_ID_1"
      },
      {
        "type": "NEW_FEATURE_ID_1"
      }
    ]
    
  • セカンダリ ディスクに追加のラベルを割り当てるには、labels フィールドを使用します。プライマリ ディスクのラベルを含める必要はありません。セカンダリ ディスクは、プライマリ ディスクからラベルを自動的に継承します。
      "labels": [
        {
          "key": "value"
        },
      ]
    

レプリケーションを開始

プライマリ ディスクとセカンダリ ディスクを作成したら、レプリケーションを開始して、プライマリ ディスクからセカンダリ ディスクへのデータのレプリケーションを開始する必要があります。

次のステップ