Nesta página, você verá como migrar uma instância de VM de uma rede para outra. No caso de uma VM conectada a mais de uma rede e que usa várias interfaces de rede, esse processo atualiza uma das interfaces e deixa o restante no lugar.
As migrações a seguir são compatíveis:
- Da rede legada para uma rede VPC no mesmo projeto
- De uma rede VPC para outra no mesmo projeto
- De uma sub-rede de uma rede VPC para outra da mesma rede
- De uma rede de projetos 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 na zona em que estava antes. Somente a rede anexada é alterada.
Antes de começar
- Leia a documentação da nuvem privada virtual.
-
Configure a autenticação, caso ainda não tenha feito isso.
A autenticação é
o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud.
Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no
Compute Engine da seguinte maneira.
Selecione a guia para como planeja usar as amostras nesta página:
Console
Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Requisitos
Para mover a VM, ela precisa atender aos requisitos a seguir:
- A migração precisa ser "fria". A VM precisa ser interrompida antes de ser migrada.
- A VM não pode estar em um grupo de instâncias ou de endpoints da rede (NEG, na sigla em inglês).
- Se a VM estiver em um grupo de instâncias ou NEG não gerenciado, será necessário removê-la do grupo antes da migração.
- As VMs nos grupos gerenciados de instâncias não podem ser migradas. Em vez disso, é necessário copiar o modelo de instância para a nova rede e usá-lo para recriar o grupo de instâncias gerenciadas.
- É possível mover instâncias em pools de destino sem removê-las primeiro. O pool de destino se expande para cobrir as duas redes.
Limitações
- Não é possível migrar uma interface de VM para uma rede legada.
- O endereço MAC alocado à interface de rede será alterado durante a migração. Isso pode afetar os serviços fortemente acoplados a endereços MAC, como o contrato 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 instância precisará ser alterado. Se você estiver migrando para uma sub-rede com o mesmo intervalo de IP, poderá manter o endereço IP antigo especificando-o durante a migração, desde que ainda não esteja em uso no destino.
- Se a sub-rede de destino não tiver o mesmo intervalo de IP da origem, o endereço IP da interface será alterado para corresponder ao novo intervalo de sub-rede.
- É possível manter o endereço IP externo atual da VM no novo local. Para isso,
é necessário ter a permissão
compute.subnetworks.useExternalIp
na rede de destino, e os endereços IP externos dela não podem estar desativados pela restrição constraints/compute.vmExternalIpAccess.
Como migrar uma VM
Antes de migrar uma VM, consulte os requisitos e as limitações.
O Google recomenda criar regras de firewall, rotas, balanceadores de carga e outros recursos de infraestrutura de rede necessários na nova rede antes de migrar as VMs. Isso pode diminuir o tempo em que elas ficam off-line.
Console
No console do Google Cloud, acesse a página Instâncias de VMs.
Clique no nome da instância de VM para abrir a página de detalhes.
Clique em Interromper
.Se uma caixa de diálogo de confirmação aparecer, clique em Parar.
Depois que a VM for interrompida, clique em Editar
.Em Interfaces de rede, clique na interface que você quer mover.
No campo Rede da interface, selecione a nova rede para a interface.
No campo Sub-rede da interface, selecione a nova sub-rede para a interface.
No campo Endereço IP interno, especifique Automático se quiser que o sistema aloque um endereço IP do intervalo de sub-redes ou Personalizado, se você quer especificar um não utilizado.
Clique em Concluído para fechar o painel de edição da interface de rede.
Clique em Salvar.
Depois que a VM terminar de salvar, clique em Iniciar
.Se uma caixa de diálogo de confirmação aparecer, clique em Iniciar.
gcloud
Pare a VM
gcloud compute instances stop INSTANCE_NAME \ --zone=ZONE_NAME
em que
- INSTANCE_NAME é o nome da instância de VM;
- ZONE_NAME é o nome da zona que contém a instância.
Migre a VM
gcloud compute instances network-interfaces update INSTANCE_NAME \ --zone=ZONE_NAME \ --network-interface=NIC \ --network=NETWORK_NAME \ --subnetwork=SUBNET_NAME
em que
- 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 você está atualizando. Em uma
VM de interface única, o NIC é
nic0
; - NETWORK_NAME é o nome da rede de destino. Se você estiver
migrando a VM de uma rede de projetos de serviço para a de projeto
de host, use 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. Essa sub-rede
precisa estar na mesma região da VM. Se estiver migrando a VM
de uma rede de projeto de serviço para a rede do projeto host,
use um nome totalmente qualificado para a sub-rede:
projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME
.
Inicie a VM
A migração pode levar alguns minutos. Portanto, aguarde para tentar iniciar a VM no novo local.
gcloud compute instances start INSTANCE_NAME \ --zone=ZONE_NAME
em que
- INSTANCE_NAME é o nome da instância de VM;
- ZONE_NAME é o nome da zona que contém a instância.
REST
Pare a VM
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/stop
em que
- PROJECT_ID é o ID do projeto;
- INSTANCE_NAME é o nome da instância de VM;
- ZONE_NAME é o nome da zona que contém a instância.
Ver detalhes da instância.
GET https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME
em que
- PROJECT_ID é o ID do projeto.
- ZONE_NAME é o nome da zona que contém a instância;
- INSTANCE_NAME é o nome da instância de VM;
Encontre a impressão digital da interface.
A impressão digital é necessária para atualizar a interface da 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ê quer atualizar. Em uma VM de interface única, o nome énic0
. Copie a string no campofingerprint
deste item para usar na próxima etapa.Migre a VM
PATCH https://www.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 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 você está atualizando. Em uma
VM de interface única, o NIC é
nic0
; - NETWORK_NAME é o nome da rede de destino. Se você estiver
migrando a VM de uma rede de projetos de serviço para a de projeto
de host, use 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. Essa sub-rede
precisa estar na mesma região da VM. Se estiver migrando a VM
de uma rede de projeto de serviço para a rede do projeto host,
use 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ê quer que a instância tenha no novo local. Se você omitir esse campo, a interface receberá um automaticamente;
- FINGERPRINT é a impressão digital que você recebeu na etapa anterior.
Inicie a VM
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE_NAME/instances/INSTANCE_NAME/start
em que
- PROJECT_ID é o ID do projeto;
- INSTANCE_NAME é o nome da instância de VM;
- ZONE_NAME é o nome da zona que contém a instância.
A seguir
- Saiba como mover uma instância para outra zona.
- Saiba mais sobre a migração em tempo real.
- Verificar o status de uma VM.