이 페이지에서는 콘솔의 Google Cloud Backup Vault에서 Compute Engine 인스턴스를 복원하는 방법을 설명합니다.
시작하기 전에
복원이 수행되는 대상 프로젝트의 Backup Vault 서비스 에이전트에 백업 및 DR Compute Engine 작업자 (
roles/backupdr.computeEngineOperator) IAM 역할 을 부여합니다.공유 VPC를 사용하는 경우 VPC 호스트 프로젝트의 Backup Vault 서비스 에이전트 에 Compute 네트워크 사용자 (
roles/compute.networkUser) IAM 역할을 부여합니다.Backup Vault 프로젝트에서 복원을 수행하는 사용자에게 다음 IAM 역할을 부여합니다.
- Backup Vault 및 대상 프로젝트 모두에 대한 백업 및 DR 복원 사용자 (
roles/backupdr.restoreUser) - 대상에만 해당되는 Compute 뷰어 (
roles/compute.viewer)
이러한 사전 정의된 역할에는 Compute Engine 프로젝트의 Backup Vault에 액세스하는 데 필요한 권한이 포함되어 있습니다. 구체적인 권한은 다음 목록을 참조하세요.
backupdr.bvbackups.restorebackupdr.compute.restoreFromBackupVaultbackupdr.backupVaults.getbackupdr.backupVaults.listbackupdr.bvbackups.listbackupdr.bvdataSources.getbackupdr.bvdataSources.listbackupdr.bvbackups.get
Google Cloud CLI CLI 또는 API를 사용하여 인스턴스를 복원하려면 사용자에게 다음 권한이 있어야 합니다.
- 백업 리소스에 대한
backupdr.bvbackups.restore - 인스턴스가 복원될 대상 프로젝트에 대한
backupdr.compute.restoreFromBackupVault
- Backup Vault 및 대상 프로젝트 모두에 대한 백업 및 DR 복원 사용자 (
콘솔의 추가 권한 Google Cloud
콘솔을 사용하여 인스턴스를 복원할 때 사용자에게는 CLI 권한과 다음 권한이 필요합니다. Google Cloud 콘솔에서 사용자 인터페이스에서 선택하는 데 필요한 Compute Engine 리소스를 나열하고 표시하려면 이러한 추가 권한이 필요합니다.
compute.acceleratorTypes.listcompute.disks.listcompute.machineTypes.listcompute.projects.getcompute.regions.listcompute.zones.list
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
Compute Engine 인스턴스 복원
다음 안내에 따라 Compute Engine 인스턴스를 복원합니다.
콘솔
콘솔에서 Vault에 저장된 백업 페이지로 이동합니다. Google Cloud
Vault에 저장된 백업이 있는 모든 Compute Engine 인스턴스가 여기에 나열됩니다.
작업 아이콘을 클릭하여 복원 작업을 선택합니다. 복원 페이지 가 표시되면 다음 복원 옵션을 선택합니다.
- 리소스 이름 을 선택합니다.
- 백업 생성 시간 을 선택합니다.
- VM을 복원할 프로젝트 이름 을 선택합니다.
계속 을 클릭합니다.
- 다음 페이지인 백업에서 새 VM 인스턴스 만들기 가 표시됩니다. 여기에서 VM 속성은 소스 VM 속성을 기반으로 미리 채워집니다. 속성을 수정하여 새 VM을 만들 수 있습니다. 예를 들어 리전 또는 머신 유형 의 선택을 변경할 수 있습니다.
만들기 를 클릭하여 선택한 백업에서 새 VM을 만듭니다.
gcloud
아직 부여되지 않은 경우 VM이 복구되는 복구 프로젝트의 Backup Vault 서비스 에이전트에 백업 및 DR Compute Engine 작업자 (
roles/backupdr.computeEngineOperator) IAM 역할을 부여합니다.Backup Vault 서비스 계정을 가져오려면 다음 명령어를 사용합니다.
gcloud backup-dr backup-vaults describe BACKUPVAULT_NAME --location=REGION다음을 바꿉니다.
- BACKUPVAULT_NAME: 데이터를 복원하려는 Backup Vault 이름
- REGION: Backup Vault의 리전
Compute Engine 인스턴스를 복원하기 전에 다음 명령어를 사용하여 데이터 소스 ID와 필요한 백업의 ID를 가져옵니다.
데이터 소스 ID 찾기
gcloud backup-dr data-sources list \ --project=PROJECT \ --location=REGION \ --backup-vault=BACKUPVAULT_NAME \ "--filter=dataSourceGcpResource.computeInstanceDatasourceProperties.name:(DATA_SOURCE)" \ "--format=get(name)")데이터 소스의 기존 백업을 나열하여 올바른 BACKUP_ID를 찾습니다.
gcloud backup-dr backups list \ --location=REGION \ --backup-vault=BACKUPVAULT_NAME \ --data-source=DATA_SOURCE \ "--format=yaml(backupType,computeInstanceBackupProperties.sourceInstance,consistencyTime,enforcedRetentionEndTime,expireTime,name)"
Compute Engine 인스턴스를 복원하려면 다음 명령어를 사용합니다.
백업 ID가 있는 워크로드 프로젝트와 동일한 프로젝트에서 VM을 복원합니다.
gcloud backup-dr backups restore compute test-backup-id \ --project=PROJECT --location=REGION \ --backup-vault=BACKUPVAULT_NAME --data-source=DATA_SOURCE\ --name=NAME --target-zone=TARGET_ZONE \ --target-project=TARGET_PROJECT백업 전체 리소스 URL이 있는 워크로드 프로젝트와 동일한 프로젝트에서 VM을 복원합니다.
gcloud backup-dr backups restore compute projects/test-project-id/locations/us-central1/backupVaults/test-vault/dataSources/test-ds/backups/test-backup-id \ --name=NAME --target-zone=TARGET_ZONE \ --target-project=TARGET_PROJECT커스텀 서비스 계정 및 네트워크 구성으로 Compute Engine 인스턴스를 복원합니다.
gcloud backup-dr backups restore compute test-backup-id \ --project=PROJECT --location=REGION \ --backup-vault=BACKUPVAULT_NAME --data-source=DATA_SOURCE\ --name=NAME --target-zone=TARGET_ZONE \ --target-project=TARGET_PROJECT \ --network-interface=network=NETWORK,subnet=SUBNET \ --service-account=SERVICE_ACCOUNT \ --scopes=SCOPE다음을 바꿉니다.
- PROJECT: Backup Vault 프로젝트의 이름
- REGION: Backup Vault의 위치
- BACKUPVAULT_NAME: 데이터를 복원하려는 Backup Vault 이름
- DATA_SOURCE: 데이터를 복원하려는 데이터 소스 이름
- NAME: 복원된 VM의 이름
- TARGET_ZONE: VM이 복원되는 리전
- TARGET_PROJECT: VM이 복원되는 프로젝트
- NETWORK: VM의 네트워크 URI
- SUBNET: VM의 서브넷 URI
- SERVICE_ACCOUNT: 복원된 VM의 서비스 계정
- SCOPE: 서비스 계정의 승인 범위
다른 VM 속성을 재정의하려면 백업 및 DR 서비스 Google Cloud CLI 명령어 개요를 참조하세요.
CMEK 지원 Backup Vault에서 복원
CMEK 지원 Backup Vault에서 백업을 복원하면 복원된 리소스의 암호화는 소스의 암호화에 따라 달라집니다.
- 소스 리소스가 CMEK로 보호된 경우: 복원된 리소스는 기본적으로 소스와 동일한 CMEK 키를 사용합니다. 예를 들면 다음과 같습니다.
- 키
K1로 암호화된 Compute Engine 영구 디스크가K1로 암호화된 디스크로 복원됩니다. - VM에 여러 디스크가 있는 경우 복원된 VM의 각 디스크는 해당 소스 디스크의 암호화를 상속합니다 (CMEK로 암호화된 디스크는 원래 키로 암호화된 상태로 유지되고 Google 관리 암호화 디스크는 Google 관리 상태로 유지됨).
- 키
- 소스 리소스가 Google 관리 암호화를 사용한 경우: 복원된 리소스는 기본적으로 Google 관리 암호화를 사용합니다.
API 또는 Google Cloud CLI를 사용하여 Compute Engine 영구 디스크 또는 Compute Engine 인스턴스를 복원할 때 이 기본 동작을 재정의할 수 있습니다. 예를 들어 CMEK로 보호되는 리소스의 백업을 Google 관리 암호화를 사용하는 새 리소스 또는 다른 CMEK 키로 보호되는 새 리소스로 복원할 수 있습니다. 새 CMEK 키로 보호되는 리소스로 복원하려면 대상 프로젝트의 관련 서비스 에이전트 (예: Compute Engine 서비스 에이전트)에 새 대상 키에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 권한이 있는지 확인합니다.
CMEK로 리전 간 복원 수행
Cloud Key Management Service 키는 리전별로 제공되므로 리전 간 복원을 수행할 때 (예: asia-south1에서 asia-south2로 인스턴스 복원) 기본 동작을 사용하면 복원 작업이 실패합니다. 복원된 VM의 디스크는 소스 리전의 KMS 키로 암호화할 수 없습니다.
이는 Google Cloud 콘솔의 현재 제한사항입니다. CMEK로 보호되는 VM의 리전 간 복원을 수행하려면 Google Cloud CLI, API 또는 Terraform을 사용하여 암호화 설정을 재정의하고 대상 리전에 새 KMS 키를 지정해야 합니다.
새 CMEK 키로 보호되는 리소스로 복원하려면 다음 단계를 수행합니다.
- 대상 리전에 키가 있는지 확인: VM을 복원하는 리전 (대상 프로젝트 또는 공유 KMS 프로젝트)에 Cloud Key Management Service 키가 있는지 확인하고 없는 경우 키를 만듭니다.
KMS 권한 부여: VM이 복원되는 대상 프로젝트의 Compute Engine 서비스 에이전트에 이 대상 키에 대한 Cloud KMS CryptoKey 암호화/복호화 (
roles/cloudkms.cryptoKeyEncrypterDecrypter) 역할을 부여합니다.복원 수행: 다음 방법 중 하나를 사용하여 각 디스크의 KMS 키를 재정의하여 복원을 실행합니다.
gcloud
백업 세부정보 가져오기:
gcloud backup-dr backups list명령어를 사용하여 백업에서 백업 이름과 디스크의 기기 이름을 가져옵니다.gcloud backup-dr backups list \ --project=PROJECT_ID \ --location=SOURCE_REGION \ --backup-vault=BACKUP_VAULT_NAME \ --filter="computeInstanceBackupProperties.sourceInstance~SOURCE_INSTANCE_NAME"다음을 바꿉니다.
- PROJECT_ID: Backup Vault가 있는 프로젝트의 이름
- SOURCE_REGION: Backup Vault의 위치
- BACKUP_VAULT_NAME: 데이터를 복원하려는 Backup Vault 이름
- SOURCE_INSTANCE_NAME: 소스 Compute Engine 인스턴스의 이름
복원 명령어 실행: 복원 명령어를 실행하고
--create-disk매개변수를 사용하여 각 디스크의 KMS 키를 재정의합니다.단일 디스크가 있는 VM 복원:
gcloud backup-dr backups restore compute BACKUP_ID \ --project=PROJECT_ID \ --location=SOURCE_REGION \ --backup-vault=BACKUP_VAULT_NAME \ --data-source=DATA_SOURCE \ --name=RESTORED_VM_NAME \ --target-zone=TARGET_ZONE \ --target-project=TARGET_PROJECT_ID \ --create-disk=device-name=DEVICE_NAME,kms-key=projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME다음을 바꿉니다.
- BACKUP_ID: 복원하려는 백업의 ID
- PROJECT_ID: Backup Vault가 있는 프로젝트의 이름
- SOURCE_REGION: Backup Vault의 위치
- BACKUP_VAULT_NAME: 데이터를 복원하려는 Backup Vault 이름
- DATA_SOURCE: 데이터를 복원하려는 데이터 소스의 ID
- RESTORED_VM_NAME: 복원된 VM의 이름
- TARGET_ZONE: VM이 복원되는 영역
- TARGET_PROJECT_ID: VM이 복원되는 프로젝트
- DEVICE_NAME: 디스크의 기기 이름
- KMS_PROJECT_ID: Cloud Key Management Service 키가 있는 프로젝트의 ID
- TARGET_REGION: Cloud Key Management Service 키가 있는 리전
- KEYRING: Cloud Key Management Service 키링의 이름
- KEY_NAME: 디스크 1의 Cloud Key Management Service 키 이름
디스크가 여러 개인 VM 복원: 각 디스크에 대해 별도의
--create-disk플래그를 제공합니다.gcloud backup-dr backups restore compute BACKUP_ID \ --project=PROJECT_ID \ --location=SOURCE_REGION \ --backup-vault=BACKUP_VAULT_NAME \ --data-source=DATA_SOURCE \ --name=RESTORED_VM_NAME \ --target-zone=TARGET_ZONE \ --target-project=TARGET_PROJECT_ID \ --create-disk=device-name=DEVICE_NAME_1,kms-key=projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_1 \ --create-disk=device-name=DEVICE_NAME_2,kms-key=projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_2다음을 바꿉니다.
- BACKUP_ID: 복원하려는 백업의 ID
- PROJECT_ID: Backup Vault가 있는 프로젝트의 이름
- SOURCE_REGION: Backup Vault의 위치
- BACKUP_VAULT_NAME: 데이터를 복원하려는 Backup Vault 이름
- DATA_SOURCE: 데이터를 복원하려는 데이터 소스의 ID
- RESTORED_VM_NAME: 복원된 VM의 이름
- TARGET_ZONE: VM이 복원되는 영역
- TARGET_PROJECT_ID: VM이 복원되는 프로젝트
- DEVICE_NAME_1: 디스크 1의 기기 이름
- KMS_PROJECT_ID: Cloud Key Management Service 키가 있는 프로젝트의 ID
- TARGET_REGION: Cloud Key Management Service 키가 있는 리전
- KEYRING: Cloud Key Management Service 키링의 이름
- KEY_NAME_1: 디스크 1의 Cloud Key Management Service 키 이름
- DEVICE_NAME_2: 디스크 2의 기기 이름
- KEY_NAME_2: 디스크 2의 Cloud Key Management Service 키 이름
API
백업 세부정보 가져오기: 백업을 나열하는
GET요청을 전송하여 백업 이름과 디스크의 기기 이름을 가져옵니다.GET https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups복원 API 실행: 백업의
restoreURI에POST요청을 보냅니다.단일 디스크가 있는 VM 복원:
POST https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups/BACKUP_ID:restore페이로드:
{ "computeInstanceTargetEnvironment": { "project": "TARGET_PROJECT_ID", "zone": "TARGET_ZONE" }, "computeInstanceRestoreProperties": { "name": "RESTORED_VM_NAME", "machineType": "projects/TARGET_PROJECT_ID/zones/TARGET_ZONE/machineTypes/e2-medium", "disks": [ { "deviceName": "DEVICE_NAME", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME" } } ] } }디스크가 여러 개인 VM 복원:
POST https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups/BACKUP_ID:restore페이로드:
{ "computeInstanceTargetEnvironment": { "project": "TARGET_PROJECT_ID", "zone": "TARGET_ZONE" }, "computeInstanceRestoreProperties": { "name": "RESTORED_VM_NAME", "machineType": "projects/TARGET_PROJECT_ID/zones/TARGET_ZONE/machineTypes/e2-medium", "disks": [ { "deviceName": "DEVICE_NAME_1", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_1" } }, { "deviceName": "DEVICE_NAME_2", "diskEncryptionKey": { "kmsKeyName": "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_2" } } ] } }
Terraform
google_backup_dr_restore_workload 리소스 사용
단일 디스크가 있는 VM 복원:
resource "google_backup_dr_restore_workload" "restore_single" { location = "SOURCE_REGION" backup_vault_id = "BACKUP_VAULT_NAME" data_source_id = "DATA_SOURCE" backup_id = "BACKUP_ID" compute_instance_target_environment { project = "TARGET_PROJECT_ID" zone = "TARGET_ZONE" } compute_instance_restore_properties { name = "RESTORED_VM_NAME" machine_type = "zones/TARGET_ZONE/machineTypes/e2-medium" disks { device_name = "DEVICE_NAME" disk_encryption_key { kms_key_name = "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME" } } } }디스크가 여러 개인 VM 복원:
resource "google_backup_dr_restore_workload" "restore_multi" { location = "SOURCE_REGION" backup_vault_id = "BACKUP_VAULT_NAME" data_source_id = "DATA_SOURCE" backup_id = "BACKUP_ID" compute_instance_target_environment { project = "TARGET_PROJECT_ID" zone = "TARGET_ZONE" } compute_instance_restore_properties { name = "RESTORED_VM_NAME" machine_type = "zones/TARGET_ZONE/machineTypes/TARGET_MACHINETYPE" disks { device_name = "DEVICE_NAME_1" disk_encryption_key { kms_key_name = "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_1" } } disks { device_name = "DEVICE_NAME_2" disk_encryption_key { kms_key_name = "projects/KMS_PROJECT_ID/locations/TARGET_REGION/keyRings/KEYRING/cryptoKeys/KEY_NAME_2" } } } }
복원 작업 중에 소스 워크로드를 보호하는 Cloud Key Management Service 키를 사용할 수 없는 경우 복원이 기본적으로 실패합니다. 이 경우 API 또는 Google Cloud CLI를 사용하여 새 CMEK 키를 지정하거나 복원된 리소스의 암호화 유형을 Google 관리 암호화로 변경하여 암호화 설정을 재정의해야 합니다.
Backup Vault에서 데이터를 암호화하는 데 사용되는 Cloud Key Management Service 키 버전이 사용 중지되거나 삭제되면 해당 백업에서 복원할 수 없습니다.
백업 및 DR Compute Engine 가이드
- Vault에 저장된 백업의 백업 계획 만들기 및 관리
- 클라우드 사용자 인증 정보 확인
- Compute Engine 인스턴스 검색 및 보호
- Compute Engine 영구 디스크의 백업 이미지 마운트
- Compute Engine 인스턴스 복원
- 영구 디스크 스냅샷 이미지 가져오기