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 traffic keluar dan kontrol traffic keluar digunakan:

  • Traffic keluar mengacu pada traffic jaringan yang keluar dari Google Cloud melalui internet publik. Biasanya, traffic keluar 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 pagar pembatas untuk traffic keluar menggunakan VM proxy, yang memungkinkan traffic keluar ke sekumpulan domain yang telah dikonfigurasi sebelumnya untuk berhasil, dan semua lainnya mengalami kegagalan. Mode 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 mengarahkan traffic keluar melalui project pelanggan Anda di Pratinjau Cloud Data Fusion atau Wrangler. Proses ini menggunakan sumber daya berikut:

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

  • VM gateway: VM gateway mengarahkan 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 Anda menggunakan kembali VM untuk beberapa instance Cloud Data Fusion pribadi dalam VPC yang sama.

Untuk mengetahui informasi tentang cara menyiapkan kontrol traffic keluar di lingkungan desain dan eksekusi Anda, lihat Mengontrol traffic keluar dalam 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 Anda membuat VM yang di-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 yang telah menyiapkan peering jaringan dengan instance Cloud Data Fusion pribadi. Untuk informasi lebih lanjut tentang peering jaringan VPC dalam skenario ini, lihat Sebelum Anda memulai.

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

  5. Di kolom Skrip startup, 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 informasi selengkapnya, lihat Menjalankan skrip startup.

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

    Antarmuka traffic keluar 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 mengonfigurasi rute:

  • Setel 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 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 SaaS atau layanan cloud publik lainnya) di Pratinjau dan Wrangler.

Menyiapkan Gateway yang sangat tersedia

Direkomendasikan: Untuk aplikasi yang sangat penting, sebaiknya Anda membuat 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 profesional 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 guna 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.

Buat template instance VM gateway

Konsol

Saat Anda membuat template instance di konsol:

  • Buat instance 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 Skrip startup, 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 informasi selengkapnya, lihat Menjalankan skrip startup.

    Guna mendapatkan rentang IP yang dialokasikan untuk instance Cloud Data Fusion, buka halaman Detail instance 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 pada 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 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 di langkah sebelumnya.

Menambahkan rute kustom ke load balancer

Tambahkan rute kustom ke Internal Load Balancer (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 di Pratinjau atau Wrangler

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

Untuk memperbaiki masalah ini, pastikan setelan berikut telah diterapkan:

Health check grup instance tidak berhasil

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

Pipeline gagal saat dijalankan di Dataproc

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

Langkah selanjutnya