管理區域性磁碟的失敗情形

Hyperdisk 平衡高可用性是一種儲存空間選項,可在同一區域內的兩個可用區之間同步複製資料。在 Compute Engine 中實作高可用性 (HA) 服務時,您可以使用 Hyperdisk Balanced High Availability 做為構成要素。

本文件說明可能會中斷區域磁碟運作的各種情況,以及如何管理這些情況。

事前準備

必要的角色

如要取得使用複本復原檢查點來遷移區域磁碟資料所需的權限,請要求管理員授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義的角色包含使用複本復原檢查點遷移區域磁碟資料所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要使用複本復原檢查點遷移區域磁碟資料,您必須具備下列權限:

  • 如要從複本復原檢查點建立標準快照,請按照下列步驟操作:
    • compute.snapshots.create 專案
    • 磁碟的 compute.disks.createSnapshot 權限
  • 如要使用標準快照建立新的區域磁碟,請按照下列步驟操作: compute.disks.create 在要建立新磁碟的專案中
  • 如要將 VM 遷移至新磁碟,請按照下列步驟操作:
    • VM 執行個體的 compute.instances.attachDisk 權限
    • 新建立的磁碟的 compute.disks.use permission

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

限制

您無法在處於多重寫入模式的磁碟上使用 force-attach 作業。

失敗情況

使用區域磁碟時,當裝置完全複製,資料會自動複製到區域中的兩個可用區。只有在兩個備用資源中常駐時,才會確認寫回 Compute 執行個體。

如果某個區域的複寫作業失敗或速度緩慢,磁碟複寫狀態就會切換為「降級」。在這個模式中,寫入作業會在備用資源中持續保留後才會確認。

如果 Compute Engine 偵測到可恢復複寫作業,則會將在另一個備用資源進入降級狀態後寫入該備用資源的資料同步至兩個區域,磁碟也會恢復為已完全複製的狀態。這項轉換作業完全自動化。

RPO 和 RTO 在裝置處於降級狀態時未定義。為避免磁碟在降級狀態下運作時發生故障,導致資料和可用性損失,建議您定期使用標準快照備份區域磁碟。您可以還原快照來復原磁碟。

區域故障

複本磁碟 (或區域磁碟) 會同步複製至主要和次要可用區的磁碟複本。當可用區副本無法使用時,就會發生可用區故障。主要或次要區域可能會發生區域失敗,原因如下:

  • 發生區域性中斷服務。
  • 備援機制在寫入作業時速度過慢。

下表列出您可能會遇到的各種區域故障情境,以及每個情境的建議動作。在上述每個情況中,我們假設主要區域副本在初始狀態下是正常且同步的。

磁碟的初始狀態 失敗於 磁碟的新狀態 失敗的後果 應採取的行動

主要複本:已同步

次要複本:已同步

磁碟狀態:已完全複製

連接磁碟的區域:主要區域

主要可用區

主要副本:未同步或無法使用

次要複本:已同步

磁碟狀態:已降級

連接磁碟的區域:主要區域

  • 次要區域中的複本仍處於正常狀態,且含有最新的磁碟資料。
  • 主可用區中的備援機制處於不健康狀態,且不保證會包含所有磁碟資料。
將磁碟強制連接至健康的次要區域內 VM,以便容錯移轉。

主要複本:已同步

次要複本:已同步

磁碟狀態:已完全複製

連接磁碟的區域:主要區域

次要可用區

主要複本:已同步

次要複本:未同步或無法使用

磁碟狀態:已降級

連接磁碟的區域:主要區域

  • 主要區域中的備援機制仍處於正常狀態,且擁有最新的磁碟資料。
  • 次要區域中的備用資源處於不健康狀態,且不保證會包含所有磁碟資料。
無須採取任何行動。Compute Engine 會在次要區域的健康狀態不佳的備用資源再次可用後,將其同步。

主要複本:已同步

次要複本:不同步且無法使用

磁碟狀態:已降級

連接磁碟的區域:主要區域

主要可用區

主要副本:已同步但無法使用

次要複本:不同步

磁碟狀態:無法使用

連接磁碟的區域:主要區域

  • 兩個區域副本都無法使用,因此無法放送流量。磁碟將無法使用。
  • 如果區域停機或備援失敗是暫時性的,就不會遺失任何資料。
  • 如果區域停機或備用資源故障是永久性問題,則在磁碟降級時寫入至健康備用資源的任何資料都會永久遺失。
Google 建議您 使用現有的標準快照,並建立新的磁碟 來復原資料。最佳做法是定期使用標準快照備份地區磁碟。

主要複本:已同步

次要複本:正在進行同步作業,但可供使用

磁碟狀態:正在進行中

連接磁碟的區域:主要區域

主要可用區

主要備援機器:無法使用

次要複本:正在追上,但可用

磁碟狀態:無法使用

連接磁碟的區域:主要區域

  • 兩個區域副本都無法提供流量。磁碟就會無法使用。
  • 如果區域停機或備用資源故障是暫時性的,磁碟會在主要備用資源再次可用後恢復運作。
  • 如果可用區停機或備援失敗是永久性問題,磁碟就會無法使用。

主要複本:已同步

次要複本:未同步但可用

磁碟狀態:已降級

連接磁碟的區域:主要區域

主要可用區

主要備援機器:無法使用

次要複本:未同步但可用

磁碟狀態:無法使用

連接磁碟的區域:主要區域

  • 兩個區域副本都無法提供流量。磁碟將無法使用。
  • 如果區域停機或備用資源故障是暫時性的,磁碟會在主要備用資源再次可用後恢復運作。
  • 如果可用區停機或備援失敗是永久性問題,磁碟就會無法使用。

應用程式和 VM 故障

如果服務因 VM 設定錯誤、OS 升級失敗或其他應用程式故障而中斷,您可以將地區磁碟 force-attach 至與健康備援機制位於同一區域的運算執行個體。

故障類別和 (機率) 失敗類型 動作
應用程式故障 (高)
  • 應用程式沒有回應
  • 因應用程式管理作業 (例如升級) 而失敗
  • 人為錯誤 (例如 SSL 憑證或 ACL 等參數設定錯誤)
應用程式控制層可根據 健康狀態檢查門檻觸發 容錯移轉
VM 故障 (中)
  • 基礎架構或硬體故障
  • CPU 爭用、中間網路中斷而導致 VM 無回應
VM 通常會 自動修復。應用程式控制層可根據 健康狀態檢查門檻觸發 容錯移轉
應用程式毀損 (低至中) 應用程式資料損毀
(例如,由於應用程式錯誤或作業系統升級失敗)
應用程式復原:

使用 force-attach 將地區磁碟移轉

如果主要區域發生故障,您可以使用強制連接作業,將Hyperdisk 平衡高可用性磁碟區容錯移轉至另一個區域的運算執行個體。

當主要區域發生故障時,您可能無法從執行個體卸離磁碟,因為無法存取執行個體來執行卸離作業。強制連結功能可讓您將Hyperdisk 平衡高可用性磁碟區連結至運算執行個體,即使該磁碟區已連結至其他執行個體也一樣。

完成強制連接操作後,Compute Engine 會防止原始執行個體寫入區域磁碟。使用強制連接作業可讓您安全地重新取得資料存取權限並恢復服務。您也可以選擇在執行強制連接作業後,手動關閉 VM 執行個體

如要強制將現有磁碟連結至雲端運算執行個體,請選取下列其中一項工作:

主控台

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 選取專案。

  3. 按一下要變更的執行個體名稱。

  4. 在詳細資料頁面中,按一下「編輯」

  5. 在「Additional disks」部分,按一下「Attach additional disk」

  6. 從下拉式清單中選取地區或同步複製的磁碟。

  7. 如要強制連結磁碟,請選取「強制連結磁碟」核取方塊。

  8. 依序按一下 [完成] 及 [儲存]

問題解決後,您可以執行相同的步驟,將磁碟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.s3nsapis.fr/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/attachDisk?forceAttach=true

{
 "source": "projects/PROJECT_ID/regions/REGION/disks/DISK_NAME"
}

更改下列內容:

  • PROJECT_ID:您的專案 ID
  • ZONE:運算執行個體的位置
  • VM_NAME:要新增區域磁碟的 Compute Engine 執行個體名稱
  • REGION:地區磁碟所在的地區
  • DISK_NAME:地區磁碟名稱

連接區域磁碟後,請視需要將檔案系統掛接到該磁碟。運算執行個體可以使用備用資源磁碟,繼續執行磁碟的讀取和寫入作業。

將開機磁碟容錯移轉至次要執行個體

您只能將一個開機磁碟連結至 Compute 執行個體。如果區域開機磁碟發生錯誤,請根據次要運算執行個體是否已存在,使用下列任一方法:

  • 如果沒有有效的待命 VM,請在次要區域中建立新的執行個體。建立第二個執行個體時,請使用地區磁碟做為開機磁碟,如使用地區開機磁碟建立新的 VM 一文所述。

  • 如果次要區域中有待命 VM,請按照「將地區開機磁碟附加至 VM」一文的說明,將待命 VM 的開機磁碟替換為地區開機磁碟。

使用複本復原檢查點來復原區域磁碟

複本復原檢查點代表完全複製的Hyperdisk 平衡高可用性磁碟區的最近一次異常狀況一致時間點。Compute Engine 可讓您針對降級的地區磁碟,從複本復原檢查點建立標準快照。

在極少數情況下,當磁碟降級時,與最新磁碟資料同步的區域備用資源也可能在非同步備用資源趕上之前失敗。您無法將磁碟強制連結至任一區域中的運算執行個體。複本磁碟將無法使用,您必須將資料遷移至新的磁碟。在這種情況下,如果您沒有任何可用於磁碟的現有標準快照,您還是可以使用從複本復原檢查點建立的標準快照,從不完整的複本復原磁碟資料。如需詳細步驟,請參閱「遷移及復原磁碟資料的程序」。

遷移及復原磁碟資料的程序

如要使用複本復原檢查點來復原及遷移區域磁碟的資料,請執行下列步驟:

  1. 針對受影響的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.s3nsapis.fr/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.
    

  2. 使用這個快照建立新的 Hyperdisk 平衡高可用性磁碟。建立新磁碟時,您可以從快照將資料還原至新磁碟,藉此從最新的複本復原檢查點復原所有資料。如需詳細步驟,請參閱「使用區域開機磁碟建立新執行個體」。

  3. 將所有 VM 工作負載遷移至新建立的磁碟,並驗證這些 VM 工作負載是否正常運作。詳情請參閱「在區域或地區之間移動 VM」。

復原磁碟資料並將 VM 遷移至新建立的Hyperdisk 平衡高可用性磁碟後,您就可以恢復作業。

判斷備援復原查核點提供的 RPO

本節說明如何判斷 Hyperdisk 平衡高可用性磁碟的最新複本復原檢查點提供的 RPO。

可用區備用資源已完全同步

Compute Engine 會大約每 10 分鐘更新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))

後續步驟