區域性永久磁碟和 Hyperdisk 平衡高可用性是一種儲存空間選項,可在同一區域的兩個可用區之間同步複製資料。在 Compute Engine 中實作高可用性 (HA) 服務時,您可以使用區域永久磁碟或 Hyperdisk 平衡高可用性做為構成要素。
本文件說明可能會中斷區域磁碟運作的各種情況,以及如何管理這些情況。
事前準備
- 複習區域磁碟和容錯機制的基礎知識。詳情請參閱「 關於同步磁碟複製」。
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
必要的角色
如要取得使用複本復原檢查點來遷移區域磁碟資料所需的權限,請要求管理員授予您下列 IAM 角色:
-
如要使用複本復原檢查點遷移區域磁碟資料,請完成下列步驟:
Compute 執行個體管理員 (v1) (
roles/compute.instanceAdmin.v1
) 在專案中 -
如要查看區域性磁碟指標 (下列任一項):
-
專案的監控檢視者 (
roles/monitoring.viewer
) -
專案中的Monitoring 編輯者 (
roles/monitoring.editor
)
-
專案的監控檢視者 (
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色包含使用複本復原檢查點遷移區域磁碟資料所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要使用複本復原檢查點遷移區域磁碟資料,您必須具備下列權限:
-
如要從複本復原檢查點建立標準快照,請按照下列步驟操作:
-
compute.snapshots.create
-
磁碟的
compute.disks.createSnapshot
-
-
如要使用標準快照建立新的區域磁碟,請按照下列步驟操作:
compute.disks.create
-
如要將 VM 遷移至新磁碟,請按照下列步驟操作:
-
VM 執行個體的
compute.instances.attachDisk
-
新建立的磁碟的
compute.disks.use permission
-
VM 執行個體的
限制
您無法在處於多重寫入模式的磁碟上使用 force-attach
作業。
失敗情況
使用區域磁碟時,當裝置完全複製,資料會自動複製到區域中的兩個可用區。只有在兩個備用資源中常駐時,才會確認寫回 Compute 執行個體。
如果某個區域的複寫作業失敗或速度緩慢,磁碟複寫狀態就會切換為「degraded」。在這個模式中,寫入作業會在備用資源中持續保留後才會確認。
如果 Compute Engine 偵測到可恢復複寫作業,則會將在另一個備用資源進入降級狀態後寫入該備用資源的資料同步至兩個區域,磁碟也會恢復為已完全複製的狀態。這項轉換作業完全自動化。
當裝置處於降級狀態時,RPO 和 RTO 會是未定義的值。為避免磁碟在降級狀態下運作時發生故障,導致資料和可用性損失,建議您定期使用標準快照備份區域磁碟。您可以還原快照來復原磁碟。
區域故障
複本磁碟 (或區域磁碟) 會同步複製至主要和次要區域的磁碟副本。當可用區副本無法使用時,就會發生可用區故障。主要或次要區域可能會發生區域失敗,原因如下:
- 發生區域性中斷服務。
- 備援機制在寫入作業時速度過慢。
下表列出您可能會遇到的各種區域故障情境,以及每個情境的建議動作。在上述每個情況中,我們假設主要區域副本在初始狀態期間是正常且同步的。
磁碟的初始狀態 | 失敗於 | 磁碟的新狀態 | 失敗的後果 | 應採取的行動 |
---|---|---|---|---|
主要複本:已同步 次要複本:已同步 磁碟狀態:已完全複製 連接磁碟的區域:主要區域 |
主要可用區 |
主要複本:未同步或無法使用 次要複本:已同步 磁碟狀態:已降級 連接磁碟的區域:主要區域 |
|
將磁碟強制連接至健康的次要區域中 VM,以便容錯移轉。 |
主要複本:已同步 次要複本:已同步 磁碟狀態:已完全複製 連接磁碟的區域:主要區域 |
次要可用區 |
主要複本:已同步 次要複本:未同步或無法使用 磁碟狀態:已降級 連接磁碟的區域:主要區域 |
|
您無須採取任何行動。Compute Engine 會在次要區域的健康狀態不佳的備用資源再次可用後,將其同步。 |
主要複本:已同步 次要複本:不同步且無法使用 磁碟狀態:已降級 連接磁碟的區域:主要區域 |
主要可用區 |
主要副本:已同步但無法使用 次要複本:不同步 磁碟狀態:無法使用 連接磁碟的區域:主要區域 |
|
Google 建議您 使用現有的標準快照,並建立新的磁碟 來復原資料。最佳做法是定期使用標準快照備份地區磁碟。 |
主要複本:已同步 次要複本:正在追趕,但可供使用 磁碟狀態:正在進行中 連接磁碟的區域:主要區域 |
主要可用區 |
主要備援機器:無法使用 次要複本:正在追趕,但可供使用 磁碟狀態:無法使用 連接磁碟的區域:主要區域 |
|
|
主要複本:已同步 次要複本:未同步但可用 磁碟狀態:已降級 連接磁碟的區域:主要區域 |
主要可用區 |
主要備援機器:無法使用 次要複本:未同步但可用 磁碟狀態:無法使用 連接磁碟的區域:主要區域 |
|
|
應用程式和 VM 故障
如果服務因 VM 設定錯誤、OS 升級失敗或其他應用程式故障而中斷,您可以將地區磁碟 force-attach
至與健康備援機制位於同一區域的運算執行個體。
故障類別和 (機率) | 失敗類型 | 動作 |
---|---|---|
應用程式故障 (高) |
|
應用程式控制層可根據 健康狀態檢查門檻觸發 容錯移轉。 |
VM 故障 (中) |
|
VM 通常會 自動修復。應用程式控制層可根據 健康狀態檢查門檻觸發 容錯移轉。 |
應用程式毀損 (低至中) |
應用程式資料損毀 (例如,由於應用程式錯誤或作業系統升級失敗) |
應用程式復原:
|
使用 force-attach
將地區磁碟移轉
如果主要區域發生故障,您可以使用強制連接作業,將地區永久磁碟或 Hyperdisk 平衡高可用性磁碟區容錯移轉至另一個區域的運算執行個體。
當主要區域發生故障時,您可能無法從執行個體卸離磁碟,因為無法存取執行個體來執行卸離作業。強制連結功能可讓您將地區永久磁碟或 Hyperdisk 平衡高可用性磁碟區連結至運算執行個體,即使該磁碟區已連結至其他執行個體也一樣。
完成強制連接操作後,Compute Engine 會防止原始執行個體寫入區域磁碟。使用強制連接作業可讓您安全地重新取得資料存取權限並恢復服務。您也可以選擇在執行強制連接作業後,手動關閉 VM 執行個體。
如要強制將現有磁碟連結至雲端運算執行個體,請選取下列任一項作業:
主控台
前往「VM instances」(VM 執行個體) 頁面。
選取專案。
按一下要變更的執行個體名稱。
在詳細資料頁面中,按一下「編輯」。
在「Additional disks」部分,按一下「Attach additional disk」。
從下拉式清單中選取地區或同步複製的磁碟。
如要強制連結磁碟,請選取「強制連結磁碟」核取方塊。
依序按一下 [完成] 及 [儲存]。
問題解決後,您可以執行相同的步驟,將磁碟force-attach
至原始的運算執行個體。
gcloud
在 gcloud CLI 中,使用 instances attach-disk
指令將備用資源磁碟連接至運算執行個體。然後加上 --disk-scope
旗標,並將該旗標設為 regional
。
gcloud compute instances attach-disk VM_NAME \
--disk DISK_NAME --disk-scope regional \
--force-attach
更改下列內容:
VM_NAME
:地區中新運算執行個體的名稱DISK_NAME
:地區磁碟名稱
當您 force-attach
磁碟之後,請視需要將檔案系統掛接到該磁碟。運算執行個體可以利用強制連接的磁碟,繼續執行磁碟的讀取和寫入作業。
REST
對 compute.instances.attachDisk
方法建構 POST
要求,並包含您剛建立的區域磁碟的網址:如果主要運算執行個體仍有磁碟連結,您需要使用 forceAttach=true
查詢參數,才能將磁碟連結至新的運算執行個體。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk?forceAttach=true
{
"source": "projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
}
更改下列內容:
PROJECT_ID
:您的專案 IDZONE
:運算執行個體的位置VM_NAME
:您要在其中新增區域磁碟的 Compute 執行個體名稱REGION
:地區磁碟所在的地區DISK_NAME
:地區磁碟名稱
連接區域磁碟後,請視需要將檔案系統掛接到該磁碟。運算執行個體可以使用備用資源磁碟,繼續執行磁碟的讀取和寫入作業。
將開機磁碟容錯移轉至次要執行個體
您只能將一個開機磁碟連結至 Compute 執行個體。如果區域開機磁碟發生錯誤,請視次要運算執行個體是否已存在,使用下列任一方法:
如果沒有有效的待命 VM,請在次要區域中建立新的執行個體。建立第二個執行個體時,請使用地區磁碟做為開機磁碟,如使用地區開機磁碟建立新的 VM 一文所述。
如果次要區域中有待命 VM,請按照「將地區開機磁碟連結至 VM」一文的說明,將待命 VM 的開機磁碟替換為地區開機磁碟。
使用複本復原檢查點來復原區域磁碟
複本復原檢查點代表完全複製的區域性永久磁碟或 Hyperdisk 平衡高可用性磁碟區,最近的一次異常狀況一致時間點。Compute Engine 可讓您針對降級的地區磁碟,從複本復原檢查點建立標準快照。
在極少數情況下,當磁碟降級時,與最新磁碟資料同步的區域備用資源也可能在非同步備用資源趕上之前失敗。您無法將磁碟強制連結至任一區域中的運算執行個體。複本磁碟將無法使用,您必須將資料遷移至新的磁碟。在這種情況下,如果您沒有任何可用於磁碟的現有標準快照,您還是可以使用從複本復原檢查點建立的標準快照,從不完整的複本復原磁碟資料。如需詳細步驟,請參閱「遷移及復原磁碟資料的程序」。
遷移及復原磁碟資料的程序
如要使用複本復原檢查點來復原及遷移區域磁碟的資料,請執行下列步驟:
針對受影響的區域性永久磁碟或 Hyperdisk 平衡高可用性磁碟區,從複本復原檢查點建立標準快照。
您可以只使用 gcloud CLI 或 REST,從磁碟的複本復原檢查點建立磁碟的標準快照。
gcloud
如要使用複本復原檢查點建立快照,請使用
gcloud compute snapshots create
指令 。請加入--source-disk-for-recovery-checkpoint
旗標,指定您要使用複本復原檢查點建立快照。排除--source-disk
和--source-disk-region
參數。gcloud compute snapshots create SNAPSHOT_NAME \ --source-disk-for-recovery-checkpoint=SOURCE_DISK \ --source-disk-for-recovery-checkpoint-region=SOURCE_REGION \ --storage-location=STORAGE_LOCATION \ --snapshot-type=SNAPSHOT_TYPE
請依指示取代下列項目:
DESTINATION_PROJECT_ID
:您要建立快照的專案 ID。SNAPSHOT_NAME
:快照的名稱。SOURCE_DISK
:您要用來建立快照的來源磁碟名稱或完整路徑。如要指定來源磁碟的完整路徑,請使用下列語法:projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
如果您指定來源磁碟的完整路徑,可以排除
--source-disk-for-recovery-checkpoint-region
標記。如果您只指定磁碟名稱,則必須加入此標記。如要根據不同專案中來源磁碟的復原檢查點建立快照,您必須指定來源磁碟的完整路徑。
SOURCE_PROJECT_ID
:來源磁碟的專案 ID,您可以使用該磁碟的檢查點建立快照。SOURCE_REGION
:來源磁碟的區域,您可以使用該區域的檢查點建立快照。SOURCE_DISK_NAME
:來源磁碟的名稱,您可以使用該磁碟的檢查點建立快照。STORAGE_LOCATION
:選用:您要儲存快照位置的 Cloud Storage 多地區或 Cloud Storage 地區。您只能指定一個儲存位置。
只有在您想覆寫快照設定中設定的預先定義或自訂預設儲存位置時,才使用--storage-location
標記。SNAPSHOT_TYPE
:快照類型,可選「標準」或「封存」。如果未指定快照類型,系統會建立 STANDARD 快照。
您只能在降級磁碟上使用備用資源復原檢查點來建立快照。如果在裝置已完全複製時,嘗試從複本復原檢查點建立快照,您會看到下列錯誤訊息:
The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please create regular snapshots instead.
REST
如要使用複本復原檢查點建立快照,請對
snapshots.insert
方法發出POST
要求。請排除sourceDisk
參數,並加入sourceDiskForRecoveryCheckpoint
參數,指定您要使用檢查點建立快照。POST https://compute.googleapis.com/compute/v1/projects/DESTINATION_PROJECT_ID/global/snapshots { "name": "SNAPSHOT_NAME", "sourceDiskForRecoveryCheckpoint": "projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME", "storageLocations": "STORAGE_LOCATION", "snapshotType": "SNAPSHOT_TYPE" }
請依指示取代下列項目:
DESTINATION_PROJECT_ID
:您要建立快照的專案 ID。SNAPSHOT_NAME
:快照的名稱。SOURCE_DISK
:您要用來建立快照的來源磁碟名稱或完整路徑。如要指定來源磁碟的完整路徑,請使用下列語法:projects/SOURCE_PROJECT_ID/regions/SOURCE_REGION/disks/SOURCE_DISK_NAME
如果您指定來源磁碟的完整路徑,可以排除
--source-disk-for-recovery-checkpoint-region
標記。如果您只指定磁碟名稱,則必須加入此標記。如要根據不同專案中來源磁碟的復原檢查點建立快照,您必須指定來源磁碟的完整路徑。
SOURCE_PROJECT_ID
:來源磁碟的專案 ID,您可以使用該磁碟的檢查點建立快照。SOURCE_REGION
:來源磁碟的區域,您可以使用該區域的檢查點建立快照。SOURCE_DISK_NAME
:來源磁碟的名稱,您可以使用該磁碟的檢查點建立快照。STORAGE_LOCATION
:選用:您要儲存快照位置的 Cloud Storage 多地區或 Cloud Storage 地區。您只能指定一個儲存位置。
只有在您想覆寫快照設定中設定的預先定義或自訂預設儲存位置時,才使用storageLocations
參數。SNAPSHOT_TYPE
:快照類型,可選「標準」或「封存」。如果未指定快照類型,系統會建立 STANDARD 快照。
您只能在降級磁碟上使用備用資源復原檢查點來建立快照。如果在裝置已完全複製時,嘗試從複本復原檢查點建立快照,您會看到下列錯誤訊息:
The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please create regular snapshots instead.
使用這個快照建立新的 地區永久磁碟或 Hyperdisk 平衡高可用性磁碟。建立新磁碟時,您可以從快照將資料還原至新磁碟,藉此從最新的複本復原檢查點復原所有資料。如需詳細步驟,請參閱「使用區域開機磁碟建立新執行個體」。
將所有 VM 工作負載遷移至新建立的磁碟,並驗證這些 VM 工作負載是否正常運作。詳情請參閱「在區域或地區之間移動 VM」。
復原磁碟資料並將 VM 遷移至新建立的地區性永久磁碟或 Hyperdisk 平衡高可用性磁碟後,您就可以恢復作業。
判斷備援機制復原查核點提供的 RPO
本節說明如何判斷 地區性永久磁碟或 Hyperdisk 平衡高可用性磁碟的最新複本復原檢查點提供的 RPO。
可用區備用資源已完全同步
Compute Engine 會大約每 10 分鐘更新Regional Persistent Disk 或Hyperdisk 平衡高可用性磁碟的複本復原檢查點。因此,當區域副本完全同步時,RPO 大約為 10 分鐘。
區域性複本未同步
您無法查看備用復原檢查點的確切建立和重新整理時間戳記。不過,您可以使用下列資料,估算最新檢查點提供的 RPO 值:
- 已完全複製的磁碟狀態最近的時間戳記:您可以使用區域磁碟的
replica_state
指標 Cloud Monitoring 資料,取得這項資訊。檢查不同步備份的replica_state
指標資料,判斷備份何時會不同步。由於 Compute Engine 每 10 分鐘會重新整理磁碟的檢查點,因此最近一次的檢查點重新整理作業可能在這個時間戳記前約 10 分鐘完成。 - 最近的寫入作業時間戳記:您可以使用區域磁碟的
write_ops_count
指標 Cloud Monitoring 資料,取得這項資訊。查看write_ops_count
指標資料,判斷磁碟的最近寫入作業。
確定這些時間戳記後,請使用下列公式計算磁碟備份復原檢查點提供的近似 RPO。如果計算值小於零,則 RPO 實際上為零。
Approximate RPO provided by the latest checkpoint =
(Most recent write operation timestamp - (Most recent timestamp of the fully
replicated disk state - 10 minutes))
後續步驟
- 瞭解如何監控區域性磁碟的備份狀態和複製狀態。
- 瞭解如何判斷磁碟複製作業的確切狀態。
- 瞭解如何建立磁碟的快照。
- 瞭解如何使用地區磁碟建構高可用性服務。
- 瞭解如何在 Google Cloud上建構可擴充且有彈性的網路應用程式。
- 請參閱災難復原規劃指南。