Menyiapkan Load Balancer Aplikasi internal lintas region dengan bucket Cloud Storage

Dokumen ini menunjukkan cara membuat Load Balancer Aplikasi internal lintas region untuk merutekan permintaan konten statis ke bucket Cloud Storage.

Sebelum memulai

Pastikan penyiapan Anda memenuhi prasyarat berikut.

Menginstal Google Cloud CLI.

Beberapa petunjuk dalam panduan ini hanya dapat dilakukan menggunakan Google Cloud CLI. Untuk menginstalnya, lihat dokumen Menginstal gcloud CLI.

Anda dapat menemukan perintah terkait load balancing dalam dokumen referensi API dan gcloud CLI.

Izin

Untuk mengikuti panduan ini, Anda perlu membuat bucket Cloud Storage dan resource jaringan di project Anda. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki peran IAM Compute Engine berikut:

Tugas Peran yang diperlukan
Membuat jaringan, subnet, dan komponen load balancer Peran Compute Network Admin (roles/compute.networkAdmin)
Menambahkan dan menghapus aturan firewall Peran Compute Security Admin (roles/compute.securityAdmin)
Membuat bucket Cloud Storage Peran Storage Object Admin (roles/storage.objectAdmin)

Untuk informasi selengkapnya, lihat panduan berikut:

Menyiapkan resource sertifikat SSL

Untuk Load Balancer Aplikasi internal lintas region yang menggunakan HTTPS sebagai protokol permintaan dan respons, 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.

Batasan

Batasan berikut berlaku untuk bucket Cloud Storage saat digunakan sebagai backend untuk Load Balancer Aplikasi internal lintas region:

  • Akses bucket pribadi tidak didukung, sehingga bucket backend harus dapat diakses secara publik melalui internet.

  • URL bertanda tangan tidak didukung.

  • Integrasi Cloud CDN tidak tersedia saat membuat bucket backend untuk Load Balancer Aplikasi internal lintas region.

  • Saat menggunakan Load Balancer Aplikasi internal lintas region untuk mengakses bucket backend, hanya metode HTTP GET yang didukung. Anda dapat mendownload konten dari bucket, tetapi mengupload konten ke bucket melalui Load Balancer Aplikasi internal lintas-region tidak tersedia.

Ringkasan penyiapan

Anda dapat mengonfigurasi Load Balancer Aplikasi internal lintas region di beberapa region seperti yang ditunjukkan pada diagram berikut:

Load Balancer Aplikasi internal lintas region mengirimkan traffic ke backend Cloud Storage.
Mendistribusikan traffic ke Cloud Storage (klik untuk memperbesar).

Seperti yang ditunjukkan dalam diagram arsitektur, contoh ini membuat Load Balancer Aplikasi internal lintas region di jaringan Virtual Private Cloud (VPC) dengan dua bucket backend, di mana setiap bucket backend mereferensikan bucket Cloud Storage. Bucket Cloud Storage berada di region us-east1 dan asia-east1.

Arsitektur deployment ini menawarkan ketersediaan tinggi. Jika Load Balancer Aplikasi internal lintas region di suatu region gagal, kebijakan pemilihan rute DNS akan merutekan traffic ke Load Balancer Aplikasi internal lintas region di region lain.

Mengonfigurasi jaringan dan subnet

Dalam jaringan VPC, konfigurasi subnet di setiap region tempat aturan penerusan load balancer Anda akan dikonfigurasi. Selain itu, konfigurasi proxy-only-subnet di setiap region tempat Anda ingin mengonfigurasi load balancer.

Contoh ini menggunakan jaringan VPC, region, dan subnet 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 bernama subnet-asia di region asia-east1 menggunakan 10.1.3.0/24 untuk rentang IP utamanya.

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

Load Balancer Aplikasi internal lintas region dapat diakses dari region mana pun dalam VPC. Jadi, klien dari region mana pun dapat mengakses backend load balancer Anda secara global.

Mengonfigurasi subnet untuk aturan penerusan load balancer

Konsol

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

    Buka jaringan VPC

  2. Klik Create VPC network.

  3. Untuk Name, masukkan lb-network.

  4. Di bagian Subnets, setel Subnet creation mode ke Custom.

  5. Di bagian New subnet, masukkan informasi berikut:

    • Nama: subnet-us
    • Pilih Region: us-east1
    • Rentang alamat IP: 10.1.2.0/24
  6. Klik Selesai.

  7. Klik Tambahkan subnet.

  8. Buat subnet lain untuk aturan penerusan load balancer di region yang berbeda. Di bagian New subnet, masukkan informasi berikut:

    • Nama: subnet-asia
    • Region: asia-east1
    • Rentang alamat IP: 10.1.3.0/24
  9. Klik Selesai.

  10. 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
    
  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
    
  3. Buat subnet di jaringan VPC lb-network di region asia-east1 dengan perintah gcloud compute networks subnets create.

    gcloud compute networks subnets create subnet-asia \
        --network=lb-network \
        --range=10.1.3.0/24 \
        --region=asia-east1
    

Konfigurasi subnet khusus proxy

Subnet khusus proxy menyediakan serangkaian alamat IP yang digunakan untuk menjalankan proxy Envoy atas nama Anda. Trusted Cloud by S3NS 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 boleh ada satu subnet khusus proxy yang aktif untuk tujuan tertentu, per region, per jaringan. Dalam contoh ini, kita membuat dua subnet khusus proxy—satu di region us-east1, dan yang lainnya di region asia-east1.

Konsol

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

    Buka jaringan VPC

  2. Klik nama jaringan VPC yang Anda buat.

  3. Di tab Subnet, klik Tambahkan subnet.

  4. Masukkan informasi sebagai berikut:

    • Untuk Name, masukkan proxy-only-subnet-us.
    • Untuk Region, masukkan us-east1.
    • Untuk Purpose, pilih Cross-region Managed Proxy.
    • Untuk Rentang alamat IP, masukkan 10.129.0.0/23.
  5. Klik Tambahkan.

  6. Buat subnet khusus proxy lain di region asia-east1. Di tab Subnet, klik Tambahkan subnet.

  7. Masukkan informasi sebagai berikut:

    • Untuk Name, masukkan proxy-only-subnet-asia.
    • Untuk Region, masukkan asia-east1.
    • Untuk Purpose, pilih Cross-region Managed Proxy.
    • Untuk Rentang alamat IP, masukkan 10.130.0.0/23.
  8. Klik Tambahkan.

gcloud

  1. 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=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23
    
  2. Buat subnet khusus proxy di region asia-east1 dengan perintah gcloud compute networks subnets create.

    gcloud compute networks subnets create proxy-only-subnet-asia \
        --purpose=GLOBAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=asia-east1 \
        --network=lb-network \
        --range=10.130.0.0/23
    

Mengonfigurasi aturan firewall

Contoh ini menggunakan aturan firewall berikut:

  • Aturan ingress yang mengizinkan akses SSH di port 22 ke VM klien. Dalam contoh ini, aturan firewall ini diberi nama fw-allow-ssh.

Konsol

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

    Buka Kebijakan firewall

  2. Klik Create firewall rule untuk membuat aturan yang mengizinkan koneksi SSH yang masuk di VM klien:

    • Nama: fw-allow-ssh
    • Jaringan: lb-network
    • Direction of traffic: Ingress
    • Tindakan terhadap kecocokan: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-ssh
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 0.0.0.0/0
    • Protokol dan port:
      • Pilih Specified protocols and ports.
      • Pilih kotak centang TCP, lalu masukkan 22 untuk nomor port.
  3. Klik Buat.

gcloud

  1. Buat aturan firewall fw-allow-ssh untuk mengizinkan konektivitas SSH ke VM dengan tag jaringan allow-ssh. Jika Anda menghapus --source-ranges, Trusted 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
    

Mengonfigurasi bucket Cloud Storage

Proses untuk mengonfigurasi bucket Cloud Storage adalah sebagai berikut:

  • Buat bucket.
  • Salin konten ke bucket.

Membuat bucket Cloud Storage

Dalam contoh ini, Anda membuat dua bucket Cloud Storage, satu di region us-east1 dan satu lagi di region asia-east1. Untuk deployment produksi, sebaiknya Anda memilih bucket multi-region, yang secara otomatis mereplikasi objek di beberapa region Trusted Cloud . Hal ini dapat meningkatkan ketersediaan konten Anda dan meningkatkan toleransi kegagalan di seluruh aplikasi Anda.

Konsol

  1. Di Trusted Cloud konsol, buka halaman Bucket Cloud Storage.

    Buka Buckets

  2. Klik Create .

  3. Di kotak Name your bucket, masukkan nama yang unik secara global dan sesuai dengan panduan penamaan.

  4. Klik Pilih lokasi untuk menyimpan data Anda.

  5. Tetapkan Jenis lokasi ke Region.

  6. Dari daftar wilayah, pilih us-east1.

  7. Klik Buat.

  8. Klik Buckets untuk kembali ke halaman Cloud Storage Buckets. Gunakan petunjuk ini untuk membuat bucket kedua, tetapi tetapkan Location ke asia-east1.

gcloud

  1. Buat bucket pertama 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
    
  2. Buat bucket kedua di region asia-east1 dengan perintah gcloud storage buckets create.

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

Ganti variabel BUCKET1_NAME dan BUCKET2_NAME dengan nama bucket Cloud Storage Anda.

Menyalin file grafis ke bucket Cloud Storage Anda

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

Jalankan perintah berikut di Cloud Shell, dengan mengganti variabel nama bucket dengan nama bucket Cloud Storage unik Anda:

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

Membuat bucket Cloud Storage Anda dapat dibaca secara 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 agar dapat melihat objek di bucket Anda, ulangi prosedur berikut untuk setiap bucket:

  1. Di Trusted Cloud konsol, buka halaman Bucket Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, klik nama bucket yang ingin Anda tampilkan kepada publik.

  3. Pilih tab Permissions di dekat bagian atas halaman.

  4. Di bagian Izin, klik tombol Beri akses. 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

Ganti variabel nama bucket dengan nama bucket Cloud Storage unik Anda.

Mengonfigurasi load balancer dengan bucket backend

Bagian ini menunjukkan cara membuat resource berikut untuk Load Balancer Aplikasi internal lintas region:

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 di atas menggunakan gcloud CLI, ikuti langkah-langkah berikut:

  1. Buat dua bucket backend, satu di region us-east1 dan satu lagi di region asia-east1 dengan perintah gcloud compute backend-buckets create. Bucket backend memiliki skema load balancing INTERNAL_MANAGED.

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

    gcloud compute url-maps create lb-map \
        --default-backend-bucket=backend-bucket-cats \
        --global
    
  3. Konfigurasi aturan host dan jalur peta URL dengan perintah gcloud 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 compute url-maps add-path-matcher lb-map \
        --path-matcher-name=path-matcher-pets \
        --new-hosts=* \
        --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
        --default-backend-bucket=backend-bucket-cats
    
  4. Buat proxy target dengan perintah gcloud compute target-http-proxies create.

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

    gcloud compute target-http-proxies create http-proxy \
        --url-map=lb-map \
        --global
    

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

    gcloud compute target-https-proxies create https-proxy \
        --url-map=lb-map \
        --certificate-manager-certificates=CERTIFICATE_NAME \
        --global
    

    Ganti CERTIFICATE_NAME dengan nama sertifikat SSL yang Anda buat menggunakan Pengelola Sertifikat.

  5. Buat dua aturan penerusan global, satu dengan alamat IP di wilayah us-east1 dan satu lagi dengan alamat IP di wilayah asia-east1 dengan perintah gcloud compute forwarding-rules create.

    Jika Anda ingin mencadangkan alamat IP internal statis untuk aturan penerusan load balancer, lihat Mencadangkan alamat IP internal statis. 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 tetap konstan selama aturan penerusan ada. Jika Anda perlu menghapus aturan penerusan dan membuatnya ulang, aturan penerusan mungkin menerima alamat IP baru.

    Untuk traffic HTTP, buat aturan penerusan global untuk mengarahkan permintaan masuk ke proxy target HTTP:

    gcloud compute forwarding-rules create http-fw-rule-1 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=subnet-us \
        --subnet-region=us-east1 \
        --ports=80 \
        --target-http-proxy=http-proxy \
        --global-target-http-proxy \
        --global
    
    gcloud compute forwarding-rules create http-fw-rule-2 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=subnet-asia \
        --subnet-region=asia-east1 \
        --ports=80 \
        --target-http-proxy=http-proxy \
        --global-target-http-proxy \
        --global
    

    Untuk traffic HTTPS, buat aturan penerusan global untuk mengarahkan permintaan masuk ke proxy target HTTPS:

    gcloud compute forwarding-rules create https-fw-rule-1 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=subnet-us \
        --subnet-region=us-east1 \
        --address=RESERVED_IP_ADDRESS \
        --ports=443 \
        --target-https-proxy=https-proxy \
        --global-target-https-proxy \
        --global
    
    gcloud compute forwarding-rules create https-fw-rule-2 \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=subnet-asia \
        --subnet-region=asia-east1 \
        --address=RESERVED_IP_ADDRESS \
        --ports=443 \
        --target-https-proxy=https-proxy \
        --global-target-https-proxy \
        --global
    

Mengirim permintaan HTTP ke load balancer

Kirim permintaan dari VM klien internal ke aturan penerusan load balancer.

Dapatkan alamat IP aturan penerusan load balancer

  1. Dapatkan alamat IP aturan penerusan load balancer (http-fw-rule-1), yang berada di region us-east1.

    gcloud compute forwarding-rules describe http-fw-rule-1 \
        --global
    
  2. Dapatkan alamat IP aturan penerusan load balancer (http-fw-rule-2), yang berada di region asia-east1.

    gcloud compute forwarding-rules describe http-fw-rule-2 \
        --global
    

Buat VM klien untuk menguji konektivitas

  1. 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
    
  2. Buat koneksi SSH ke VM klien.

    gcloud compute ssh client-a --zone=us-east1-c
    
  3. Dalam contoh ini, Load Balancer Aplikasi internal lintas region memiliki alamat IP virtual frontend (VIP) di region us-east1 dan asia-east1 dalam jaringan VPC. Buat permintaan HTTP ke VIP di salah satu region menggunakan curl.

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

Menguji ketersediaan tinggi

  1. Hapus aturan penerusan (http-fw-rule-1) di region us-east1 untuk mensimulasikan pemadaman regional dan periksa apakah klien di region us-east masih dapat mengakses data dari bucket backend.

    gcloud compute forwarding-rules delete http-fw-rule-1 \
        --global
    
  2. Buat permintaan HTTP ke VIP aturan penerusan di salah satu region menggunakan curl.

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

    Jika Anda membuat permintaan HTTP ke VIP di region us-east1, kebijakan perutean DNS akan mendeteksi bahwa VIP ini tidak merespons, dan menampilkan VIP paling optimal berikutnya kepada klien (dalam contoh ini, asia-east1). Perilaku ini membantu memastikan aplikasi Anda tetap aktif meskipun terjadi gangguan regional.

Langkah berikutnya