Como mover uma instância entre zonas

Nesta página, descrevemos como mover uma instância de VM entre zonas usando a API projects.moveInstance ou manualmente por meio de uma série de etapas. Se uma zona estiver indisponível ou obsoleta, use esse método para mover suas instâncias para outra zona.

As etapas a seguir são necessárias para mover uma instância:

  1. Crie instantâneos dos discos permanentes anexados à instância original.
  2. Crie cópias dos discos permanentes na zona de destino.
  3. Para instâncias movidas na mesma região, promova provisoriamente quaisquer endereços IP externos temporários atribuídos à instância a um endereço IP externo estático.
  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 instância.
  5. Conecte os discos permanentes recém-criados à nova instância.
  6. Atribua um endereço IP externo à nova instância. Se necessário, rebaixe-o para um endereço IP externo temporário.
  7. Exclua os instantâneos, os discos e a instância originais.

Sempre que possível, mova uma instância automaticamente usando a API projects.moveInstance. Se os requisitos de uso da API moveInstance não forem atendidos, ainda será possível mover manualmente a instância.

Antes de começar

Requisitos

Antes de mover sua instância, é preciso atender aos seguintes requisitos:

  • O projeto precisa ter cotas suficientes para novos instantâneos e para promover quaisquer endereços IP externos temporários.
  • Na sua região de destino deve haver cota suficiente para a nova instância e os discos. Por exemplo, se você tiver três discos anexados à instância que pretende mover, é preciso ter cota suficiente para criar três instantâneos temporários de discos permanentes e três novos discos. Depois de criar seus novos discos, você pode excluir seus instantâneos temporários.
  • Os discos permanentes conectados à instância que você quer mover não podem estar anexados a mais de uma instância.
  • Se a instância 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.

Depois de mover a instância, atualize as referências atuais ao recurso original, como instâncias ou pools de destino que apontam para a instância antiga.

Propriedades do recurso

Durante a movimentação, algumas propriedades da instância e dos discos geradas pelo servidor são alteradas.

Propriedades alteradas das instâncias

Nome da propriedade Alterações
Endereço IP interno Geralmente, é atribuído um novo endereço IP interno, mas é possível que a instância mantenha o endereço IP interno original.
Endereço IP externo Se a instância for movida entre zonas na mesma região, o endereço IP externo continuará igual. Caso contrário, você precisará escolher um endereço IP diferente para a instância da VM.
Plataforma de CPU Dependendo da plataforma de CPU disponível na zona de destino, a instância 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 instância que pertence a uma sub-rede, escolha uma nova sub-rede para a instância. As instâncias movidas entre zonas da mesma região mantêm a mesma sub-rede.

Propriedades alteradas dos discos

Nome da propriedade Alterações
Instantâneo da origem O instantâneo da origem do novo disco será definido como o instantâneo temporário que é criado durante a movimentação.
ID do instantâneo da origem A ID do instantâneo da origem é definida como a ID do instantâneo 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 das instâncias e dos 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. Veja a seguir uma lista de URLs dos recursos que mudam:
  • URL do disco de origem da instância
  • URL do tipo de máquina da instância
  • URLs de self link
  • URLs de zonas
  • URLs de tipos de disco
  • Qualquer URL de instâncias relacionado na lista users[] de um disco

Como escolher entre movimentação manual e automática

Uma movimentação manual significa que você executa cada uma das etapas descritas acima em vez de usar a API projects.moveInstances. Use a API moveInstances sempre que possível para facilitar seu trabalho, mas o uso da API moveInstances não é uma opção em algumas situações. Em especial:

  • Se você quiser mover a instância entre regiões, como entre us-west1-a e asia-south1-b, e sua VM pertencer a uma sub-rede, execute a movimentação manualmente e selecione uma nova sub-rede para a instância.
  • Você também precisará executar a movimentação manualmente se a instância incluir GPUs ou SSDs locais.

Na movimentação tanto manual quanto automática, é necessário que os requisitos sejam atendidos para que a instância seja movida com êxito.

Antes de mover uma instância, consulte os requisitos.

gcloud


Verifique se sua instância está em execução. Depois, na gcloud, use o subcomando compute instances move para mover a instância.

Por exemplo, para mover uma instância chamada example-instance-1 com todos os seus discos permanentes anexados, que estão atualmente em execução em us-central1-b, para us-central1-f, execute o seguinte comando:

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

Essa operação pode demorar vários minutos para ser concluída.

API

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

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

Como mover uma instância manualmente

Sempre que possível, mova uma instância automaticamente, já que a API moveInstance executa todas as tarefas necessárias para você. No entanto, certas limitações podem restringir sua capacidade de usar essa API. Nesse caso, execute a movimentação manualmente. Se qualquer uma das seguintes condições for verdadeira, mova a instância manualmente:

  • A VM não está no estado RUNNING.
  • Você está movendo uma VM que pertence a uma sub-rede para uma região diferente.
  • A instância tem GPUs ou SSDs locais anexados.

O exemplo a seguir descreve como mover uma instância myinstance com dois discos permanentes myrootdisk e mydatadisk, de europe-west1-a para us-west1-b. A instância 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 instância para outra zona:

  1. Identifique os discos associados à instância que você quer mover.

    Acessar a página "Discos"

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

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

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

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

  3. (Opcional) Salve os metadados da instância.

    Ao excluir a instância, os metadados dela também são removidos. Você pode salvar essas informações em um arquivo separado e reaplicar os metadados à nova instância.

    Descreva os metadados da instância 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 usando instantâneos de discos permanentes. Como os discos permanentes ainda estão anexados à instância, limpe seus buffers de disco antes de capturar um instantâneo para garantir que seu instantâneo seja consistente com o estado do disco permanente.

    Depois de limpar os buffers dos discos, crie os instantâneos da seguinte maneira:

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

    Para verificar se o instantâneo foi criado, execute gcloud compute snapshots list.

  5. Exclua a instância.

    A exclusão da instância a encerra corretamente e desconecta quaisquer discos permanentes.

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

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

     The following instances will be deleted. Attached disks configured to
     be auto-deleted will be deleted unless they are attached to any other
     instances. 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)?

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

  6. Em seguida, crie outro instantâneo do disco raiz e do disco de dados.

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

    Se você pretende usar os mesmos nomes dos discos permanentes nos novos discos, precisa excluir os discos existentes 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, pode excluir os discos permanentes mais tarde.

    gcloud compute disks delete myrootdisk mydatadisk --zone europe-west1-a
    
  8. Crie novos discos permanentes em us-west1-b a partir dos instantâneos que você acabou de criar. Crie primeiro o disco raiz.

    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

    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
  9. Recrie a instância em us-west1-b:

    • Se você salvou os metadados da instância em um arquivo, por exemplo myinstance.describe, pode usá-lo para definir os mesmos metadados na instância.

    • Se a sua instância tinha um endereço IP externo reservado, você pode reatribuir o endereço à nova instância especificando a opção --address ADDRESS.

    • Se a instância incluía GPUs, adicione-as à instância usando a opção --accelerator.

    • Se a instância usar uma sub-rede específica, adicione a sinalização --subnet [SUBNET_NAME] antes da --zone [ZONE_NAME].

    Para conseguir 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=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. (Opcional) Exclua os instantâneos de discos permanentes.

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

    gcloud compute snapshots delete myrootsnapshot mydatasnapshot
    

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

    gcloud compute snapshots delete backup-myrootsnapshot backup-mydatasnapshot
    

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Compute Engine