새 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 역할에 관한 자세한 내용은 필수 권한을 참고하세요.

동적 보호 태그 관리

동적 보호 태그를 만들고, 업데이트하고, 삭제하려면 다음 역할 중 하나가 있어야 합니다.

  • 백업 및 DR 관리자

  • 백업 및 DR 백업 사용자

  • 백업 및 DR 사용자 V2

  • 프로젝트 편집자

  • 프로젝트 소유자

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

필수 권한

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

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

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

이 섹션에서는 태그를 사용하여 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. 값 추가를 클릭하고 방금 만든 각 태그 값을 입력합니다.

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

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

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

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

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

시작하기 전에 역할에 적절한 권한을 사용 설정하여 다음 역할 중 하나가 할당되어 있는지 확인합니다.

  • 백업 및 DR 관리자

  • 백업 및 DR 백업 사용자

  • 백업 및 DR 사용자 V2

  • 프로젝트 편집자

  • 프로젝트 소유자

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

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

    VM 인스턴스로 이동

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

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

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

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

  6. 저장을 클릭합니다.

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

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

콘솔

  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가 만료될 때까지 1시간 동안 동적 보호 작업을 트리거할 수 있습니다.

  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 인스턴스의 보호를 자동화할 수 있습니다. 리소스 관리자를 사용하여 프로젝트 수준 이상의 리소스에 태그를 지정하여 모든 리소스에 보호가 상속되도록 합니다. 태그 상속에 대해 자세히 알아보세요.

수동 보호를 동적 보호로 이전

이미 보호된 리소스를 태그를 사용하여 동적 보호를 사용하도록 이전하려면 프로젝트에서 이전 플래그를 사용 설정해야 합니다. 이전을 사용 설정한 후에는 수동으로 보호된 인스턴스에서 동적 보호를 사용할 수 있습니다. 태그 및 리소스를 추가하면 태그를 기반으로 자동으로 보호되며 기존의 수동 보호는 삭제됩니다.

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시간의 기간을 두면 모든 작업이 완료될 수 있습니다.

  • 태그를 설정하기 전에 기기 유형을 고려하세요. 최상의 결과를 얻으려면 태그된 모든 Compute Engine 인스턴스가 Compute Engine VM 또는 SAP HANA 데이터베이스의 어플라이언스 유형 표준에서 실행되는 백업/복구 어플라이언스에 있는지 확인하세요.

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

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