本文說明如何設定非同步複製。非同步複製功能適用於低 RPO 和低 RTO 的災難復原。
如要啟用非同步磁碟複製,請完成下列步驟:
限制
- 建立次要磁碟時,磁碟必須空白。無法從映像檔、快照或其他磁碟建立。
- 非同步複製功能不支援 Hyperdisk ML 或 Hyperdisk Throughput。
事前準備
- 選擇區域配對 。
- 視需要建立一致性群組。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上的分頁,瞭解如何使用範例:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
- 設定預設地區和區域。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
Terraform
如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用您的使用者憑證設定應用程式預設憑證。
詳情請參閱 這篇文章,瞭解如何設定本機開發環境的驗證機制。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」。
設定磁碟複製配對
如要在磁碟之間複製資料,請先完成下列工作來設定複製作業:
- 選擇區域配對 和主要與次要區域。
- 選用:如要協調一組磁碟的複寫作業,請在主要區域建立一致性群組。您必須先將主要磁碟新增至一致性群組,才能啟動複製作業。
- 建立或選取主要磁碟。您可以選擇將這些磁碟新增至一致性群組。
- 建立新的空白次要磁碟。
磁碟需求
磁碟必須符合下列條件,才能做為非同步複製的主要或次要磁碟:
- 磁碟類型:您必須使用下列其中一種磁碟類型:
- 平衡型永久磁碟
- 效能型 (SSD) 永久磁碟
- Hyperdisk Balanced
- Hyperdisk Balanced High Availability
- Hyperdisk Extreme
- 大小:小於或等於 64 TiB。
- 加密類型: Google-owned and Google-managed encryption keys 或客戶自行管理的加密金鑰 (CMEK)。
- 多重寫入模式:您可以為處於多重寫入模式的 Hyperdisk Balanced 和 Hyperdisk Balanced High Availability 磁碟啟用非同步複寫功能。如果是其他磁碟類型,磁碟必須處於讀寫模式。
- 位置:位於支援的區域 (或支援區域內的某個可用區)。
建立或選取主要磁碟
主要磁碟是附加至 VM 的開機或資料磁碟,工作負載會在該 VM 上執行。您可以使用任何符合磁碟需求的現有磁碟做為主要磁碟,也可以建立新磁碟。如要使用現有磁碟做為主要磁碟,不需要對磁碟進行任何額外設定。請繼續建立次要磁碟,完成非同步複製設定。
建立主要磁碟
請使用下列任一文件所述的方法,建立主要磁碟。
在建立 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:要將磁碟加入的一致性群組名稱
建立次要磁碟
次要磁碟是與主要磁碟位於不同區域的資料磁碟,會接收並寫入從主要磁碟複製的資料。設定非同步複製時,您必須建立新的空白次要磁碟,並參照主要磁碟。
如要建立與主要磁碟具有相同屬性的次要磁碟,請按照「建立與主要磁碟相同的次要磁碟」一文中的步驟操作。
如要建立與主要磁碟不同的次要磁碟,請參閱「建立自訂次要磁碟」。
建立與主要磁碟相同的次要磁碟
本節說明如何建立與主要磁碟相同的次要磁碟。
- 如要使用永久磁碟非同步複製功能,可以透過Google Cloud 控制台、gcloud CLI 或 REST 建立次要磁碟。
如要使用 Hyperdisk 非同步複製功能,可以使用 Google Cloud 控制台、gcloud CLI、Terraform 或 REST。
控制台
如要建立次要磁碟並開始複製,請按照下列步驟操作:
前往 Google Cloud 控制台的「Disks」(磁碟) 頁面。
按一下主要磁碟的名稱。「管理磁碟」頁面隨即開啟。
按一下「建立次要磁碟」。
在「Name」(名稱) 欄位中,輸入磁碟名稱。
在「位置」部分中,執行下列其中一項操作:
如要建立地區磁碟,請按照下列指示操作:
- 選取「區域」。
- 在「Region」(區域) 欄位中,選取與主要磁碟區域對應的區域。
- 在「Zone」(可用區) 欄位中,選取主要可用區。
- 在「副本可用區」欄位中,選取副本可用區。
如要建立可用區磁碟:
- 選取「單一可用區」。
- 在「Region」(區域) 欄位中,選取與主要磁碟區域對應的區域。
- 在「Zone」(可用區) 欄位中,選取可用區。
點按「Create」(建立)。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 為單位)。大小必須與主要磁碟的大小相同。可接受的大小範圍為 10 到 2000 GB (含首尾),調整的單位為 1 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相同。
Go
使用下列其中一個程式碼範例,建立區域或地區次要磁碟:
建立可用區次要磁碟
建立區域次要磁碟
Java
使用下列其中一個程式碼範例,建立區域或地區次要磁碟:
建立可用區次要磁碟
建立區域次要磁碟
Node.js
使用下列其中一個程式碼範例,建立區域或地區次要磁碟:
建立可用區次要磁碟
建立區域次要磁碟
Python
使用下列其中一個程式碼範例,建立區域或地區次要磁碟:
建立可用區次要磁碟
建立區域次要磁碟
REST
使用下列任一方法建立區域或地區次要磁碟:
如要建立區域次要磁碟,請使用
disks.insert方法:POST https://compute.googleapis.com/compute/v1/projects/SECONDARY_DISK_PROJECT/zones/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" } }如要建立地區次要磁碟,請使用
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:次要磁碟的大小。必須與主要磁碟的大小相同。PRIMARY_DISK_PROJECT:包含主要磁碟的專案。PRIMARY_DISK_LOCATION_PARAMETER:主要磁碟的位置參數。- 如果是地區主要磁碟,請使用
regions。 - 如果是區域主要磁碟,請使用
zones。
- 如果是地區主要磁碟,請使用
PRIMARY_DISK_LOCATION:主要磁碟所在的區域或可用區。如果是區域性磁碟,請使用區域。如果是區域磁碟,請使用區域。PRIMARY_DISK_NAME:次要磁碟接收資料的主要磁碟名稱。
Terraform
如要建立與主要磁碟相同的次要磁碟,請使用 compute_disk 資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
建立自訂次要磁碟
本節將說明如何建立自訂次要磁碟,也就是屬性與主要磁碟不同的次要磁碟。
如果主要磁碟是開機磁碟,您就無法變更或移除主要磁碟的任何客體 OS 功能。你只能新增更多訪客 OS 功能。詳情請參閱「自訂次要磁碟」。
您可以使用 gcloud CLI、REST 或 Terraform 建立自訂次要磁碟。無法透過 Google Cloud 控制台自訂次要磁碟。
gcloud
如要建立自訂次要磁碟,請使用 gcloud compute disks create 指令,如「建立與主要磁碟相同的次要磁碟」一文所述。使用其他旗標自訂次要磁碟的屬性。
以下是自訂次要磁碟的範例:
- 如要指定其他客體 OS 功能,請使用
--guest-os-features參數。--guest-os-features=UEFI_COMPATIBLE,GVNIC,MULTI_IP_SUBNET
- 如要將其他標籤指派給次要磁碟,請使用
--labels參數。--labels=secondary-disk-for-replication=yes
Go
Java
Node.js
Python
REST
如要建立自訂次要磁碟,請使用「建立與主要磁碟相同的次要磁碟」一節所述的方法。指定其他欄位,自訂次要磁碟的屬性。
以下是自訂次要磁碟的範例:
- 如要指定其他客體 OS 功能,請使用
guestOsFeatures欄位。您只能指定其他客體作業系統功能,無法變更或移除從主要磁碟複製的任何客體作業系統功能。"guestOsFeatures": [ { "type": "NEW_FEATURE_ID_1" }, { "type": "NEW_FEATURE_ID_1" } ] - 如要為次要磁碟指派其他標籤,請使用
labels欄位。"labels": [ { "key": "value" }, ]
Terraform
如要建立自訂次要磁碟,請使用「建立與主要磁碟相同的次要磁碟」一節所述的方法。您可以指定其他欄位,自訂次要磁碟的屬性。
以下是自訂次要磁碟的範例:
- 如要指定其他客體 OS 功能,請使用
guest_os_features欄位。您只能指定其他客體作業系統功能,無法變更或移除從主要磁碟複製的任何客體作業系統功能。guest_os_features { type = "SECURE_BOOT" } guest_os_features { type = "MULTI_IP_SUBNET" } guest_os_features { type = "WINDOWS" } - 如要為次要磁碟指派其他標籤,請使用
labels欄位。labels = { environment = "dev" }
開始複製
建立主要和次要磁碟後,您必須開始複製,才能將資料從主要磁碟複製到次要磁碟。
後續步驟
- 瞭解如何管理使用非同步複製的磁碟。
- 瞭解如何管理複製作業。
- 瞭解如何管理一致性群組。
- 瞭解如何監控非同步複製作業的效能。