Nesta página, descrevemos como se conectar a aplicativos de software como serviço (SaaS), como o Salesforce, e a serviços de nuvem de terceiros, como o Amazon S3, usando uma instância privada do Cloud Data Fusion ao desenvolver um pipeline.
Neste guia, os termos saída e controle de saída são usados:
Saída refere-se ao tráfego de rede que sai do Google Cloud pela Internet pública. Normalmente, a saída acontece quando você cria um pipeline que lê grava em um serviço SaaS, como o Salesforce, ou em um serviço de nuvem pública como Amazon S3
O controle de saída define proteções do tráfego de saída usando uma VM proxy, permitindo que o tráfego de saída para um conjunto de domínios pré-configurados funcione e todas as outras falharem. Isso permite um perímetro de segurança maior para o tráfego de saída e impede a saída indesejada de uma instância particular.
O diagrama da arquitetura do sistema a seguir mostra como uma instância privada do Cloud Data Fusion se conecta à Internet pública quando você desenvolve um pipeline:
Quando você projeta o pipeline nesse cenário, o Cloud Data Fusion encaminha o tráfego de saída pelo projeto do cliente no Cloud Data Fusion Preview ou no Wrangler. Esse processo usa os seguintes recursos:
Uma rota de rede VPC personalizada: uma rede VPC personalizada encaminha o tráfego por de uma rota personalizada importada para VMs de gateway, que exportam para uma VPC do projeto de locatário usando peering de VPC.
Uma VM de gateway: uma VM de gateway encaminha o tráfego de saída do Google Cloud do projeto de locatário do Cloud Data Fusion para uma nuvem SaaS ou de terceiros pela Internet pública. Você gerencia essa VM no projeto do cliente. É possível configurá-lo em um ambiente de alta disponibilidade (HA, na sigla em inglês) usando um balanceador de carga interno (ILB, na sigla em inglês). É recomendável reutilizar a VM por vários instâncias particulares do Cloud Data Fusion na mesma VPC.
Para informações sobre como configurar o controle de saída nos ambientes de projeto e execução, consulte Controlar a saída em uma instância particular.
Antes de começar
É possível se conectar a uma fonte pública a partir de uma instância privada nas versões 6.4 ou mais recentes do Cloud Data Fusion. Para usar uma dessas versões, crie uma nova instância particular do Cloud Data Fusion ou faça upgrade de uma instância atual para a versão 6.4.0.
Ao criar uma conexão de peering de rede VPC para a instância, selecione Exportar rotas.
Configurar a conexão de Internet
Veja nas etapas a seguir como acessar um bucket do Amazon S3 em uma instância particular do Cloud Data Fusion no Wrangler. As mesmas etapas se aplicam ao acesso a qualquer fonte de dados pela Internet pública quando você cria um pipeline no Preview ou no Wrangler.
Apenas uma única VM é usada neste guia. No entanto, para aplicativos essenciais, recomendamos criar VMs com balanceamento de carga. Para mais informações, consulte Configurar a VM de alta disponibilidade.
Criar um gateway NAT
Crie um gateway NAT do Cloud na mesma região e rede VPC que a instância particular do Cloud Data Fusion.
Criar uma instância de VM de gateway e regras de firewall
Console
Acesse a página Instâncias da VM.
Clique em Criar instância. Recomendamos usar uma VM IP externo.
Use a mesma VPC que tem o peering de rede configurado com a instância privada do Cloud Data Fusion. Para mais informações sobre o peering de rede VPC neste cenário, consulte Antes de começar.
Ative o encaminhamento de IP para a instância na mesma rede da instância do Cloud Data Fusion.
No campo Script de inicialização, digite o script a seguir:
#! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf iptables-save
Para mais informações, consulte Como executar scripts de inicialização.
Para receber o intervalo de IP alocado para a instância do Cloud Data Fusion, acesse a página Detalhes da instância do Cloud Data Fusion.
gcloud
Para criar as regras de firewall e VM de gateway, execute o seguinte script na CLI do Google Cloud:
export CDF_PROJECT=CDF_PROJECT export GATEWAY_VM=GATEWAY_VM_NAME export ZONE=VM_ZONE export SUBNET=SUBNET export VPC_NETWORK=VPC_NETWORK export COMPUTE_ENGINE_SA=COMPUTE_ENGINE_SA gcloud beta compute --project=$CDF_PROJECT instances create $GATEWAY_VM --zone=$ZONE --machine-type=e2-medium --subnet=$SUBNET --network-tier=PREMIUM --metadata=startup-script=\#\!\ /bin/bash$'\n'echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward$'\n'iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf$'\n'iptables-save --can-ip-forward --no-address --maintenance-policy=MIGRATE --service-account=$COMPUTE_ENGINE_SA --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server,https-server --image=debian-10-buster-v20210316 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=$GATEWAY_VM --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-http --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:80 --source-ranges=CDF_IP_RANGE --target-tags=http-server gcloud compute --project=$CDF_PROJECT firewall-rules create egress-allow-https --direction=INGRESS --priority=1000 --network=$VPC_NETWORK --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE --target-tags=https-server
Substitua:
- CDF_PROJECT: o identificador exclusivo personalizável do seu projeto
- GATEWAY_VM: o nome da VM que você quer configurar.
- ZONE: a zona da VM;
- SUBNET: a sub-rede.
- VPC_NETWORK: o nome da VM
- COMPUTE_ENGINE_SA: o nome da sua conta de serviço do Compute Engine.
- CDF_IP_RANGE: o intervalo de IP alocado à instância do Cloud Data Fusion
Como usar uma VPC compartilhada
Se você usar uma VPC compartilhada para conectar sua instância particular do Cloud Data Fusion a origens na Internet pública, crie uma VM de gateway no projeto host em que o peering de rede VPC é configurado com o projeto de locatário.
Criar uma rota personalizada
Crie uma rota personalizada para se conectar à instância de VM de gateway que você criou.
Console
Para criar sua rota no console do Google Cloud, consulte Como adicionar uma rota estática.
Ao configurar a rota, faça o seguinte:
- Defina a Prioridade como maior ou igual a
1001
. Defina o destino para o intervalo de IP alocado para o Cloud Data Fusion instância. - Use o mesmo projeto e a mesma VPC que a instância privada do Cloud Data Fusion.
- Verifique se a configuração de peering da rede VPC permite exportar para que a VPC do projeto de locatário do Cloud Data Fusion importe essa rota personalizada com o peering de rede VPC.
gcloud
Para criar sua rota na gcloud CLI:
export ROUTE=ROUTE gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \ --network=$VPC_NETWORK --priority=1001 \ --destination-range=0.0.0.0/0 \ --next-hop-instance=$GATEWAY_VM \ --next-hop-instance-zone=$ZONE
Substitua:
- ROUTE: o nome da rota personalizada.
Verificar sua configuração
Após realizar as etapas anteriores, verifique se é possível acessar o bucket S3 (ou outro serviço SaaS ou de nuvem pública) no Preview e no Wrangler.
Configurar um gateway altamente disponível
Recomendado: para aplicativos essenciais, recomendamos que você crie VMs com balanceamento de carga.
Criar regras de firewall para verificações de integridade
Crie regras de firewall para permitir o seguinte:
- Porta 80 (HTTP) e 443 (HTTPS) de todos os intervalos de origem.
Tráfego TCP, UDP e ICMP de endereços IP de sondagem de verificação de integridade. Por exemplo,
130.211.0.0/22,35.191.0.0/16
.
Console
Crie regras de firewall para permitir portas de todos os intervalos de origem, além de regras de firewall. para permitir tráfego TCP, UDP e ICMP de endereços IP da sondagem de verificação de integridade, como 130.211.0.0/22,35.191.0.0/16
.
Consulte Como criar verificações de integridade.
gcloud
Crie uma regra de firewall para verificações de integridade:
export CDF_PROJECT=PROJECT_ID export VPC_NETWORK=VPC_NETWORK gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-http \ --direction=INGRESS --priority=1000 \ --network=$VPC_NETWORK \ --action=ALLOW --rules=tcp:80 \ --source-ranges=CDF_IP_RANGE \ --target-tags=http-server gcloud compute --project=$CDF_PROJECT firewall-rules create vpc-allow-https \ --direction=INGRESS --priority=1000 --network=$VPC_NETWORK \ --action=ALLOW --rules=tcp:443 --source-ranges=CDF_IP_RANGE \ --target-tags=https-server gcloud compute --project=$CDF_PROJECT firewall-rules create allow-health-checks \ --network=$VPC_NETWORK \ --action=allow --direction=ingress \ --target-tags=allow-health-checks \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
Substitua:
- PROJECT_ID: o identificador exclusivo personalizável do seu projeto.
- VPC_NETWORK: o nome da sua rede VPC.
- CDF_IP_RANGE: o intervalo de endereços IP alocado para o Cloud Data Fusion.
Criar modelo de instância de VM do gateway
Console
Ao criar um modelo de instância no console, siga estas etapas:
- Crie-a na mesma VPC da instância do Cloud Data Fusion.
- Recomendado: use uma VM com um endereço IP particular.
- Ative as portas HTTP/HTTPS.
- Ativar o encaminhamento de IP
No campo Script de inicialização, digite o script a seguir:
#! /bin/bash echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -j MASQUERADE echo net.ipv4.ip_forward=1 > /etc/sysctl.d/11-gce-network-security.conf iptables-save
Para mais informações, consulte Como executar scripts de inicialização.
Para receber o intervalo de IP alocado para a instância do Cloud Data Fusion, acesse a página Detalhes da instância do Cloud Data Fusion.
gcloud
Criar um modelo de instância:
export TEMPLATE_NAME=TEMPLATE_NAME export REGION=REGION export SUBNET=SUBNET export SERVICE_ACCOUNT=SERVICE_ACCOUNT gcloud beta compute --project=$CDF_PROJECT instance-templates create $TEMPLATE_NAME \ --machine-type=e2-medium \ --subnet=projects/$CDF_PROJECT/regions/$REGION/subnetworks/$SUBNET \ --network-tier=PREMIUM --metadata=startup-script=sudo\ bash\ -c\ \"echo\ 1\ \>\ /proc/sys/net/ipv4/ip_forward\"$'\n'sudo\ iptables\ -t\ nat\ -A\ POSTROUTING\ -s\ 0.0.0.0/0\ -j\ MASQUERADE$'\n'sudo\ bash\ -c\ \"echo\ net.ipv4.ip_forward=1\ \>\ /etc/sysctl.d/11-gce-network-security.conf\"$'\n'sudo\ iptables-save \ --can-ip-forward --no-address --maintenance-policy=MIGRATE \ --service-account=$SERVICE_ACCOUNT \ --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \ --region=$REGION --tags=http-server,https-server,allow-health-checks \ --image=debian-10-buster-v20210316 \ --image-project=debian-cloud --boot-disk-size=10GB \ --boot-disk-type=pd-balanced \ --boot-disk-device-name=$TEMPLATE_NAME \ --no-shielded-secure-boot --no-shielded-vtpm \ --no-shielded-integrity-monitoring \ --reservation-affinity=any
Criar verificação de integridade
Como nenhum serviço é executado nessa instância de VM do gateway, use a porta 22
para
a verificação de integridade.
Console
Consulte Como criar verificações de integridade.
gcloud
Crie uma verificação de integridade:
export HEATH_CHECK=HEALTH_CHECK_NAME gcloud beta compute health-checks create tcp $HEATH_CHECK --project=$CDF_PROJECT \ --port=22 --proxy-header=NONE --no-enable-logging \ --check-interval=5 --timeout=5 \ --unhealthy-threshold=2 --healthy-threshold=2
Criar um grupo de instâncias
Usando a verificação de integridade criada na etapa anterior, crie um grupo de instâncias:
Console
gcloud
Criar um grupo de instâncias:
export INSTANCE_GROUP=INSTANCE_GROUP gcloud beta compute --project=$CDF_PROJECT instance-groups managed create $INSTANCE_GROUP \ --base-instance-name=$INSTANCE_GROUP \ --template=$TEMPLATE_NAME --size=1 --zone=$ZONE \ --health-check=test --initial-delay=300 gcloud beta compute --project "$CDF_PROJECT" instance-groups managed set-autoscaling "$INSTANCE_GROUP" \ --zone "$ZONE" --cool-down-period "60" \ --max-num-replicas "10" --min-num-replicas "1" \ --target-cpu-utilization "0.6" --mode "on"
Criar um balanceador de carga
Crie o balanceador de carga TCP (ILB) do grupo de instâncias criado na etapa anterior.
Adicionar a rota personalizada ao balanceador de carga
Adicione a rota personalizada ao balanceador de carga interno (ILB, na sigla em inglês) na mesma VPC que a instância do Cloud Data Fusion.
Console
Acessar a página Redes VPC.
Na guia Rotas, clique em Criar rota.
gcloud
Adicione a rota personalizada ao balanceador de carga interno:
export ROUTE=ROUTE_NAME export ILB_FRONTEND=<ip_of_ilb_frontend> gcloud beta compute routes create $ROUTE --project=$CDF_PROJECT \ --network=$VPC_NETWORK --priority=1001 \ --destination-range=0.0.0.0/0 \ --next-hop-ilb=$ILB_FRONTEND \ --next-hop-ilb-region=$REGION
Solução de problemas
Como receber erros de tempo limite de conexão no Preview ou no Wrangler
Ao configurar os controles de saída, você pode receber um erro Connection Timeout
.
Para corrigir o problema, verifique se as seguintes configurações estão em vigor:
- O peering de rede VPC entre o projeto de locatário e o projeto do cliente está presente.
- O peering de rede VPC tem a opção Exportar rotas ativada.
- A rota personalizada para gateway da VM ou ILB não está ausente.
- As regras de firewall que permitem o tráfego
HTTP
eHTTPS
não estão ausentes.
Verificações de integridade do grupo de instâncias não concluídas
Verifique se as regras de firewall
para permitir o tráfego TCP, UDP e ICMP do
intervalo de origem 130.211.0.0/22,35.191.0.0/16
estão presentes.
O pipeline falha ao ser executado no Dataproc
Para acessar a Internet pública no momento da execução, ative o Cloud NAT na mesma região e rede que o cluster do Dataproc.
A seguir
- Saiba como controlar a saída em uma instância privada do Cloud Data Fusion para apenas um conjunto específico de domínios.
- Saiba mais sobre Rede no Cloud Data Fusion.