自动保护新的 Compute Engine 实例

本页面简要介绍了如何使用标记为 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 角色,请参阅所需权限

管理动态保护代码

如需创建、更新和删除动态保护标记,您需要拥有以下角色之一:

  • 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 实例搭配使用的动态保护标记值:

  1. 在管理控制台中,点击备份方案下拉菜单,然后选择动态保护标记

  2. 点击创建动态保护代码

  3. 输入符合以下命名要求的唯一标记值

  4. 应用类型列表中,选择 Compute Engine

  5. 选择要与此代码值关联的相应模板配置文件

  6. 点击保存。系统会创建一个动态保护标记值。

创建动态保护代码

按照以下说明创建动态保护标记,以便将其附加到 Compute Engine 实例以实现自动保护:

  1. 如需创建、更新和删除代码定义,您需要拥有“代码管理员”角色或具备特定权限的其他角色。

  2. 在 Google Cloud 控制台中打开代码页面。

    打开“标记”页面

  3. 在页面顶部的范围选择器中,选择要在其下创建代码键的组织或项目。

  4. 点击 创建

  5. 标记键框中,输入 backupdr-dynamicprotect 作为标记键。这是确保自动化操作成功的必不可少的步骤。请注意拼写错误,并务必添加连字符。

  6. 可选:在标记键说明框中,输入标记键的说明。

  7. 点击 Add value(添加值),然后输入您刚刚创建的每个标记值。

  1. 标记值框中,输入标记值的显示名。它会成为标记的命名空间名称的一部分。

  2. 标记值说明框中,输入与此标记值关联的模板和配置文件的说明。

  3. 添加完标记值后,点击创建标记键

向资源添加动态保护代码

现在,您已创建动态保护标记值并将其关联到动态保护标记,下一步是向 Compute Engine 实例分配标记。如果您的实例在逻辑组中受保护,基于代码的保护功能将不起作用。移除逻辑组,然后尝试使用动态保护。

开始之前,请为您的角色启用适当的权限,确保您已分配以下任一角色:

  • Backup and DR Admin

  • Backup and DR Backup User

  • Backup and DR User V2

  • Project Editor

  • Project Owner

您可以按照以下说明将动态保护代码附加到 Compute Engine 实例:

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 选择您的项目并点击继续

  3. 名称列中,点击要为其添加标记的虚拟机的名称。

  4. 虚拟机实例详情页面中,完成以下步骤:

    1. 点击修改
    2. 基本部分中,点击管理标记并为实例添加所需的标记。
  5. 选择 backupdr-dynamicprotect: 键和一个对应的代码值,该值应与您在 Google Cloud 控制台中设置的模板和配置文件对应。

  6. 点击保存

在创建资源期间向资源添加标记

在某些情况下,建议您在创建资源期间标记资源,而不是在创建资源之后。

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 选择您的项目并点击继续

  3. 点击创建实例

  4. 点击管理标记和标签

  5. 点击添加标记

  6. 按照侧边栏中的说明选择要添加到实例的 backupdr-dynamicprotect

  7. 点击保存

  8. 完成创建和启动虚拟机实例中的其他步骤,以完成实例的创建。

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 文档中的从资源分离标记

控制台

  1. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到虚拟机实例

  2. 选择您的项目并点击继续

  3. 名称列中,点击要为其添加标记的虚拟机的名称。

  4. 虚拟机实例详情页面中,完成以下步骤:

  5. 点击修改

  6. 基本部分中,点击管理标记并为实例移除 backupdr-dynamicprotect

  7. 点击保存

gcloud

如需使用 Google Cloud CLI,请按照文档中的说明使用 Google Cloud CLI 将代码从资源中分离

手动运行自动保护

虽然保护引擎每天都会在当地时间凌晨 4:00 和下午 4:00 运行,但您也可以使用以下命令步骤按需运行动态保护引擎:

  1. 输入以“https://bmc-”开头且以“.com”结尾的值,以设置管理控制台端点。例如 https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com

    export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
  2. 生成 Bearer 令牌:

    echo "Generating a new bearer token..."
    export BEARER_TOKEN=$(gcloud auth print-access-token)
    echo "Bearer token generated: BEARER_TOKEN=$BEARER_TOKEN"
    
  3. 获取新的会话 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"
    

    设置端点、生成 Bearer 令牌并获取会话 ID 后,您可以触发动态保护作业,持续一小时,直到会话 ID 过期。

  4. 触发动态保护作业

    动态保护作业会使用所有 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

运行以下命令。

  1. 输入以“https://bmc-”开头且以“.com”结尾的值,以设置管理控制台端点。例如 https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com

     #!/bin/bash
    
     export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
    
  2. 启用迁移。

    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 实例迁移到基于标记的保护,请按以下步骤操作:

  1. 启用基于代码的保护迁移切换为开启状态
  2. 确认“启用迁移”对话框。系统会使用在虚拟机上定义的标记重新保护手动保护的 Compute Engine 实例。

如需停用将手动保护的 Compute Engine 实例迁移到基于标记的保护,请按以下步骤操作:

  1. 启用基于代码的保护迁移切换为关闭状态。
  2. 确认“停用迁移”对话框。这会停用将手动保护的 Compute Engine 实例迁移到基于标记的保护。

事件和通知

动态保护引擎运行后,您可以通过监控事件查看进度。执行动态保护操作后,管理控制台会收到摘要通知。如果需要用户执行操作,系统会发送错误通知。

最佳做法

动态保护功能可能会增加运行的备份作业数量和使用的存储空间量。为了获得最佳效果,请考虑以下事项:

  • 增加备份时间范围。6 到 10 小时的时间范围有助于确保所有作业都能运行完毕。

  • 在设置代码之前,请考虑您的家电类型。为了取得最佳效果,请确保所有标记的 Compute Engine 实例都位于运行以下设备类型的备份/恢复设备上:适用于 Compute Engine 虚拟机的标准设备类型或 SAP HANA 数据库。

  • 恢复的虚拟机将保留与源虚拟机相同的保护标记以及相同的备份方案,但保护类型将从基于标记的保护更改为用户发起的保护。系统会继续使用保留的备份方案来保护该资源。如需将保护类型改回基于标记的保护,您可以移除沿用保护备份方案,并按需触发动态保护作业,或等待其下次按计划执行,以便为应用重新分配基于标记的保护。

  • 任何现有主机或新创建的主机上已挂载的虚拟机都不会保留与源虚拟机相同的保护标记,因此在挂载操作之后,该虚拟机不会自动受到保护。如果需要保护新挂载的虚拟机,您可以对新虚拟机应用与来源虚拟机类似的标记绑定。