Mengonfigurasi peering VPC

Di Datastream, Peering Jaringan VPC memungkinkan Anda membuat koneksi khusus antara jaringan Virtual Private Cloud (VPC) dan Datastream menggunakan alamat IP internal. Sebelum membuat konfigurasi konektivitas pribadi, tinjau topologi jaringan yang didukung dan selesaikan prasyarat VPC dan VPC Bersama. Untuk terhubung ke instance Cloud SQL, Anda juga dapat menyiapkan VM NAT di jaringan VPC Anda.

Tentang Peering Jaringan VPC di Datastream

Menggunakan konektivitas pribadi akan membuat koneksi khusus di jaringan Datastream, yang berarti tidak ada pelanggan lain yang dapat membagikannya.

Koneksi Peering Jaringan VPC antara jaringan VPC Anda dan jaringan VPC Datastream memungkinkan Datastream terhubung ke:

Koneksi Peering Jaringan VPC antara jaringan VPC Anda dan jaringan VPC Datastream tidak mengizinkan Datastream terhubung ke:

Untuk membuat konektivitas antara Datastream dan resource yang hanya dapat diakses dari jaringan VPC Anda, seperti instance Cloud SQL, Anda dapat menggunakan VM penafsiran alamat jaringan (NAT) di jaringan VPC Anda. Diagram berikut menunjukkan contoh konfigurasi VM NAT yang memungkinkan Datastream terhubung secara pribadi ke instance Cloud SQL:

Diagram alur pengguna Datastream

Prasyarat peering VPC

Sebelum membuat konfigurasi konektivitas pribadi, Anda harus melakukan langkah-langkah berikut agar Datastream dapat membuat koneksi peering VPC ke project Anda:

  • Memiliki jaringan VPC yang dapat melakukan peering ke jaringan pribadi Datastream dan memenuhi persyaratan yang dijelaskan di halaman Peering Jaringan VPC. Untuk mengetahui informasi selengkapnya tentang cara membuat jaringan ini, lihat Menggunakan Peering Jaringan VPC.
  • Identifikasi rentang IP yang tersedia (dengan blok CIDR /29) di jaringan VPC. Rentang ini tidak boleh berupa rentang IP yang sudah ada sebagai subnet, rentang IP yang telah dialokasikan sebelumnya untuk akses layanan pribadi, atau rute apa pun (selain rute 0.0.0.0 default) yang menyertakan rentang IP tersebut. Rentang IP juga tidak boleh tumpang-tindih dengan rentang IP internal yang dicadangkan oleh Datastream (10.1.0.0/16 dan 10.2.2.0/24). Datastream menggunakan rentang IP ini untuk membuat subnet agar dapat berkomunikasi dengan database sumber. Tabel berikut menjelaskan rentang IP yang valid.
Rentang Deskripsi
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
Alamat IP pribadi RFC 1918
100.64.0.0/10 Ruang alamat bersama RFC 6598
192.0.0.0/24 Penetapan protokol IETF RFC 6890
192.0.2.0/24 (TEST-NET-1)
198.51.100.0/24 (TEST-NET-2)
203.0.113.0/24 (TEST-NET-3)
Dokumentasi RFC 5737
192.88.99.0/24 Relai IPv6 ke IPv4 (tidak digunakan lagi) RFC 7526
198.18.0.0/15 Pengujian benchmark RFC 2544
  • Pastikan semua resource di jaringan VPC Anda yang berkomunikasi dengan Datastream (seperti VM NAT, load balancer internal, atau database sumber dan tujuan) tidak menggunakan alamat IP dalam rentang 10.1.0.0/16 atau 10.2.2.0/24. Rentang ini dicadangkan untuk infrastruktur internal Datastream, dan menggunakannya untuk resource Anda dapat menyebabkan konflik pemilihan rute dan kegagalan konektivitas yang tidak dapat diprediksi.

  • Pastikan Google Cloud dan firewall lokal mengizinkan traffic dari rentang IP yang dipilih. Jika tidak, buat aturan firewall masuk yang mengizinkan traffic di port database sumber, dan pastikan rentang alamat IPv4 dalam aturan firewall sama dengan rentang alamat IP yang dialokasikan saat membuat resource konektivitas pribadi:

    gcloud compute firewall-rules create FIREWALL-RULE-NAME \
      --direction=INGRESS \
      --priority=PRIORITY \
      --network=PRIVATE_CONNECTIVITY_VPC \
      --project=VPC_PROJECT \
      --action=ALLOW \
      --rules=FIREWALL_RULES \
      --source-ranges=IP-RANGE
      

    Ganti kode berikut:

    • FIREWALL-RULE-NAME: Nama aturan firewall yang akan dibuat.
    • PRIORITY: Prioritas untuk aturan, yang dinyatakan sebagai bilangan bulat antara 0 dan 65535, inklusif. Nilai ini harus lebih rendah dari nilai yang ditetapkan untuk aturan blokir traffic, jika ada. Nilai prioritas yang lebih rendah menunjukkan prioritas yang lebih tinggi.
    • PRIVATE_CONNECTIVITY_VPC: Jaringan VPC yang dapat melakukan peering ke jaringan pribadi Datastream dan yang memenuhi persyaratan yang dijelaskan di halaman Peering Jaringan VPC. Ini adalah VPC yang Anda tentukan saat membuat konfigurasi konektivitas pribadi.
    • VPC_PROJECT: Project jaringan VPC.
    • FIREWALL_RULES: Daftar protokol dan port yang akan menerapkan aturan firewall, misalnya tcp:80. Aturan ini harus mengizinkan traffic TCP ke alamat IP dan port database sumber, atau proxy. Karena konektivitas pribadi dapat mendukung beberapa database, aturan ini perlu mempertimbangkan penggunaan sebenarnya dari konfigurasi Anda.
    • IP-RANGE: Rentang alamat IP yang digunakan Datastream untuk berkomunikasi dengan database sumber. Rentang ini sama dengan yang Anda tunjukkan di kolom Allocate an IP range saat membuat konfigurasi konektivitas pribadi.

      Anda mungkin juga perlu membuat aturan firewall egress yang identik untuk mengizinkan traffic kembali ke Datastream.

  • Ditetapkan ke peran yang berisi izin compute.networks.list. Izin ini memberi Anda izin IAM yang diperlukan untuk mencantumkan jaringan VPC di project Anda. Anda dapat menemukan peran yang berisi izin ini dengan melihat referensi izin IAM.

Prasyarat VPC Bersama

Jika Anda menggunakan VPC Bersama, Anda harus menyelesaikan tindakan berikut selain langkah-langkah yang dijelaskan di bagian Prasyarat VPC:

  1. Pada project layanan:

    1. Aktifkan Datastream API.
    2. Dapatkan alamat email yang digunakan untuk akun layanan Datastream. Akun layanan Datastream dibuat saat Anda melakukan salah satu tindakan berikut:

      • Anda membuat resource Datastream, seperti profil koneksi atau aliran data.
      • Anda membuat konfigurasi konektivitas pribadi, memilih VPC bersama, dan mengklik Create Datastream Service Account. Akun layanan dibuat di project host.

      Untuk mendapatkan alamat email yang digunakan untuk akun layanan Datastream, temukan Project number di halaman beranda konsol Google Cloud . Alamat email akun layanan adalah service-[project_number]@gcp-sa-datastream..

  2. Di project host:

    1. Berikan izin peran Identity and Access Management (IAM) compute.networkAdmin ke akun layanan Datastream. Peran ini hanya diperlukan saat Anda membuat peering VPC. Setelah peering dibuat, Anda tidak lagi memerlukan peran tersebut.

      Jika organisasi Anda tidak mengizinkan pemberian izin, buat peran khusus dengan izin minimum berikut untuk membuat dan menghapus resource koneksi pribadi:

    Untuk mengetahui informasi selengkapnya tentang peran khusus, lihat Membuat dan mengelola peran khusus.

Menyiapkan VM NAT

  1. Identifikasi alamat IP instance Cloud SQL yang perlu dihubungkan oleh Datastream.

  2. Identifikasi jaringan VPC Anda. Ini adalah jaringan VPC yang terhubung ke jaringan VPC Datastream menggunakan Peering Jaringan VPC.

  3. Jika Anda belum melakukannya, buat konfigurasi konektivitas pribadi di Datastream. Tindakan ini akan membuat koneksi Peering Jaringan VPC yang menghubungkan jaringan VPC Anda dan jaringan VPC Datastream. Catat rentang alamat IP yang digunakan oleh konfigurasi konektivitas pribadi Datastream.

  4. Pilih jenis mesin yang akan digunakan untuk VM NAT yang Anda buat di langkah berikutnya. Google Cloud menerapkan batas bandwidth egress maksimum per instance, untuk paket yang dirutekan oleh next hop dalam jaringan VPC, sesuai dengan jenis mesin instance VM. Untuk mengetahui informasi selengkapnya, lihat Egress ke tujuan yang dapat dirutekan dalam jaringan VPC dan Bandwidth egress maksimum per instance.

  5. Buat VM NAT di jaringan VPC Anda. Saat membuat VM, Anda harus mengaktifkan penerusan IP. Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan penerusan IP untuk instance.

    Jika jaringan VPC Anda adalah jaringan VPC Bersama, Anda dapat membuat VM NAT di project host atau project layanan apa pun, asalkan antarmuka jaringan VM NAT berada di jaringan VPC Bersama.

    • Untuk meminimalkan waktu round-trip jaringan, buat VM NAT di region yang sama dengan Datastream.
    • Contoh ini mengasumsikan bahwa VM NAT memiliki satu antarmuka jaringan.
    • Jalankan skrip dalam distribusi Linux—misalnya, Debian 12.
    • Gunakan skrip startup berikut. Skrip startup dijalankan oleh root setiap kali VM dimulai. Skrip ini menyertakan komentar yang menjelaskan fungsi setiap baris skrip. Dalam skrip, ganti CLOUD_SQL_INSTANCE_IP dengan alamat IP instance Cloud SQL dan DATABASE_PORT dengan port tujuan yang digunakan oleh software database.
    #! /bin/bash
    
    export DB_ADDR=CLOUD_SQL_INSTANCE_IP
    export DB_PORT=DATABASE_PORT
    export SYSCTL_CONF_FILE="/etc/sysctl.d/99-sysctl.conf"
    
    # Ensure the VM can receive packets whose destinations do
    # not match any running process local to the VM
    if [ "$(sysctl net.ipv4.ip_forward)" != "net.ipv4.ip_forward = 1" ]; then
        echo "Enabling IP forwarding..."
        if [ ! -f "${SYSCTL_CONF_FILE}" ]; then
           # Create the kernel parameter config file if it doesn't exist.
           touch "${SYSCTL_CONF_FILE}"
        fi
        # Remove any lines with net.ipv4.ip_forward:
        sed -i '/net.ipv4.ip_forward/d' "${SYSCTL_CONF_FILE}"
        # Append net.ipv4.ip_forward=1:
        echo "net.ipv4.ip_forward=1" >> "${SYSCTL_CONF_FILE}"
        # Reload kernel parameters:
        sysctl --system
    fi
    
    # Ask the Metadata server for the IP address of the VM nic0
    # network interface:
    md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance"
    vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)"
    
    # Clear any existing iptables NAT table entries (all chains):
    iptables -t nat -F
    
    # Create a NAT table entry in the prerouting chain, matching
    # any packets with destination database port, changing the destination
    # IP address of the packet to the SQL instance IP address:
    iptables -t nat -A PREROUTING \
         -p tcp --dport $DB_PORT \
         -j DNAT \
         --to-destination $DB_ADDR
    
    # Create a NAT table entry in the postrouting chain, matching
    # any packets with destination database port, changing the source IP
    # address of the packet to the NAT VM's primary internal IPv4 address:
    iptables -t nat -A POSTROUTING \
         -p tcp --dport $DB_PORT \
         -j SNAT \
         --to-source $vm_nic_ip
    
    # Save iptables configuration:
    iptables-save
  6. Buat aturan firewall izinkan traffic masuk (atau aturan dalam kebijakan firewall jaringan global, kebijakan firewall jaringan regional, atau kebijakan firewall hierarkis) dengan karakteristik berikut:

    • Direction: ingress
    • Action: allow
    • Parameter target: setidaknya VM NAT
    • Parameter sumber: rentang alamat IP yang digunakan oleh konfigurasi konektivitas pribadi Datastream
    • Protokol: TCP
    • Port: setidaknya harus menyertakan DATABASE_PORT
  7. Aturan firewall izinkan traffic keluar yang tersirat memungkinkan VM NAT mengirim paket ke tujuan mana pun. Jika jaringan VPC Anda menggunakan aturan firewall tolak egress, Anda mungkin harus membuat aturan firewall izinkan egress untuk mengizinkan VM NAT mengirim paket ke instance Cloud SQL. Jika aturan izin egress diperlukan, gunakan parameter berikut:

    • Direction: egress
    • Action: allow
    • Parameter target: setidaknya VM NAT
    • Parameter tujuan: alamat IP instance Cloud SQL
    • Protokol: TCP
    • Port: setidaknya harus menyertakan DATABASE_PORT
  8. Pastikan Anda telah mengonfigurasi instance Cloud SQL untuk menerima koneksi dari alamat IPv4 internal utama yang digunakan oleh antarmuka jaringan VM NAT Anda. Untuk mengetahui petunjuknya, lihat Memberikan otorisasi dengan jaringan yang diizinkan dalam dokumentasi Cloud SQL.

  9. Buat profil koneksi di Datastream. Dalam detail koneksi profil, tentukan alamat IPv4 internal utama VM NAT yang Anda buat. Masukkan port database sumber di kolom port profil koneksi.

Menyiapkan sepasang VM NAT dan Load Balancer Jaringan passthrough internal

Untuk meningkatkan keandalan solusi VM NAT, pertimbangkan arsitektur berikut, yang menggunakan sepasang VM NAT dan Load Balancer Jaringan passthrough internal:

  1. Buat dua VM NAT di zona berbeda di region yang sama. Ikuti petunjuk Menyiapkan VM NAT untuk membuat setiap VM, dan tempatkan setiap VM di grup instance tidak terkelola zona-nya sendiri.

    Atau, Anda dapat membuat grup instance terkelola regional. Dalam template grup instance terkelola, sertakan skrip startup seperti contoh skrip startup dalam petunjuk Menyiapkan VM NAT.

  2. Buat Load Balancer Jaringan passthrough internal yang layanan backend-nya menggunakan grup instance atau grup dari langkah sebelumnya sebagai backend-nya. Untuk contoh Load Balancer Jaringan passthrough internal, lihat Menyiapkan Load Balancer Jaringan passthrough internal dengan backend grup instance VM.

    Saat mengonfigurasi health check load balancer, Anda dapat menggunakan health check TCP yang menggunakan port TCP tujuan yang cocok dengan DATABASE_PORT. Paket health check dirutekan ke CLOUD_SQL_INSTANCE_IP sesuai dengan konfigurasi VM NAT. Atau, Anda dapat menjalankan proses lokal di VM NAT yang menjawab health check TCP atau HTTP pada port kustom.

  3. Buat aturan firewall dan konfigurasikan jaringan yang diizinkan Cloud SQL seperti yang dijelaskan dalam petunjuk Menyiapkan VM NAT. Pastikan jaringan yang diizinkan Cloud SQL menyertakan alamat IPv4 internal utama dari kedua VM NAT.

  4. Saat Anda membuat profil koneksi Datastream, tentukan alamat IP aturan penerusan Load Balancer Jaringan passthrough internal dalam detail koneksi profil.

Langkah berikutnya