Migrar 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 ligada a mais do que uma rede através de várias interfaces de rede, este processo atualiza uma das interfaces e deixa as restantes no lugar.

As seguintes migrações são suportadas:

  • De uma rede antiga 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 partilhada de um projeto anfitrião da VPC partilhada

Em todos os casos, a VM permanece na região e na zona onde estava anteriormente. Apenas a rede associada é alterada.

Antes de começar

  • Leia a documentação da Virtual Private Cloud.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se 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 Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.

    gcloud

    1. Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init
    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

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

Requisitos

Antes de migrar uma VM, esta tem de cumprir os seguintes requisitos:

  • A VM usa apenas endereços IPv4.
  • A VM tem de estar parada. Para garantir que o SO convidado na MV pode ser desligado corretamente antes da conclusão da operação de paragem, pode, opcionalmente, ativar o encerramento normal na MV.
  • A VM não pode fazer parte de um grupo de instâncias nem de um grupo de pontos finais de rede (NEG). Aplicam-se as seguintes condições:
    • Se a VM fizer parte de um grupo de instâncias não gerido ou de um NEG, tem de remover a VM do grupo antes de a migrar.
    • Se a VM fizer parte de um grupo de instâncias geridas (GIG), não é possível migrá-la. Em alternativa, crie um MIG com um modelo de instância com propriedades de VM diferentes.
    • Pode mover instâncias em conjuntos de destino sem as remover primeiro. O grupo de destino expande-se para abranger ambas as redes.

Limitações

  • Não é possível migrar uma interface de VM para uma rede antiga.
  • O endereço MAC atribuído à interface de rede vai mudar durante a migração. Isto pode ter um impacto nos serviços estreitamente associados a endereços MAC, como o contrato de licença de terceiros.
  • Se estiver a migrar a VM para uma rede ou uma sub-rede com um intervalo de IP diferente, o endereço IP interno da sua instância tem de ser alterado. Se estiver a migrar para uma sub-rede com o mesmo intervalo de IPs, pode manter o endereço IP antigo, desde que não esteja já em utilização 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 é alterado para corresponder ao novo intervalo da sub-rede.
  • Pode manter o endereço IP externo existente da VM na nova localização. Para o fazer, tem de ter a autorização compute.subnetworks.useExternalIp na rede de destino, e a rede de destino não pode ter endereços IP externos desativados pela restrição constraints/compute.vmExternalIpAccess.

Migrar uma VM

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

A Google recomenda que crie todas as regras de firewall, trajetos, balanceadores de carga e outros recursos de infraestrutura de rede necessários na nova rede antes de migrar as suas VMs. Ao fazê-lo, pode reduzir o tempo em que as VMs estão offline.

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

Consola

  1. Na Trusted Cloud consola, aceda à página Instâncias de VM.

    Aceder às instâncias de VM

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

  3. Se a VM estiver em execução, clique em Parar para parar a VM. Se não existir a opção Parar, clique em Mais ações > Parar.

  4. Depois de a VM parar, clique em Editar .

  5. Em Interfaces de rede, clique na interface que quer mover.

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

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

  8. No campo Endereço IP interno, especifique Automático se quiser que o sistema atribua um endereço IP do intervalo de sub-redes ou Personalizado se quiser especificar um não usado.

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

  10. Clique em Guardar.

  11. Depois de a VM terminar de guardar, clique em Iniciar .

  12. Se for apresentada uma caixa de diálogo de confirmação, 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 de VM.
    • ZONE_NAME é o nome da zona que contém a instância.
  2. Migre 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 de VM.
    • ZONE_NAME é o nome da zona que contém a instância.
    • NIC é o nome da interface que está a atualizar. Numa VM de interface única, o NIC é nic0.
    • NETWORK_NAME é o nome da rede de destino. Se estiver a migrar a VM de uma rede de projeto de serviço para a rede do projeto anfitrião, tem de 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 tem de estar na mesma região que a VM. Se estiver a migrar a VM de uma rede de projeto de serviço para a rede de projeto anfitrião, tem de 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. Por isso, aguarde antes de tentar iniciar a VM na nova localização.

    gcloud compute instances start INSTANCE_NAME \
        --zone=ZONE_NAME

    onde

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

REST

  1. Pare a VM

    POST https://compute.s3nsapis.fr/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 de VM.
    • ZONE_NAME é o nome da zona que contém a instância.
  2. Veja os detalhes da instância.

    GET https://compute.s3nsapis.fr/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 de VM.
  3. Encontre a impressão digital da interface.

    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 quer atualizar (num VM de interface única, o nome é nic0). Copie a string no campo fingerprint neste item para usar no passo seguinte.

  4. Migre a VM

    PATCH https://compute.s3nsapis.fr/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 de VM.
    • NIC é o nome da interface que está a atualizar. Numa VM de interface única, o NIC é nic0.
    • NETWORK_NAME é o nome da rede de destino. Se estiver a migrar a VM de uma rede de projeto de serviço para a rede do projeto anfitrião, tem de 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 tem de estar na mesma região que a VM. Se estiver a migrar a VM de uma rede de projeto de serviço para a rede de projeto anfitrião, tem de 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 quer que a instância tenha na nova localização. Se omitir este campo, é atribuído automaticamente um valor à interface.
    • FINGERPRINT é a impressão digital que obteve no passo anterior.
  5. Inicie a VM

    POST https://compute.s3nsapis.fr/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 de VM.
    • ZONE_NAME é o nome da zona que contém a instância.

O que se segue?