設定排程快照

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁面說明如何設定環境,以便依時程儲存快照。

如要進一步瞭解環境快照的運作方式,以及如何手動儲存快照,請參閱「儲存及載入快照」。

排程快照的運作方式

啟用根據排程建立快照的功能後,Cloud Composer 會定期將環境快照儲存至 Cloud Storage 值區,

如果您手動建立快照,Cloud Composer 預設會將快照儲存在環境的值區中。對於排程快照,建議您將快照儲存在個別值區中。這樣一來,您就能為這個值區設定權限和生命週期設定。一個儲存格可容納多個環境的快照,您也可以建立跨區域備援的儲存格。

事前準備

  • 如要進一步瞭解快照的相關規定和限制,請參閱「儲存及載入快照」一文。

  • Cloud Composer 在 2.0.32 以上版本中支援排程快照。2.0.9 以上版本支援環境快照。

建立用於排程快照的值區

建立值區,用於排程快照。請考量您要如何使用環境快照。如果這是災難復原計畫的一部分,請使用跨區域備援的儲存格,或是位於不同區域的儲存格,這樣一來,即使整個區域發生停機,您也能存取資料。否則,與環境位於相同區域的值區可能更適合,因為在這種情況下,您可以減少在區域間轉移資料的費用。

設定值區的權限

設定下列權限:

  • 環境的服務帳戶必須具備此值區的讀取和寫入權限。舉例來說,Storage 物件管理員角色就具備這類權限。

  • 除非您想從 Google Cloud 控制台查看值區的內容,否則使用者帳戶不需要任何額外的值區權限,才能從值區載入快照。在這種情況下,使用者帳戶必須對儲存桶擁有讀取權限。

設定值區的生命週期設定

為了節省儲存空間費用,您可以設定規則,在一段時間後刪除環境快照。

例如,如要自動刪除超過 30 天的快照,請按照下列步驟操作:

  1. 為值區設定生命週期設定
  2. 指定「刪除物件」動作。
  3. 選取「Age」(年齡) 和 30 天做為條件。

為環境啟用快照排程

主控台

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 在「復原設定」>「快照時間表」中,按一下「編輯」。系統會開啟「Snapshot schedule」(快照排程) 窗格。

  5. 在「Snapshot schedule」(快照排程) 窗格中,選取「Create snapshots periodically, according to the specified schedule」(按照指定的排程時間定期建立快照)

  6. 在「排程頻率」下拉式清單中,選取快照的每日、每週或自訂時間間隔。

    您可以使用 unix-cron 格式指定自訂排程。例如,如要每 30 分鐘儲存快照,請指定 */30 * * * *

  7. 在「快照位置」欄位中,選取要儲存快照的資料夾。

gcloud

更新環境設定。下列引數定義排程快照的參數:

  • --enable-scheduled-snapshot-creation 可啟用排定快照。
  • --snapshot-location 會指定要儲存快照的值區資料夾。
  • --snapshot-creation-schedule 會以 Unix-Cron 格式指定環境快照的擷取頻率。例如,如要每 30 分鐘建立快照,請指定 */30 * * * *

  • --snapshot-schedule-timezone 會定義時程的時區。這個值是時間偏移量,不會考量日光節約時間變更。有效值介於 UTC-12UTC+12 之間。例如:UTCUTC-01UTC+03

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --enable-scheduled-snapshot-creation \
    --snapshot-location "gs://SNAPSHOTS_FOLDER" \
    --snapshot-creation-schedule "CRON_EXPRESSION" \
    --snapshot-schedule-timezone "TIME_ZONE"

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。
  • SNAPSHOTS_FOLDER 與 URI 值區資料夾,用於儲存快照。
  • CRON_EXPRESSION 和排程,格式為 Unix-Cron
  • TIME_ZONE 替換為排程的時區。

範例 (每天 4:00,UTC+01):

gcloud composer environments update example-environment \
    --location us-central1 \
    --enable-scheduled-snapshot-creation \
    --snapshot-location "gs://example-bucket/environment_snapshots" \
    --snapshot-creation-schedule "0 4 * * *" \
    --snapshot-schedule-timezone "UTC+01"

API

建構 environments.patch API 要求。

在這個要求中:

  1. updateMask 參數中,指定 config.recoveryConfig.scheduledSnapshotsConfig 遮罩來取代現有的排程快照設定。

  2. 在要求主體中指定快照的設定:

    {
      "config": {
        "recoveryConfig": {
          "scheduledSnapshotsConfig": {
            "enabled": true,
            "snapshot_location": "gs://SNAPSHOTS_FOLDER",
            "snapshot_creation_schedule": "CRON_EXPRESSION",
            "time_zone": "TIME_ZONE"
          }
        }
      }
    }
    

    取代:

    • SNAPSHOTS_FOLDER 與 URI 值區資料夾,用於儲存快照。
    • CRON_EXPRESSION 和排程,格式為 Unix-Cron

    • TIME_ZONE 替換為排程的時區。這個值是時間偏移,不受日光節約時間變更影響。有效值介於 UTC-12UTC+12 之間。例如:UTCUTC-01UTC+03

    範例 (每天 4:00,UTC+01):

      // PATCH https://composer.googleapis.com/v1/projects/example-project/
      // locations/us-central1/environments/example-environment?updateMask=
      // config.recoveryConfig.scheduledSnapshotsConfig
        {
          "config": {
            "recoveryConfig": {
              "scheduledSnapshotsConfig": {
                "enabled": true,
                "snapshot_location": "gs://example-bucket/environment_snapshots",
                "snapshot_creation_schedule": "0 4 * * *",
                "time_zone": "UTC+01"
              }
            }
          }
        }
    

Terraform

recovery_config 區塊中的 scheduled_snapshots_config 會定義排程快照的參數:

  • enabled 可啟用排定快照。
  • snapshot_location 會指定要儲存快照的值區資料夾。
  • snapshot_creation_schedule 會以 Unix-Cron 格式指定環境快照的擷取頻率。例如,如要每 30 分鐘建立快照,請指定 */30 * * * *
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  recovery_config {
    scheduled_snapshots_config {
      enabled = true
      snapshot_location = "gs://SNAPSHOTS_FOLDER"
      snapshot_creation_schedule = "CRON_EXPRESSION"
      time_zone = "TIME_ZONE"
    }
  }
}

取代:

  • SNAPSHOTS_FOLDER 與 URI 值區資料夾,用於儲存快照。
  • CRON_EXPRESSION 和排程,格式為 Unix-Cron

  • TIME_ZONE 替換為排程的時區。這個值是時間偏移,不受日光節約時間變更影響。有效值介於 UTC-12UTC+12 之間。例如:UTCUTC-01UTC+03

範例 (每天 4:00,UTC+01):

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  recovery_config {
    scheduled_snapshots_config {
      enabled = true
      snapshot_location = "gs://example-bucket/environment_snapshots"
      snapshot_creation_schedule = "0 4 * * *"
      time_zone = "UTC+01"
    }
  }
}

停用定期快照

如果您停用排程快照,系統不會修改或移除所有已拍攝的現有快照。這些快照會保留在儲存的位置。

主控台

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 在「復原設定」>「快照時間表」中,按一下「編輯」。系統會開啟「Snapshot schedule」(快照排程) 窗格。

  5. 在「快照排程」窗格中,選取「不要自動建立快照」

gcloud

更新環境設定。--disable-scheduled-snapshot-creation 引數會停用排定的快照。

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-scheduled-snapshot-creation

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。

範例:

gcloud composer environments update example-environment \
    --location us-central1 \
    --disable-scheduled-snapshot-creation

API

建構 environments.patch API 要求。

在這個要求中:

  1. updateMask 參數中,指定 config.recoveryConfig.scheduledSnapshotsConfig.enabled 遮罩來取代 enabled 欄位的值。

  2. 在要求主體中指定新值:

    {
      "config": {
        "recoveryConfig": {
          "scheduledSnapshotsConfig": {
            "enabled": false
          }
        }
      }
    }
    

範例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.recoveryConfig.scheduledSnapshotsConfig.enabled
{
"config": {
  "recoveryConfig": {
    "scheduledSnapshotsConfig": {
      "enabled": false
    }
  }
}
}

Terraform

如要停用排程快照,請將 scheduled_snapshots_config 區塊中的 enabled 欄位設為 false

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  recovery_config {
    scheduled_snapshots_config {
      enabled = false
    }
  }
}

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  recovery_config {
    scheduled_snapshots_config {
      enabled = false
      // Other scheduled snapshots parameters
    }
  }
}

後續步驟