Compute Engine-Instanz aus einem Backup-Vault wiederherstellen

Auf dieser Seite erfahren Sie, wie Sie eine Compute Engine-Instanz über die Google Cloud console aus einem Backup Vault wiederherstellen.

Hinweis

  • Weisen Sie dem Backup Vault-Dienst-Agent des Vault im Zielprojekt, in dem die Wiederherstellung erfolgt, die IAM-Rolle „Compute Engine-Operator für Sicherungen und Notfallwiederherstellungen“ (roles/backupdr.computeEngineOperator) zu.

  • Weisen Sie dem Backup Vault-Dienst-Agent des Vault im VPC-Hostprojekt die IAM-Rolle „Compute-Netzwerknutzer“ (roles/compute.networkUser) zu, wenn Sie eine freigegebene VPC verwenden.

  • Weisen Sie dem Nutzer, der die Wiederherstellung im Backup Vault-Projekt ausführt, die folgenden IAM-Rollen zu:

    • „Backup and DR Restore User“ (roles/backupdr.restoreUser) für Backup Vault und Zielprojekt.
    • „Compute-Betrachter“ (roles/compute.viewer) nur für das Ziel.

    Diese vordefinierten Rollen enthalten die Berechtigungen, die für den Zugriff auf den Backup Vault im Compute Engine-Projekt erforderlich sind. Informationen zu bestimmten Berechtigungen finden Sie in der folgenden Liste.

    • backupdr.bvbackups.restore
    • backupdr.compute.restoreFromBackupVault
    • backupdr.backupVaults.get
    • backupdr.backupVaults.list
    • backupdr.bvbackups.list
    • backupdr.bvdataSources.get
    • backupdr.bvdataSources.list
    • backupdr.bvbackups.get

    Wenn ein Nutzer eine Instanz mit der gcloud CLI oder der API wiederherstellen möchte, benötigt er die folgenden Berechtigungen:

    • backupdr.bvbackups.restore für die Sicherungsressource.
    • backupdr.compute.restoreFromBackupVault für das Zielprojekt, in dem die Instanz wiederhergestellt wird.

Zusätzliche Berechtigungen für die Google Cloud console

Wenn Sie eine Instanz mit der Google Cloud console wiederherstellen, benötigt der Nutzer die CLI Berechtigungen sowie die folgenden Berechtigungen. Diese zusätzlichen Berechtigungen sind erforderlich, damit die Console die erforderlichen Compute Engine-Ressourcen auflisten und zur Auswahl in der Benutzeroberfläche anzeigen kann:

  • compute.acceleratorTypes.list
  • compute.disks.list
  • compute.machineTypes.list
  • compute.projects.get
  • compute.regions.list
  • compute.zones.list

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Compute Engine-Instanz wiederherstellen

Folgen Sie der Anleitung, um eine Compute Engine-Instanz wiederherzustellen.

Console

  1. Rufen Sie in der Google Cloud console die Seite Vault-Sicherungen auf.

    Zu Vault-Sicherungen

    Hier sind alle Compute Engine-Instanzen mit Vault-Sicherungen aufgeführt.

  2. Klicken Sie auf das Aktionssymbol , um die Aktion Wiederherstellen auszuwählen. Auf der Seite Wiederherstellen können Sie die folgenden Wiederherstellungsoptionen auswählen:

    • Wählen Sie einen Ressourcennamen aus.
    • Wählen Sie einen Erstellungszeitpunkt der Sicherung aus.
    • Wählen Sie den Projektnamen aus, in den Sie die VM wiederherstellen möchten.
  3. Klicken Sie auf Fortfahren.

    • Die nächste Seite Neue VM-Instanz aus Sicherung erstellen wird angezeigt. Die VM-Attribute werden basierend auf den Attributen der Quell-VM vorab ausgefüllt. Sie können die Attribute ändern, um eine neue VM zu erstellen, z. B. die Auswahl für Region oder Maschinentyp ändern.
  4. Klicken Sie auf Erstellen , um eine neue VM aus der ausgewählten Sicherung zu erstellen.

gcloud

  1. Wenn noch nicht geschehen, weisen Sie dem Backup Vault-Dienst-Agent im Wiederherstellungsprojekt, in dem die VM wiederhergestellt wird, die IAM-Rolle „Compute Engine-Operator für Sicherungen und Notfallwiederherstellungen“ (roles/backupdr.computeEngineOperator) zu.

  2. Verwenden Sie den folgenden Befehl, um das Backup Vault-Dienstkonto abzurufen.

      gcloud backup-dr backup-vaults describe BACKUPVAULT_NAME
      --location=REGION
    

    Ersetzen Sie Folgendes:

    • BACKUPVAULT_NAME: der Name des Backup Vault, aus dem Sie Daten wiederherstellen möchten.
    • REGION: die Region des Backup Vault.
  3. Bevor Sie eine Compute Engine-Instanz wiederherstellen können, rufen Sie mit den folgenden Befehlen die Datenquellen-ID und die ID der erforderlichen Sicherung ab.

    1. Datenquellen-ID suchen

        gcloud backup-dr data-sources list \
        --project=PROJECT \
        --location=REGION \
        --backup-vault=BACKUPVAULT_NAME \
        "--filter=dataSourceGcpResource.computeInstanceDatasourceProperties.name:(DATA_SOURCE)" \
        "--format=get(name)")
      
    2. Listen Sie die vorhandenen Sicherungen für die Datenquelle auf, um die richtige BACKUP_ID zu finden.

        gcloud backup-dr backups list \
        --location=REGION \
        --backup-vault=BACKUPVAULT_NAME \
        --data-source=DATA_SOURCE \
        "--format=yaml(backupType,computeInstanceBackupProperties.sourceInstance,consistencyTime,enforcedRetentionEndTime,expireTime,name)"
      
  4. Verwenden Sie die folgenden Befehle, um eine Compute Engine-Instanz wiederherzustellen.

    • VM mit Sicherungs-ID im selben Projekt wie das Arbeitsprojekt wiederherstellen.

        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
      
    • VM mit vollständiger Ressourcen-URL der Sicherung im selben Projekt wie das Arbeitsprojekt wiederherstellen.

        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-Instanz mit benutzerdefiniertem Dienstkonto und benutzerdefinierter Netzwerkkonfiguration wiederherstellen.

        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
      

      Ersetzen Sie Folgendes:

      • PROJECT: der Name des Backup Vault-Projekts.
      • REGION: der Standort des Backup Vault.
      • BACKUPVAULT_NAME: der Name des Backup Vault, aus dem Sie Daten wiederherstellen möchten.
      • DATA_SOURCE: der Name der Datenquelle, aus der Sie Daten wiederherstellen möchten.
      • NAME: der Name der wiederhergestellten VM.
      • TARGET_ZONE: die Region, in der die VM wiederhergestellt wird.
      • TARGET_PROJECT: das Projekt, in dem die VM wiederhergestellt wird.
      • NETWORK: der Netzwerk-URI der VM.
      • SUBNET: der Subnetz-URI der VM.
      • SERVICE_ACCOUNT: das Dienstkonto der wiederhergestellten VM.
      • SCOPE: der Autorisierungsbereich des Dienstkontos.

Informationen zum Überschreiben anderer VM-Attribute finden Sie unter Übersicht über gcloud CLI-Befehle des Backup- und DR-Dienstes .

Wiederherstellung aus einem CMEK-fähigen Backup Vault

Wenn Sie eine Sicherung aus einem CMEK-fähigen Backup Vault wiederherstellen, hängt die Verschlüsselung der wiederhergestellten Ressource von der Verschlüsselung der Quelle ab:

  • Wenn die Quellressource durch CMEK geschützt war:Die wiederhergestellte Ressource verwendet standardmäßig denselben CMEK-Schlüssel wie die Quelle. Beispiel:
    • Ein nichtflüchtiger Speicher von Compute Engine, der mit dem Schlüssel K1 verschlüsselt ist, wird in einem Laufwerk wiederhergestellt, das mit K1 verschlüsselt ist.
    • Wenn eine VM mehrere Laufwerke hat, erbt jedes Laufwerk in der wiederhergestellten VM die Verschlüsselung des entsprechenden Quelllaufwerks. CMEK-verschlüsselte Laufwerke bleiben mit ihren ursprünglichen Schlüsseln verschlüsselt und von Google verwaltete verschlüsselte Laufwerke bleiben von Google verwaltet.
  • Wenn für die Quellressource die von Google verwaltete Verschlüsselung verwendet wurde:Die wiederhergestellte Ressource verwendet standardmäßig die von Google verwaltete Verschlüsselung.

Sie können dieses Standardverhalten überschreiben, wenn Sie nichtflüchtige Compute Engine- Speicher oder Compute Engine-Instanzen mit der API oder der gcloud CLI wiederherstellen. Sie können beispielsweise eine Sicherung einer CMEK-geschützten Ressource in einer neuen Ressource wiederherstellen, die die von Google verwaltete Verschlüsselung verwendet, oder in einer neuen Ressource, die durch einen anderen CMEK-Schlüssel geschützt ist. Wenn Sie eine Wiederherstellung in einer Ressource durchführen möchten, die durch einen neuen CMEK-Schlüssel geschützt ist, muss der entsprechende Dienst-Agent (z.B. der Compute Engine-Dienst-Agent) für das Zielprojekt die Berechtigung roles/cloudkms.cryptoKeyEncrypterDecrypter für den neuen Zielschlüssel haben.

Regionenübergreifende Wiederherstellung mit CMEK durchführen

Da Cloud Key Management Service-Schlüssel regional sind, schlägt die Wiederherstellung fehl, wenn Sie eine regionenübergreifende Wiederherstellung durchführen (z. B. eine Instanz von asia-south1 nach asia-south2 wiederherstellen) und das Standardverhalten verwenden. Die Laufwerke der wiederhergestellten VM können nicht mit dem KMS-Schlüssel der Quellregion verschlüsselt werden.

Dies ist eine aktuelle Einschränkung in der Google Cloud console. Wenn Sie eine regionenübergreifende Wiederherstellung einer CMEK-geschützten VM durchführen möchten, müssen Sie die Verschlüsselungseinstellungen mit der gcloud CLI, der API oder Terraform überschreiben und einen neuen KMS-Schlüssel in der Zielregion angeben.

So stellen Sie eine Wiederherstellung in einer Ressource durch, die durch einen neuen CMEK-Schlüssel geschützt ist:

  1. Schlüssel in der Zielregion haben:Sie benötigen einen Cloud Key Management Service-Schlüssel in der Region, in der Sie die VM wiederherstellen (entweder im Zielprojekt oder in einem gemeinsam genutzten KMS-Projekt). Erstellen Sie einen, falls noch keiner vorhanden ist.
  2. KMS-Berechtigungen gewähren:Weisen Sie dem Compute Engine-Dienst-Agent des Zielprojekts, in dem die VM wiederhergestellt wird, die Rolle Cloud KMS CryptoKey-Verschlüsseler/Entschlüsseler (roles/cloudkms.cryptoKeyEncrypterDecrypter) für diesen Zielschlüssel zu.

  3. Wiederherstellung durchführen:Führen Sie die Wiederherstellung mit einer der folgenden Methoden aus und überschreiben Sie den KMS-Schlüssel für jedes Laufwerk:

gcloud

  1. Details zur Sicherung abrufen:Rufen Sie mit dem Befehl gcloud backup-dr backups list den Namen der Sicherung und die Gerätenamen der Laufwerke aus der Sicherung ab:

    gcloud backup-dr backups list \
      --project=PROJECT_ID \
      --location=SOURCE_REGION \
      --backup-vault=BACKUP_VAULT_NAME \
      --filter="computeInstanceBackupProperties.sourceInstance~SOURCE_INSTANCE_NAME"
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: der Name des Projekts, in dem sich der Backup Vault befindet.
    • SOURCE_REGION: der Standort des Backup Vault.
    • BACKUP_VAULT_NAME: der Name des Backup Vault, aus dem Sie Daten wiederherstellen möchten.
    • SOURCE_INSTANCE_NAME: der Name der Compute Engine-Quellinstanz.
  2. Befehl zur Wiederherstellung ausführen:Führen Sie den Befehl zur Wiederherstellung aus und überschreiben Sie den KMS-Schlüssel für jedes Laufwerk mit dem Parameter --create-disk.

    1. VM mit einem einzelnen Laufwerk wiederherstellen :

      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
      

      Ersetzen Sie Folgendes:

      • BACKUP_ID: die ID der Sicherung, die Sie wiederherstellen möchten.
      • PROJECT_ID: der Name des Projekts, in dem sich der Backup Vault befindet.
      • SOURCE_REGION: der Standort des Backup Vault.
      • BACKUP_VAULT_NAME: der Name des Backup Vault, aus dem Sie Daten wiederherstellen möchten.
      • DATA_SOURCE: die ID der Datenquelle, aus der Sie Daten wiederherstellen möchten.
      • RESTORED_VM_NAME: der Name der wiederhergestellten VM.
      • TARGET_ZONE: die Zone, in der die VM wiederhergestellt wird.
      • TARGET_PROJECT_ID: das Projekt, in dem die VM wiederhergestellt wird.
      • DEVICE_NAME: der Gerätename des Laufwerks.
      • KMS_PROJECT_ID: die ID des Projekts, in dem sich der Cloud Key Management Service-Schlüssel befindet.
      • TARGET_REGION: die Region, in der sich der Cloud Key Management Service-Schlüssel befindet.
      • KEYRING: der Name des Cloud Key Management Service-Schlüsselbunds.
      • KEY_NAME: der Name des Cloud Key Management Service-Schlüssels für Laufwerk 1.
    2. VM mit mehreren Laufwerken wiederherstellen:Geben Sie für jedes Laufwerk ein separates --create-disk-Flag an:

      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
      

      Ersetzen Sie Folgendes:

      • BACKUP_ID: die ID der Sicherung, die Sie wiederherstellen möchten.
      • PROJECT_ID: der Name des Projekts, in dem sich der Backup Vault befindet.
      • SOURCE_REGION: der Standort des Backup Vault.
      • BACKUP_VAULT_NAME: der Name des Backup Vault, aus dem Sie Daten wiederherstellen möchten.
      • DATA_SOURCE: die ID der Datenquelle, aus der Sie Daten wiederherstellen möchten.
      • RESTORED_VM_NAME: der Name der wiederhergestellten VM.
      • TARGET_ZONE: die Zone, in der die VM wiederhergestellt wird.
      • TARGET_PROJECT_ID: das Projekt, in dem die VM wiederhergestellt wird.
      • DEVICE_NAME_1: der Gerätename von Laufwerk 1.
      • KMS_PROJECT_ID: die ID des Projekts, in dem sich der Cloud Key Management Service-Schlüssel befindet.
      • TARGET_REGION: die Region, in der sich der Cloud Key Management Service-Schlüssel befindet.
      • KEYRING: der Name des Cloud Key Management Service-Schlüsselbunds.
      • KEY_NAME_1: der Name des Cloud Key Management Service-Schlüssels für Laufwerk 1.
      • DEVICE_NAME_2: der Gerätename von Laufwerk 2.
      • KEY_NAME_2: der Name des Cloud Key Management Service-Schlüssels für Laufwerk 2.

API

  1. Details zur Sicherung abrufen:Rufen Sie den Namen der Sicherung und die Gerätenamen der Laufwerke ab, indem Sie eine GET-Anfrage senden, um Sicherungen aufzulisten:

    GET https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups
    
  2. Wiederherstellungs-API ausführen:Senden Sie eine POST-Anfrage an den restore-URI der Sicherung.

    1. VM mit einem einzelnen Laufwerk wiederherstellen :

      POST https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups/BACKUP_ID:restore
      

      Nutzlast:

      {
        "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"
              }
            }
          ]
        }
      }
      
    2. VM mit mehreren Laufwerken wiederherstellen :

      POST https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups/BACKUP_ID:restore
      

      Nutzlast:

      {
        "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

Verwenden Sie die Ressource google_backup_dr_restore_workload.

  1. VM mit einem einzelnen Laufwerk wiederherstellen :

    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"
          }
        }
      }
    }
    
  2. VM mit mehreren Laufwerken wiederherstellen :

    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"
          }
        }
      }
    }
    

Wenn der Cloud Key Management Service-Schlüssel, der die Quellarbeitslast schützt, während einer Wiederherstellung nicht verfügbar ist, schlägt die Wiederherstellung standardmäßig fehl. In diesem Fall müssen Sie die API oder die gcloud CLI verwenden, um die Verschlüsselungseinstellung zu überschreiben. Geben Sie dazu einen neuen CMEK-Schlüssel an oder ändern Sie den Verschlüsselungstyp für die wiederhergestellte Ressource in die von Google verwaltete Verschlüsselung.

Wenn die Cloud Key Management Service-Schlüsselversion, die zum Verschlüsseln von Daten im Backup Vault verwendet wird, deaktiviert oder gelöscht wurde, können Sie keine Wiederherstellung aus dieser Sicherung durchführen.

Backup and DR-Leitfaden für Compute Engine