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.

Sempre que possível, mova uma instância automaticamente usando a API projects.moveInstance. Se você não puder usar a API, ainda será possível mover a instância manualmente usando estas etapas:

  1. Crie snapshots dos discos permanentes anexados à instância 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 instância entre zonas na mesma região e quiser preservar o endereço IP efêmero, promova temporariamente o endereço IP efêmero atribuído à instância para um endereço IP estático e atribua-o à nova instância de VM criada na zona de destino.
    • Se você estiver movendo uma instância 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 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.

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 os novos discos, você pode 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.

Observe que, embora a VM esteja em movimento, ela será encerrada e reiniciada após a migração. Depois de mover a instância, atualize as referências existentes ao 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 moveInstances não é uma opção. Os seguintes cenários exigem uma mudança manual:

  • A VM está atualmente no estado 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.
    • Os 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.
  • A VM é uma VM protegida que usa firmware UEFI.

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 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 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. 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 na lista users[] de um 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

API

Na API, faça uma solicitação de POST para a API moveInstance com corpo de solicitação que contenha targetInstance e destinationZone. Por 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, mybootdisk 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 mybootdisk
    • Um disco de dados chamado mydatadisk
  2. Defina o estado de exclusão automática de mybootdisk 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 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 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 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 instância entre zonas na mesma região e quiser preservar o endereço IP interno ou externo efêmero, promova o IP interno ou externo para um endereço IP estático, que pode ser reutilizado mais tarde.

  6. 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.

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

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

    • 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].

    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