配置计划快照

Cloud Composer 1 |Cloud Composer 2 |Cloud Composer 3

本页面介绍了如何配置环境以在各可用区上保存快照, 时间表。

如需详细了解环境快照的运作方式以及如何手动保存快照,请参阅保存和加载快照

计划快照的运作方式

启用计划快照后,Cloud Composer 会定期 会将您的环境的快照保存到 Cloud Storage 存储桶。

如果您手动创建快照,Cloud Composer 会将快照保存在 默认存储在环境的存储桶中对于计划快照,我们 建议将快照保存在单独的存储分区中。这样,您就可以设置 权限和生命周期配置。一个存储分区可以容纳 多个环境中的快照,您还可以创建存储分区, 跨区域实现冗余

准备工作

  • 如需详细了解快照要求和限制,请参阅保存和加载快照

  • Cloud Composer 在 2.0.32 及更高版本中支持定期快照。2.0.9 及更高版本支持环境快照。

为计划快照创建存储桶

为计划快照创建存储桶。考虑如何 您希望使用环境快照如果它属于 灾难恢复计划,然后使用 跨区域冗余的存储桶 另一个区域位于某个存储分区中 完全区域性中断否则,与环境位于同一区域的存储桶可能更合适,这样一来,您就可以降低在不同区域之间传输数据的费用。

配置存储桶的权限

配置以下权限:

  • 您的环境的服务账号必须已读取 以及写入权限例如,Storage Object Admin 角色具有此类权限。

  • 用户账号无需拥有任何其他存储桶权限 从该文件加载快照,除非您想查看 Google Cloud 控制台中的存储分区。在这种情况下,用户账号必须已读取 该存储桶的权限。

为存储桶设置生命周期配置

为节省存储费用,您可以配置用于删除环境的规则 一段时间后截取的快照

例如,如需自动删除保留时长超过 30 天的快照,请使用以下命令:

  1. 为存储桶设置生命周期配置
  2. 指定删除对象操作。
  3. 选择存在时间,选择 30 天作为条件。

为您的环境启用快照时间表

控制台

  1. 在 Google Cloud 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 转到环境配置标签页。

  4. 依次点击恢复配置 > 快照时间表,然后点击修改。系统随即会打开快照时间表窗格。

  5. 快照时间表窗格中,选择根据指定的时间表定期创建快照

  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 beta 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 beta 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,世界协调时间 +01):

      // PATCH https://composer.googleapis.com/v1beta1/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 控制台中,前往环境页面。

    转到“环境”

  2. 在环境列表中,点击您的环境名称。环境详情页面会打开。

  3. 转到环境配置标签页。

  4. 依次点击恢复配置 > 快照时间表,然后点击修改。系统随即会打开快照时间表窗格。

  5. 快照时间表窗格中,选择不自动创建快照

gcloud

更新您的环境配置。--disable-scheduled-snapshot-creation 参数会停用定期快照。

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

您需要将其中的:

  • ENVIRONMENT_NAME 替换为环境的名称。
  • LOCATION 替换为环境所在的区域。

示例:

gcloud beta 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/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.recoveryConfig.scheduledSnapshotsConfig.enabled
{
"config": {
  "recoveryConfig": {
    "scheduledSnapshotsConfig": {
      "enabled": false
    }
  }
}
}

Terraform

要停用计划快照,请设置 enabled 字段(位于 将 scheduled_snapshots_config 块转换为 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
    }
  }
}

后续步骤