Menghubungkan ke sumber publik dari instance pribadi

Halaman ini menjelaskan cara terhubung ke aplikasi software-as-a-service (SaaS) seperti Salesforce, dan layanan cloud pihak ketiga seperti Amazon S3, dari instance Cloud Data Fusion pribadi saat Anda mengembangkan pipeline.

Di seluruh panduan ini, istilah ekspor dan kontrol ekspor digunakan:

  • Traffic keluar mengacu pada traffic jaringan yang keluar dari Google Cloud melalui internet publik. Biasanya, egress terjadi saat Anda membuat pipeline yang membaca dari atau menulis ke layanan SaaS seperti Salesforce, atau layanan cloud publik seperti Amazon S3.

  • Kontrol traffic keluar menentukan pembatasan untuk traffic keluar menggunakan VM proxy, yang memungkinkan traffic keluar ke sekumpulan domain yang telah dikonfigurasi sebelumnya berhasil, dan semua yang lainnya gagal. Hal ini memungkinkan perimeter keamanan yang lebih tinggi untuk traffic keluar, dan dapat mencegah traffic keluar yang tidak diinginkan dari instance pribadi.

Diagram arsitektur sistem berikut menunjukkan cara instance Cloud Data Fusion pribadi terhubung dengan internet publik saat Anda mengembangkan pipeline:

Diagram arsitektur instance pribadi

Saat Anda mendesain pipeline dalam skenario ini, Cloud Data Fusion akan merutekan traffic keluar melalui project pelanggan di Pratinjau Cloud Data Fusion atau Wrangler. Proses ini menggunakan resource berikut:

  • Rute jaringan VPC kustom: Jaringan VPC kustom merutekan traffic melalui rute kustom yang diimpor ke VM gateway, yang diekspor ke VPC project tenant menggunakan peering VPC.

  • VM gateway: VM gateway merutekan traffic keluar dari Google Cloud dari project tenant Cloud Data Fusion ke SaaS atau cloud pihak ketiga melalui internet publik. Anda mengelola VM ini di project pelanggan. Anda dapat mengonfigurasinya di lingkungan Ketersediaan Tinggi (HA) menggunakan Load Balancer Internal (ILB). Sebaiknya gunakan kembali VM untuk beberapa instance Cloud Data Fusion pribadi dalam VPC yang sama.

Untuk mengetahui informasi tentang cara menyiapkan kontrol keluar di lingkungan desain dan eksekusi, lihat Mengontrol keluar di instance pribadi.

Sebelum memulai

Menyiapkan konektivitas internet

Langkah-langkah berikut menjelaskan cara mengakses bucket Amazon S3 dari instance Cloud Data Fusion pribadi di Wrangler. Langkah yang sama berlaku untuk mengakses sumber data apa pun melalui internet publik saat Anda mendesain pipeline di Pratinjau atau Wrangler.

Hanya satu VM yang digunakan dalam panduan ini, tetapi untuk aplikasi yang sangat penting, sebaiknya buat VM load balanced. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan VM Ketersediaan Tinggi.

Membuat gateway NAT

Buat gateway Cloud NAT di region dan jaringan VPC yang sama dengan instance pribadi Cloud Data Fusion Anda.

Buka Cloud NAT

Membuat instance VM gateway dan aturan firewall

Konsol

  1. Buka halaman VM instances.

    Buka VM instances

  2. Klik Create instance. Sebaiknya gunakan VM tanpa IP eksternal.

  3. Gunakan VPC yang sama dengan peering jaringan yang disiapkan dengan instance Cloud Data Fusion pribadi. Untuk mengetahui informasi selengkapnya tentang peering jaringan VPC dalam skenario ini, lihat Sebelum memulai.

  4. Aktifkan penerusan IP untuk instance di jaringan yang sama dengan instance Cloud Data Fusion.

  5. Di kolom Startup script, masukkan skrip berikut:

    #! /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
    

    Untuk mengetahui informasi selengkapnya, lihat Menjalankan skrip startup.

    Untuk mendapatkan rentang IP yang dialokasikan untuk instance Cloud Data Fusion, buka halaman Detail instance Cloud Data Fusion.

    Antarmuka egress staging

gcloud

Untuk membuat VM gateway dan aturan firewall, jalankan skrip berikut di Google Cloud CLI:

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

Ganti kode berikut:

  • CDF_PROJECT: ID unik yang dapat disesuaikan untuk project Anda
  • GATEWAY_VM: nama VM yang ingin Anda konfigurasi
  • ZONE: zona VM Anda
  • SUBNET: subnet
  • VPC_NETWORK: nama VM Anda
  • COMPUTE_ENGINE_SA: nama akun layanan Compute Engine Anda
  • CDF_IP_RANGE: rentang IP yang dialokasikan ke instance Cloud Data Fusion

Menggunakan VPC bersama

Jika Anda menggunakan VPC bersama untuk menghubungkan instance Cloud Data Fusion pribadi ke sumber di internet publik, buat VM gateway di project host tempat peering jaringan VPC disiapkan dengan project tenant.

Membuat rute kustom

Buat rute kustom untuk terhubung ke instance VM gateway yang Anda buat.

Konsol

Untuk membuat rute di Konsol Google Cloud, lihat Menambahkan rute statis.

Saat Anda mengonfigurasi rute:

  • Tetapkan Priority ke lebih besar dari atau sama dengan 1001. Tetapkan tujuan ke rentang IP yang dialokasikan ke instance Cloud Data Fusion.
  • Gunakan project dan VPC yang sama dengan instance Cloud Data Fusion pribadi.
  • Pastikan konfigurasi peering jaringan VPC Anda memungkinkan rute ekspor, sehingga VPC project tenant Cloud Data Fusion mengimpor rute kustom ini melalui peering jaringan VPC.

gcloud

Untuk membuat rute di 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

Ganti kode berikut:

  • ROUTE: nama rute kustom.

Verifikasi penyiapan Anda

Setelah melakukan langkah-langkah sebelumnya, pastikan Anda dapat mengakses layanan bucket S3 (atau layanan cloud publik atau SaaS lainnya) di Pratinjau dan Wrangler.

Menyiapkan Gateway yang selalu tersedia

Direkomendasikan: Untuk aplikasi yang sangat penting, sebaiknya buat VM yang di-load balanced.

Membuat aturan firewall untuk health check

Buat aturan firewall untuk mengizinkan:

  • Port 80 (HTTP) dan port 443 (HTTPS) dari semua rentang sumber.
  • Traffic TCP, UDP, dan ICMP dari alamat IP prober health check. Contoh: 130.211.0.0/22,35.191.0.0/16.

Konsol

Buat aturan Firewall untuk mengizinkan port dari semua rentang sumber dan aturan firewall untuk mengizinkan traffic TCP, UDP, dan ICMP dari alamat IP penguji health check seperti 130.211.0.0/22,35.191.0.0/16.

Lihat Membuat health check.

gcloud

Buat aturan firewall untuk health check:

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

Ganti kode berikut:

  • PROJECT_ID: ID unik yang dapat disesuaikan untuk project Anda.
  • VPC_NETWORK: nama jaringan VPC Anda.
  • CDF_IP_RANGE: rentang alamat IP yang dialokasikan ke Cloud Data Fusion.

Membuat template instance VM gateway

Konsol

Saat Anda membuat template instance di konsol:

  • Buat di VPC yang sama dengan instance Cloud Data Fusion.
  • Direkomendasikan: Gunakan VM dengan alamat IP pribadi.
  • Aktifkan port HTTP/HTTPS.
  • Mengaktifkan penerusan IP
  • Di kolom Startup script, masukkan skrip berikut:

    #! /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
    

    Untuk mengetahui informasi selengkapnya, lihat Menjalankan skrip startup.

    Untuk mendapatkan rentang IP yang dialokasikan untuk instance Cloud Data Fusion, buka halaman Detail instance Cloud Data Fusion.

gcloud

Membuat template instance:

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

Membuat health check

Tidak ada layanan yang berjalan di instance VM gateway ini, sehingga Anda dapat menggunakan port 22 untuk health check.

Konsol

Lihat Membuat health check.

gcloud

Membuat health check:

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

Membuat grup instance

Dengan menggunakan health check yang dibuat di langkah sebelumnya, buat grup instance:

Konsol

Lihat Membuat grup instance terkelola.

gcloud

Buat grup instance:

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"

Membuat load balancer

Buat load balancer TCP (ILB) dari grup instance yang dibuat pada langkah sebelumnya.

Menambahkan rute kustom ke load balancer

Tambahkan rute kustom ke Load Balancer Internal (ILB) di VPC yang sama dengan instance Cloud Data Fusion.

Konsol

Buka halaman VPC network.

Buka jaringan VPC

Di tab Routes, klik Create Route.

Tambahkan rute kustom

gcloud

Tambahkan rute kustom ke load balancer internal:

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

Pemecahan masalah

Mendapatkan error Waktu tunggu koneksi di Pratinjau atau Wrangler

Saat menyiapkan kontrol keluar, Anda mungkin mendapatkan error Connection Timeout.

Untuk memperbaiki masalah ini, pastikan setelan berikut sudah diterapkan:

Health check grup instance tidak berhasil

Pastikan aturan firewall untuk mengizinkan traffic TCP, UDP, dan ICMP dari rentang sumber 130.211.0.0/22,35.191.0.0/16 ada.

Pipeline gagal saat dieksekusi di Dataproc

Untuk mengakses internet publik pada waktu eksekusi, aktifkan Cloud NAT di region dan jaringan yang sama dengan cluster Dataproc.

Langkah selanjutnya