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


區域永久磁碟和 Hyperdisk Balanced High Availability 儲存空間選項可在同一區域的兩個可用區之間,提供資料同步複製功能。在 Compute Engine 中實作高可用性 (HA) 服務時,您可以使用區域永久磁碟或 Hyperdisk Balanced 高可用性當做構成要素。

本文說明可能導致區域磁碟無法運作的各種情況,以及如何管理這些情況。

事前準備

  • 瞭解區域性磁碟和容錯移轉的基本概念。 詳情請參閱「 關於同步磁碟複製」。
  • 如果尚未設定驗證,請先完成設定。 「驗證」是指驗證身分的程序,確認您有權存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    Select the tab for how you plan to use the samples on this page:

    gcloud

      1. 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.

      2. Set a default region and zone.
      3. REST

        如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 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.

        詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。

必要的角色

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

  • 如要使用副本復原檢查點遷移區域磁碟資料,請在專案中授予「Compute Instance Admin (v1)」(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 新建立的磁碟

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

限制

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

失敗情境

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

如果磁碟在一段時間內無法複製到某個區域,或複製速度非常緩慢,磁碟複製狀態就會切換為「已降級」。在此模式下,寫入作業會在一個備用資源中常駐後獲得確認。

如果 Compute Engine 偵測到可以繼續複製,系統就會將資料同步至兩個可用區,並將磁碟還原至完全複製狀態。這些資料是在其中一個備用資源進入降級狀態後,寫入另一個備用資源。這項轉換程序完全自動化。

裝置處於降級狀態時,RPO 和 RTO 未定義。為盡量減少磁碟在效能降低狀態下運作時,因故障而造成的資料和可用性損失,建議您使用標準快照定期備份區域磁碟。您可以透過還原快照來復原磁碟。

區域故障

複製磁碟 (或區域磁碟) 會同步複製到主要和次要可用區的磁碟副本。如果區域副本無法使用,就會發生區域故障。由於下列其中一項原因,主要或次要區域可能會發生區域性故障:

  • 發生區域性中斷。
  • 備用資源的寫入作業過於緩慢。

下表列出地區磁碟可能發生的各種區域故障情境,以及每個情境的建議動作。在上述每種情況中,我們都假設主要區域副本在初始狀態下運作正常且已同步。

磁碟的初始狀態 失敗 磁碟的新狀態 未遵守規定的後果 應採取的行動

主要副本:已同步

次要副本:已同步

磁碟狀態:已完全複製

磁碟附加位置:主要區域

主要可用區

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

次要副本:已同步

磁碟狀態:已降級

磁碟附加位置:主要區域

  • 次要區域中的副本仍運作正常,且擁有最新的磁碟資料。
  • 主要可用區中的副本健康狀態不佳,無法保證擁有所有磁碟資料。
將磁碟強制連接至健康狀態良好的次要區域中的 VM,藉此進行容錯移轉。

主要副本:已同步

次要副本:已同步

磁碟狀態:已完全複製

磁碟附加位置:主要區域

次要可用區

主要副本:已同步

次要副本:不同步或無法使用

磁碟狀態:已降級

磁碟附加位置:主要區域

  • 主要區域中的副本保持正常運作,且擁有最新的磁碟資料。
  • 次要區域中的副本狀況不佳,無法保證擁有所有磁碟資料。
不需要採取任何行動。次要區域中的備用資源恢復運作後,Compute Engine 會將其重新同步。

主要副本:已同步

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

磁碟狀態:已降級

磁碟附加位置:主要區域

主要可用區

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

次要副本:不同步

磁碟狀態:無法使用

磁碟附加位置:主要區域

  • 兩個可用區副本都無法使用,且無法放送流量。 磁碟會無法使用。
  • 如果可用區服務中斷或副本故障是暫時性的,就不會遺失任何資料。
  • 如果區域中斷或備用資源故障是永久性的,那麼在磁碟降級期間寫入健康備用資源的所有資料都會永久遺失。
Google 建議您 使用現有的標準快照建立新磁碟 ,藉此復原資料。最佳做法是使用標準快照定期備份地區磁碟。

主要副本:已同步

次要副本: 正在趕上進度,但仍可使用

磁碟狀態:趕上進度

磁碟附加位置:主要區域

主要可用區

主要副本:無法使用

次要副本: 正在趕上進度,但仍可使用

磁碟狀態:無法使用

磁碟附加位置:主要區域

  • 兩個區域副本都無法提供流量。磁碟會無法使用。
  • 如果可用區中斷或備用資源故障是暫時性的,磁碟會在主要備用資源恢復運作後,繼續執行作業。
  • 如果可用區中斷或備用資源故障是永久性的,您的磁碟就會無法使用。

主要副本:已同步

次要副本:不同步但可用

磁碟狀態:已降級

磁碟附加位置:主要區域

主要可用區

主要副本:無法使用

次要副本:不同步但可用

磁碟狀態:無法使用

磁碟附加位置:主要區域

  • 兩個區域副本都無法提供流量。磁碟會無法使用。
  • 如果可用區中斷或備用資源故障是暫時性的,主要備用資源恢復運作後,磁碟就會繼續運作。
  • 如果可用區中斷或備用資源故障是永久性的,磁碟就會無法使用。

應用程式和 VM 故障

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

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

使用 force-attach 容錯移轉地區磁碟

如果主要區域發生故障,您可以使用強制附加作業,將地區永久磁碟或 Hyperdisk Balanced 高可用性磁碟區容錯移轉至其他區域的運算執行個體。

如果主要區域發生故障,您可能無法從執行個體卸離磁碟,因為系統無法存取執行個體來執行卸離作業。強制連接功能可讓您將地區永久磁碟 或 Hyperdisk Balanced 高可用性磁碟區連接至運算執行個體,即使該磁碟區已連接至其他執行個體也沒問題。

完成強制連接操作後,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 指令將備用資源磁碟連接至 Compute 執行個體,然後加上 --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:您的專案 ID
  • ZONE:運算執行個體的位置
  • VM_NAME:要新增區域磁碟的運算執行個體名稱
  • REGION:地區磁碟所在的地區
  • DISK_NAME:地區磁碟的名稱

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

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

每個運算執行個體只能附加一個開機磁碟。容錯移轉區域開機磁碟時,請使用下列其中一種方法,視次要運算執行個體是否已存在而定:

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

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

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

副本復原檢查點代表完全複製的區域性 Persistent Disk 或 Hyperdisk 已平衡的高可用性磁碟區,在最近一次發生當機時的狀態。Compute Engine 可讓您從已降級地區磁碟的副本復原檢查點建立標準快照。

在極少數情況下,如果磁碟效能降低,與最新磁碟資料同步的區域副本也可能在不同步的副本趕上進度前發生故障。您無法將磁碟強制連結至任一區域中的運算執行個體。複製的磁碟會無法使用,您必須將資料遷移至新磁碟。在這種情況下,如果磁碟沒有任何現有的標準快照,您或許仍可使用從副本復原檢查點建立的標準快照,從不完整的副本復原磁碟資料。 如需詳細步驟,請參閱「遷移及復原磁碟資料的程序」。

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

如要使用副本復原檢查點復原及遷移區域磁碟的資料,請按照下列步驟操作:

  1. 從受影響的區域性永久磁碟或 Hyperdisk Balanced High Availability 磁碟區的副本復原檢查點,建立標準快照。

    您只能使用 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:快照類型,可以是 STANDARDARCHIVE。如果未指定快照類型,系統會建立 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:快照類型,可以是 STANDARDARCHIVE。如果未指定快照類型,系統會建立 STANDARD 快照。

    您只能在降級的磁碟上,使用副本復原檢查點建立快照。如果裝置完全複製完畢,您嘗試從副本復原檢查點建立快照時,會看到下列錯誤訊息:

    The device is fully replicated and should not create snapshots out of a recovery checkpoint. Please
    create regular snapshots instead.
    

  2. 使用這個快照建立新的 地區永久磁碟或 Hyperdisk Balanced 高可用性磁碟。建立新磁碟時,只要從快照將資料還原至新磁碟,即可從最新的副本復原檢查點復原所有資料。如需詳細步驟,請參閱「使用區域開機磁碟建立新執行個體」。

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

將磁碟資料和 VM 復原及遷移至新建立的地區永久磁碟或 Hyperdisk Balanced High Availability 磁碟後,即可繼續作業。

判斷副本復原檢查點提供的 RPO

本節說明如何判斷 區域永久磁碟或 Hyperdisk Balanced 高可用性磁碟卷宗的最新副本復原檢查點所提供的 RPO。

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

Compute Engine 大約每 10 分鐘會重新整理地區永久磁碟或 Hyperdisk Balanced 高可用性磁碟區的副本復原檢查點。因此,區域副本完全同步後,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))

後續步驟