Migrando uma VM entre redes


Esta página descreve como migrar uma instância de VM de uma rede para outra. No caso de uma VM conectada a mais de uma rede usando múltiplas interfaces de rede, esse processo atualiza uma das interfaces e deixa o restante no lugar.

As seguintes migrações são suportadas:

  • Da rede legada para uma rede VPC no mesmo projeto
  • De uma rede VPC para outra rede VPC no mesmo projeto
  • De uma sub-rede de uma rede VPC para outra sub-rede da mesma rede
  • De uma rede de projeto de serviço para a rede compartilhada de um projeto host de VPC compartilhada

Em todos os casos, a VM permanece na região e zona onde estava antes. Somente a rede anexada muda.

Antes de começar

  • Leia a documentação da Nuvem Privada Virtual .
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar no Compute Engine selecionando uma das seguintes opções:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

      Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para gcloud CLI.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para mais informações, consulte Autenticar para usar REST na documentação de autenticação do Google Cloud.

Requisitos

Antes de migrar uma VM, ela deverá atender aos seguintes requisitos:

  • A VM deve ser parada. Para garantir que o sistema operacional convidado na VM possa ser encerrado corretamente antes da conclusão da operação de parada, você pode opcionalmente ativar o desligamento normal na VM .
  • A VM não deve fazer parte de um grupo de instâncias ou de um grupo de endpoints de rede (NEG). Aplicam-se as seguintes condições:
    • Se a VM fizer parte de um grupo de instâncias não gerenciadas ou NEG, você deverá remover a VM do grupo antes de migrá-la.
    • Se a VM fizer parte de um grupo de instâncias gerenciadas (MIG), ela não poderá ser migrada. Em vez disso, crie um novo MIG usando um modelo de instância com propriedades de VM diferentes.
    • Você pode mover instâncias em pools de destino sem removê-las primeiro. O pool de destino se expande para cobrir ambas as redes.

Limitações

  • Você não pode migrar uma interface de VM para uma rede legada.
  • O endereço MAC alocado à interface de rede mudará durante a migração. Isto poderia ter um impacto nos serviços fortemente acoplados aos endereços MAC, tais como contratos de licença de terceiros.
  • Se você estiver migrando a VM para uma rede ou sub-rede com um intervalo de IP diferente, o endereço IP interno da sua instância deverá mudar. Se estiver migrando para uma sub-rede com o mesmo intervalo de IP, você poderá manter o endereço IP antigo, desde que ainda não esteja em uso no destino, especificando-o durante a migração.
  • Se a sub-rede de destino não tiver o mesmo intervalo de IP que a origem, o endereço IP da interface será alterado para corresponder ao novo intervalo de sub-rede.
  • Você pode manter o endereço IP externo existente da VM no novo local. Para fazer isso, você deve ter a permissão compute.subnetworks.useExternalIp na rede de destino, e a rede de destino não pode ter endereços IP externos desabilitados pela restrição constraints/compute.vmExternalIpAccess .

Migrando uma VM

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

O Google recomenda que você crie quaisquer regras de firewall, rotas, balanceadores de carga e outros recursos de infraestrutura de rede necessários na nova rede antes de migrar suas VMs. Isso pode reduzir o tempo que suas VMs ficam offline.

Para migrar uma VM, selecione uma das seguintes opções:

Console

  1. No console do Google Cloud, acesse a página de instâncias de VM .

    Acesse as instâncias de VM

  2. Clique no nome da instância de VM para abrir a página de detalhes.

  3. Clique em Parar .

  4. Se uma caixa de diálogo de confirmação aparecer, clique em Parar .

  5. Depois que a VM parar, clique em Editar .

  6. Em Interfaces de rede , clique na interface que deseja mover.

  7. No campo Rede da interface, selecione a nova rede para a interface.

  8. No campo Sub-rede da interface, selecione a nova sub-rede da interface.

  9. No campo Endereço IP interno , especifique Automático se desejar que o sistema aloque um endereço IP do intervalo de sub-rede ou Personalizado se desejar especificar um endereço não utilizado.

  10. Clique em Concluído para fechar o painel de edição da interface de rede.

  11. Clique em Salvar .

  12. Depois que a VM terminar de salvar, clique em Iniciar .

  13. Se uma caixa de diálogo de confirmação for exibida, clique em Iniciar .

gcloud

  1. Pare a VM

    gcloud compute instances stop INSTANCE_NAME \
        --zone=ZONE_NAME

    onde

    • INSTANCE_NAME é o nome da instância da VM.
    • ZONE_NAME é o nome da zona que contém a instância.
  2. Migrar a VM

    gcloud compute instances network-interfaces update INSTANCE_NAME \
        --zone=ZONE_NAME \
        --network-interface=NIC \
        --network=NETWORK_NAME \
        --subnetwork=SUBNET_NAME

    onde

    • INSTANCE_NAME é o nome da instância da VM.
    • ZONE_NAME é o nome da zona que contém a instância.
    • NIC é o nome da interface que você está atualizando. Em uma VM de interface única, a NIC é nic0 .
    • NETWORK_NAME é o nome da rede de destino. Se você estiver migrando a VM de uma rede de projeto de serviço para a rede do projeto host, deverá usar um nome totalmente qualificado para a rede de destino: projects/ HOST_PROJECT_ID /global/networks/ NETWORK_NAME
    • SUBNET_NAME é o nome da sub-rede de destino. Esta sub-rede deve estar na mesma região que a VM. Se você estiver migrando a VM de uma rede de projeto de serviço para a rede do projeto host, deverá usar um nome totalmente qualificado para a sub-rede: projects/ HOST_PROJECT_ID /regions/ REGION /subnetworks/ SUBNET_NAME
  3. Inicie a VM

    A migração pode demorar alguns minutos, portanto aguarde antes de tentar iniciar a VM no novo local.

    gcloud compute instances start INSTANCE_NAME \
        --zone=ZONE_NAME

    onde

    • INSTANCE_NAME é o nome da instância da VM.
    • ZONE_NAME é o nome da zona que contém a instância.

DESCANSAR

  1. Pare a VM

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/stop
    

    onde

    • PROJECT_ID é o ID do seu projeto.
    • INSTANCE_NAME é o nome da instância da VM.
    • ZONE_NAME é o nome da zona que contém a instância.
  2. Veja detalhes da instância.

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME
    

    onde

    • PROJECT_ID é o ID do seu projeto.
    • ZONE_NAME é o nome da zona que contém a instância.
    • INSTANCE_NAME é o nome da instância da VM.
  3. Encontre a impressão digital da interface.

    Você precisa da impressão digital para atualizar a interface de rede.

    Examine a saída do comando e encontre o conteúdo do campo networkInterfaces . Encontre o item com o nome da interface que você deseja atualizar (em uma VM de interface única, o nome é nic0 ). Copie a string no campo de fingerprint deste item para usar na próxima etapa.

  4. Migrar a VM

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/updateNetworkInterface?networkInterface=NIC
    {
      "network": NETWORK_NAME,
      "subnetwork": SUBNET_NAME,
      "networkIP": IP_ADDRESS,
      "name": NIC,
      "fingerprint": FINGERPRINT
    }
    • PROJECT_ID é o ID do seu projeto.
    • ZONE_NAME é o nome da zona que contém a instância.
    • INSTANCE_NAME é o nome da instância da VM.
    • NIC é o nome da interface que você está atualizando. Em uma VM de interface única, a NIC é nic0 .
    • NETWORK_NAME é o nome da rede de destino. Se você estiver migrando a VM de uma rede de projeto de serviço para a rede do projeto host, deverá usar um nome totalmente qualificado para a rede de destino: projects/ HOST_PROJECT_ID /global/networks/ NETWORK_NAME
    • SUBNET_NAME é o nome da sub-rede de destino. Esta sub-rede deve estar na mesma região que a VM. Se você estiver migrando a VM de uma rede de projeto de serviço para a rede do projeto host, deverá usar um nome totalmente qualificado para a sub-rede: projects/ HOST_PROJECT_ID /regions/ REGION /subnetworks/ SUBNET_NAME
    • IP_ADDRESS é o endereço IP interno que você deseja que a instância tenha no novo local. Se você omitir este campo, um campo será atribuído automaticamente à interface.
    • FINGERPRINT é a impressão digital que você obteve na etapa anterior.
  5. Inicie a VM

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/start
    

    onde

    • PROJECT_ID é o ID do seu projeto.
    • INSTANCE_NAME é o nome da instância da VM.
    • ZONE_NAME é o nome da zona que contém a instância.

O que vem a seguir