Como mover uma instância entre zonas

Nesta página, você aprende a 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.

Para mover uma instância, conclua as seguintes etapas:

  1. Crie snapshots 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 temporariamente quaisquer endereços IP externos temporários atribuídos à instância para um endereço IP externo estático.
  4. Crie e inicialize uma nova instância na zona de destino. Se você estiver movendo instâncias entre regiões, escolha também uma nova sub-rede para a nova instância.
  5. Anexe os novos discos permanentes à 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 snapshots, os discos e a instância originais.

Sempre que possível, mova uma instância automaticamente usando a API projects.moveInstance. Se não for possível usar a API , você ainda poderá mover manualmente sua 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 snapshots e para promover quaisquer endereços IP externos temporários.
  • Na sua região de destino é preciso 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 snapshots temporários de discos permanentes e três novos discos. Depois de criar seus novos discos, é possível excluir os snapshots temporários.
  • Os discos permanentes conectados à instância que você quer mover não são 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 para o recurso original, como instâncias ou pools de destino que apontam para a instância antiga.

Limitações

Quando possível, use a API moveInstances para poupá-lo de algum trabalho, mas em alguns cenários o uso da API não é uma opção. Os seguintes cenários exigem uma mudança manual:

  • No momento, a VM está TERMINATED.
  • Você quer mover sua instância de região, por exemplo, entre us-west1-a e asia-south1-b, e sua VM pertence a uma sub-rede. Faça a mudança manualmente e selecione uma nova sub-rede para a instância.
  • A instância tem SSDs locais anexados a ela ou tem GPUs que não estão disponíveis na zona de destino.
    • Observação: SSDs locais são destinados ao armazenamento temporário, e os dados nos SSDs locais não são preservados após o encerramento manual das instâncias, o que seria necessário como parte da movimentação da instância. 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.

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

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, 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 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
Snapshot da origem O snapshot de origem do novo disco é definido como o snapshot temporário criado durante a movimentação.
ID do snapshot de origem O ID do snapshot da origem é definida como o ID do snapshot temporário.
Imagem de origem O campo de imagem de origem está vazio.
ID da imagem O ID da imagem está vazio.
Timestamp da última desconexão O carimbo de data/hora da última desconexão está vazio.
Timestamp da última desconexã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 Um nova ID do recurso é gerado.
Timestamp da criação Um novo carimbo de data/hora da criação é gerado.
URLs de recurso 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 instância
  • URL do tipo de máquina da instância
  • URLs de self link
  • URLs de zonas
  • URLs de tipos de disco
  • Quaisquer URLs de instâncias relacionados users[] disco

Como mover uma instância automaticamente

Antes de mover uma instância, verifique os requisitos e as limitações.

gcloud

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

Por exemplo, para mover uma instância 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

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

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 instância manualmente

Sempre que possível, mova uma instância automaticamente usando a API moveInstance, que executa todas as etapas para mover uma instância 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 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 o estado de exclusão automática de myrootdisk e mydatadisk para 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á tiver sido definido como falso, gcloud compute retornará:

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

    Ao excluir a instância, os metadados dela também são removidos. É possível 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 enquanto os discos permanentes ainda estiverem conectados à instância 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 dos discos, crie os snapshots da seguinte maneira:

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

    Para verificar se o snapshot 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 gcloudgcloud solicita que você confirme a exclusão:

     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)?

    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 snapshot 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 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, é possível excluí-los.

    gcloud compute disks delete myrootdisk mydatadisk --zone europe-west1-a
    
  8. Criar novos discos permanentes em us-west1-b dos snapshots 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. Para redefinir a instância usando um us-west1-b.

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

    • Se sua instância tinha um endereço IP externo reservado, é possível 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 sinalização --zone [ZONE_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=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 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 myrootsnapshot mydatasnapshot
    

    Se você não precisar mais dos seus snapshots 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