Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁說明如何使用環境快照進行災害復原。
定義
本指南使用下列定義:
- 災難是指 Cloud Composer 或其他對環境運作至關重要的元件無法使用的事件。這項事件需要容錯移轉至其他區域和 Cloud Composer 環境。災害可能是自然或人為造成,包括 Google Cloud 區域停機和您基礎架構的服務中斷。
- 在 Cloud Composer 的脈絡下,災難復原 (DR) 是指在發生災難後,還原環境運作的程序。這個程序包括重新建立環境,可能是在其他區域。如要進一步瞭解災難復原,請參閱災難復原規劃指南。
- 主要環境是您要啟用 DR 功能的 Cloud Composer 環境。
- 容錯移轉環境是指定用來接管主要環境活動的 Cloud Composer 環境。
- 暖 DR 情境是災難復原的變體,您會使用備用容錯移轉環境,在災難發生前建立該環境。
- 冷災難復原情境是災難復原的變體,您可以在發生災難後建立容錯移轉環境。
- 跨區域災難復原是暖或冷災難復原的變體,其中主要和容錯移轉環境位於不同區域。
災難復原程序簡介
如果主要環境因發生災害而無法運作 (損壞或無法存取),即可透過災難復原程序解決問題。
這項程序假設主要環境不會就地修復,以解決災害問題。而是並排建立第二個 (容錯移轉) 環境。這個環境會取代主要環境運作。之後,您可能會決定返回主要環境,或繼續使用容錯移轉環境。
由於程序使用容錯移轉環境,因此切換主要環境時會導入變更。主要環境與容錯移轉環境之間的變更包括 (但不限於):
網路伺服器網址會有所不同。這會變更 Airflow UI 和 Airflow REST API 端點的位址。
環境的 bucket 網址會有所不同。
可能需要調整網路和存取權限設定。
如果您使用暖 DR 情境,您會預先知道網頁伺服器、環境的儲存空間位址和網路設定的值。
事前準備
Airflow 資料庫的資料必須少於 20 GB,才能建立快照。
如要建立快照,環境值區中
/dags
、/plugins
和/data
資料夾的物件總數必須少於 100,000 個。如果使用 XCom 機制傳輸檔案,請務必按照 Airflow 的指南使用。使用 XCom 傳輸大型檔案或大量檔案會影響 Airflow 資料庫的效能,並可能導致載入快照或升級環境時發生錯誤。請考慮使用 Cloud Storage 等替代方案來移轉大量資料。
準備總覽
這兩種災害復原情境都包含下列準備步驟:
-
- 在暖 DR 情境中,您會讓這個環境保持可用狀態。
- 在冷 DR 情境中,您建立這個環境只是為了測試災害復原程序。完成準備作業後,請刪除這個環境,並在發生災害後重新建立。
-
值區必須位於 DR 地區。如要進行跨區域 DR,快照值區必須是多區域值區,或位於與主要環境不同的區域。
確認 DAG 可以存取區域資源。
災難復原總覽
發生災害後:
- (僅限冷 DR) 建立容錯移轉環境。
- 盡可能停止主要環境執行 DAG。
- 從快照值區載入快照至容錯移轉環境。
- 視需要調整容錯移轉環境的設定。
- 決定如何處理主要環境。
準備步驟
請按照下列步驟,為環境設定災害復原機制。
建立容錯移轉環境
建立環境做為容錯移轉環境。
請按照以下指示設定名稱:
-
主要和容錯移轉環境必須使用相同版本的 Airflow 和建構版本。
在暖 DR 情境中,請務必更新及升級兩個環境,確保兩者同步。舉例來說,如果您將主要環境升級至較新的 Airflow 建構版本,或安裝 PyPI 套件,容錯移轉環境也必須進行這些變更。
建議您在與主要環境不同的區域中建立容錯移轉環境。因此,涵蓋的可能災害情境範圍更廣,例如影響整個區域可用性的災害。
建議使用 Terraform 建立主要和容錯移轉環境,確保兩者設定一致。請確保主要和容錯移轉環境的 Terraform 定義已同步處理。
建議容錯移轉環境的設定 (例如環境大小、排程器數量和 IAM 權限) 與主要環境的設定一致。兩個環境的 IAM 權限都必須授予使用者和快照適當的存取權。
檢查資源可用性
DAG 可在外部資源上運作,而存取這些資源可能取決於環境的設定 (例如授予環境服務帳戶的權限、網路設定或專案)。請確保容錯移轉環境可以使用這些資源。
環境可能會透過儲存在 Airflow 中的連線,與某些外部資源互動。檢查與主要環境相比,是否應在容錯移轉環境中調整這些資源。
建立快照的儲存空間 bucket
建立新的儲存空間值區,用於存放環境快照。 請勿使用環境值區進行災難復原,因為保留政策和生命週期的設定是在值區層級套用。
請確保這個儲存空間值區已設定 IAM 權限、資料保留政策和生命週期設定,避免意外刪除或未經授權存取。如要進一步瞭解如何設定快照的儲存空間,請參閱「設定排程快照」。
您可以:
- 在其他區域建立值區。
- 建立多區域 bucket。
設定資料庫維護作業
設定資料庫清除作業,讓 Airflow 資料庫維持在大小限制內。這樣做可加快儲存及載入快照的速度。Airflow 資料庫的資料量必須少於 20 GB,才能建立快照。
設定排程快照
快照只能在正常環境中建立,因此必須在發生災害前儲存快照。
如要進一步瞭解快照的運作方式,請參閱「儲存及載入環境快照」。如要瞭解儲存的快照位置,請參閱文件中的「儲存環境快照」一節。
(選用) 設定監控功能,監控排定的快照作業
如果排程快照的頻率至少為每 12 小時一次,您可以使用 Cloud Monitoring 在系統未自動建立快照時發出快訊。
如果是頻率較低的排程,請使用 Google Cloud CLI 驗證快照作業結果。請參閱「驗證儲存快照作業」。
- 前往 Google Cloud 控制台的「Monitoring」頁面。
- 在「Monitoring」導覽窗格中,選取「快訊」圖示 notifications。
- 如果您尚未建立通知管道,但想收到通知,請按一下「編輯通知管道」,然後新增通知管道。新增管道後,返回「快訊」頁面。
- 在「Alerting」(快訊) 頁面中,選取「Create policy」(建立政策)。
- 如要選取指標,請展開「選取指標」選單,然後執行下列操作:
- 如要將選單限制為相關項目,請在篩選列中輸入
Composer Snapshot
。如果篩選選單後沒有任何結果,請停用「僅顯示活躍的資源和指標」切換按鈕。 - 在「Resource type」(資源類型) 部分,選取「Cloud Composer Environment」(Cloud Composer 環境)。
- 在「指標類別」中,選取「環境」。
- 在「指標」部分,選取「快照建立次數」。
- 選取 [Apply] (套用)。
- 如要將選單限制為相關項目,請在篩選列中輸入
-
按一下「新增篩選條件」,然後使用下拉式選單新增下列篩選條件:
篩選器 比較子 值 資源標籤 > environment_name = 您要監控排程快照的環境名稱。 監控標籤 > 結果 = SUCCEEDED
- 在「轉換資料」部分,設定下列屬性:
- 在「Rolling window」(滾動週期) 中,選取這項快訊的監控週期。這個值會影響下一步的門檻設定。
建議的定期快照監控值:1 天。
- 在「Rolling window function」(滾動週期函式) 部分,選取「delta」(差異)。
- 在「Rolling window」(滾動週期) 中,選取這項快訊的監控週期。這個值會影響下一步的門檻設定。
- 點選「下一步」。
- 「設定快訊觸發條件」頁面中的設定會決定快訊的觸發時機。
按照下表中的設定完成這個頁面。
欄位 值 Condition type
Threshold
Alert trigger
Any time series violates
Threshold position
Below threshold
Threshold value
您預期在設定為快訊「滾動視窗」的時間內儲存的排定快照數量。 使用下列公式計算這個值:
(rolling window in hours / schedule frequency in hours) - 1
注意:公式中扣除
1
小時,是為了考量快照完成時間不一。如果最新快照仍在監控檢查期間執行,這有助於避免誤報。範例:
如果您使用建議的 1 天滾動式視窗, 且排程頻率為每 2 小時一次,請將這個值設為11
(如計算所示:24 / 2 - 1 = 11
)。如果排程正常運作,在任何 24 小時內,您應該至少會有 11 張快照。如果沒有,表示快照作業未順利完成,Cloud Monitoring 會觸發這項警報。
Condition name
條件的自訂名稱。 - 點選「下一步」。
- 選用:如要新增通知至您的快訊政策,請按一下「通知管道」。在對話方塊中,從選單選取一或多個通知管道,然後按一下「確定」。
- 選用:更新「事件自動關閉期限」。這個欄位會決定 Monitoring 何時會在沒有指標資料的情況下關閉事件。
- 選用:按一下「說明文件」,然後在通知訊息中新增任何資訊。
- 按一下「快訊名稱」,然後輸入快訊政策的名稱。
- 點選「建立政策」。
測試災難復原程序
設定災難復原程序後,請務必進行測試,並定期測試。以利您解決可能影響實際災難復原程序的潛在問題。
在冷 DR 情境中,測試完災難復原程序後,即可刪除容錯移轉環境。
驗證儲存快照作業
您可以使用 Google Cloud CLI 擷取儲存快照作業清單,並確認快照是否已準備好用於災害復原情境。
如果您儲存快照的頻率低於每 12 小時一次,這個方法就很有用。如要更頻繁地驗證儲存的快照,建議設定 Cloud Monitoring 快訊。請參閱「設定監控排定的快照作業」。
gcloud
列出特定環境的所有快照作業。如需完整的指令參考資料,請參閱 gcloud composer operations list
。
gcloud composer operations list \
--locations LOCATION \
--filter="metadata.operationType=SAVE_SNAPSHOT AND
metadata.resource=projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_ID"
--format yaml
取代:
LOCATIONS
,並列出環境所在的地區 ID 清單PROJECT_ID
,其中包含環境所在的專案 IDENVIRONMENT_ID
,並換成要檢查快照作業的環境 ID
範例:
gcloud composer operations list \
--locations us-central1 \
--filter="metadata.operationType=SAVE_SNAPSHOT AND
metadata.resource=projects/my-project/locations/us-central1/environments/my-environment"
--format yaml
災難發生後
發生災害後,請按照下列步驟復原主要環境。
(僅限冷 DR) 建立容錯移轉環境
按照「建立容錯移轉環境」一節中的說明操作。
停止主要環境執行 DAG
盡可能停止主要環境執行 DAG:
- 如果主要環境仍可存取,請暫停所有 DAG。
- 如果可以存取主要環境的值區,請將所有 DAG 從環境的值區移出,或移至主要環境值區中
/dags
以外的資料夾。
將快照載入容錯移轉環境
將主要環境的快照載入容錯移轉環境。
快照載入至容錯移轉環境後,系統會排定及執行工作,就像主要環境在建立快照後未執行任何工作一樣。不過,主要環境可能已執行部分工作。容錯移轉環境無法辨識哪些工作是在建立快照後和發生災害前執行。因此,部分工作可能會執行兩次 (主要和容錯移轉環境都會執行)。建議所有工作都應為冪等,且排定的快照應每兩小時建立一次。
(如有需要) 調整容錯移轉環境的設定
在某些情況下,將主要環境的快照載入容錯移轉環境後,您可能會想變更容錯移轉環境的設定。
舉例來說,在冷 DR 情境中,您可能需要在容錯移轉環境中使用另一組 Airflow 環境變數。再舉一例,在暖 DR 情境中,您可能需要在 Airflow UI 中授予使用者權限,讓他們存取容錯移轉環境。
您可以手動進行這些變更,也可以準備含有指令的 Shell 指令碼,透過執行 gcloud composer environment update
指令變更容錯移轉環境的設定。
決定如何處理主要環境
有時,主要環境無法連線但仍可運作,或運作不正常,也可能導致災害發生。舉例來說,您無法透過網路存取主要環境,因為基礎架構發生故障。再舉一個例子,環境運作時發生一些錯誤或容量減少,但仍會執行部分 DAG。
如果原始環境仍在執行,即使已建立新環境做為替代方案,仍可能產生與 Cloud Composer 或透過 DAG 存取其他服務直接相關的費用。這個環境仍可執行部分 DAG,因此部分作業可能會執行兩次:一次是在仍在執行的主要環境中,另一次是在載入快照後的容錯移轉環境中。
主要環境存在,但無法正常運作
如果已復原所有相關資料,即可刪除主要環境。舉例來說,您可能想復原環境快照中未包含的資料,例如網路設定,或是 /dags
和 /plugins
資料夾以外的環境值區內容。
如果主要環境恢復正常運作
如果主要環境只是暫時無法存取,之後恢復正常,您可以選擇下列做法:
- 繼續使用容錯移轉環境。
- 返回主要環境。
如要繼續使用容錯移轉環境,請按照下列步驟操作:
- 如果主要環境仍執行 DAG,請盡快暫停這些 DAG。
- 確認已復原所有相關資料,然後刪除主要環境。
- 針對容錯移轉環境重複執行災害復原準備步驟,例如設定定期快照。
如要返回主要環境,請按照下列步驟操作:
- 暫停容錯移轉環境中的所有 DAG。
- 等待容錯移轉環境中的所有 DAG 執行作業完成,或停止這些作業。
- 儲存容錯移轉環境的快照。
- 將這個快照載入主要環境。
- 在主要環境中取消暫停 DAG。
- 視需要刪除容錯移轉環境。