שחזור מכונה של Compute Engine מכספת גיבוי

בדף הזה מוסבר איך לשחזר מכונה ב-Compute Engine מכספת גיבוי במסוף Google Cloud .

לפני שמתחילים

  • מקצים את תפקיד ה-IAM‏ Backup and DR Compute Engine Operator ‏ (roles/backupdr.computeEngineOperator) לסוכן שירות של כספת הגיבוי בכספת בפרויקט היעד שבו מתבצעת השחזור.

  • אם אתם משתמשים ב-VPC משותף, צריך להעניק את תפקיד ה-IAM‏ Compute Network User ‏ (roles/compute.networkUser) לסוכן השירות של כספת הגיבוי של הכספת בפרויקט המארח של ה-VPC.

  • מקצים את תפקידי ה-IAM הבאים למשתמש שמבצע את השחזור בפרויקט של כספת הגיבוי.

    • ‫Backup and DR Restore User (roles/backupdr.restoreUser) גם בכספת הגיבוי וגם בפרויקט היעד.
    • התפקיד Compute Viewer (roles/compute.viewer) רק ליעד.

    התפקידים המוגדרים מראש האלה מכילים את ההרשאות שנדרשות כדי לגשת לכספת הגיבוי בפרויקט Compute Engine. ברשימה הבאה מפורטות הרשאות ספציפיות.

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

    כדי לשחזר מכונה באמצעות Google Cloud CLI או API, למשתמש צריכות להיות ההרשאות הבאות:

    • backupdr.bvbackups.restore במשאב הגיבוי.
    • backupdr.compute.restoreFromBackupVault בפרויקט היעד שבו המופע ישוחזר.

הרשאות נוספות למסוף Google Cloud

כשמשחזרים מופע באמצעות Google Cloud המסוף, המשתמש צריך את ההרשאות של CLI בתוספת ההרשאות הבאות. ההרשאות הנוספות האלה נדרשות כדי שהמסוף יוכל להציג את המשאבים הנדרשים של Compute Engine לבחירה בממשק המשתמש:

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

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

שחזור מכונה של Compute Engine

כדי לשחזר מכונה של Compute Engine, פועלים לפי ההוראות הבאות.

המסוף

  1. נכנסים לדף Vaulted backups במסוף Google Cloud .

    מעבר לגיבויים ב-Vault

    כאן מפורטות כל מכונות Compute Engine עם גיבויים בכספת.

  2. לוחצים על סמל הפעולה כדי לבחור בפעולה שחזור. מוצג דף השחזור שבו בוחרים את אפשרויות השחזור הבאות:

    • בוחרים שם משאב.
    • בוחרים שעת יצירת הגיבוי.
    • בוחרים את שם הפרויקט שאליו רוצים לשחזר את המכונה הווירטואלית.
  3. לוחצים על המשך.

    • יופיע הדף הבא Create a new VM instance from a backup (יצירת מכונה וירטואלית חדשה מגיבוי), שבו מאפייני המכונה הווירטואלית מאוכלסים מראש על סמך מאפייני מכונת המקור. אפשר לשנות את המאפיינים כדי ליצור מכונה וירטואלית חדשה. לדוגמה, אפשר לשנות את הבחירה של אזור או סוג מכונה.
  4. לוחצים על Create (יצירה) כדי ליצור מכונה וירטואלית חדשה מהגיבוי שנבחר.

gcloud

  1. אם עדיין לא הוקצה, מקצים את תפקיד ה-IAM‏ (roles/backupdr.computeEngineOperator) Backup and DR Compute Engine Operator (מפעיל Compute Engine של Backup and DR) לסוכן השירות של כספת הגיבוי בפרויקט השחזור שבו מתבצע שחזור של המכונה הווירטואלית.

  2. כדי לקבל את חשבון השירות של כספת הגיבוי, משתמשים בפקודה הבאה.

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

    מחליפים את מה שכתוב בשדות הבאים:

    • BACKUPVAULT_NAME: השם של כספת הגיבוי שרוצים לשחזר ממנה נתונים.
    • REGION: האזור של כספת הגיבוי.
  3. לפני שמשחזרים מכונת Compute Engine, צריך להשתמש בפקודות הבאות כדי לקבל את מזהה מקור הנתונים ואת מזהה הגיבוי הנדרש.

    1. איך מוצאים את מזהה מקור הנתונים

        gcloud backup-dr data-sources list \
        --project=PROJECT \
        --location=REGION \
        --backup-vault=BACKUPVAULT_NAME \
        "--filter=dataSourceGcpResource.computeInstanceDatasourceProperties.name:(DATA_SOURCE)" \
        "--format=get(name)")
      
    2. מציגים רשימה של הגיבויים הקיימים של מקור הנתונים כדי למצוא את ה-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)"
      
  4. כדי לשחזר מכונה ב-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
      
    • שחזור מכונה וירטואלית באותו פרויקט שבו נמצא פרויקט עומס העבודה, באמצעות כתובת URL מלאה של משאב הגיבוי.

        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: השם של פרויקט כספת הגיבוי.
      • REGION: המיקום של כספת הגיבוי.
      • BACKUPVAULT_NAME: השם של כספת הגיבוי שרוצים לשחזר ממנה נתונים.
      • DATA_SOURCE: השם של מקור הנתונים שממנו רוצים לשחזר נתונים.
      • NAME: השם של המכונה הווירטואלית המשוחזרת.
      • TARGET_ZONE: האזור שבו המכונה הווירטואלית משוחזרת.
      • TARGET_PROJECT: הפרויקט שבו המכונה הווירטואלית משוחזרת.
      • NETWORK: ה-URI של הרשת של ה-VM.
      • SUBNET: מזהה ה-URI של רשת המשנה של המכונה הווירטואלית.
      • SERVICE_ACCOUNT: חשבון השירות של המכונה הווירטואלית ששוחזרה.
      • SCOPE: היקף ההרשאות של חשבון השירות.

כדי לשנות מאפיינים אחרים של מכונות וירטואליות, אפשר לעיין במאמר סקירה כללית של פקודות Google Cloud CLI של שירות Backup and DR.

שחזור מכספת גיבוי עם הפעלה של CMEK

כשמשחזרים גיבוי מכספת גיבוי שמופעל בה CMEK, ההצפנה של המשאב המשוחזר תלויה בהצפנה של המקור:

  • אם משאב המקור היה מוגן על ידי CMEK: משאב המקור ישתמש כברירת מחדל באותו מפתח CMEK כמו המקור. לדוגמה:
    • דיסק לאחסון מתמיד ב-Compute Engine שהוצפן באמצעות מפתח K1 משוחזר לדיסק שהוצפן באמצעות K1.
    • אם למכונה וירטואלית יש כמה דיסקים, כל דיסק במכונה הווירטואלית המשוחזרת יורש את ההצפנה של דיסק המקור התואם (דיסקים מוצפנים באמצעות CMEK נשארים מוצפנים באמצעות המפתחות המקוריים שלהם, ודיסקים מוצפנים בניהול Google נשארים בניהול Google).
  • אם במשאב המקור נעשה שימוש בהצפנה בניהול Google: כברירת מחדל, המשאב המשוחזר ישתמש בהצפנה בניהול Google.

אפשר לשנות את התנהגות ברירת המחדל הזו כשמשחזרים דיסקים קשיחים קבועים של Compute Engine או מכונות של Compute Engine באמצעות ה-API או Google Cloud CLI. לדוגמה, אתם יכולים לשחזר גיבוי של משאב שמוגן באמצעות CMEK למשאב חדש שמוגן באמצעות הצפנה בניהול Google, או למשאב חדש שמוגן באמצעות מפתח CMEK אחר. כדי לשחזר למשאב שמוגן על ידי מפתח CMEK חדש, צריך לוודא שלסוכן השירות הרלוונטי (לדוגמה, סוכן השירות של Compute Engine) בפרויקט היעד יש הרשאת roles/cloudkms.cryptoKeyEncrypterDecrypter במפתח היעד החדש.

ביצוע שחזור בין אזורים באמצעות CMEK

מפתחות של Cloud Key Management Service הם אזוריים, ולכן כשמבצעים שחזור בין אזורים (לדוגמה, שחזור של מכונה מ-asia-south1 ל-asia-south2), פעולת השחזור נכשלת אם משתמשים בהתנהגות ברירת המחדל. אי אפשר להצפין את הדיסקים של המכונה הווירטואלית ששוחזרה באמצעות מפתח ה-KMS של אזור המקור.

זוהי הגבלה נוכחית במסוף Google Cloud . כדי לבצע שחזור חוצה אזורים של מכונה וירטואלית שמוגנת באמצעות CMEK, צריך להשתמש ב-Google Cloud CLI, ב-API או ב-Terraform כדי לבטל את הגדרות ההצפנה ולציין מפתח KMS חדש באזור היעד.

כדי לשחזר למשאב שמוגן על ידי מפתח CMEK חדש, מבצעים את השלבים הבאים:

  1. מוודאים שיש לכם מפתח באזור היעד: מוודאים שיש לכם מפתח Cloud Key Management Service באזור שבו אתם משחזרים את מכונת ה-VM (בפרויקט היעד או בפרויקט KMS משותף), ואם אין לכם מפתח, יוצרים אחד.
  2. הענקת הרשאות KMS: מעניקים את התפקיד Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter) במפתח היעד לסוכן השירות של Compute Engine בפרויקט היעד שבו מתבצעת השחזור של המכונה הווירטואלית.

  3. ביצוע השחזור: מריצים את השחזור באחת מהשיטות הבאות, ומבטלים את מפתח ה-KMS לכל דיסק:

gcloud

  1. קבלת פרטי הגיבוי: כדי לאחזר את שם הגיבוי ואת שמות המכשירים של הדיסקים מהגיבוי, משתמשים בפקודה 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: השם של הפרויקט שבו נמצאת כספת הגיבוי.
    • SOURCE_REGION: המיקום של כספת הגיבוי.
    • BACKUP_VAULT_NAME: השם של כספת הגיבוי שממנה רוצים לשחזר נתונים.
    • SOURCE_INSTANCE_NAME: השם של מכונת Compute Engine של המקור.
  2. מריצים את פקודת השחזור: מריצים את פקודת השחזור ומבטלים את מפתח ה-KMS לכל דיסק באמצעות הפרמטר --create-disk.

    1. שחזור מכונה וירטואלית עם דיסק אחד:

      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: המזהה של הגיבוי שרוצים לשחזר.
      • PROJECT_ID: השם של הפרויקט שבו נמצאת כספת הגיבוי.
      • SOURCE_REGION: המיקום של כספת הגיבוי.
      • BACKUP_VAULT_NAME: השם של כספת הגיבוי שממנה רוצים לשחזר נתונים.
      • DATA_SOURCE: המזהה של מקור הנתונים שממנו רוצים לשחזר נתונים.
      • RESTORED_VM_NAME: השם של המכונה הווירטואלית המשוחזרת.
      • TARGET_ZONE: האזור שבו המכונה הווירטואלית משוחזרת.
      • TARGET_PROJECT_ID: הפרויקט שבו המכונה הווירטואלית משוחזרת.
      • DEVICE_NAME: שם המכשיר של הדיסק.
      • KMS_PROJECT_ID: מזהה הפרויקט שבו נמצא המפתח של Cloud Key Management Service.
      • TARGET_REGION: האזור שבו נמצא המפתח של Cloud Key Management Service.
      • KEYRING: השם של אוסף המפתחות ב-Cloud Key Management Service.
      • KEY_NAME: השם של המפתח של Cloud Key Management Service לדיסק 1.
    2. שחזור מכונה וירטואלית עם כמה דיסקים: מציינים דגל --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: המזהה של הגיבוי שרוצים לשחזר.
      • PROJECT_ID: השם של הפרויקט שבו נמצאת כספת הגיבוי.
      • SOURCE_REGION: המיקום של כספת הגיבוי.
      • BACKUP_VAULT_NAME: השם של כספת הגיבוי שממנה רוצים לשחזר נתונים.
      • DATA_SOURCE: המזהה של מקור הנתונים שממנו רוצים לשחזר נתונים.
      • RESTORED_VM_NAME: השם של המכונה הווירטואלית המשוחזרת.
      • TARGET_ZONE: האזור שבו המכונה הווירטואלית משוחזרת.
      • TARGET_PROJECT_ID: הפרויקט שבו המכונה הווירטואלית משוחזרת.
      • DEVICE_NAME_1: שם המכשיר של דיסק 1.
      • KMS_PROJECT_ID: מזהה הפרויקט שבו נמצא המפתח של Cloud Key Management Service.
      • TARGET_REGION: האזור שבו נמצא המפתח של Cloud Key Management Service.
      • KEYRING: השם של אוסף המפתחות ב-Cloud Key Management Service.
      • KEY_NAME_1: השם של המפתח של Cloud Key Management Service לדיסק 1.
      • DEVICE_NAME_2: שם המכשיר של דיסק 2.
      • KEY_NAME_2: השם של מפתח Cloud Key Management Service לדיסק 2.

API

  1. קבלת פרטי הגיבוי: כדי לאחזר את שם הגיבוי ואת שמות המכשירים של הדיסקים, שולחים בקשת GET לרישום הגיבויים:

    GET https://backupdr.googleapis.com/v1/projects/PROJECT_ID/locations/SOURCE_REGION/backupVaults/BACKUP_VAULT_NAME/dataSources/DATA_SOURCE/backups
    
  2. מריצים את ה-API לשחזור: שולחים בקשת POST ל-URI של הגיבוי restore.

    1. שחזור מכונה וירטואלית עם דיסק אחד:

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

      מטען ייעודי (payload):

      {
        "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. שחזור מכונה וירטואלית עם כמה דיסקים:

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

      מטען ייעודי (payload):

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

  1. שחזור מכונה וירטואלית עם דיסק אחד:

    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. שחזור מכונה וירטואלית עם כמה דיסקים:

    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 עבור המשאב המשוחזר.

אם גרסת המפתח של Cloud Key Management Service ששימשה להצפנת הנתונים במאגר הגיבוי מושבתת או מושמדת, לא תוכלו לשחזר מהגיבוי הזה.

המדריך בנושא Backup and DR Compute Engine