本页详细介绍了如何使用标记自动备份 Compute Engine 实例。
为新的 Compute Engine 实例配置备份
Compute Engine 实例是托管在 Google Cloud上的虚拟机。 每个实例都将数据存储在附加到该实例的永久性磁盘上。您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Compute Engine API 创建实例或创建代管式实例组。
如需了解详情,请参阅 Compute Engine。
自动备份的前提条件
在开始自动备份 Compute Engine 实例之前,请先阅读以下程序,为备份做好准备:
设置 Backup and DR Service 并创建备份方案模板后,您可以使用标记将备份方案模板应用于 Compute Engine 实例,从而自动保护这些实例。
权限
如需为 Compute Engine 资源创建、更新和删除标记定义,您需要拥有 Tag Administrator
角色。如需详细了解 tagUser
角色,请参阅所需权限。
如需使用动态标记来备份 Compute Engine 实例,您必须向 Compute Engine 项目中的备份保险库服务代理授予 Backup and DR Compute Engine Operator (roles/backupdr.computeEngineOperator
) IAM 角色。
管理动态保护标记
如需创建、更新和删除动态保护标记,您需要拥有适当的权限,确保您已获分配以下角色之一:
Backup and DR Admin
Backup and DR Backup User
Backup and DR User V2
Project Editor
Project Owner
包含以下权限的自定义角色:
所需权限
backupdr.managementServers.listDynamicProtection
backupdr.managementServers.getDynamicProtection
backupdr.managementServers.createDynamicProtection
backupdr.managementServers.deleteDynamicProtection
compute.instances.listEffectiveTags
详细了解 Backup and DR Service 角色。
使用标记自动应用备份方案模板
本部分将帮助您使用标记自动将备份方案应用于 Compute Engine 实例。首先,在管理控制台中创建备份方案到标记的映射。然后,您可以通过 Identity and Access Management (IAM) 使用在管理控制台中分配的相同值来创建标记。
创建动态保护标记值
按照以下说明创建可用于 Compute Engine 实例的动态保护标记值:
在备份和灾难恢复管理控制台中,点击备份方案下拉菜单,然后选择动态保护标记。
点击创建动态保护标记。
输入符合以下命名要求的唯一标记值。
从应用类型列表中,选择 Compute Engine。
选择要与此标记值相关联的相应模板和配置文件。
点击保存。系统会创建一个动态保护标记值。
创建动态保护标记
按照以下说明创建动态保护标记,以附加到 Compute Engine 实例,从而实现自动化保护:
如需创建、更新和删除标记定义,您需要拥有 Tag Administrator 角色或具备特定权限的其他角色。
在 Google Cloud 控制台中打开标记页面。
在页面顶部的范围选择器中,选择要在哪个组织或项目下创建标记键。
点击
创建。在标记键框中,输入
backupdr-dynamicprotect
作为标记键。这是成功实现自动化的必要步骤。请注意拼写错误,并务必添加连字符。可选:在标记键说明框中,输入标记键的说明。
点击
添加值,然后输入您刚刚创建的每个标记值。
在标记值框中,输入标记值的显示名。它会成为标记的命名空间名称的一部分。
在标记值说明框中,输入与此标记值关联的模板和配置文件的说明。
添加完标记值后,点击创建标记键。
向资源添加动态保护标记
现在,您已创建动态保护标记值并将其与动态保护标记相关联,下一步是将标记分配给 Compute Engine 实例。如果您的实例在逻辑组内受到保护,基于标记的保护将无法正常运行。移除逻辑群组,然后尝试使用动态保护。
您可以按照以下说明将动态保护标记附加到 Compute Engine 实例:
在 Google Cloud 控制台中,前往 Compute Engine > 虚拟机实例页面。
在名称列中,点击要为其添加标记的虚拟机的名称。
在虚拟机实例详情页面中,完成以下步骤:
- 点击修改。
- 在基本部分中,点击管理标记并为实例添加所需的标记。
选择
backupdr-dynamicprotect:
键和与您在 Google Cloud 控制台中设置的模板和配置文件对应的标记值。点击保存。
在创建资源期间向资源添加标记
在某些情况下,您可能需要在创建资源期间标记资源,而不是在创建资源之后。
控制台
在 Google Cloud 控制台中,前往虚拟机实例页面。
选择您的项目并点击继续。
点击创建实例。
点击管理标记和标签。
点击添加标记。
按照侧边栏中的说明选择要添加到实例的
backupdr-dynamicprotect
。点击保存。
完成创建并启动虚拟机实例中的其他步骤,以完成实例的创建。
gcloud
如需使用 Google Cloud CLI 或 API,请按照 SDK 文档执行以下操作:
Terraform
使用以下 Terraform 模板开始使用动态保护标记。此模板假定您尚未在 Google Cloud 控制台中创建任何动态保护标记密钥,并将为您设置该密钥。 该模板会创建一个新的 Compute Engine 实例,并将其绑定到动态保护标记。您可以等待预定的动态保护作业在当地时间凌晨 4:00 或下午 4:00 运行,以便使更改生效;也可以按照运行手动自动保护中的步骤按需运行动态保护作业。
variable "project_id" {
description = "The ID of the existing Google Cloud project"
type = string
}
variable "region" {
description = "The Google Cloud region where demo-instance should be created"
type = string
}
variable "zone" {
description = "The Google Cloud zone where demo-instance should be created"
type = string
}
provider "google" {
project = var.project_id
region = var.region
zone = var.zone
}
data "google_project" "project" {
project_id = var.project_id
}
# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_key
resource "google_tags_tag_key" "key" {
parent = "projects/${var.project_id}"
short_name = "backupdr-dynamicprotect"
description = "Tag key for Dynamic Protection."
}
# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_value
resource "google_tags_tag_value" "value" {
parent = "tagKeys/${google_tags_tag_key.key.name}"
short_name = "backupdr-gold" # This value should be present in the "Management Console UI" > "Backup Plans" > "Dynamic Protection Tags"
description = "Tag value for gold plan."
}
# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance
# Ensure not to define tag in "resource_manager_tags" block while creating VM instance. It'll destroy the VM
# when tag value is changed/removed later. Instead define a separate tag binding using "google_tags_tag_binding"
# or "google_tags_location_tag_binding" resource. It'll modify just tag binding and VM instance won't be affected.
resource "google_compute_instance" "vm_instance" {
name = "demo-instance"
machine_type = "e2-micro"
zone = var.zone
boot_disk {
initialize_params {
image = "debian-cloud/debian-11"
}
}
network_interface {
network = "default"
access_config {
// Ephemeral public IP
}
}
}
# Reference: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_tags_location_tag_binding
resource "google_tags_location_tag_binding" "binding" {
parent = "//compute.googleapis.com/projects/${data.google_project.project.number}/zones/${var.zone}/instances/${google_compute_instance.vm_instance.instance_id}"
tag_value = "tagValues/${google_tags_tag_value.value.name}"
location = var.zone
}
# Reference for Tag bindings at project/org level: https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/tags_tag_binding
将标记与资源分离
您可以通过删除标记绑定资源,从资源分离标记。
如需查看有关如何分离标记的说明,请参阅 Resource Manager 文档中的从资源分离标记。
控制台
在 Google Cloud 控制台中,前往虚拟机实例页面。
选择您的项目并点击继续。
在名称列中,点击要为其添加标记的虚拟机的名称。
在虚拟机实例详情页面中,完成以下步骤:
点击修改。
在基本部分中,点击管理标记并为实例移除
backupdr-dynamicprotect
。点击保存。
gcloud
如需使用 Google Cloud CLI,请按照文档使用 Google Cloud CLI 从资源中分离标记中的说明操作。
运行手动自动保护
虽然保护引擎每天会在当地时间凌晨 4:00 和下午 4:00 运行,但您也可以使用以下命令步骤按需运行动态保护引擎:
输入以“https://bmc-”开头且以“.com”结尾的值,设置管理控制台端点。例如
https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com
。export MC_ENDPOINT="MC_ENDPOINT_edited_value"
生成不记名令牌:
echo "Generating a new bearer token..." export BEARER_TOKEN=$(gcloud auth print-access-token) echo "Bearer token generated: BEARER_TOKEN=$BEARER_TOKEN"
获取新的会话 ID:
echo "Generating a new session id..." export SESSION_RESPONSE=$(curl -XPOST -H "Authorization: Bearer $BEARER_TOKEN" -d {} "$MC_ENDPOINT/actifio/session" 2>&-) export SESSION_ID=$(echo $SESSION_RESPONSE | jq -r '.session_id') if [ -z ${SESSION_ID} ] then echo "Issue with generating a new session id. Response: $SESSION_RESPONSE"; return 1; fi echo "Session id generated: SESSION_ID=$SESSION_ID"
设置端点、生成不记名令牌并获取会话 ID 后,您可以在会话 ID 过期前触发动态保护作业,时长为一小时。
触发动态保护作业
动态保护作业会使用所有 Compute Engine 实例的当前标记来更新这些实例,并根据这些标记分配备份方案。触发的作业可能需要几分钟时间,具体取决于工作负载中待处理的更改数量。
echo "Triggering dynamic protection job.." curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPOST -d '{}' "$MC_ENDPOINT/actifio/dynamicprotection/job/gceinstance" echo "Dynamic protection job triggered."
将动态保护与 Resource Manager 搭配使用
您可以将动态保护标记与 Resource Manager 搭配使用,从而在更高的组织级别自动保护 Compute Engine 实例。使用 Resource Manager 在项目级或更高级别标记资源,以确保所有资源都继承保护设置。详细了解标记继承。
将手动保护迁移到动态保护
如果您打算将已受保护的资源迁移为使用基于标记的动态保护,则必须在项目中启用迁移标志。启用迁移后,任何手动保护的实例现在都可以使用动态保护。添加标记和资源会自动根据标记进行保护,并移除现有的手动保护。
Bash
运行以下命令。
输入以“https://bmc-”开头且以“.com”结尾的值,设置管理控制台端点。例如
https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com
。#!/bin/bash export MC_ENDPOINT="MC_ENDPOINT_edited_value"
启用迁移。
curl -H "Authorization: Bearer $BEARER_TOKEN" -H "backupdr-management-session: Actifio $SESSION_ID" -H "Content-Type: application/json" -XPATCH -d '{ "enableMigrationToTagBasedProtection":"true"}' "$MC_ENDPOINT/actifio/dynamicprotection/jobconfig"
管理控制台
如需启用手动保护的 Compute Engine 实例向基于标记的保护的迁移,请按照以下步骤操作:
- 将启用向基于标记的保护功能的迁移切换为开启状态
- 确认“启用迁移”对话框。手动保护的 Compute Engine 实例将使用虚拟机上定义的标记重新保护。
如需停用将手动保护的 Compute Engine 实例迁移到基于标记的保护,请按照以下步骤操作:
- 将启用基于代码的保护功能的迁移切换为关闭状态。
- 确认“停用迁移”对话框。此标志会禁止将手动保护的 Compute Engine 实例迁移到基于标记的保护。
事件和通知
动态保护引擎运行后,您可以从监控事件中查看进度。执行动态保护操作后,管理控制台会收到摘要通知。如果需要用户采取行动,系统会发送错误通知。
最佳做法
动态保护功能可能会增加正在运行的备份作业数量和使用的存储空间量。为获得最佳效果,请考虑以下事项:
增加备份时间范围。6 到 10 小时的时间窗口通常足以让所有作业顺利完成。
恢复的虚拟机会沿用源虚拟机的相同保护标记和相同备份计划,但保护类型会从基于标记的保护更改为用户启动的保护。资源将继续受到沿用的备份方案的保护。如需将保护类型改回基于标记的保护,您可以移除沿用的保护备份方案,并按需触发动态保护作业,或等待其下次按计划执行,以便再次为应用分配基于标记的保护。
任何现有主机或新创建的主机上的已挂载虚拟机不会沿用源虚拟机的相同保护标记,因此在挂载操作后不会自动受到保护。如果需要保护新装载的虚拟机,您可以向新虚拟机应用与来源虚拟机类似的标记绑定。