Menyiapkan Load Balancer Aplikasi internal regional dengan bucket Cloud Storage di lingkungan VPC Bersama

Dokumen ini menunjukkan dua contoh konfigurasi untuk menyiapkan regional internal Application Load Balancer di lingkungan VPC Bersama dengan bucket Cloud Storage:

  • Contoh pertama membuat semua komponen dan backend load balancer dalam satu project layanan.
  • Contoh kedua membuat komponen frontend dan peta URL load balancer dalam satu project layanan, sementara bucket backend load balancer dan bucket Cloud Storage dibuat dalam project layanan yang berbeda.

Kedua contoh memerlukan konfigurasi awal yang sama untuk memberikan peran yang diperlukan dan menyiapkan VPC Bersama sebelum Anda dapat mulai membuat load balancer.

Untuk mengetahui informasi selengkapnya tentang arsitektur VPC Bersama valid lainnya, lihat Arsitektur VPC Bersama.

Jika Anda tidak ingin menggunakan jaringan VPC Bersama, lihat Menyiapkan regional internal Application Load Balancer dengan bucket Cloud Storage.

Sebelum memulai

Pastikan penyiapan Anda memenuhi prasyarat berikut.

Membuat Google Cloud project

Buat Google Cloud project untuk satu project host dan dua project layanan.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk menyiapkan regional internal Application Load Balancer di lingkungan VPC Bersama dengan bucket Cloud Storage, minta administrator Anda untuk memberi Anda peran IAM berikut:

  • Siapkan VPC Bersama, aktifkan project host, dan berikan akses kepada administrator project layanan: Compute Shared VPC Admin (roles/compute.xpnAdmin) di project host
  • Menambahkan dan menghapus aturan firewall: Compute Security Admin (roles/compute.securityAdmin) di project host
  • Akses ke administrator project layanan untuk menggunakan jaringan VPC Bersama: Compute Network User (roles/compute.networkUser) di project host
  • Buat resource load balancing: Compute Network Admin (roles/compute.networkAdmin) di project layanan
  • Membuat instance Compute Engine: Compute Instance Admin (roles/compute.instanceAdmin.v1) di project layanan
  • Membuat dan mengubah sertifikat SSL Compute Engine: Compute Security Admin (roles/compute.securityAdmin) di project layanan
  • Membuat dan mengubah sertifikat SSL Certificate Manager: Pemilik Certificate Manager (roles/certificatemanager.owner) di project layanan
  • Aktifkan bucket backend referensi load balancer dari project layanan lain: Pengguna Layanan Load Balancer Compute (roles/compute.loadBalancerServiceUser) di project layanan

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Menyiapkan lingkungan VPC Bersama

Untuk menyiapkan lingkungan VPC Bersama, selesaikan langkah-langkah berikut di project host:

  1. Konfigurasi jaringan VPC di project host.
  2. Konfigurasi subnet khusus proxy di project host.
  3. Konfigurasi aturan firewall di project host.
  4. Siapkan VPC Bersama di project host.

Anda tidak perlu melakukan langkah-langkah di bagian ini setiap kali ingin membuat load balancer baru. Namun, Anda harus memastikan bahwa Anda memiliki akses ke resource yang dijelaskan di sini sebelum melanjutkan untuk membuat load balancer.

Contoh ini menggunakan jaringan VPC, region, dan subnet khusus proxy berikut:

  • Jaringan. Jaringan ini adalah jaringan VPC mode kustom bernama lb-network.

  • Subnet untuk load balancer. Subnet bernama subnet-us di region us-east1 menggunakan 10.1.2.0/24 untuk rentang IP utamanya.

  • Subnet untuk proxy Envoy. Subnet bernama proxy-only-subnet-us di region us-east1 menggunakan 10.129.0.0/23 untuk rentang IP utamanya.

Mengonfigurasi VPC untuk project host

Konfigurasi VPC mode kustom untuk project host dan buat subnet di region yang sama tempat Anda perlu mengonfigurasi aturan penerusan load balancer.

Anda tidak perlu melakukan langkah ini setiap kali ingin membuat load balancer baru. Anda hanya perlu memastikan bahwa project layanan memiliki akses ke subnet di jaringan VPC Bersama (selain subnet khusus proxy).

Konsol

  1. Di konsol Google Cloud , buka halaman VPC networks.

    Buka VPC networks

  2. Klik Create VPC network.

  3. Di kolom Name, masukkan lb-network.

  4. Untuk Mode pembuatan subnet, klik Kustom.

  5. Di bagian New subnet, berikan informasi berikut:

    1. Di kolom Name, masukkan subnet-us.
    2. Di daftar Region, pilih us-east1.
    3. Di kolom IPv4 range, masukkan 10.1.2.0/24
    4. Klik Done.
  6. Klik Create.

gcloud

  1. Buat jaringan VPC kustom, bernama lb-network, dengan perintah gcloud compute networks create.

    gcloud compute networks create lb-network \
        --subnet-mode=custom \
        --project=HOST_PROJECT_ID
    

    Ganti HOST_PROJECT_ID dengan Google Cloud project ID yang ditetapkan ke project yang diaktifkan sebagai project host di lingkungan VPC Bersama.

  2. Buat subnet di jaringan VPC lb-network di region us-east1 dengan perintah gcloud compute networks subnets create.

    gcloud compute networks subnets create subnet-us \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-east1 \
        --project=HOST_PROJECT_ID
    

Mengonfigurasi subnet khusus proxy di project host

Subnet khusus proxy menyediakan serangkaian alamat IP yang digunakan Google Cloud untuk menjalankan proxy Envoy atas nama Anda. Proxy menghentikan koneksi dari klien dan membuat koneksi baru ke backend.

Subnet khusus proxy ini digunakan oleh semua load balancer regional berbasis Envoy di region yang sama dengan jaringan VPC. Hanya ada satu subnet khusus proxy yang aktif untuk tujuan tertentu, per region, per jaringan. Dalam contoh ini, kita membuat subnet khusus proxy di region us-east1.

Konsol

  1. Di konsol Google Cloud , buka halaman VPC networks.

    Buka VPC networks

  2. Klik nama jaringan VPC yang Anda buat.

  3. Di tab Subnets, klik Add subnet, lalu berikan informasi berikut:

    1. Di kolom Name, masukkan proxy-only-subnet-us.
    2. Di daftar Region, pilih us-east1.
    3. Untuk Tujuan, pilih Regional Managed Proxy.
    4. Di kolom IPv4 range, masukkan 10.129.0.0/23.
  4. Klik Tambahkan.

gcloud

  • Buat subnet khusus proxy di region us-east1 dengan perintah gcloud compute networks subnets create.

    gcloud compute networks subnets create proxy-only-subnet-us \
        --purpose=REGIONAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23 \
        --project=HOST_PROJECT_ID
    

Mengonfigurasi aturan firewall di project host

Contoh ini menggunakan aturan firewall ingress fw-allow-ssh yang memungkinkan konektivitas SSH masuk di port TCP 22 dari alamat mana pun. Anda dapat memilih rentang IP sumber yang lebih ketat untuk aturan ini. Misalnya, Anda dapat menentukan hanya rentang IP sistem tempat Anda memulai sesi SSH. Contoh ini menggunakan tag target allow-ssh untuk mengidentifikasi virtual machine (VM) yang menerapkan aturan firewall. Tanpa aturan firewall ini, aturan tolak ingress default akan memblokir traffic masuk ke instance backend.

Konsol

  1. Di konsol Google Cloud , buka halaman Firewall policies.

    Buka Kebijakan firewall

  2. Klik Create firewall rule untuk membuat aturan yang mengizinkan Google Cloud health check.

  3. Berikan informasi berikut:

    1. Di kolom Name, masukkan fw-allow-ssh.
    2. Dalam daftar Network, pilih lb-network.
    3. Untuk Direction of traffic, pilih Ingress.
    4. Untuk Action on match, pilih Allow.
    5. Dalam daftar Target, pilih Tag target yang ditentukan.
    6. Di kolom Target tags, masukkan allow-ssh.
    7. Dalam daftar Filter sumber, pilih Rentang IPv4.
    8. Di kolom Source IPv4 ranges, masukkan 0.0.0.0/0.
    9. Untuk Protocols and ports, pilih Specified protocols and ports.
    10. Pilih kotak centang TCP, lalu masukkan 22 untuk nomor port.
  4. Klik Create.

gcloud

  • Buat aturan firewall fw-allow-ssh untuk mengizinkan konektivitas SSH ke VM dengan tag jaringan allow-ssh. Jika Anda menghapus source-ranges, Google Cloud akan menafsirkan aturan sebagai sumber apa pun.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22 \
        --project=HOST_PROJECT_ID
    

Menyiapkan VPC Bersama di project host

Aktifkan project host VPC Bersama dan lampirkan project layanan ke project host agar project layanan dapat menggunakan jaringan VPC Bersama. Untuk menyiapkan VPC Bersama di project host, lihat halaman berikut:

  1. Aktifkan project host.
  2. Lampirkan project layanan.

Setelah menyelesaikan langkah-langkah sebelumnya, selesaikan salah satu penyiapan berikut:

Mengonfigurasi load balancer di project layanan

Contoh ini membuat regional internal Application Load Balancer tempat semua komponen load balancing (aturan penerusan, proxy target, peta URL, dan bucket backend) serta bucket Cloud Storage dibuat di project layanan.

Resource jaringan regional internal Application Load Balancer, seperti subnet khusus proxy, dibuat di project host.

Gambar 1. Load balancer HTTP eksternal regional di lingkungan VPC Bersama dengan bucket Cloud Storage
Gambar 1. Load Balancer Aplikasi internal regional di lingkungan VPC Bersama dengan bucket Cloud Storage

Bagian ini menunjukkan cara menyiapkan load balancer dan backend.

Contoh di halaman ini secara eksplisit menetapkan alamat IP yang dicadangkan untuk aturan penerusan regional internal Application Load Balancer, bukan mengizinkan alokasi alamat IP sementara. Sebagai praktik terbaik, sebaiknya pesan alamat IP untuk aturan penerusan.

Mengonfigurasi bucket Cloud Storage

Proses untuk mengonfigurasi bucket Cloud Storage Anda adalah sebagai berikut:

  1. Buat bucket Cloud Storage.
  2. Salin konten ke bucket.
  3. Jadikan bucket dapat dibaca oleh publik.

Membuat bucket Cloud Storage

Dalam contoh ini, Anda membuat dua bucket Cloud Storage di region us-east1.

Konsol

  1. Di konsol Google Cloud , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Klik Create .

  3. Di bagian Mulai, masukkan nama yang unik secara global yang mengikuti pedoman penamaan.

  4. Klik Pilih lokasi untuk menyimpan data Anda.

  5. Tetapkan Location type ke Region.

  6. Dari daftar region, pilih us-east1.

  7. Klik Create.

  8. Klik Buckets untuk kembali ke halaman Cloud Storage Buckets. Gunakan petunjuk sebelumnya untuk membuat bucket kedua di region us-east1.

gcloud

  • Buat bucket di region us-east1 dengan perintah gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
       --default-storage-class=standard \
       --location=us-east1 \
       --uniform-bucket-level-access \
       --project=SERVICE_PROJECT_ID
    
    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    

    Ganti kode berikut:

    • BUCKET1_NAME: nama bucket Cloud Storage pertama Anda
    • BUCKET2_NAME: nama bucket Cloud Storage kedua Anda
    • SERVICE_PROJECT_ID: Google Cloud project ID yang ditetapkan ke project layanan

Menyalin konten ke bucket Cloud Storage Anda

Untuk mengisi bucket Cloud Storage, salin file grafik dari bucket Cloud Storage publik ke bucket Cloud Storage Anda sendiri.

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/

Menjadikan bucket Cloud Storage Anda dapat dibaca oleh publik

Agar semua objek dalam bucket dapat dibaca oleh semua orang di internet publik, berikan peran Storage Object Viewer (roles/storage.objectViewer) kepada akun utama allUsers.

Konsol

Untuk memberikan akses kepada semua pengguna untuk melihat objek di bucket Anda, ulangi prosedur berikut untuk setiap bucket:

  1. Di konsol Google Cloud , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, centang kotak untuk setiap bucket yang ingin Anda tampilkan kepada publik.

  3. Klik tombol Izin. Dialog Permissions akan muncul.

  4. Di dialog Izin, klik tombol Tambahkan akun utama. Dialog Grant access akan muncul.

  5. Di kolom New principals, masukkan allUsers.

  6. Di kolom Select a role, masukkan Storage Object Viewer di kotak filter, lalu pilih Storage Object Viewer dari hasil yang difilter.

  7. Klik Simpan.

  8. Klik Allow public access.

gcloud

Untuk memberikan akses kepada semua pengguna agar dapat melihat objek di bucket Anda, jalankan perintah buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer

Mencadangkan alamat IP internal statis

Cadangkan alamat IP internal statis untuk aturan penerusan load balancer. Untuk mengetahui informasi selengkapnya, lihat Mencadangkan alamat IP internal statis.

Konsol

  1. Di konsol Google Cloud , buka halaman Reserve internal static IP address.

    Buka Cadangkan alamat IP statis internal

  2. Di kolom Name, masukkan nama untuk alamat baru.

  3. Dalam daftar IP version, pilih IPv4.

  4. Dalam daftar Network, pilih lb-network.

  5. Dalam daftar Subnetwork, pilih subnet-us.

  6. Untuk Region, pilih us-east1.

  7. Dalam daftar Static IP address, pilih Assign automatically. Setelah Anda membuat load balancer, alamat IP ini dilampirkan ke aturan penerusan load balancer.

  8. Klik Reserve untuk mereservasi alamat IP.

gcloud

  1. Untuk mencadangkan alamat IP internal statis menggunakan gcloud compute, gunakan perintah compute addresses create.

     gcloud compute addresses create ADDRESS_NAME  \
         --region=REGION \
         --subnet=subnet-us \
         --project=SERVICE_PROJECT_ID
    

    Ganti kode berikut:

    • ADDRESS_NAME: nama yang ingin Anda beri untuk alamat ini.
    • REGION: region tempat Anda ingin mencadangkan alamat ini. Region ini harus berupa region yang sama dengan load balancer. Contoh, us-east1.
    • SERVICE_PROJECT_ID: ID Google Cloud project yang ditetapkan ke project layanan.
  2. Gunakan perintah compute addresses describe untuk melihat hasilnya:

     gcloud compute addresses describe ADDRESS_NAME
    

    Salin alamat IP yang ditampilkan untuk digunakan sebagai RESERVED_IP_ADDRESS di bagian berikutnya.

Menyiapkan resource sertifikat SSL

Untuk regional internal Application Load Balancer yang menggunakan HTTPS sebagai protokol permintaan dan respons, Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL Compute Engine atau sertifikat Certificate Manager.

Untuk contoh ini, buat resource sertifikat SSL menggunakan Pengelola Sertifikat seperti yang dijelaskan dalam salah satu dokumen berikut:

Setelah membuat sertifikat, Anda dapat melampirkan sertifikat ke proxy target HTTPS.

Sebaiknya gunakan sertifikat yang dikelola Google untuk mengurangi biaya operasional, seperti risiko keamanan yang terkait dengan pengelolaan sertifikat manual.

Mengonfigurasi load balancer dengan bucket backend

Bagian ini menunjukkan cara membuat resource berikut untuk regional internal Application Load Balancer:

Dalam contoh ini, Anda dapat menggunakan HTTP atau HTTPS sebagai protokol permintaan dan respons antara klien dan load balancer. Untuk membuat load balancer HTTPS, Anda harus menambahkan resource sertifikat SSL ke frontend load balancer.

Untuk membuat komponen load balancing yang disebutkan sebelumnya menggunakan gcloud CLI, ikuti langkah-langkah berikut:

  1. Buat dua bucket backend di region us-east1 dengan perintah gcloud beta compute backend-buckets create. Bucket backend memiliki skema load balancing INTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --region=us-east1
          --project=SERVICE_PROJECT_ID
    
  2. Buat peta URL untuk mengarahkan permintaan masuk ke bucket backend dengan perintah gcloud beta compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Ganti URL_MAP_NAME dengan nama peta URL.

  3. Konfigurasi aturan host dan jalur peta URL dengan perintah gcloud beta compute url-maps add-path-matcher.

    Dalam contoh ini, bucket backend default adalah backend-bucket-cats, yang menangani semua jalur yang ada di dalamnya. Namun, setiap permintaan yang menargetkan http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg menggunakan backend backend-bucket-dogs. Misalnya, jika folder /love-to-fetch/ juga ada dalam backend default (backend-bucket-cats), load balancer akan memprioritaskan backend backend-bucket-dogs karena ada aturan jalur khusus untuk /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    
  4. Buat proxy target dengan perintah gcloud compute target-http-proxies create.

    HTTP

    Untuk traffic HTTP, buat proxy HTTP target untuk mengarahkan permintaan ke peta URL:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Ganti TARGET_HTTP_PROXY_NAME dengan nama proxy HTTP target.

    HTTPS

    Untuk traffic HTTPS, buat proxy HTTPS target untuk merutekan permintaan ke peta URL. Proxy ini merupakan bagian dari load balancer yang menampung sertifikat SSL untuk load balancer HTTPS. Setelah Anda membuat sertifikat, Anda dapat melampirkan sertifikat ke proxy target HTTPS.

    Untuk melampirkan sertifikat Certificate Manager, jalankan perintah berikut:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Ganti kode berikut:

  5. Buat aturan penerusan dengan alamat IP di region us-east1 menggunakan perintah gcloud compute forwarding-rules create.

    Mencadangkan alamat IP bersifat opsional untuk aturan penerusan HTTP; namun, Anda perlu mencadangkan alamat IP untuk aturan penerusan HTTPS.

    Dalam contoh ini, alamat IP ephemeral dikaitkan dengan aturan penerusan HTTP load balancer Anda. Alamat IP sementara akan tetap konstan selama ada aturan penerusan. Jika Anda perlu menghapus aturan penerusan dan membuatnya ulang, aturan penerusan tersebut dapat menerima alamat IP baru.

    HTTP

    Untuk traffic HTTP, buat aturan penerusan regional untuk merutekan permintaan masuk ke proxy target HTTP:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=subnet-us \
          --subnet-region=us-east1 \
          --address=RESERVED_IP_ADDRESS
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Ganti kode berikut:

    HTTPS

    Untuk traffic HTTPS, buat aturan penerusan regional untuk merutekan permintaan masuk ke proxy target HTTPS:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=subnet-us \
          --subnet-region=us-east1 \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Ganti kode berikut:

Mengirim permintaan HTTP ke load balancer

Setelah layanan load balancing berjalan, kirim permintaan dari VM klien internal ke aturan penerusan load balancer.

  1. Dapatkan alamat IP aturan penerusan load balancer, yang berada di region us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_ID
    

    Salin alamat IP yang ditampilkan untuk digunakan sebagai FORWARDING_RULE_IP_ADDRESS.

  2. Buat VM klien di region us-east1.

    gcloud compute instances create client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=lb-network \
        --subnet=subnet-us \
        --zone=us-east1-c \
        --tags=allow-ssh
    
  3. Buat koneksi SSH ke VM klien.

    gcloud compute ssh client-a --zone=us-east1-c
    
  4. Dalam contoh ini, regional internal Application Load Balancer memiliki alamat IP virtual (VIP) frontend di region us-east1 dalam jaringan VPC. Buat permintaan HTTP ke VIP di region tersebut menggunakan curl.

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Ganti FORWARDING_RULE_IP_ADDRESS dengan alamat IP yang Anda salin pada langkah pertama.

Mengonfigurasi load balancer dengan konfigurasi lintas project

Contoh sebelumnya di halaman ini menunjukkan cara menyiapkan deployment VPC Bersama dengan semua komponen load balancer dan backend-nya dibuat di project layanan.

Load Balancer Aplikasi internal regional juga memungkinkan Anda mengonfigurasi deployment VPC Bersama tempat peta URL di satu host atau project layanan dapat mereferensikan bucket backend yang terletak di beberapa project layanan di lingkungan VPC Bersama.

Anda dapat menggunakan langkah-langkah di bagian ini sebagai referensi untuk mengonfigurasi kombinasi yang didukung dan tercantum di sini:

  • Aturan penerusan, proxy target, dan peta URL di project host, serta bucket backend di satu project layanan
  • Aturan penerusan, proxy target, dan peta URL di project layanan, serta bucket backend di project layanan lain

Di bagian ini, konfigurasi kedua diuraikan sebagai contoh.

Ringkasan penyiapan

Contoh ini mengonfigurasi load balancer dengan frontend dan backend-nya di dua project layanan yang berbeda.

Jika belum melakukannya, Anda harus menyelesaikan semua langkah prasyarat untuk menyiapkan VPC Bersama dan mengonfigurasi jaringan, subnet, dan aturan firewall yang diperlukan untuk contoh ini. Untuk mengetahui petunjuknya, di halaman ini, lihat bagian berikut:

Gambar 2. Frontend dan backend load balancer di project layanan yang berbeda
Gambar 2. Frontend dan backend load balancer di project layanan yang berbeda

Mengonfigurasi bucket Cloud Storage dan bucket backend di project layanan B

Semua langkah di bagian ini harus dilakukan di project layanan B.

Untuk membuat bucket backend, Anda harus melakukan hal berikut:

  1. Buat bucket Cloud Storage.
  2. Salin konten ke bucket.
  3. Jadikan bucket dapat dibaca oleh publik.
  4. Buat bucket backend dan arahkan ke bucket Cloud Storage.

Membuat bucket Cloud Storage

Dalam contoh ini, buat bucket Cloud Storage di region us-east1.

Konsol

  1. Di konsol Google Cloud , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Klik Create .

  3. Di bagian Mulai, masukkan nama yang unik secara global yang mengikuti pedoman penamaan.

  4. Klik Pilih lokasi untuk menyimpan data Anda.

  5. Tetapkan Location type ke Region.

  6. Dari daftar region, pilih us-east1.

  7. Klik Create.

  8. Klik Buckets untuk kembali ke halaman Cloud Storage Buckets. Gunakan petunjuk sebelumnya untuk membuat bucket kedua di region us-east1.

gcloud

Buat bucket di region us-east1 dengan perintah gcloud storage buckets create.

 gcloud storage buckets create gs://BUCKET1_NAME \
     --default-storage-class=standard \
     --location=us-east1 \
     --uniform-bucket-level-access \
     --project=SERVICE_PROJECT_B_ID
  gcloud storage buckets create gs://BUCKET2_NAME \
      --default-storage-class=standard \
      --location=us-east1 \
      --uniform-bucket-level-access \
      --project=SERVICE_PROJECT_B_ID

Ganti kode berikut:

  • BUCKET1_NAME: nama bucket Cloud Storage pertama Anda
  • BUCKET2_NAME: nama bucket Cloud Storage kedua Anda
  • SERVICE_PROJECT_B_ID: Google Cloud project ID yang ditetapkan ke project layanan B

Menyalin file grafik ke bucket Cloud Storage Anda

Agar Anda dapat menguji penyiapan, salin file grafis dari bucket Cloud Storage publik ke bucket Cloud Storage Anda sendiri.

gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/

Menjadikan bucket Cloud Storage Anda dapat dibaca oleh publik

Agar semua objek dalam bucket dapat dibaca oleh semua orang di internet publik, berikan peran Storage Object Viewer (roles/storage.objectViewer) kepada akun utama allUsers.

Konsol

Untuk memberikan akses kepada semua pengguna untuk melihat objek di bucket Anda, ulangi prosedur berikut untuk setiap bucket:

  1. Di konsol Google Cloud , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, centang kotak untuk setiap bucket yang ingin Anda tampilkan kepada publik.

  3. Klik tombol Izin. Dialog Permissions akan muncul.

  4. Di dialog Izin, klik tombol Tambahkan akun utama. Dialog Grant access akan muncul.

  5. Di kolom New principals, masukkan allUsers.

  6. Di kolom Select a role, masukkan Storage Object Viewer di kotak filter, lalu pilih Storage Object Viewer dari hasil yang difilter.

  7. Klik Simpan.

  8. Klik Allow public access.

gcloud

Untuk memberikan akses kepada semua pengguna agar dapat melihat objek di bucket Anda, jalankan perintah buckets add-iam-policy-binding.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME \
    --member=allUsers \
    --role=roles/storage.objectViewer

Mengonfigurasi load balancer dengan bucket backend

Untuk membuat bucket backend, ikuti langkah-langkah berikut:

  1. Buat dua bucket backend di region us-east1 dengan perintah gcloud beta compute backend-buckets create. Bucket backend memiliki skema load balancing INTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_B_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --region=us-east1
          --project=SERVICE_PROJECT_B_ID
    

Mengonfigurasi komponen frontend load balancer di project layanan A

Semua langkah di bagian ini harus dilakukan di project layanan A.

Di project layanan A, buat komponen load balancing frontend berikut:

  1. Siapkan resource sertifikat SSL yang dilampirkan ke proxy target. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan resource sertifikat SSL dalam dokumen ini.
  2. Buat dan cadangkan alamat IP internal statis untuk aturan penerusan load balancer. Untuk mengetahui informasi selengkapnya, lihat Mencadangkan alamat IP internal statis dalam dokumen ini.
  3. Buat peta URL untuk mengarahkan permintaan masuk ke bucket backend di project layanan B dengan perintah gcloud beta compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Ganti kode berikut:

    • URL_MAP_NAME: nama peta URL
    • SERVICE_PROJECT_A_ID: ID project Google Cloud yang ditetapkan ke project layanan A
  4. Konfigurasi aturan host dan jalur peta URL dengan perintah gcloud beta compute url-maps add-path-matcher.

    Dalam contoh ini, bucket backend default adalah backend-bucket-cats, yang menangani semua jalur yang ada di dalamnya. Namun, setiap permintaan yang menargetkan http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg menggunakan backend backend-bucket-dogs. Misalnya, jika folder /love-to-fetch/ juga ada dalam backend default (backend-bucket-cats), load balancer akan memprioritaskan backend backend-bucket-dogs karena ada aturan jalur khusus untuk /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \
          --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \
          --region=us-east1
          --project=SERVICE_PROJECT_A_ID
    
  5. Buat proxy target dengan perintah gcloud compute target-http-proxies create.

    HTTP

    Untuk traffic HTTP, buat proxy HTTP target untuk mengarahkan permintaan ke peta URL:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Ganti TARGET_HTTP_PROXY_NAME dengan nama proxy HTTP target.

    HTTPS

    Untuk traffic HTTPS, buat proxy HTTPS target untuk merutekan permintaan ke peta URL. Proxy ini merupakan bagian dari load balancer yang menampung sertifikat SSL untuk load balancer HTTPS. Setelah membuat sertifikat, Anda dapat melampirkan sertifikat ke proxy target HTTPS.

    Untuk melampirkan sertifikat Certificate Manager, jalankan perintah berikut:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=lb-map \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Ganti kode berikut:

  6. Buat aturan penerusan dengan alamat IP di region us-east1 dengan perintah gcloud compute forwarding-rules create.

    Mencadangkan alamat IP bersifat opsional untuk aturan penerusan HTTP; namun, Anda perlu mencadangkan alamat IP untuk aturan penerusan HTTPS.

    Dalam contoh ini, alamat IP ephemeral dikaitkan dengan aturan penerusan HTTP load balancer Anda. Alamat IP sementara akan tetap konstan selama ada aturan penerusan. Jika Anda perlu menghapus aturan penerusan dan membuatnya ulang, aturan penerusan tersebut dapat menerima alamat IP baru.

    HTTP

    Untuk traffic HTTP, buat aturan penerusan regional untuk merutekan permintaan masuk ke proxy target HTTP:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=subnet-us \
          --address=RESERVED_IP_ADDRESS
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Ganti kode berikut:

    • FORWARDING_RULE_NAME: nama aturan penerusan
    • RESERVED_IP_ADDRESS: alamat IP yang dicadangkan

    HTTPS

    Untuk traffic HTTPS, buat aturan penerusan regional untuk merutekan permintaan masuk ke proxy target HTTPS:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=INTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --subnet=subnet-us \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Ganti kode berikut:

    • FORWARDING_RULE_NAME: nama aturan penerusan
    • RESERVED_IP_ADDRESS: alamat IP yang dicadangkan

Memberikan izin kepada Admin Load Balancer Compute untuk menggunakan bucket backend

Jika Anda ingin load balancer mereferensikan bucket backend di project layanan lain, administrator load balancer harus memiliki izin compute.backendBuckets.use. Untuk memberikan izin ini, Anda dapat menggunakan peran IAM bawaan yang disebut Compute Load Balancer Services User (roles/compute.loadBalancerServiceUser). Peran ini harus diberikan oleh Service Project Admin dan dapat diterapkan di tingkat project layanan atau di tingkat bucket backend individual.

Dalam contoh ini, Service Project Admin dari project layanan B harus menjalankan salah satu perintah berikut untuk memberikan izin compute.backendBuckets.use kepada Admin Load Balancer dari project layanan A. Hal ini dapat dilakukan di tingkat project (untuk semua bucket backend dalam project) atau per bucket backend.

Konsol

Izin tingkat project

Gunakan langkah-langkah berikut untuk memberikan izin ke semua bucket backend di project Anda.

Anda memerlukan izin compute.regionBackendBuckets.setIamPolicy dan resourcemanager.projects.setIamPolicy untuk menyelesaikan langkah ini.

  1. Di konsol Google Cloud , buka halaman IAM.

    Buka IAM

  2. Pilih project Anda.

  3. Klik Grant access.

  4. Di kolom New principals, masukkan alamat email atau ID lain akun utama.

  5. Di bagian Tetapkan peran, klik Tambahkan peran.

  6. Dalam dialog Select roles, di kolom Search for roles, masukkan Compute Load Balancer Services User.

  7. Pilih kotak centang Compute Load Balancer Services User.

  8. Klik Terapkan.

  9. Opsional: Tambahkan kondisi ke peran.

  10. Klik Simpan.

Izin tingkat resource untuk setiap bucket backend

Gunakan langkah-langkah berikut untuk memberikan izin ke bucket backend individual di project Anda.

Anda memerlukan izin compute.regionBackendBuckets.setIamPolicy untuk menyelesaikan langkah ini.

  1. Di konsol Google Cloud , buka halaman Backends.

    Buka Backend

  2. Dari daftar backend, pilih bucket backend yang ingin Anda beri akses, lalu klik Izin.

  3. Klik Add principal.

  4. Di kolom New principals, masukkan alamat email atau ID lain akun utama.

  5. Dalam daftar Pilih peran, pilih Compute Load Balancer Services User.

  6. Klik Simpan.

gcloud

Izin tingkat project

Gunakan langkah-langkah berikut untuk memberikan izin ke semua bucket backend di project Anda.

Anda memerlukan izin compute.regionBackendBuckets.setIamPolicy dan resourcemanager.projects.setIamPolicy untuk menyelesaikan langkah ini.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser"

Ganti kode berikut:

  • SERVICE_PROJECT_B_ID: ID Google Cloud project yang ditetapkan ke project layanan B
  • LOAD_BALANCER_ADMIN: principal yang akan ditambahkan binding-nya

Izin tingkat resource untuk setiap bucket backend

Di tingkat bucket backend, Service Project Admin dapat menggunakan salah satu perintah berikut untuk memberikan peran Pengguna Layanan Load Balancer Compute (roles/compute.loadBalancerServiceUser):

Gunakan perintah gcloud projects add-iam-policy-binding untuk memberikan peran Compute Load Balancer Services User.

Anda memerlukan izin compute.regionBackendBuckets.setIamPolicy untuk menyelesaikan langkah ini.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
Ganti kode berikut:
  • SERVICE_PROJECT_B_ID: ID project yang ditetapkan ke project layanan B Google Cloud
  • LOAD_BALANCER_ADMIN: principal yang akan ditambahkan binding-nya
  • REGION: region Google Cloud tempat bucket backend berada
  • BACKEND_BUCKET_NAME: nama bucket backend
Atau, gunakan perintah gcloud compute backend-buckets add-iam-policy-binding untuk memberikan peran Compute Load Balancer Services User.
  gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --project=SERVICE_PROJECT_B_ID \
      --region=REGION

Mengirim permintaan HTTP ke load balancer

Setelah layanan load balancing berjalan, kirim permintaan dari VM klien internal ke aturan penerusan load balancer.

  1. Dapatkan alamat IP aturan penerusan load balancer, yang berada di region us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_A_ID
    

    Salin alamat IP yang ditampilkan untuk digunakan sebagai FORWARDING_RULE_IP_ADDRESS.

  2. Buat VM klien di region us-east1.

    gcloud compute instances create client-a \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --network=lb-network \
        --subnet=subnet-us \
        --zone=us-east1-c \
        --tags=allow-ssh
    
  3. Buat koneksi SSH ke VM klien.

    gcloud compute ssh client-a --zone=us-east1-c
    
  4. Dalam contoh ini, regional internal Application Load Balancer memiliki VIP frontend di region us-east1 dalam jaringan VPC. Buat permintaan HTTP ke VIP di region tersebut menggunakan curl.

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Ganti FORWARDING_RULE_IP_ADDRESS dengan alamat IP yang Anda salin di langkah pertama.

Langkah berikutnya