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.

Dalam panduan ini, istilah egress dan kontrol egress digunakan:

  • Egress mengacu pada traffic jaringan yang keluar 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 egress menentukan batasan untuk traffic egress menggunakan VM proxy, yang memungkinkan traffic egress ke sekumpulan domain yang telah dikonfigurasi sebelumnya berhasil, dan semua domain lainnya gagal. Kontrol ini memungkinkan perimeter keamanan yang lebih tinggi untuk traffic egress, dan dapat mencegah egress 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 merutekan traffic egress melalui project pelanggan Anda di Pratinjau Cloud Data Fusion atau Wrangler. Proses ini menggunakan resource berikut:

  • Rute jaringan VPC kustom: Rute 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 egress dari Google Cloud project tenant Cloud Data Fusion ke SaaS atau cloud pihak ketiga melalui internet publik. Anda mengelola VM ini di project pelanggan Anda. 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 egress di lingkungan desain dan eksekusi, lihat Mengontrol egress 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 penting, sebaiknya buat VM yang di-load balance. 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 Cloud Data Fusion pribadi 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 yang memiliki 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 Instance details Cloud Data Fusion.

    Antarmuka keluar penyiapan

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 Google Cloud konsol, 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 mengizinkan ekspor rute, 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.

Memverifikasi penyiapan Anda

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

Menyiapkan Gateway dengan ketersediaan tinggi

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

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 health check 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 prober 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.
  • Aktifkan 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 Instance details Cloud Data Fusion.

gcloud

Buat 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

Buat 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 pada 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 VPC networks

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 Habis di Pratinjau atau Wrangler

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

Untuk memperbaiki masalah ini, pastikan setelan berikut sudah ada:

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 Managed Service untuk Apache Spark

Untuk mengakses internet publik pada waktu eksekusi, aktifkan Cloud NAT di region dan jaringan yang sama dengan cluster Managed Service untuk Apache Spark.

Langkah berikutnya