É possível migrar seus dados por redes particulares estabelecendo conectividade entre os endereços IP privados dos bancos de dados de origem e destino. Para configurar endereços IP particulares para o banco de dados de destino, use o acesso a serviços particulares com peering de VPC ou o Private Service Connect.
Cada método de conexão oferece vantagens e desvantagens distintas. Escolha a abordagem mais adequada para seu cenário. Para mais informações sobre o acesso a serviços particulares e o Private Service Connect no Cloud SQL, consulte Visão geral do IP particular na documentação do Cloud SQL.
Configurar a conectividade usando o peering de VPC
O peering de VPC funciona configurando as VPCs para se comunicarem entre si. Se a origem estiver no mesmo projeto Google Cloud no Cloud SQL ou no Compute Engine, o destino poderá se comunicar diretamente com a origem. Se a origem estiver em uma VPN (na AWS, por exemplo, ou em uma VPN local), configure a VPN de origem e a Cloud VPN do Google Cloud para que funcionem juntas. Para mais informações, consulte conectar VPCs por VPNs.O encadeamento de VPCs não é compatível. Se a origem estiver em um Google Cloud projeto diferente, consulte Visão geral da VPC compartilhada para saber como conectar recursos de vários projetos a uma rede VPC comum para peering de VPC.
O firewall do servidor de banco de dados de origem precisa ser configurado para permitir todo o intervalo de IPs interno alocado para a conexão de serviço particular da rede VPC que a instância de destino do Cloud SQL vai usar.
Para encontrar o intervalo de IP interno alocado para acesso a serviços particulares:
Console
Abra a página "Redes de nuvem privada virtual" no console do Google Cloud .
Selecione a rede VPC que você quer usar.
Selecione Acesso a serviços particulares > Intervalos de IP alocados para serviços.
Encontre o intervalo de IP interno associado à conexão criada por servicenetworking-googleapis-com.
gcloud
Substitua a variável PROJECT_ID pelo identificador do projeto em que você tem sua rede de nuvem privada virtual.
gcloud compute addresses list \
--global \
--filter="purpose=VPC_PEERING" \
--project=PROJECT_ID
Configuração de origem para instâncias autogerenciadas e do Compute Engine
Se o banco de dados de origem estiver hospedado em uma instância do Compute Engine na mesma nuvem privada virtual ou em uma nuvem privada virtual pareada:
Crie uma regra de firewall na sua rede de nuvem privada virtual que permita o tráfego de entrada do intervalo de IP alocado para a porta do banco de dados de origem (padrão
5432para PostgreSQL e3306para MySQL):gcloud compute firewall-rules create FIREWALL_RULE_NAME \ --network=VPC_NETWORK_NAME \ --direction=INGRESS \ --priority=1000 \ --action=ALLOW \ --rules=tcp:5432 \ --source-ranges=ALLOCATED_PEERING_RANGE \ --target-tags=SOURCE_VM_TAG \ --project=PROJECT_IDSubstitua:
- FIREWALL_RULE_NAME: um nome para a regra de firewall (por exemplo,
allow-cloudsql-dms-ingress). - VPC_NETWORK_NAME: o nome da rede de nuvem privada virtual em que o banco de dados de origem está localizado.
- ALLOCATED_PEERING_RANGE: o intervalo de endereços IP internos alocado para o acesso a serviços particulares (por exemplo,
10.102.0.0/16). - SOURCE_VM_TAG: a tag de rede aplicada à instância de VM de origem do Compute Engine.
- PROJECT_ID: o identificador do projeto que contém sua rede de nuvem privada virtual.
- FIREWALL_RULE_NAME: um nome para a regra de firewall (por exemplo,
Configure a autenticação do cliente no arquivo
pg_hba.conf. Atualize/etc/postgresql/<version>/main/pg_hba.confno servidor de origem para permitir conexões e replicação do intervalo de IP alocado:host all all ALLOCATED_PEERING_RANGE md5 host replication all ALLOCATED_PEERING_RANGE md5Substitua ALLOCATED_PEERING_RANGE pelo intervalo de endereços IP internos alocado para acesso a serviços particulares (por exemplo,
10.102.0.0/16).Recarregue a configuração. Execute o comando:
sudo -u postgres psql -c "SELECT pg_reload_conf();".Verifique a configuração do
listen_addressesempostgresql.conf. Verifique se a propriedade inclui a interface interna ou está definida como'*':listen_addresses = '*'
O peering de VPC usa o acesso a serviços particulares,
que precisa ser configurado uma vez para cada projeto que usa o peering de VPC. Depois de
estabelecer private services access, teste o
job de migração para verificar a conectividade.
Como configurar o acesso a serviços particulares para o Database Migration Service
Se você estiver usando um IP particular em alguma das suas instâncias do Database Migration Service, só será necessário configurar o acesso a serviços particulares uma vez para cada projeto do Google Cloud que tenha ou precise se conectar a uma instância do Database Migration Service.
Para estabelecer o acesso a serviços particulares, é necessário ter o papel do IAM compute.networkAdmin. Depois que o acesso a serviços particulares for estabelecido para sua rede, não será mais necessário ter a função do IAM compute.networkAdmin para configurar uma instância para usar o IP particular.
O acesso a serviços particulares exige que você primeiro aloque um intervalo de endereços IP internos, crie uma conexão particular e exporte uma rota personalizada.
Um intervalo alocado é um bloco CIDR reservado que não pode ser usado na sua rede VPC local. Ao criar uma conexão particular, você especifica uma alocação. A conexão particular vincula sua rede VPC à rede VPC subjacente ("produtor de serviços").
Ao criar uma conexão particular, a rede VPC e a rede do produtor de serviços trocam apenas rotas de sub-rede. É necessário exportar as rotas personalizadas da rede VPC para que a rede do provedor de serviços possa importá-las e rotear corretamente o tráfego para sua rede local.
Uma configuração de peering estabelece a intent de se conectar a outra rede VPC. Sua rede e a outra rede não estarão conectadas até que cada uma tenha uma configuração de peering para a outra. Quando a outra rede tiver uma configuração correspondente para fazer peering com a sua, o estado de peering vai mudar para ATIVO em ambas as redes, e elas serão conectadas. Se não houver uma configuração de peering correspondente na outra rede, o estado de peering vai permanecer INATIVO, indicando que sua rede não está conectada à outra.
Uma vez conectadas, as duas redes sempre trocam rotas de sub-rede. Uma alternativa é importar rotas personalizadas estáticas e dinâmicas de uma rede com peering se ela tiver sido configurada para exportá-las.
O processo de configuração do acesso a serviços particulares tem duas partes:
- Alocar um intervalo de endereços IP. O intervalo abrange todas as suas instâncias.
- Criar uma conexão privada da sua rede VPC com a rede do produtor de serviços.
Como alocar um intervalo de endereços IP
Console
- Acesse a página "Redes VPC" no console do Google Cloud .
- Selecione a rede VPC que você quer usar.
- Selecione a guia Conexão de serviço particular.
- Selecione a guia Intervalos de IP alocados para serviços.
- Clique em Alocar intervalo de IP.
Para o Nome do intervalo alocado, especifique
google-managed-services-VPC_NETWORK_NAME, em queVPC_NETWORK_NAMEé o nome da rede VPC que você está conectando (por exemplo,google-managed-services-default). A Descrição é opcional.Clique em ALOCAR para criar o intervalo alocado.
gcloud
Siga uma destas ações:
Para especificar um intervalo de endereços e um tamanho de prefixo (máscara de sub-rede), use os sinalizadores
addresseseprefix-length. Por exemplo, para alocar o bloco CIDR192.168.0.0/16, especifique192.168.0.0como endereço e16como tamanho de prefixo.gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \ --global \ --purpose=VPC_PEERING \ --addresses=192.168.0.0 \ --prefix-length=16 \ --network=[VPC_NETWORK_NAME]Para especificar apenas um tamanho de prefixo (máscara de sub-rede), basta usar a sinalização
prefix-length. Quando você omite o intervalo de endereços, o Google Cloudseleciona automaticamente um intervalo que não está sendo usado na rede VPC. No exemplo a seguir, é selecionado um intervalo de endereços IP não utilizado com um tamanho de prefixo de16bits.gcloud compute addresses create google-managed-services-[VPC_NETWORK_NAME] \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --network=[VPC_NETWORK_NAME]
Substitua [VPC_NETWORK_NAME] pelo nome da sua rede VPC,
como my-vpc-network.
O exemplo a seguir aloca um intervalo de IP que permite aos recursos
na rede VPC my-vpc-network conectarem-se às instâncias do Database Migration Service
usando IP privado.
gcloud compute addresses create google-managed-services-my-vpc-network \
--global \
--purpose=VPC_PEERING \
--prefix-length=16 \
--network=my-vpc-network \
--project=my-project
Como criar uma conexão particular
Console
- Acesse a página "Redes VPC" no console do Google Cloud .
- Selecione a rede VPC que você quer usar.
- Selecione a guia Conexão de serviço particular.
- Selecione a guia Conexões particulares com os serviços.
- Clique em Criar conexão para criar uma conexão particular entre sua rede e um produtor de serviços.
- Em Alocação atribuída, selecione um ou mais intervalos alocados que não estejam sendo usados por outros produtores de serviço e clique em OK.
- Clique em CONECTAR para criar a conexão.
gcloud
Crie uma conexão particular.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=google-managed-services-[VPC_NETWORK_NAME] \ --network=[VPC_NETWORK_NAME] \ --project=[PROJECT_ID]Substitua
[VPC_NETWORK_NAME]pelo nome da rede VPC e[PROJECT_ID]pelo ID do projeto que contém a rede VPC.O comando inicia uma operação de longa duração, que retorna um nome de operação.
Verifique se a operação foi bem-sucedida.
gcloud services vpc-peerings operations describe \ --name=[OPERATION_NAME]Substitua
[OPERATION_NAME]pelo nome da operação retornado na etapa anterior.
É possível especificar mais de um intervalo alocado ao criar uma conexão privada. Por exemplo, se um intervalo tiver sido esgotado, será possível atribuir mais intervalos alocados. O serviço usa endereços IP de todos os intervalos fornecidos na ordem que você especificou.
Exportar rotas personalizadas
Atualize uma conexão atual com o Peering de redes VPC para alterar se sua rede VPC exportará rotas personalizadas para a rede VPC com peering ou as importará dela.
Sua rede só importa rotas personalizadas se a rede com peering também exportar rotas personalizadas, e a rede com peering só recebe rotas personalizadas se as importar.
Console
- Acesse a página "Peering de rede VPC" no console do Google Cloud .
Acessar a página "Peering de rede VPC" - Selecione a conexão de peering a ser atualizada.
- Clique em EDITAR.
- Atualize as configurações de rotas personalizadas marcando ou desmarcando Importar rotas personalizadas ou Exportar rotas personalizadas.
- Clique em SALVAR.
gcloud
Atualize a conexão de peering para alterar as configurações de importação ou exportação das rotas personalizadas.
gcloud compute networks peerings update [PEERING-NAME] \
--network=[MY-LOCAL-NETWORK] \
[--[no-]import-custom-routes] \
[--[no-]export-custom-routes]
Conceder o papel roles/servicenetworking.serviceAgent
gcloud beta services identity create \
--service=servicenetworking.googleapis.com \
--project=project-id
gcloud projects add-iam-policy-binding project-id \
--member="service-account-prefix@service-networking.iam.gserviceaccount.com" \
--role="roles/servicenetworking.serviceAgent"
Configurar a conectividade usando interfaces do Private Service Connect
Para migrações homogêneas, o Cloud SQL pode usar interfaces do Private Service Connect para estabelecer uma conexão em redes particulares sem consumir a cota de peering da nuvem privada virtual. Esse método de conectividade só está disponível quando você migra para uma instância atual.
Para usar as interfaces do Private Service Connect, faça o seguinte:
Crie uma instância do Cloud SQL ativada para o Private Service Connect. Consulte Criar uma instância com o Private Service Connect ativado na documentação do Cloud SQL.
Configure o Private Service Connect para conectividade de saída na instância de destino:
Crie um anexo de rede na rede de nuvem privada virtual em que o banco de dados de origem está localizado. O intervalo de sub-rede reservado para o anexo de rede precisa estar dentro do intervalo RFC 1918:
gcloud compute network-attachments create NETWORK_ATTACHMENT_NAME \ --region=REGION \ --subnets=NETWORK_ATTACHMENT_SUBNET \ --connection-preference=ACCEPT_AUTOMATIC \ --project=PROJECT_IDSubstitua:
- NETWORK_ATTACHMENT_NAME: um nome para o anexo de rede (por exemplo,
dms-psc-attachment). - REGION: a região em que a sub-rede e a instância de destino do Cloud SQL estão localizadas.
- NETWORK_ATTACHMENT_SUBNET: o nome da sub-rede reservada para o anexo de rede.
- PROJECT_ID: o identificador do projeto que contém sua rede de nuvem privada virtual.
- NETWORK_ATTACHMENT_NAME: um nome para o anexo de rede (por exemplo,
Atribua o anexo de rede à instância de destino do Cloud SQL. Para mais detalhes, consulte Configurar a conectividade de saída na documentação do Cloud SQL.
Somente para fontes autogerenciadas: verifique se o banco de dados de origem permite o tráfego de entrada da sub-rede de anexação de rede. Verifique as regras de firewall. Verifique se existe uma regra de firewall que permita a entrada na porta 5432 do banco de dados do CIDR do anexo de rede.
Em
pg_hba.confna instância de origem, verifique se há entradas que permitem conexões do intervalo CIDR da sub-rede associada ao anexo de rede. Para encontrar a sub-rede associada ao anexo de rede e ao intervalo CIDR dela, consulte Descrever anexos de rede e Descrever uma sub-rede na documentação da nuvem privada virtual.Ao criar o job de migração, selecione Interface do PSC como método de conectividade.