Como mover uma instância de VM entre zonas


Nesta página, você verá como mover uma instância de VM entre zonas, usando a API projects.moveInstance ou manualmente com uma série de etapas.

Sempre que possível, mova um VM automaticamente usando a API do método projects.moveInstance. No entanto, não é possível usar a API se você quiser mover uma VM entre regiões e essa VM pertencer a uma sub-rede. Faça a mudança manualmente. Saiba mais em Limitações neste documento.

Para mover a VM manualmente, siga estas etapas:

  1. Crie snapshots dos discos permanentes anexados à VM original.
  2. Crie cópias dos discos permanentes na zona de destino.
  3. Para endereços IP externos e internos:
    • Se você estiver movendo uma VM entre zonas dentro da mesma região e quiser preservar o endereço IP temporário, promova temporariamente o endereço IP temporário atribuído à VM para um endereço IP estático. Depois, atribua esse IP à nova instância de VM criada na zona de destino.
    • Se você estiver movendo uma VM entre regiões, precisará escolher um endereço IP diferente para a instância de VM.
  4. Crie e inicialize uma nova instância na zona de destino. Se você estiver movendo entre regiões, escolha também uma nova sub-rede para a nova VM.
  5. Anexe os novos discos permanentes à nova VM.
  6. Atribua um endereço IP externo à nova VM. Se necessário, rebaixe-o para um endereço IP externo temporário.
  7. Exclua os snapshots, os discos originais e a VM original.

Antes de começar

Requisitos

Antes de mover a VM, é preciso atender aos seguintes requisitos:

  • O projeto precisa ter cotas suficientes para novos snapshots e para promover quaisquer endereços IP externos temporários.
  • Na sua região de destino, é preciso cota suficiente para a nova VM e os discos. Por exemplo, se você tiver três discos anexados à VM que pretende mover, é preciso ter cota suficiente para criar três snapshots temporários de discos permanentes e três novos discos. Depois de criar os novos discos, você pode excluir os snapshots temporários.
  • Os discos permanentes conectados à VM que você quer mover não podem estar anexados a mais de uma VM.
  • Se a VM incluir GPUs, verifique se as GPUs que você quer usar estão disponíveis na zona de destino. Para uma lista de GPUs e zonas em que estão disponíveis, consulte GPUs no Compute Engine.

Observe que, enquanto a VM é movida, ela fica desligada, sendo reiniciada após a movimentação. Depois de mover a instância, atualize as referências existentes ao recurso original, como VMs ou pools de destino que apontam para a VM antiga.

Limitações

Sempre que possível, use a API moveInstances, mas há alguns cenários em que a API moveInstances não pode ser usada. Os seguintes cenários exigem uma mudança manual:

  • A VM está atualmente no estado TERMINATED.
  • A instância da VM é membro de um grupo de instâncias gerenciadas (MIG).
  • Você quer mover sua VM entre regiões, por exemplo, entre us-west1-a e asia-south1-b, e a VM pertence a uma sub-rede. Você precisa fazer a mudança manualmente e selecionar uma nova sub-rede para a VM.
  • A VM tem SSDs locais anexados a ela ou tem GPUs que não estão disponíveis na zona de destino.
    • Os SSDs locais se destinam ao armazenamento temporário, e os dados contidos neles não são preservados após o encerramento manual das VMs, o que é necessário como parte da mudança da VM. Se você precisar preservar dados do SSD local, replique-os usando uma opção de armazenamento durável, como discos permanentes.
    • Se as GPUs desejadas não estiverem disponíveis na zona de destino, escolha uma nova zona que ofereça as mesmas GPUs ou escolha novas GPUs na zona de destino.
  • A instância da VM é uma VM protegida que usa firmware UEFI.

Seja a mudança manual ou automática, é necessário atender aos requisitos para mover a VM.

Propriedades do recurso

Durante a mudança, algumas propriedades da VM e dos discos geradas pelo servidor são alteradas.

Propriedades alteradas para VMs

Nome da propriedade Alterações
Endereço IP interno Geralmente, é atribuído um novo endereço IP interno, mas é possível que a VM mantenha o endereço IP interno original.
Endereço IP externo Se a VM for movida entre zonas na mesma região, o endereço IP externo continuará igual. Caso contrário, escolha um endereço IP externo diferente para a instância da VM.
Plataforma de CPU Dependendo da plataforma de CPU disponível na zona de destino, a VM poderá ter uma plataforma de CPU diferente depois que ela for movida. Para ver uma lista completa de plataformas de CPU em cada zona, consulte Regiões e zonas disponíveis.
Rede/sub-rede Se você estiver movendo entre regiões uma VM que pertence a uma sub-rede, escolha uma nova sub-rede para ela. As VMs instâncias movidas entre zonas da mesma região mantêm a mesma sub-rede.

Propriedades alteradas dos discos

Nome da propriedade Alterações
Snapshot de origem O snapshot de origem do novo disco é definido como o snapshot temporário criado durante a movimentação.
ID do snapshot de origem A ID do snapshot da origem é definida como a ID do snapshot temporário.
Imagem de origem O campo de imagem de origem está vazio.
ID da imagem A ID da imagem está vazia.
Carimbo de data/hora da última desconexão O carimbo de data/hora da última desconexão está vazio.
Carimbo de data/hora da última conexão O carimbo de data/hora da última conexão é alterado para o momento em que o disco novo é conectado à nova instância.

Propriedades alteradas para VMs e discos

Nome da propriedade Alterações
ID Uma nova ID do recurso é gerada.
Carimbo de data/hora da criação Um novo carimbo de data/hora da criação é gerado.
URLs de recursos da zona Todos os URLs de recursos da zona são alterados para refletir a zona de destino. A lista a seguir mostra os URLs dos recursos que mudam:
  • URL do disco de origem da VM
  • URL do tipo de máquina da VM
  • URLs de self link
  • URLs de zonas
  • URLs de tipos de disco
  • Quaisquer URLs de VMs que estiverem na lista users[] de um disco

Como mover uma VM automaticamente

Antes de mover uma VM, revise os requisitos e as limitações.

gcloud

Verifique se a VM está em execução. Em seguida, com a ferramenta gcloud, execute o subcomando compute instances move para mover a VM.

Por exemplo, para mover uma VM chamada example-instance-1 com todos os discos permanentes anexados de us-central1-b, onde está em execução, para us-central1-f, sua nova região, execute o seguinte comando:

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

API

Na API, faça uma solicitação de POST para a API moveInstance com corpo de solicitação que contenha targetInstance e destinationZone. Exemplo:

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

Como mover uma VM manualmente

Sempre que possível, mova uma VM automaticamente usando a API moveInstance, que executa todas as etapas para mover uma VM para você. No entanto, se não for possível usar a API, mova a instância manualmente.

O exemplo a seguir descreve como mover uma VM myinstance com dois discos permanentes, mybootdisk e mydatadisk, de europe-west1-a para us-west1-b. A VM de exemplo tem a seguinte aparência:

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

Para mover a VM para outra zona:

  1. Identifique os discos associados à VM que você quer mover.

    Acessar a página "Discos"

    Neste exemplo, você encontrará os dois discos associados a seguir para a VM myinstance:

    • Um disco de inicialização chamado mybootdisk
    • Um disco de dados chamado mydatadisk
  2. Defina o estado de exclusão automática de mybootdisk e mydatadisk para false a fim de garantir que os discos não sejam excluídos automaticamente quando a VM for excluída.

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

    Se o estado foi atualizado, gcloud compute retorna a resposta Updated [...]. Se o estado de exclusão automática já tiver sido definido como falso, gcloud compute retornará:

    No change requested; skipping update for [myinstance].
  3. (Opcional) Salve os metadados da VM.

    Quando você exclui a VM, os metadados dela também são removidos. É possível salvar essas informações em um arquivo separado e reaplicar os metadados à nova VM.

    Descreva os metadados da VM da seguinte forma:

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

    Salve o conteúdo em um arquivo separado.

  4. Crie backups dos dados.

    Como precaução, crie backups dos dados enquanto os discos permanentes ainda estiverem conectados à VM usando snapshots de discos permanentes. Antes de criar um snapshot, verifique se ele está consistente com o estado do disco permanente limpando os buffers do disco.

    Depois de limpar os buffers de disco, crie os snapshots:

    gcloud compute disks snapshot mybootdisk mydatadisk \
        --snapshot-names backup-mybootsnapshot,backup-mydatasnapshot \
        --zone europe-west1-a
    

    Para verificar se o snapshot foi criado, execute gcloud compute snapshots list.

  5. (Opcional) Se você estiver movendo uma VM entre zonas dentro da mesma região e quiser preservar o endereço IP temporário interno ou externo, promova o endereço IP interno ou externo para um endereço IP estático, que pode ser reutilizado mais tarde.

  6. Exclua a VM.

    A exclusão da VM a encerra corretamente e remove quaisquer discos permanentes.

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

    A gcloudgcloud solicita que você confirme a exclusão:

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

    Do you want to continue (Y/n)?

    Como você desativou o estado de exclusão automática de discos anteriormente neste processo, digite Y para continuar e ignorar o aviso.

  7. Em seguida, crie outro instantâneo do disco de inicialização e do disco de dados.

    gcloud compute disks snapshot mybootdisk mydatadisk \
        --snapshot-names mybootsnapshot,mydatasnapshot \
        --zone europe-west1-a
    
    Created [.../mydatasnapshot].
    Created [.../mybootsnapshot].
  8. (Opcional) Exclua os discos permanentes.

    Se você pretende usar os mesmos nomes dos discos permanentes nos novos discos, precisa excluir os discos atuais para liberar os nomes. A exclusão dos discos também economiza custos com armazenamento em disco permanente.

    Se você não planeja reutilizar os mesmos nomes de disco, não é necessário excluí-los.

    gcloud compute disks delete mybootdisk mydatadisk --zone europe-west1-a
    
  9. Criar novos discos permanentes em us-west1-b dos snapshots que você criou. Primeiro, crie o disco de inicialização.

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

    Em seguida, crie o disco de dados.

    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
  10. Recrie sua VM em us-west1-b.

    • Se você salvou os metadados da VM em um arquivo, como myinstance.describe, é possível usá-lo para definir os mesmos metadados na VM.

    • Se a VM tinha um endereço IP externo estático, é possível reatribuir esse endereço à nova VM especificando a opção --address [ADDRESS]. Se você estiver movendo uma VM entre regiões, precisará escolher um endereço IP externo diferente para a nova instância de VM.

    • Se a VM tinha um endereço IP interno estático, é possível reatribuir esse endereço à nova VM especificando a opção --private-network-ip ADDRESS. Se você estiver movendo uma VM entre regiões, precisará escolher um endereço interno IP diferente para a instância de VM.

    • Se a VM tinha GPUs, adicione GPUs a ela usando a opção --accelerator.

    • Se a VM usar uma sub-rede específica, adicione a sinalização --subnet [SUBNET_NAME].

    Para uma lista completa de sinalizações opcionais, consulte gcloud compute instances create.

    gcloud compute instances create myinstanceb --machine-type n1-standard-4 \
        --zone us-west1-b \
        --disk name=mybootdiskb,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
  11. (Opcional) Exclua os snapshots de discos permanentes.

    Depois de confirmar que suas máquinas virtuais foram movidas, exclua os snapshots temporários que você criou para economizar nos custos de armazenamento.

    gcloud compute snapshots delete mybootsnapshot mydatasnapshot
    

    Se você não precisar mais dos seus snapshots de backup, exclua-os também:

    gcloud compute snapshots delete backup-mybootsnapshot backup-mydatasnapshot
    

A seguir