本文說明如何管理一致性群組。一致性群組是資源政策,可確保相同區域或可用區內多個磁碟的複製作業保持一致。
如要進一步瞭解一致性群組,請參閱「關於非同步複製」。
限制
- 一個磁碟一次只能屬於一個一致性群組。
- 單一租戶節點中的磁碟不支援一致性群組。
- 一致性群組最多可有 128 個磁碟。
- 一致性群組中的所有磁碟都必須與一致性群組資源政策位於同一個專案。
- 一致性群組可以包含主要磁碟或次要磁碟,但不能兩者兼具。
- 如要為一致性群組中的磁碟啟用非同步複製功能,所有磁碟都必須位於同一個可用區 (適用於可用區磁碟),或位於同一組可用區 (適用於區域磁碟)。
- 磁碟複製期間,您無法在一致性群組中新增或移除主要磁碟。如要新增或移除一致性群組的主要磁碟,請先停止複製。您隨時可以新增或移除一致性群組中的次要磁碟。
- 您最多可以將 16 個磁碟連接至 VM,這些磁碟可以位於不同的一致性群組,也可以不屬於任何一致性群組。位於同一一致性群組中的磁碟,會計為一個磁碟,計入 16 個磁碟的限制。
事前準備
-
如果尚未設定驗證,請先完成設定。驗證機制會確認您的身分,以便授予 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 進行驗證」一節。
必要角色和權限
如要取得複製一致性群組中磁碟所需的權限,請要求管理員授予您專案的下列 IAM 角色:
- Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1) -
如要連線至已附加服務帳戶的執行個體:服務帳戶使用者 (v1) (
roles/iam.serviceAccountUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備複製一致性群組中磁碟所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
必須具備下列權限,才能複製一致性群組中的磁碟:
-
compute.disks.create -
compute.disks.useReadOnly來源磁碟
建立一致性群組
如要確保多個磁碟的複製作業保持一致,請在主要磁碟所在的區域建立一致性群組。如需對齊磁碟複製,請在次要磁碟所在的區域建立一致性群組。
使用 Google Cloud 控制台、Google Cloud CLI、REST 或 Terraform 建立一致性群組。
控制台
請按照下列步驟建立一致性群組:
前往 Google Cloud 控制台的「Consistency Groups」(一致性群組) 頁面。
按一下「Disk consistency groups」(磁碟一致性群組) 分頁標籤。
按一下「Create consistency group」(建立一致性群組)。
在「Name」(名稱) 欄位中,輸入一致性群組的名稱。
在「Region」(區域) 欄位中,選取磁碟所在的區域。如要將主要磁碟新增至一致性群組,請選取主要區域。如要將次要磁碟新增至一致性群組,請選取次要區域。
點選「建立」。
gcloud
使用 gcloud compute resource-policies create disk-consistency-group 指令建立一致性群組:
gcloud compute resource-policies create disk-consistency-group CONSISTENCY_GROUP_NAME \
--region=REGION
更改下列內容:
CONSISTENCY_GROUP_NAME: 一致性群組的名稱。REGION:一致性群組的區域。如要將主要磁碟新增至一致性群組,請使用主要區域。如要將次要磁碟新增至一致性群組,請使用次要區域。
Go
Java
Node.js
Python
REST
使用 resourcePolicies.insert 方法建立一致性群組:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies
{
"name": "CONSISTENCY_GROUP_NAME",
"diskConsistencyGroupPolicy": {
}
}
更改下列內容:
PROJECT::一致性 群組所在的專案。REGION:一致性群組的區域。如要將主要磁碟新增至一致性群組,請使用與主要磁碟相同的區域。如要將次要磁碟新增至一致性群組,請使用與次要磁碟相同的區域。CONSISTENCY_GROUP_NAME: 一致性群組的名稱。
Terraform
如要建立一致性群組,請使用 compute_resource_policy 資源。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
查看一致性群組中的磁碟
使用 Google Cloud 控制台、Google Cloud CLI 或 REST,查看一致性群組中的磁碟。
控制台
如要查看一致性群組中的磁碟,請按照下列步驟操作:
前往 Google Cloud 控制台的「Consistency Groups」(一致性群組) 頁面。
按一下「Disk consistency groups」(磁碟一致性群組) 分頁標籤。
按一下要查看磁碟的一致性群組名稱。「Manage consistency group」(管理一致性群組) 頁面隨即開啟。
查看「Consistency group members」(一致性群組成員) 專區,瞭解一致性群組包含的所有磁碟。
gcloud
使用 gcloud compute disks list 指令,查看一致性群組中的磁碟:
gcloud compute disks list \
--LOCATION_FLAG=LOCATION \
--filter=resourcePolicies=CONSISTENCY_GROUP_NAME
更改下列內容:
LOCATION_FLAG:一致性群組中磁碟的位置旗標。如果一致性群組中的磁碟為區域性,請使用--region。如果一致性群組中的磁碟位於可用區,請使用--zone。LOCATION:一致性群組中磁碟所在的區域或可用區。如果是區域磁碟,請使用區域。如果是可用區磁碟,請使用可用區。CONSISTENCY_GROUP_NAME:一致性群組的名稱。
Go
Java
列出一致性群組中的可用區磁碟
列出一致性群組中的區域磁碟
Node.js
Python
REST
如要查看一致性群組中的磁碟,請使用查詢篩選器,並採取下列任一方法:
使用
disks.get方法,查看一致性群組中的可用區磁碟:GET https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/disks?filter=resourcePolicies%3DCONSISTENCY_GROUP_NAME
使用
regionDisks.get方法查看一致性群組中的區域磁碟:GET https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/disks?filter=resourcePolicies%3DCONSISTENCY_GROUP_NAME
更改下列內容:
PROJECT:一致性群組所在的專案ZONE:一致性群組中磁碟所在的可用區REGION:一致性群組中磁碟所在的區域CONSISTENCY_GROUP_NAME:一致性群組的名稱
將磁碟新增至一致性群組
如要將主要磁碟新增至一致性群組,請務必在開始複製前,將磁碟新增至一致性群組。您隨時可以將次要磁碟新增至一致性群組。如要為一致性群組中的磁碟啟用非同步複製功能,所有磁碟都必須位於同一個可用區 (適用於可用區磁碟),或同一組可用區 (適用於區域磁碟)。
使用 Google Cloud 控制台、Google Cloud CLI、REST 或 Terraform,將磁碟新增至一致性群組。
控制台
如要將磁碟新增至一致性群組,請按照下列步驟操作:
前往 Google Cloud 控制台的「Consistency Groups」(一致性群組) 頁面。
按一下「Disk consistency groups」(磁碟一致性群組) 分頁標籤。
按一下要新增磁碟的一致性群組名稱。「Manage consistency group」(管理一致性群組) 頁面隨即開啟。
按一下「指派磁碟」。「Assign disks」(指派磁碟) 頁面隨即開啟。
選取要新增至一致性群組的磁碟。
按一下「指派磁碟」。出現提示時,按一下「新增」。
gcloud
使用 gcloud compute disks add-resource-policies 指令,將磁碟新增至一致性群組:
gcloud compute disks add-resource-policies DISK_NAME \
--LOCATION_FLAG=LOCATION \
--resource-policies=CONSISTENCY_GROUP
更改下列內容:
DISK_NAME:要新增至一致性群組的磁碟名稱。LOCATION_FLAG:磁碟的位置旗標。如果是區域性磁碟,請使用--region。如果是可用區磁碟,請使用--zone。LOCATION:磁碟所在的區域或可用區。如果是區域磁碟,請使用區域。如果是可用區磁碟,請使用可用區。CONSISTENCY_GROUP:一致性群組的網址。例如:projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME。
Go
Java
Node.js
Python
REST
請透過下列任一方法,將磁碟新增至一致性群組:
使用
disks.addResourcePolicies方法,將可用區磁碟新增至一致性群組:POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/LOCATION/disks/DISK_NAME/addResourcePolicies { "resourcePolicies": "CONSISTENCY_GROUP" }使用
regionDisks.addResourcePolicies方法,將區域磁碟新增至一致性群組:POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/LOCATION/disks/DISK_NAME/addResourcePolicies { "resourcePolicies": "CONSISTENCY_GROUP" }
更改下列內容:
PROJECT:磁碟所在的專案。LOCATION:磁碟的可用區或區域。如果是可用區磁碟,請使用可用區。如果是區域性磁碟,請使用區域。DISK_NAME:要新增至一致性群組的磁碟名稱。CONSISTENCY_GROUP:一致性群組的網址。例如:projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME。
Terraform
如要將磁碟新增至一致性群組,請使用 compute_disk_resource_policy_attachment 資源。
如果是區域磁碟,請指定區域,而非可用區。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
從一致性群組中移除磁碟
您必須先停止磁碟複製作業,才能從一致性群組中移除磁碟。
使用 Google Cloud 控制台、Google Cloud CLI 或 REST,從一致性群組中移除磁碟。
控制台
如要從一致性群組中移除主要磁碟,請按照下列步驟操作:
前往 Google Cloud 控制台的「Consistency Groups」(一致性群組) 頁面。
按一下「Disk consistency groups」(磁碟一致性群組) 分頁標籤。
按一下要新增磁碟的一致性群組名稱。「Manage consistency group」(管理一致性群組) 頁面隨即開啟。
在「Consistency group members」(一致性群組成員) 區段中,選取要從一致性群組中移除的磁碟。
按一下「Remove disks」(移除磁碟)。出現提示時,按一下「移除」。
gcloud
使用 gcloud compute disks remove-resource-policies 指令,從一致性群組中移除磁碟:
gcloud compute disks remove-resource-policies DISK_NAME \
--LOCATION_FLAG=LOCATION \
--resource-policies=CONSISTENCY_GROUP
更改下列內容:
DISK_NAME:要從一致性群組中移除的磁碟名稱。LOCATION_FLAG:磁碟的位置旗標。如果是區域性磁碟,請使用--region。如果是可用區磁碟,請使用--zone。LOCATION:磁碟所在的區域或可用區。如果是區域磁碟,請使用區域。如果是可用區磁碟,請使用可用區。CONSISTENCY_GROUP:一致性群組的網址。例如:projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME。
Go
Java
Node.js
Python
REST
如要從一致性群組中移除磁碟,請對可用區磁碟使用 disks.removeResourcePolicies 方法,或對區域磁碟使用 regionDisks.removeResourcePolicies 方法。
從一致性群組中移除可用區磁碟:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/LOCATION/disks/DISK_NAME/removeResourcePolicies { "resourcePolicies": "CONSISTENCY_GROUP" }從一致性群組中移除區域磁碟:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/LOCATION/disks/DISK_NAME/removeResourcePolicies { "resourcePolicies": "CONSISTENCY_GROUP" }
更改下列內容:
PROJECT:磁碟所在的專案。LOCATION:磁碟的可用區或區域。如果是可用區磁碟,請使用可用區。如果是區域性磁碟,請使用區域。DISK_NAME:要從一致性群組中移除的磁碟名稱。CONSISTENCY_GROUP:一致性群組的網址。例如:projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME。
刪除一致性群組
使用 Google Cloud 控制台、Google Cloud CLI 或 REST 刪除一致性群組。
控制台
如要刪除一致性群組,請按照下列步驟操作:
前往 Google Cloud 控制台的「Consistency Groups」(一致性群組) 頁面。
按一下「Disk consistency groups」(磁碟一致性群組) 分頁標籤。
選取要刪除的一致性群組。
按一下「Delete」(刪除)。「Delete consistency group」(刪除一致性群組) 視窗隨即開啟。
點選「刪除」。
gcloud
使用 gcloud compute resource-policies delete 指令刪除資源政策:
gcloud compute resource-policies delete CONSISTENCY_GROUP \
--region=REGION
更改下列內容:
CONSISTENCY_GROUP:一致性群組的名稱REGION:一致性群組的區域
Go
Java
Node.js
Python
REST
使用 resourcePolicies.delete 方法刪除一致性群組:
DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/resourcePolicies/CONSISTENCY_GROUP_NAME
更改下列內容:
PROJECT:一致性群組所在的專案REGION:一致性群組的區域CONSISTENCY_GROUP:一致性群組的名稱
後續步驟
- 瞭解如何管理使用非同步複製功能的磁碟。
- 瞭解如何容錯移轉及容錯回復。
- 瞭解如何監控非同步複製作業效能。