設定排程快照

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer„�

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

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

排程快照的運作方式

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

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

事前準備

建立排程快照的值區

建立 bucket 來存放排程快照。請考量您要如何使用環境快照。如果是災難復原計畫的一部分,請使用跨區域備援的 bucket,或不同區域的 bucket,這樣即使區域全面中斷,您也能存取資料。否則,與環境位於相同區域的 bucket 可能更適合,這樣一來,您就能減少區域間資料移轉的費用。

設定 bucket 的權限

設定下列權限:

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

  • 使用者帳戶不需要任何額外權限,即可從值區載入快照,除非您想從 Google Cloud 控制台查看值區內容。在這種情況下,使用者帳戶必須具備該儲存空間的讀取權限。

設定值區的生命週期設定

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

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

  1. 為 bucket 設定生命週期設定
  2. 指定「刪除物件」動作。
  3. 選取「年齡」,並將條件設為 30 天。

為環境啟用快照排程

主控台

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

    前往「環境」

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

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

  4. 在「復原設定」>「快照排程」中,按一下「編輯」。「Snapshot schedule」(快照排程) 窗格隨即開啟。

  5. 在「快照排程」窗格中,選取「按照指定的排程時間定期建立快照」

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

    您可以使用 unix-cron 格式指定自訂時間表。舉例來說,如要每 30 分鐘儲存一次快照,請指定 */30 * * * *

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

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. 在「Snapshot schedule」(快照排程) 窗格中,選取「Do not create snapshots automatically」(不要自動建立快照)

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
    }
  }
}

後續步驟