Cloud CDN memanfaatkan pilihan Anda, baik Load Balancer Aplikasi eksternal global maupun Load Balancer Aplikasi klasik, untuk menyediakan pemilihan rute, health check, dan dukungan IP anycast. Karena Load Balancer Aplikasi eksternal global dapat memiliki beberapa jenis instance backend—instance VM Compute Engine, Pod Google Kubernetes Engine, bucket Cloud Storage, atau backend eksternal di luar Google Cloud—Anda dapat memilih backend (origin) yang akan diaktifkan Cloud CDN-nya.
Panduan penyiapan ini menunjukkan cara membuat Load Balancer Aplikasi eksternal dengan Cloud CDN diaktifkan. Contoh ini menggunakan resource berikut:
- Jaringan Virtual Private Cloud (VPC) default
- Peta URL default
- Alamat IP eksternal yang dicadangkan
- Bucket Cloud Storage sebagai backend
- Satu bucket backend load balancer yang bertindak sebagai wrapper di sekitar bucket Cloud Storage
Bucket backend mendukung hal berikut:
- Bucket Cloud Storage dengan kelas penyimpanan apa pun, termasuk bucket multi-region
- Kebijakan Cloud CDN untuk menyimpan konten ke dalam cache di edge global Google
Untuk mempelajari cara kerja Cloud CDN, lihat ringkasan Cloud CDN.
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.
Backend load balancer
Load Balancer Aplikasi eksternal menggunakan peta URL untuk mengarahkan traffic dari URL yang ditentukan ke layanan yang ditentukan. Tabel berikut meringkas jenis backend tempat Anda dapat menghosting konten dan layanan.
Konfigurasi backend load balancer | Jenis media umum | Jenis backend |
---|---|---|
Layanan backend | Dinamis (seperti data) |
|
Bucket backend | Statis (seperti gambar) |
|
Sebelum memulai
- Jika Anda menggunakan HTTPS untuk frontend, buat sertifikat SSL, baik yang dikelola sendiri maupun yang dikelola Google. Sebaiknya gunakan sertifikat yang dikelola Google.
- Jika Anda menggunakan Google Cloud CLI, lihat Menemukan penyimpanan objek dengan alat gcloud untuk menginstalnya.
Konsol
- Di konsol Google Cloud , buka halaman Beranda.
- Di sebelah kanan Google Cloud, pilih project dari menu pull-down.
gcloud
gcloud config set project PROJECT_ID
Ganti PROJECT_ID
dengan ID project Google Cloud
Anda.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Membuat bucket Cloud Storage
Jika Anda memiliki bucket Cloud Storage yang belum ditetapkan ke load balancer, Anda dapat melanjutkan ke langkah berikutnya.
Saat membuat bucket Cloud Storage untuk digunakan sebagai backend bagi Load Balancer Aplikasi eksternal dengan Cloud CDN, sebaiknya pilih bucket multi-region, yang secara otomatis mereplikasi objek di beberapa Google Cloud region. Hal ini dapat meningkatkan ketersediaan konten Anda dan meningkatkan toleransi kegagalan di seluruh aplikasi Anda.
Konsol
- Di konsol Google Cloud , buka halaman Cloud Storage Buckets.
- Klik Create bucket.
Tentukan nilai untuk kolom dalam tabel berikut, dan biarkan semua kolom lainnya dalam setelan default.
Properti Nilai (masukkan nilai atau pilih opsi yang ditentukan) Nama Untuk setiap bucket, masukkan nama yang unik secara global. Jika nama yang Anda masukkan tidak unik, Anda akan melihat pesan untuk mencoba nama lain. Jenis lokasi Multi-region Lokasi Pilih region, seperti us (multiple regions in United States). Kelas penyimpanan default Standar Kontrol akses Seragam Klik Buat.
Catat nama bucket Cloud Storage yang baru dibuat untuk langkah berikutnya.
gcloud
gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_ID --default-storage-class=standard --location=us-east1 --uniform-bucket-level-access
Terraform
Untuk membuat bucket, gunakan resource google_storage_bucket
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Menyalin file grafik ke dalam bucket Cloud Storage Anda
Agar Anda dapat menguji penyiapan, salin file grafik dari bucket Cloud Storage publik ke bucket Cloud Storage Anda sendiri.
gcloud
Jalankan perintah berikut di Cloud Shell. Ganti
BUCKET_NAME
dengan nama bucket Cloud Storage
Anda yang unik:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET_NAME/never-fetch/
Terraform
Untuk menyalin objek, gunakan local-exec
Provisioner
dengan perintah gcloud storage cp
.
resource "null_resource" "upload_image" { provisioner "local-exec" { command = "gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://${google_storage_bucket.default.name}/never-fetch/ --recursive" } }
Atau, untuk mengupload objek, gunakan resource google_storage_bucket_object
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Di konsol Google Cloud , klik Muat ulang untuk memverifikasi bahwa file grafis telah disalin.
Membuat bucket Cloud Storage Anda menjadi publik
Contoh ini membuat bucket Cloud Storage Anda dapat dibaca secara publik. Ini adalah pendekatan yang direkomendasikan untuk konten publik. Dengan setelan ini, siapa pun di internet dapat melihat dan mencantumkan objek Anda dan metadatanya, kecuali ACL. Untuk mengurangi risiko eksposur data yang tidak diinginkan, Anda biasanya harus mendedikasikan bucket Cloud Storage tertentu untuk objek publik.
Berikut adalah alternatif untuk membuat seluruh bucket Cloud Storage menjadi publik:
Gunakan folder terkelola untuk membuat sebagian bucket Anda dapat dibaca oleh publik.
Membuat setiap objek dapat dibaca oleh publik. Sebaiknya jangan gunakan pendekatan ini karena menggunakan sistem pemberian izin khusus Cloud Storage yang lama.
Gunakan URL yang ditandatangani.
Prosedur berikut memberikan akses kepada semua pengguna untuk melihat objek di bucket Cloud Storage Anda, sehingga bucket dapat dibaca secara publik.
Konsol
- Di konsol Google Cloud , buka halaman Cloud Storage Buckets.
- Buka bucket, lalu klik tab Izin.
- Klik Add principals.
- Di New principals, masukkan
allUsers
. - Untuk peran, pilih Cloud Storage > Storage Object Viewer.
- Klik Simpan.
gcloud
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Untuk membuat bucket Cloud Storage Anda menjadi publik, gunakan resource google_storage_bucket_iam_member
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Mencadangkan alamat IP eksternal
Setelah bucket Cloud Storage Anda aktif dan berjalan, siapkan alamat IP eksternal statis global yang akan digunakan pelanggan untuk menjangkau load balancer Anda.
Langkah ini bersifat opsional, tetapi direkomendasikan, karena alamat IP eksternal statis memberikan satu alamat untuk mengarahkan domain Anda.
Konsol
- Di konsol Google Cloud , buka halaman External IP addresses.
- Untuk mereservasi alamat IPv4, klik Reserve static address.
- Tetapkan Nama
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, gunakan resource google_compute_global_address
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Buat Load Balancer Aplikasi eksternal
Dalam prosedur ini, Anda akan membuat bucket backend load balancer, yang berfungsi sebagai wrapper untuk bucket Cloud Storage Anda. Saat membuat atau mengedit bucket backend, Anda dapat mengaktifkan Cloud CDN.
Konsol
Mulai proses konfigurasi Load Balancer Aplikasi eksternal
- Di konsol Google Cloud , buka halaman Load balancing.
- Di bagian HTTP(S) load balancing, klik Start configuration.
- Pilih From Internet to my VMs, lalu klik Continue.
- Di bagian Pengelolaan traffic lanjutan, pilih salah satu opsi berikut:
- Untuk Load Balancer Aplikasi klasik, pilih Classic HTTP(S) Load Balancer.
- Untuk Load Balancer Aplikasi eksternal global, pilih HTTP(S) Load Balancer with Advanced Traffic Management.
- Tetapkan Name ke
http-lb
, lalu lanjutkan ke langkah berikutnya.
Mengonfigurasi backend dan mengaktifkan Cloud CDN
Buat bucket backend load balancer, yang berfungsi sebagai wrapper untuk bucket Cloud Storage Anda. Saat membuat atau mengedit bucket backend, Anda dapat mengaktifkan Cloud CDN.
- Klik Backend configuration.
- Di bagian Backend services & backend buckets, klik Create or select backend services & backend buckets, lalu klik Backend buckets > Create a backend bucket.
- Tetapkan Name ke
cat-backend-bucket
. Nama ini tidak harus unik secara global dan dapat berbeda dengan nama bucket Cloud Storage yang sebenarnya. - Di bagian Bucket Cloud Storage, klik Browse.
- Pilih
BUCKET_NAME
Cloud Storage yang unik secara global yang Anda buat, lalu klik Pilih. Klik Enable Cloud CDN.
(Opsional) Ubah setelan mode cache dan TTL.
Klik Buat.
Mengonfigurasi aturan host dan pencocok jalur
Aturan host dan pencocok jalur adalah komponen konfigurasi peta URL Load Balancer Aplikasi eksternal.
Di Aturan host dan jalur, Anda dapat mempertahankan setelan default.
Untuk contoh penyiapan yang disesuaikan, lihat Menambahkan bucket backend ke load balancer.
Untuk mempelajari aturan host dan pencocok jalur lebih lanjut, lihat Ringkasan peta URL.
Mengonfigurasi frontend
- Klik Frontend configuration.
Pastikan opsi 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 HTTPS Network Service Tier Premium IP version IPv4 Alamat IP example-ip
Port 443 Sertifikat Pilih sertifikat atau Buat sertifikat baru Klik Selesai.
Meninjau konfigurasi
- Klik Review and finalize.
- Tinjau bagian Backend buckets, Host and path rules, dan Frontend.
- Klik Buat.
- Tunggu load balancer dibuat.
- Klik nama load balancer (http-lb).
- Catat alamat IP load balancer untuk tugas berikutnya. Fitur ini disebut
IP_ADDRESS
.
gcloud
Mengonfigurasi backend
gcloud compute backend-buckets create cat-backend-bucket \ --gcs-bucket-name=BUCKET_NAME \ --enable-cdn \ --cache-mode=CACHE_MODE
Tetapkan mode cache dengan mengganti CACHE_MODE dengan salah satu dari berikut ini:
CACHE_ALL_STATIC
atauUSE_ORIGIN_HEADERS
: Menggunakan header yang ditetapkan sesuai dengan metadata kontrol cache di Cloud Storage. Cloud Storage selalu menyediakan headerCache-Control
ke Cloud CDN. Jika tidak ada nilai yang dipilih secara eksplisit, nilai default akan dikirim.FORCE_CACHE_ALL
: Meng-cache semua konten, mengabaikan semua direktifprivate
,no-store
, atauno-cache
di header responsCache-Control
yang dikirim oleh Cloud Storage.
Mengonfigurasi peta URL
gcloud compute url-maps create http-lb \ --default-backend-bucket=cat-backend-bucket
Mengonfigurasi proxy target
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=http-lb
Konfigurasi aturan penerusan
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
load-balancing-scheme=EXTERNAL_MANAGED
. Setelan ini menawarkan kapabilitas pengelolaan traffic tingkat lanjut. - Untuk Load Balancer Aplikasi klasik, gunakan
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-lb-forwarding-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=example-ip \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
Mengonfigurasi backend
Untuk mengonfigurasi backend, gunakan resource google_compute_backend_bucket
.
Mengonfigurasi peta URL
Untuk mengonfigurasi backend, gunakan resource google_compute_url_map
.
Mengonfigurasi proxy target
Untuk mengonfigurasi proxy target, gunakan resource google_compute_target_http_proxy
atau resource google_compute_target_https_proxy
.
Konfigurasi aturan penerusan
Untuk mengonfigurasi aturan penerusan, gunakan resource google_compute_global_forwarding_rule
.
- Untuk Load Balancer Aplikasi eksternal global, gunakan dengan
load_balancing_scheme="EXTERNAL_MANAGED"
. Setelan ini menawarkan kemampuan pengelolaan traffic tingkat lanjut. - Untuk Load Balancer Aplikasi klasik, gunakan
load_balancing_scheme="EXTERNAL"
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Mengirim traffic ke bucket backend
Setelah membuat aturan penerusan global, mungkin perlu beberapa menit untuk menerapkan konfigurasi Anda di seluruh dunia. Setelah beberapa menit berlalu, Anda dapat mulai mengirimkan traffic ke alamat IP load balancer.
Konsol
- Di konsol Google Cloud , buka halaman Load balancing.
Klik
http-lb
untuk meluaskan load balancer yang baru saja Anda buat.Di bagian Backend, pastikan bucket backend dalam kondisi responsif. Anda akan melihat tanda centang hijau di samping bucket backend. Jika Anda melihat hal lain, coba muat ulang halaman terlebih dahulu. Diperlukan waktu beberapa saat agar konsol Google Cloud menunjukkan bahwa backend responsif.
Setelah konsol Google Cloud menunjukkan bahwa bucket backend dalam kondisi baik, Anda dapat menguji load balancer menggunakan browser web dengan membuka
http://IP_ADDRESS/never-fetch/three-cats.jpg
. GantiIP_ADDRESS
dengan alamat IP load balancer. Browser Anda akan merender halaman berisi konten yang menampilkan file grafis.
gcloud
Gunakan perintah curl
untuk menguji respons dari URL. Ganti
IP_ADDRESS
dengan alamat IPv4 load balancer.
Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Kirim permintaan curl:
curl http://IP_ADDRESS/never-fetch/three-cats.jpg
Memastikan Cloud CDN berfungsi
Jika Anda memuat ulang halaman http://IP_ADDRESS/never-fetch/three-cats.jpg
beberapa kali secara berurutan dengan cepat, akan ada beberapa hit cache.
Entri log berikut menunjukkan hit cache. Anda dapat melihat hit cache di konsolGoogle Cloud dengan membuka Logs Explorer dan memfilter menurut nama aturan penerusan.
Logs Explorer
{ insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } httpRequest: { requestMethod: "GET" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/never-fetch/three-cats.jpg" requestSize: "577" status: 254 responseSize: "157" userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" remoteIp: "CLIENT_IP_ADDRESS" cacheHit: true cacheLookup: true } resource: { type: "http_load_balancer" labels: { zone: "global" url_map_name: "URL_MAP_NAME" forwarding_rule_name: "FORWARDING_RULE_NAME" target_proxy_name: "TARGET_PROXY_NAME" backend_service_name: "" project_id: "PROJECT_ID" } } timestamp: "2020-06-08T23:41:25.078651Z" severity: "INFO" logName: "projects/PROJECT_ID/logs/requests" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" receiveTimestamp: "2020-06-08T23:41:25.588272510Z" spanId: "7b6537d3672e08e1" }
Konsol
- Di konsol Google Cloud , buka halaman Load balancing.
Klik
http-lb
untuk meluaskan load balancer yang baru saja Anda buat.Di bagian Backend, pastikan bucket backend dalam kondisi responsif. Anda akan melihat tanda centang hijau di samping bucket backend. Jika Anda melihat hal lain, coba muat ulang halaman terlebih dahulu. Diperlukan waktu beberapa saat agar konsol Google Cloud menunjukkan bahwa backend responsif.
Setelah konsol Google Cloud menunjukkan bahwa bucket backend dalam kondisi baik, Anda dapat menguji load balancer menggunakan browser web dengan membuka
http://IP_ADDRESS/never-fetch/three-cats.jpg
. GantiIP_ADDRESS
dengan alamat IP load balancer. Browser Anda akan merender halaman berisi konten yang menampilkan file grafis.
gcloud
Gunakan perintah curl
untuk menguji respons dari URL. Ganti
IP_ADDRESS
dengan alamat IPv4 load balancer.
Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe example-ip \ --format="get(address)" \ --global
Kirim permintaan curl:
curl -D- -o /dev/null /dev/null http://IP_ADDRESS/never-fetch/three-cats.jpg
Konten diambil dari Cloud Storage, di-cache oleh Cloud CDN, lalu divalidasi dan diambil ulang saat masa berlakunya berakhir atau dikeluarkan dari cache.
Konten dari cache memiliki header Age
yang lebih besar dari nol.
Konten yang perlu diperbarui lebih awal dari TTL dapat dibatalkan dan diambil ulang dari Cloud Storage.
Menonaktifkan Cloud CDN
Konsol
Menonaktifkan Cloud CDN untuk satu bucket backend
- Di konsol Google Cloud , buka halaman Cloud CDN.
- Di sisi kanan baris asal, klik Menu lalu pilih Edit.
- Hapus centang pada kotak untuk bucket backend yang ingin Anda hentikan penggunaan Cloud CDN-nya.
- Klik Perbarui.
Menghapus Cloud CDN untuk semua bucket backend untuk asal
- Di konsol Google Cloud , buka halaman Cloud CDN.
- Di sisi kanan baris asal, klik Menu lalu pilih Hapus.
- Untuk mengonfirmasi, klik Hapus.
gcloud
gcloud compute backend-buckets update BACKEND_BUCKET_NAME \ --no-enable-cdn
Menonaktifkan Cloud CDN tidak akan membatalkan atau menghapus cache. Jika Anda menonaktifkan Cloud CDN lalu mengaktifkannya kembali, sebagian besar atau semua konten yang di-cache mungkin masih di-cache. Untuk mencegah konten digunakan oleh cache, Anda harus membatalkan validasi konten tersebut.
Langkah berikutnya
- Untuk mempelajari konten yang di-cache, lihat Ringkasan penyimpanan ke cache.
- Untuk menggunakan Cloud CDN di GKE, lihat Fitur Ingress.
- Untuk memeriksa apakah Cloud CDN menyajikan respons dari cache, lihat Melihat log.
- Untuk menemukan informasi tentang masalah dan solusi umum, lihat Pemecahan masalah.
- Untuk mengonfigurasi kebijakan pemfilteran dan kontrol akses untuk konten Anda, lihat Kebijakan keamanan Edge.