새 Compute Engine 인스턴스 보호 자동화

이 페이지에서는 태그를 사용하여 Compute Engine 인스턴스의 백업을 자동화하는 방법을 자세히 설명합니다.

새 Compute Engine 인스턴스의 백업 구성

Compute Engine 인스턴스는 Google Cloud에서 호스팅되는 VM입니다. 각 인스턴스는 인스턴스에 연결된 영구 디스크에 데이터를 저장합니다. Google Cloud 콘솔, Google Cloud CLI 또는 Compute Engine API를 사용하여 인스턴스를 만들거나 관리형 인스턴스 그룹을 만들 수 있습니다.

자세한 내용은 Compute Engine을 참고하세요.

백업 자동화의 필수 요건

Compute Engine 인스턴스의 백업을 자동화하기 전에 다음 절차를 읽고 백업을 준비하세요.

백업 및 DR 서비스를 설정하고 백업 계획 템플릿을 만든 후 태그를 사용하여 인스턴스에 백업 계획 템플릿을 적용하여 Compute Engine 인스턴스의 보호를 자동화할 수 있습니다.

권한

Compute Engine 리소스의 태그 정의를 생성, 업데이트, 삭제하려면 Tag Administrator 역할이 필요합니다. tagUser 역할에 대한 자세한 내용은 필수 권한을 참고하세요.

동적 태그를 사용하여 Compute Engine 인스턴스를 백업하려면 Compute Engine 프로젝트 내의 백업 볼트 서비스 에이전트에 백업 및 DR Compute Engine 작업자(roles/backupdr.computeEngineOperator) IAM 역할을 부여해야 합니다.

동적 보호 태그 관리

동적 보호 태그를 생성, 업데이트, 삭제하려면 역할에 적절한 권한이 있어야 하며 다음 역할 중 하나가 할당되어 있어야 합니다.

  • 백업 및 DR 관리자

  • 백업 및 DR 백업 사용자

  • 백업 및 DR 사용자 V2

  • 프로젝트 편집자

  • 프로젝트 소유자

  • 다음 권한이 포함된 맞춤 역할

필수 권한

  • backupdr.managementServers.listDynamicProtection
  • backupdr.managementServers.getDynamicProtection
  • backupdr.managementServers.createDynamicProtection
  • backupdr.managementServers.deleteDynamicProtection
  • compute.instances.listEffectiveTags

백업 및 DR 서비스 역할에 대해 자세히 알아보세요.

태그를 사용하여 백업 계획 템플릿을 자동으로 적용

이 섹션에서는 태그를 사용하여 Compute Engine 인스턴스에 백업 계획을 자동으로 적용하는 방법을 설명합니다. 먼저 관리 콘솔에서 백업 계획을 태그에 매핑합니다. 그런 다음 관리 콘솔에 할당된 동일한 값을 사용하여 ID 및 액세스 관리 (IAM)를 통해 태그를 만듭니다.

동적 보호 태그 값 만들기

다음 안내에 따라 Compute Engine 인스턴스와 함께 사용할 수 있는 동적 보호 태그 값을 만드세요.

  1. 백업 및 DR 관리 콘솔에서 백업 계획 드롭다운 메뉴를 클릭하고 동적 보호 태그를 선택합니다.

  2. 동적 보호 태그 만들기를 클릭합니다.

  3. 다음 이름 지정 요구사항을 따르는 고유한 태그 값을 입력합니다.

  4. 애플리케이션 유형 목록에서 Compute Engine을 선택합니다.

  5. 이 태그 값과 연결할 해당 템플릿프로필을 선택합니다.

  6. 저장을 클릭합니다. 동적 보호 태그 값이 생성됩니다.

동적 보호 태그 만들기

다음 안내에 따라 보호를 자동화하기 위해 Compute Engine 인스턴스에 연결할 동적 보호 태그를 만드세요.

  1. 태그 정의를 생성, 업데이트, 삭제하려면 태그 관리자 역할이나 특정 권한이 포함된 다른 역할이 필요합니다.

  2. Google Cloud 콘솔에서 태그 페이지를 엽니다.

    태그 페이지 열기

  3. 페이지 상단의 범위 선택 도구에서 태그 키를 만들려는 조직 또는 프로젝트를 선택합니다.

  4. 만들기를 클릭합니다.

  5. 태그 키 상자에 backupdr-dynamicprotect를 태그 키로 입력합니다. 이는 자동화를 성공적으로 수행하기 위한 필수 단계입니다. 맞춤법 오류에 유의하고 하이픈을 포함해야 합니다.

  6. 선택사항: 태그 키 설명 상자에 태그 키에 대한 설명을 입력합니다.

  7. 값 추가를 클릭하고 방금 만든 각 태그 값을 입력합니다.

  1. 태그 값 상자에 태그 값의 표시 이름을 입력합니다. 이 이름은 태그의 네임스페이스 이름의 일부가 됩니다.

  2. 태그 값 설명 상자에 이 태그 값과 연결된 템플릿 및 프로필에 대한 설명을 입력합니다.

  3. 태그 값 추가를 완료했으면 태그 키 만들기를 클릭합니다.

리소스에 동적 보호 태그 추가

이제 동적 보호 태그 값을 만들고 동적 보호 태그에 연결했으므로 다음 단계는 Compute Engine 인스턴스에 태그를 할당하는 것입니다. 인스턴스가 논리 그룹 내에서 보호되는 경우 태그 기반 보호가 작동하지 않습니다. 논리적 그룹을 삭제하고 동적 보호를 사용해 보세요.

다음 안내에 따라 동적 보호 태그를 Compute Engine 인스턴스에 연결할 수 있습니다.

  1. Google Cloud 콘솔에서 Compute Engine > VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 이름 열에서 태그를 추가할 VM의 이름을 클릭합니다.

  3. VM 인스턴스 세부정보 페이지에서 다음 단계를 완료합니다.

    1. 수정을 클릭합니다.
    2. 기본 섹션에서 태그 관리를 클릭하고 인스턴스에 원하는 태그를 추가합니다.
  4. backupdr-dynamicprotect: 키와 Google Cloud 콘솔에서 설정한 템플릿 및 프로필에 매핑되는 해당 태그 값을 선택합니다.

  5. 저장을 클릭합니다.

리소스 생성 중에 리소스에 태그 추가

특정 시나리오에서는 리소스를 만든 후가 아닌 리소스를 생성하는 동안 리소스에 태그를 지정해야 할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

  3. 인스턴스 만들기를 클릭합니다.

  4. 태그 및 라벨 관리를 클릭합니다.

  5. 태그 추가를 클릭합니다.

  6. 측면 패널의 안내에 따라 인스턴스에 추가할 backupdr-dynamicprotect를 선택합니다.

  7. 저장을 클릭합니다.

  8. VM 인스턴스 만들기 및 시작의 다른 단계를 완료하여 인스턴스 만들기를 마칩니다.

gcloud

Google Cloud CLI 또는 API를 사용하려면 SDK 문서를 따라 다음을 수행하세요.

Terraform

다음 Terraform 템플릿을 사용하여 동적 보호 태그 사용을 시작하세요. 이 템플릿은 Google Cloud 콘솔에서 아직 동적 보호 태그 키를 만들지 않았다고 가정하고 이를 설정합니다. 템플릿은 새 Compute Engine 인스턴스를 만들고 이를 동적 보호 태그에 바인딩합니다. 예약된 동적 보호 작업이 오전 4시 또는 오후 4시(현지 시간)에 실행될 때까지 기다려 적용되도록 하거나 수동 자동 보호 실행의 단계에 따라 주문형 동적 보호 작업을 실행할 수 있습니다.

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 콘솔에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

  3. 이름 열에서 태그를 추가할 VM의 이름을 클릭합니다.

  4. VM 인스턴스 세부정보 페이지에서 다음 단계를 완료합니다.

  5. 수정을 클릭합니다.

  6. 기본 섹션에서 태그 관리를 클릭하고 인스턴스의 backupdr-dynamicprotect를 삭제합니다.

  7. 저장을 클릭합니다.

gcloud

Google Cloud CLI를 사용하려면 문서를 따라 Google Cloud CLI를 사용하여 리소스에서 태그를 분리하세요.

수동 자동 보호 실행

보호 엔진은 매일 오전 4시와 오후 4시(현지 시간)에 실행되지만 다음 명령 단계를 사용하여 동적 보호 엔진을 주문형으로 실행할 수도 있습니다.

  1. 'https://bmc-'로 시작하고 '.com'으로 끝나는 값을 입력하여 관리 콘솔 엔드포인트를 설정합니다. 예를 들면 https://bmc-PROJECT_NUMBER-GENERATED_ID-dot-REGION.backupdr.googleusercontent.com입니다.

    export MC_ENDPOINT="MC_ENDPOINT_edited_value"
    
  2. 베어러 토큰을 생성합니다.

    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"
    

    엔드포인트를 설정하고, 베어러 토큰을 생성하고, 세션 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로 동적 보호 사용

리소스 관리자와 함께 동적 보호 태그를 사용하여 더 높은 조직 수준에서 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 인스턴스는 VM에 정의된 태그를 사용하여 다시 보호됩니다.

수동으로 보호된 Compute Engine 인스턴스를 태그 기반 보호로 마이그레이션하지 않으려면 다음 단계를 따르세요.

  1. 태그 기반 보호로의 마이그레이션 사용 설정을 사용 중지 상태로 전환합니다.
  2. '마이그레이션 사용 중지' 대화상자를 확인합니다. 이렇게 하면 수동으로 보호된 Compute Engine 인스턴스가 태그 기반 보호로 마이그레이션되지 않습니다.

활동 및 알림

동적 보호 엔진이 실행된 후 이벤트 모니터링에서 진행 상황을 검토할 수 있습니다. 관리 콘솔은 동적 보호 작업을 실행한 후 요약 알림을 수신합니다. 사용자 작업이 필요한 경우 오류 알림이 전송됩니다.

권장사항

동적 보호를 사용하면 실행되는 백업 작업 수와 사용되는 스토리지 용량이 늘어날 수 있습니다. 최상의 결과를 얻으려면 다음 사항을 고려하세요.

  • 백업 기간을 늘립니다. 일반적으로 6~10시간의 기간이면 모든 작업이 완료될 수 있습니다.

  • 복원된 VM은 소스 VM과 동일한 보호 태그와 동일한 백업 계획을 전달하지만 보호 유형은 태그 기반 보호에서 사용자 시작 보호로 변경됩니다. 리소스는 이전된 백업 계획을 사용하여 계속 보호됩니다. 보호 유형을 태그 기반 보호로 다시 변경하려면 이전된 보호 백업 계획을 삭제하고 주문형 동적 보호 작업을 트리거하거나 다음 예약 실행을 기다려 애플리케이션에 태그 기반 보호가 다시 할당되도록 하면 됩니다.

  • 기존 호스트 또는 새로 생성된 호스트에 마운트된 VM은 소스 VM과 동일한 보호 태그를 전달하지 않으므로 마운트 작업 후 자동으로 보호되지 않습니다. 새로 마운트된 VM을 보호해야 하는 경우 소스 VM과 유사한 태그 바인딩을 새 VM에 적용하면 됩니다.