Instanzen zwischen Zonen verschieben

Auf dieser Seite wird beschrieben, wie Sie eine VM-Instanz in mehreren Schritten zwischen Zonen verschieben, entweder mithilfe der API projects.moveInstance oder manuell. Mit dieser Methode können Sie Instanzen aus Zonen verschieben, die nicht verfügbar sind oder verworfen wurden.

Führen Sie die folgenden Schritte aus, um eine Instanz zu verschieben:

  1. Erstellen Sie Snapshots des nichtflüchtigen Speichers, der der ursprünglichen Instanz zugeordnet ist.
  2. Erstellen Sie Kopien des nichtflüchtigen Speichers in der Zielzone.
  3. Stufen Sie für Instanzen in derselben Region vorübergehend alle sitzungsspezifischen externen IP-Adressen, die der Instanz zugewiesen sind, zu einer statischen externen IP-Adresse hoch.
  4. Erstellen und starten Sie eine neue Instanz in der Zielzone. Wenn Sie die Instanz in eine andere Region verschieben, müssen Sie auch ein neues Subnetz für die neue Instanz auswählen.
  5. Ordnen Sie den neuen nichtflüchtigen Speicher Ihrer neuen Instanz zu.
  6. Weisen Sie der neuen Instanz eine externe IP-Adresse zu. Stufen Sie gegebenenfalls die Adresse wieder in eine sitzungsspezifische IP-Adresse zurück.
  7. Die Snapshots, ursprünglichen Laufwerke und ursprünglichen Instanzen löschen.

Wenn möglich sollten Sie Instanzen mithilfe der API projects.moveInstance automatisch verschieben. Wenn Sie die API nicht verwenden können, können Sie die Instanz manuell verschieben.

Vorbereitung

Voraussetzungen

Bevor Sie eine Instanz verschieben können, müssen die folgenden Voraussetzungen erfüllt sein:

  • Das Kontingent Ihres Projekts für neue Snapshots und zum Hochstufen von sitzungsspezifischen externen IP-Adressen ist ausreichend.
  • In Ihrer Zielregion ist genügend Kontingent für die neue Instanz und die neuen Laufwerke vorhanden. Beispiel: Wenn der Instanz, die Sie verschieben möchten, drei Laufwerke zugeordnet sind, muss das Kontingent ausreichen, um drei temporäre Snapshots des nichtflüchtigen Speichers und drei neue Laufwerke zu erstellen. Nachdem Sie die neuen Laufwerke erstellt haben, können Sie die temporären Snapshots löschen.
  • Nichtflüchtiger, der zu verschiebenden Instanz zugeordneter Speicher ist keiner anderen Instanz zugeordnet.
  • Wenn die Instanz GPUs enthält, sollten Sie überprüfen, ob die gewünschten GPUs in Ihrer Zielzone verfügbar sind. Eine Liste der GPUs und der Zonen, in denen sie verfügbar sind, finden Sie unter GPUs in Compute Engine.

Nachdem Sie die Instanz verschoben haben, müssen Sie alle vorhandenen Verweise auf die ursprüngliche Ressource aktualisieren, z. B. alle Zielinstanzen oder Zielpools, die auf die vorherige Instanz verweisen.

Beschränkungen

Verwenden Sie nach Möglichkeit die API moveInstances, um sich Arbeit zu sparen. In einigen Situationen ist die Verwendung der API moveInstances aber nicht möglich. Insbesondere folgende Situationen erfordern eine manuelle Verschiebung:

  • Die VM ist derzeit TERMINATED.
  • Sie möchten Ihre Instanz zwischen Regionen verschieben, z. B. von us-west1-a nach asia-south1-b, und Ihre VM gehört zu einem Subnetzwerk. In diesem Fall müssen Sie die Instanz manuell verschieben und ein neues Subnetz für sie auswählen.
  • Die Instanz hat lokale SSDs oder GPUs, die in der Zielzone nicht verfügbar sind.
    • Lokale SSDs sind für die vorübergehende Speicherung gedacht. Die Daten auf den lokalen SSDs bleiben nicht erhalten, wenn die Instanzen manuell beendet werden, was beim Verschieben der Instanz erforderlich ist. Wenn Sie lokale SSD-Daten beibehalten wollen, replizieren Sie diese an einen dauerhaften Speicherort wie einen nichtflüchtigen Speicher.
    • Wenn Ihre gewünschten GPUs in der Zielzone nicht verfügbar sind, wählen Sie entweder eine neue Zone mit denselben GPUs oder neue GPUs in der Zielzone.

Die Voraussetzungen für ein erfolgreiches Verschieben von Instanzen müssen immer erfüllt sein, unabhängig davon, ob die Instanzen manuell oder automatisch verschoben werden.

Ressourcenattribute

Während des Verschiebevorgangs ändern sich einige vom Server generierten Attribute Ihrer Instanz und Ihrer Laufwerke.

Attribute, die sich für Instanzen ändern

Attributsname Änderungen
Interne IP-Adresse Normalerweise wird eine neue interne IP-Adresse zugewiesen. Es kann jedoch vorkommen, dass die Instanz die ursprüngliche interne IP-Adresse behält.
Externe IP-Adresse Wenn die Instanz zwischen Zonen in derselben Region verschoben wird, bleibt die externe IP-Adresse gleich. Wählen Sie ansonsten eine andere externe IP-Adresse für die VM-Instanz.
CPU-Plattform Je nach verfügbarer CPU-Plattform in Ihrer Zielzone könnte Ihre Instanz eine andere CPU-Plattform haben, nachdem sie verschoben wurde. Eine vollständige Liste der CPU-Plattformen in den einzelnen Zonen finden Sie unter Verfügbare Regionen und Zonen.
Netzwerk/Subnetz Wenn Ihre Instanz zu einem Subnetz gehört und Sie eine Instanz in eine andere Region verschieben, müssen Sie ein neues Subnetz für Ihre Instanz auswählen. Instanzen, die von einer Zone in eine andere innerhalb derselben Region verschoben werden, behalten das Subnetz bei.

Attribute, die sich für Laufwerke ändern

Attributsname Änderungen
Quell-Snapshot Der Quell-Snapshot des neuen Laufwerks ist auf den temporären Snapshot festgelegt, der während der Verschiebung erstellt wird.
Quell-Snapshot-ID Die Quell-Snapshot-ID wird als temporäre Snapshot-ID festgelegt.
Quell-Image Das Quell-Image-Feld ist leer.
Image-ID Die Image-ID ist leer.
Zeitstempel der letzten Trennung Der Zeitstempel der letzten Trennung ist leer.
Zeitstempel der letzten Verbindung Als neuer Zeitstempel der letzten Verbindung gilt der Zeitpunkt, an dem der neuen Instanz das neue Laufwerk zugeordnet wurde.

Attribute, die sich sowohl für Instanzen als auch für Laufwerke ändern

Attributsname Änderungen
ID Eine neue Ressourcen-ID wird generiert.
Zeitstempel der Erstellung Ein neuer Zeitstempel der Erstellung wird generiert.
Zonenressourcen-URLs Alle URLs für Zonenressourcen entsprechen jetzt der Zielzone. Die folgende Liste zeigt die Ressourcen-URLs, die sich ändern:
  • URL des Quelllaufwerks einer Instanz
  • URL des Maschinentyps einer Instanz
  • Self-Link-URLs
  • Zonen-URLs
  • URLs der Laufwerkstypen
  • Alle URLs der Instanzen, die in der Liste users[] eines Laufwerks enthalten sind

Instanz automatisch verschieben

Sehen Sie sich vor dem Verschieben einer Instanz die Voraussetzungen und Beschränkungen an.

gcloud

Prüfen Sie, ob Ihre Instanz ausgeführt wird. Verschieben Sie die Instanz dann mit dem Unterbefehl compute instances move des gcloud-Tools.

Um beispielsweise eine Instanz mit dem Namen example-instance-1 mit dem gesamten verbundenen nichtflüchtigen Speicher aus der Region us-central1-b, in der sie derzeit ausgeführt wird, in die neue Region us-central1-f zu verschieben, führen Sie diesen Befehl aus:

gcloud compute instances move example-instance-1 \
    --zone us-central1-b --destination-zone us-central1-f

Dieser Vorgang kann einige Minuten dauern.

API

Senden Sie in der API eine POST-Anfrage an die API moveInstance. Der Anfragetext muss die targetInstance und die destinationZone enthalten. Beispiel:

{
   "targetInstance": "zones/us-central1-b/instances/example-instance-1",
   "destinationZone": "zones/us-central1-f"
}

Instanz manuell verschieben

Wenn möglich, sollten Sie Instanzen automatisch verschieben. Dazu nutzen Sie die API moveInstance, die alle Schritte zum Verschieben einer Instanz für Sie übernimmt. Wenn Sie die API jedoch nicht verwenden können, ist die Verschiebung auch manuell möglich.

Im folgenden Beispiel wird beschrieben, wie die Instanz myinstance mit den beiden nichtflüchtigen Speichern myrootdisk und mydatadisk von europe-west1-a nach us-west1-b verschoben wird. Die Beispielinstanz sieht so aus:

gcloud compute instances list
NAME       ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
myinstance europe-west1-a n1-standard-4 10.240.116.177 146.148.112.106 RUNNING

So verschieben Sie die Instanz in eine andere Zone:

  1. Identifizieren Sie die Laufwerke, die der zu verschiebenden Instanz zugeordnet sind.

    Weiter zur Seite "Laufwerke"

    In diesem Beispiel finden Sie die zwei folgenden zugeordneten Laufwerke für die Instanz myinstance:

    • Das Bootlaufwerk myrootdisk
    • Das Datenlaufwerk mydatadisk
  2. Legen Sie zuerst den Status der automatischen Löschfunktion für myrootdisk und mydatadisk auf false fest, um zu gewährleisten, dass die Laufwerke nicht automatisch mit der Instanz gelöscht werden.

    gcloud compute instances set-disk-auto-delete myinstance --zone europe-west1-a \
        --disk myrootdisk --no-auto-delete
    

    Sobald der Status aktualisiert wurde, gibt gcloud compute die Rückmeldung Updated [...]. Wenn der Status der automatischen Löschfunktion bereits auf "false" eingestellt war, gibt gcloud compute folgende Antwort zurück.

    No change requested; skipping update for [myinstance].
  3. (Optional) Speichern Sie die Metadaten der Instanz.

    Wenn Sie Ihre Instanz löschen, werden auch die zugehörigen Metadaten entfernt. Sie können diese Informationen in einer separaten Datei speichern und dann die Metadaten der Instanz noch einmal auf die neue Instanz anwenden.

    Beschreiben Sie so die Metadaten Ihrer Instanz:

    gcloud compute instances describe myinstance --zone europe-west1-a
    

    Speichern Sie den Inhalt in einer separaten Datei.

  4. Erstellen Sie Sicherungen Ihrer Daten.

    Erstellen Sie als Vorsichtsmaßnahme Sicherungen Ihrer Daten, während der nichtflüchtige Speicher noch mit der Instanz verknüpft ist. Machen Sie dazu Snapshots des nichtflüchtigen Speichers. Prüfen Sie vor dem Erstellen eines Snapshots, ob Ihr Snapshot mit dem Status des nichtflüchtigen Speichers konsistent ist. Löschen Sie dazu den Zwischenspeicher des Laufwerks.

    Nachdem Sie den Laufwerkzwischenspeicher geleert haben, erstellen Sie die Snapshots wie folgt:

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names backup-myrootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

    Führen Sie gcloud compute snapshots list aus, um zu überprüfen, ob der Snapshot erstellt wurde.

  5. Löschen Sie Ihre Instanz.

    Das Löschen Ihrer Instanz wird diese sauber schließen und den gesamten nichtflüchtigen Speicher von ihr trennen.

    gcloud compute instances delete myinstance --zone europe-west1-a
    

    gcloud fordert Sie auf, den Löschvorgang zu bestätigen:

     The following instances will be deleted. Any attached disks configured to
     be auto-deleted will be deleted unless they are attached to any other
     instances or the --keep-disks flag is given and specifies them for keeping.
     Deleting a disk is irreversible and any data on the disk will be lost.
      — [myinstance] in [europe-west1-a]
     

    Do you want to continue (Y/n)?

    Da Sie den Status der automatischen Löschfunktion für die Laufwerke bereits zuvor in diesem Prozess deaktiviert haben, geben Sie Y ein, um fortzufahren, und ignorieren Sie die Warnung.

  6. Als Nächstes erstellen Sie einen weiteren Snapshot des Rootlaufwerks und des Datenlaufwerks.

    gcloud compute disks snapshot myrootdisk mydatadisk \
        --snapshot-names myrootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    
    Created [.../mydatasnapshot].
    Created [.../myrootsnapshot].
  7. (Optional) Löschen Sie Ihren nichtflüchtigen Speicher.

    Wenn Sie die Namen der nichtflüchtigen Speicher für die neuen Laufwerke wiederverwenden möchten, müssen Sie die vorhandenen Laufwerke löschen, um die Namen freizugeben. Durch das Löschen der Laufwerke sparen Sie gleichzeitig Kosten für den nichtflüchtigen Speicher.

    Wenn Sie nicht beabsichtigen, dieselben Laufwerksnamen wiederzuverwenden, können Sie sie löschen.

    gcloud compute disks delete myrootdisk mydatadisk --zone europe-west1-a
    
  8. Erstellen Sie in der Zone us-west1-b neue nichtflüchtige Speicher aus den Snapshots, die Sie gerade erstellt haben. Erstellen Sie zuerst das Rootlaufwerk.

    gcloud compute disks create myrootdiskb --source-snapshot myrootsnapshot \
        --zone us-west1-b
    
    Created [.../myrootdiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    myrootdiskb us-west1-b     100     pd-standard READY

    Erstellen Sie dann das Datenlaufwerk.

    gcloud compute disks create mydatadiskb --source-snapshot mydatasnapshot \
        --zone us-west1-b
    
    Created [.../mydatadiskb].
    NAME        ZONE           SIZE_GB TYPE        STATUS
    mydatadiskb us-west1-b 4000    pd-standard READY
  9. Erstellen Sie Ihre Instanz in us-west1-b.

    • Wenn Sie die Instanzmetadaten in einer Datei gespeichert haben, z. B. myinstance.describe, können Sie damit für Ihre Instanz dieselben Metadaten festlegen.

    • Wenn die Instanz eine reservierte externe IP-Adresse hatte, können Sie diese Adresse der neuen Instanz unter Angabe der Option --address ADDRESS wieder zuweisen.

    • Wenn Ihre Instanz GPUs enthält, fügen Sie der Instanz mit der Option --accelerator GPUs hinzu.

    • Wenn die Instanz ein bestimmtes Subnetz verwendet, fügen Sie das Flag --subnet [SUBNET_NAME] vor dem Flag --zone [ZONE_NAME] hinzu.

    Eine vollständige Liste weiterer Flags finden Sie unter gcloud compute instances create.

    gcloud compute instances create myinstanceb --machine-type n1-standard-4 \
        --zone us-west1-b \
        --disk name=myrootdiskb,boot=yes,mode=rw \
        --disk name=mydatadiskb,mode=rw
    
    Created [.../myinstanceb].
    NAME        ZONE           MACHINE_TYPE  INTERNAL_IP    EXTERNAL_IP     STATUS
    myinstanceb us-west1-b     n1-standard-4 10.240.173.229 146.148.112.106 RUNNING
  10. (Optional) Löschen Sie die Snapshots Ihres nichtflüchtigen Speichers.

    Prüfen Sie, ob die virtuellen Maschinen verschoben wurden. Sparen Sie dann Speicherkosten, indem Sie die von Ihnen erstellten temporären Snapshots löschen.

    gcloud compute snapshots delete myrootsnapshot mydatasnapshot
    

    Wenn Sie die Sicherungs-Snapshots nicht mehr benötigen, können Sie diese ebenfalls löschen:

    gcloud compute snapshots delete backup-myrootsnapshot backup-mydatasnapshot
    

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation