このドキュメントでは、Persistent Disk 非同期レプリケーション(PD 非同期レプリケーション)を構成する方法について説明します。PD 非同期レプリケーションは、低 RPO、低 RTO の障害復旧に役立ちます。
レプリケーションを開始する前に、ディスクのレプリケーション ペアを設定して、PD 非同期レプリケーションを構成する必要があります。ディスクのレプリケーション ペアは、プライマリ ディスクとセカンダリ ディスクで構成されます。
ディスクのレプリケーション ペアを作成したら、レプリケーションを開始して、プライマリ ディスクとセカンダリ ディスク間のデータのレプリケーションを開始する必要があります。
制限事項
セカンダリ ディスクは、作成された時点で空白でなければなりません。イメージ、スナップショット、他のディスクから作成することはできません。
始める前に
- リージョンペアを選択します。
- 必要に応じて整合性グループを作成します。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
ディスクのレプリケーション ペアを設定する
ディスク間でデータを複製する前に、次の作業を行ってレプリケーションを構成する必要があります。
- リージョンペアを選択し、プライマリ リージョンとセカンダリ リージョンを決定します。
- 省略可: 一連のディスクの間でレプリケーションを調整する必要がある場合は、プライマリ リージョンに整合性グループを作成します。レプリケーションを開始する前に、プライマリ ディスクを整合性グループに追加する必要があります。
- プライマリ ディスクを作成または選択します。必要に応じて、これらのディスクを整合性グループに追加できます。
- 新しい空のセカンダリ ディスクを作成します。
ディスクの要件
PD 非同期レプリケーションでプライマリ ディスクまたはセカンダリ ディスクとして使用するディスクは、次の要件を満たしている必要があります。
- ディスクタイプ: バランス永続ディスク(
pd-balanced
)またはパフォーマンス(SSD)永続ディスク(pd-ssd
)。 - サイズ: 32 TiB 以下。
- 暗号化のタイプ: Google が所有して管理する鍵、または顧客管理の暗号鍵(CMEK)。
- 読み取り / 書き込みモード: 読み取り / 書き込みモードにする必要があります。マルチライター モード(プレビュー)を有効にすることはできません。
- ロケーション: サポートされているリージョン(またはサポートされているリージョン内のゾーン)に配置されていること。
プライマリ ディスクを作成または選択する
プライマリ ディスクは、ワークロードが実行されている 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 で作成できます。
コンソール
次の手順に沿ってセカンダリ ディスクを作成し、レプリケーションを開始します。
Google Cloud コンソールで、[ディスク] ページに移動します。
プライマリ ディスクの名前をクリックします。[ディスクの管理] ページが開きます。
[セカンダリ ディスクの作成] をクリックします。
[名前] フィールドに、ディスクの名前を入力します。
[ロケーション] セクションで、次のいずれかを行います。
リージョン ディスクを作成する場合:
- [リージョン] を選択します。
- [リージョン] フィールドで、プライマリ ディスクのリージョンに対応するリージョンを選択します。
- [ゾーン] フィールドで、プライマリ ゾーンを選択します。
- [レプリカのゾーン] フィールドで、レプリカのゾーンを選択します。
ゾーンディスクを作成する場合:
- [シングルゾーン] を選択します。
- [リージョン] フィールドで、プライマリ ディスクのリージョンに対応するリージョンを選択します。
- [ゾーン] フィールドでゾーンを選択します。
[作成] をクリックします。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-ssd
、pd-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" }, ]
レプリケーションを開始
プライマリ ディスクとセカンダリ ディスクを作成したら、レプリケーションを開始して、プライマリ ディスクからセカンダリ ディスクへのデータのレプリケーションを開始する必要があります。
次のステップ
- PD 非同期レプリケーションを使用するディスクを管理する方法を学習する。
- レプリケーションを管理する方法を学習する。
- 整合性グループを管理する方法を学習する。
- Persistent Disk の非同期レプリケーションのパフォーマンスをモニタリングする方法を確認する。