Dokumen ini menunjukkan cara membuat
Load Balancer Aplikasi eksternal
untuk merutekan permintaan konten statis ke
bucket Cloud Storage. Setelah Anda mengonfigurasi load balancer dengan bucket backend, permintaan ke jalur URL yang dimulai dengan /love-to-fetch
dikirim ke bucket Cloud Storage us-east1
, dan semua permintaan lainnya dikirim ke bucket Cloud Storage europe-north1
, terlepas dari region pengguna.
Jika backend Anda menyajikan konten dinamis melalui HTTP(S), sebaiknya gunakan layanan backend, bukan bucket backend.
Untuk mengikuti panduan langkah demi langkah tugas ini langsung di Google Cloud konsol, klik Pandu saya:
Bucket Cloud Storage sebagai backend load balancer
Load Balancer Aplikasi eksternal menggunakan peta URL untuk mengarahkan traffic dari jalur URL yang ditentukan ke backend Anda.
Dalam diagram berikut, load balancer mengirimkan traffic dengan jalur
/love-to-fetch/
ke bucket Cloud Storage di region us-east1
. Semua permintaan lainnya mengarah ke bucket Cloud Storage di region
europe-north1
.
Secara default, Cloud Storage menggunakan cache yang sama
dengan yang digunakan Cloud CDN. Jika mengaktifkan Cloud CDN di bucket backend, Anda dapat menggunakan kontrol Cloud CDN pada konten.
Kontrol Cloud CDN mencakup, misalnya, mode cache, URL yang ditandatangani, dan
pembatalan. Cloud CDN juga memungkinkan Anda men-cache konten berukuran besar (> 10 MB). Jika Anda tidak mengaktifkan Cloud CDN di bucket backend, Anda hanya dapat menggunakan header Cache-Control
asal untuk mengontrol penyimpanan ke cache konten yang lebih kecil, sebagaimana ditetapkan oleh metadata Cloud Storage.
Sebelum memulai
Pastikan penyiapan Anda memenuhi prasyarat berikut. Jika Anda menggunakan
utilitas gcloud storage
, Anda dapat menginstalnya menggunakan petunjuk di
Menemukan penyimpanan objek dengan alat gcloud.
Menetapkan project default
Konsol
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
gcloud
gcloud config set project PROJECT_ID
Ganti PROJECT_ID
dengan project yang Anda gunakan untuk panduan ini.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Izin
Untuk mengikuti panduan ini, Anda perlu membuat bucket Cloud Storage dan load balancer dalam sebuah project. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki peran IAM Compute Engine berikut:
Tugas | Peran yang Diperlukan |
---|---|
Membuat komponen load balancer | Admin Jaringan |
Membuat bucket Cloud Storage | Storage Object Admin |
Untuk informasi selengkapnya, lihat panduan berikut:
Menyiapkan resource sertifikat SSL
Untuk load balancer HTTPS, buat resource sertifikat SSL seperti yang dijelaskan dalam dokumentasi berikut:
Sebaiknya gunakan sertifikat yang dikelola Google.
Contoh ini mengasumsikan bahwa Anda sudah memiliki resource sertifikat SSL bernama
www-ssl-cert
.
Menyiapkan bucket dan konten Cloud Storage
Proses penyiapan bucket Cloud Storage adalah sebagai berikut:
Buat bucket.
Salin konten ke bucket.
Berikan akses publik ke bucket.
Membuat bucket Cloud Storage
Dalam contoh ini, Anda membuat dua bucket Cloud Storage yang dapat diakses oleh load balancer. Untuk deployment produksi, sebaiknya pilih bucket multi-region, yang secara otomatis mereplikasi objek di beberapa region Google Cloud . Hal ini dapat meningkatkan ketersediaan konten Anda dan meningkatkan toleransi kegagalan di seluruh aplikasi Anda.
Catat nama bucket Cloud Storage yang Anda buat, karena akan digunakan nanti. Dalam panduan ini, keduanya disebut sebagai BUCKET_1_NAME dan BUCKET_2_NAME.
Konsol
Di Google Cloud konsol, buka halaman Bucket Cloud Storage.
Klik Create bucket.
Di kotak Name your bucket, masukkan nama yang unik secara global dan sesuai dengan panduan penamaan.
Klik Pilih lokasi untuk menyimpan data Anda.
Tetapkan Jenis lokasi ke Region.
Setel Location ke europe-north1. Ini adalah BUCKET_1_NAME dalam panduan ini.
Klik Buat.
Klik Buckets untuk kembali ke halaman Cloud Storage Buckets. Gunakan petunjuk ini untuk membuat bucket kedua, tetapi tetapkan Location ke us-east1. Ini adalah BUCKET_2_NAME dalam panduan ini.
gcloud
gcloud storage buckets create gs://BUCKET_1_NAME --project=PROJECT_ID --default-storage-class=standard --location=europe-north1 --uniform-bucket-level-access
gcloud storage buckets create gs://BUCKET_2_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access
Ganti BUCKET_1_NAME
dan BUCKET_2_NAME
dengan nama bucket yang ingin Anda buat.
Terraform
Untuk membuat bucket, gunakan resource google_storage_bucket
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Mentransfer konten ke bucket Cloud Storage Anda
Jadi, Anda dapat menguji penyiapan nanti, salin gambar berikut dari bucket Cloud Storage publik ke bucket Cloud Storage Anda sendiri.
gcloud
Klik
Aktifkan Cloud Shell.Jalankan perintah berikut di Cloud Shell, dengan mengganti variabel nama bucket dengan nama bucket Cloud Storage Anda:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_1_NAME/never-fetch/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET_2_NAME/love-to-fetch/
Terraform
Untuk menyalin item ke dalam bucket, Anda dapat menggunakan resource google_storage_bucket_object
.
Atau, gunakan resource null_resource
.
resource "null_resource" "upload_cat_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.bucket_1.name}/never-fetch/" } } resource "null_resource" "upload_dog_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://${google_storage_bucket.bucket_2.name}/love-to-fetch/" } }
Di konsol Google Cloud , klik Muat ulang di halaman detail setiap bucket untuk memverifikasi bahwa file telah berhasil disalin.
Membuat bucket Cloud Storage Anda dapat dibaca secara publik
Saat Anda membuat bucket Cloud Storage dapat dibaca secara publik, semua orang di internet dapat mencantumkan dan melihat objeknya, serta melihat metadatanya (tidak termasuk ACL). Jangan sertakan informasi sensitif dalam bucket publik Anda.
Untuk mengurangi kemungkinan tereksposnya informasi sensitif secara tidak sengaja, jangan menyimpan objek publik dan data sensitif dalam bucket yang sama.
Konsol
Untuk memberikan akses kepada semua pengguna agar dapat melihat objek di bucket Anda, ulangi prosedur berikut untuk setiap bucket:
Di Google Cloud konsol, buka halaman Cloud Storage Buckets.
Klik nama bucket, lalu tab Izin.
Klik Tambahkan.
Di kotak New principals, masukkan
allUsers
.Di kotak Select a role, pilih Cloud Storage > Storage Object Viewer.
Klik Simpan.
Klik Allow public access.
gcloud
Untuk memberikan akses kepada semua pengguna agar dapat melihat objek di bucket Anda, jalankan perintah berikut:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_2_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Untuk memberikan akses kepada semua pengguna untuk melihat objek di bucket Anda, gunakan
resource google_storage_bucket_iam_member
dan tentukan anggota allUsers
.
Mencadangkan alamat IP eksternal
Setelah menyiapkan bucket Cloud Storage, Anda dapat mencadangkan alamat IP eksternal statis global yang digunakan audiens untuk menjangkau load balancer Anda.
Langkah ini bersifat opsional, tetapi direkomendasikan, karena alamat IP eksternal statis menyediakan satu alamat untuk mengarahkan domain Anda.
Konsol
Di konsol Google Cloud , buka halaman External IP addresses.
Klik Reserve static address.
Di kotak Name, masukkan
example-ip
.Tetapkan Network Service Tier ke Premium.
Tetapkan IP version ke IPv4.
Tetapkan Type ke Global.
Klik Reserve.
gcloud
gcloud compute addresses create example-ip \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Terraform
Untuk mencadangkan alamat IP eksternal, gunakan
resource google_compute_global_address
.
Membuat Load Balancer Aplikasi eksternal dengan bucket backend
Petunjuk ini mencakup pembuatan load balancer HTTP atau HTTPS. Untuk membuat load balancer HTTPS, Anda harus menambahkan resource sertifikat SSL ke frontend load balancer. Untuk mengetahui informasi selengkapnya, lihat Ringkasan sertifikat SSL.
Konsol
Mulai konfigurasi
Di konsol Google Cloud , buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
- Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
- Untuk Global or single region deployment, pilih Best for global workloads, lalu klik Next.
- Untuk Load balancer generation, pilih Classic Application Load Balancer, lalu klik Next.
- Klik Configure.
Konfigurasi dasar
- Di kotak Name, masukkan
http-lb
.
Mengonfigurasi backend
Klik Backend configuration.
Klik kotak Backend services and backend buckets, lalu klik Create a backend bucket.
Di kotak Backend bucket name, masukkan
cats
.Di kotak Cloud Storage bucket, klik Browse.
Pilih BUCKET_1_NAME, lalu klik Pilih. Membuat bucket backend
cats
terlebih dahulu akan menjadikannya sebagai bucket default, tempat semua permintaan traffic yang tidak cocok diarahkan. Anda tidak dapat mengubah aturan pengalihan bucket backend default di load balancer.Klik Buat.
Gunakan proses yang sama untuk membuat bucket backend bernama
dogs
, lalu pilih BUCKET_2_NAME.Klik Oke.
Mengonfigurasi aturan pemilihan rute
Aturan perutean menentukan cara pengarahan traffic Anda. Untuk mengonfigurasi perutean, Anda akan menyiapkan aturan host dan pencocok jalur, yang merupakan komponen konfigurasi peta URL Load Balancer Aplikasi eksternal. Untuk menyiapkan aturan untuk contoh ini:
- Klik Host and path rules.
- Untuk
dogs
, masukkan*
di kolom Hosts, dan/love-to-fetch/*
di kolom Paths.
Mengonfigurasi frontend
Klik Frontend configuration.
Verifikasi bahwa opsi berikut dikonfigurasi dengan nilai ini:
Properti Nilai (masukkan nilai atau pilih opsi yang ditentukan) Protokol HTTP Network Service Tier Premium IP version IPv4 Alamat IP example-ip Port 80 Jika ingin membuat load balancer HTTPS, bukan load balancer HTTP, Anda harus memiliki sertifikat SSL (
gcloud compute ssl-certificates list
), dan Anda harus mengisi kolom sebagai berikut:Properti Nilai (masukkan nilai atau pilih opsi yang ditentukan) Protokol HTTP(S) Network Service Tier Premium IP version IPv4 Alamat IP example-ip Port 443 Sertifikat Pilih sertifikat www-ssl-cert
yang Anda buat di bagian Menyiapkan resource sertifikat SSL, atau buat sertifikat baru.Opsional: Aktifkan Pengalihan HTTP ke HTTPS Gunakan kotak centang ini untuk mengaktifkan pengalihan. Dengan mencentang kotak ini, load balancer HTTP parsial tambahan akan dibuat yang menggunakan alamat IP yang sama dengan load balancer HTTPS Anda dan mengalihkan permintaan HTTP ke frontend HTTPS load balancer Anda.
Kotak centang ini hanya dapat dipilih jika protokol HTTPS dipilih dan alamat IP yang dicadangkan digunakan.
Klik Selesai.
Meninjau konfigurasi
Klik Review and finalize.
Tinjau Frontend, Host and path rules, dan Backend buckets.
Klik Create dan tunggu hingga load balancer dibuat.
Klik nama load balancer (http-lb).
Catat alamat IP load balancer untuk tugas berikutnya. Dalam panduan ini, fitur tersebut disebut sebagai IP_ADDRESS.
gcloud
Mengonfigurasi backend
gcloud compute backend-buckets create cats \ --gcs-bucket-name=BUCKET_1_NAME
gcloud compute backend-buckets create dogs \ --gcs-bucket-name=BUCKET_2_NAME
Mengonfigurasi peta URL
gcloud compute url-maps create http-lb \ --default-backend-bucket=cats
gcloud compute url-maps add-path-matcher http-lb \ --path-matcher-name=path-matcher-2 \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=dogs" \ --default-backend-bucket=cats
Mengonfigurasi proxy target
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=http-lb
Konfigurasi aturan penerusan
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
Untuk membuat load balancer, gunakan resource Terraform berikut.
Mengonfigurasi backend
Untuk membuat backend, gunakan resource google_compute_backend_bucket
.
Mengonfigurasi peta URL
Untuk membuat peta URL, gunakan resource google_compute_url_map
.
Mengonfigurasi proxy target
Untuk membuat proxy HTTP target, gunakan resource google_compute_target_http_proxy
.
Konfigurasi aturan penerusan
Untuk membuat aturan penerusan, gunakan resource google_compute_global_forwarding_rule
.
CATATAN: Untuk mengubah mode ke Load Balancer Aplikasi klasik, tetapkan atribut load_balancing_scheme
ke
"EXTERNAL"
, bukan "EXTERNAL_MANAGED"
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Mengirim traffic ke load balancer
Beberapa menit setelah mengonfigurasi load balancer, Anda dapat mulai mengirimkan traffic ke alamat IP load balancer.
Konsol
Di browser web, buka alamat berikut untuk menguji load balancer Anda, dengan mengganti IP_ADDRESS dengan alamat IP load balancer:
http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
http://IP_ADDRESS/never-fetch/three-cats.jpg
Jika Anda telah menyiapkan load balancer HTTP, pastikan browser Anda tidak mengalihkan ke HTTPS secara otomatis.
gcloud
Gunakan perintah curl
untuk menguji respons dari URL berikut. Ganti
IP_ADDRESS
dengan alamat IPv4 load balancer:
curl http://IP_ADDRESS/love-to-fetch/two-dogs.jpg
curl http://IP_ADDRESS/never-fetch/three-cats.jpg
Parameter string kueri untuk Cloud Storage XML API
Jika parameter string kueri tertentu disertakan dalam permintaan yang dikirim ke bucket backend melalui Application Load Balancer, klien akan menerima respons HTTP 404 dengan error "Unsupported query parameter". Hal ini terjadi karena Cloud Storage XML API tidak mendukung parameter ini saat permintaan berasal dari Load Balancer Aplikasi.
Tabel berikut merangkum cara Cloud Storage XML API merespons berbagai parameter kueri saat permintaan dirutekan melalui Load Balancer Aplikasi. Parameter dikelompokkan berdasarkan perilaku yang diamati untuk membantu mengidentifikasi parameter mana yang didukung, diabaikan, atau ditolak dalam konteks ini.
Jenis parameter | Parameter | Perilaku yang diamati |
---|---|---|
Parameter yang didukung |
generation ,
prefix ,
marker ,
max-keys
|
Menambahkan parameter ini (dengan nilai yang sesuai) berfungsi seperti yang dijelaskan dalam dokumentasi XML API Cloud Storage. API menampilkan respons HTTP standar. |
Parameter yang diabaikan |
acl ,
billing ,
compose ,
delimiter ,
encryption ,
encryptionConfig ,
response-content-disposition ,
response-content-type ,
tagging ,
versions ,
websiteConfig
|
Menambahkan parameter ini tidak akan berpengaruh. Jika load balancer meneruskan parameter ini ke Cloud Storage, XML API Cloud Storage akan mengabaikannya, dan merespons seolah-olah parameter tersebut tidak ada. |
Parameter yang ditolak |
cors ,
lifecycle ,
location ,
logging ,
storageClass ,
versioning
|
Cloud Storage XML API menampilkan error "Unsupported query parameter". |
Batasan
- Backend bucket hanya didukung dengan Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi klasik. Load balancer ini tidak didukung oleh Load Balancer Aplikasi eksternal regional atau jenis load balancer lainnya.
- Backend bucket tidak didukung dengan Identity-Aware Proxy.
* Load Balancer Aplikasi klasik tidak sepenuhnya mendukung upload ke bucket Cloud Storage. Secara khusus, semua parameter kueri pada
permintaan akan dihilangkan saat mengupload ke Cloud Storage.
Langkah berikutnya