Cloud CDN memanfaatkan pilihan Anda antara Load Balancer Aplikasi eksternal global atau 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) mana yang akan mengaktifkan Cloud CDN.
Panduan penyiapan ini menunjukkan cara membuat Load Balancer Aplikasi eksternal dengan Cloud CDN yang 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 berfungsi sebagai wrapper di sekitar bucket Cloud Storage
Bucket backend mendukung hal berikut:
- Bucket Cloud Storage dari 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 validasi. Cloud CDN juga memungkinkan Anda meng-cache konten berukuran besar (> 10 MB). Jika tidak mengaktifkan Cloud CDN di bucket backend, Anda hanya dapat menggunakan header Cache-Control
origin untuk mengontrol penyimpanan dalam cache untuk konten yang lebih kecil, seperti yang 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 project ID Google Cloud Anda.
Terraform
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Membuat bucket Cloud Storage
Jika sudah 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 untuk Application Load Balancer eksternal dengan Cloud CDN, sebaiknya pilih bucket multi-region, yang secara otomatis mereplikasi objek di beberapa region Google Cloud. Hal ini dapat meningkatkan ketersediaan konten dan meningkatkan toleransi kegagalan di seluruh aplikasi.
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 (ketik 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 Create.
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 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.
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 Refresh untuk memverifikasi bahwa file grafis telah disalin.
Membuat bucket Cloud Storage bersifat publik
Contoh ini membuat bucket Cloud Storage Anda dapat dibaca secara publik. Ini adalah pendekatan yang direkomendasikan untuk konten publik. Dengan setelan ini, siapa saja di internet dapat melihat dan mencantumkan objek Anda beserta metadatanya, kecuali ACL. Untuk mengurangi risiko eksposur data yang tidak diinginkan, Anda biasanya harus menyediakan bucket Cloud Storage tertentu untuk objek publik.
Berikut adalah alternatif untuk membuat seluruh bucket Cloud Storage 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 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 bersifat 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 digunakan pelanggan 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.
- 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.
Membuat 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
Memulai 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 dari opsi berikut:
- Untuk Load Balancer Aplikasi klasik, pilih Classic HTTP(S) Load Balancer.
- Untuk Application Load Balancer 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 perlu unik secara global dan dapat berbeda dengan nama bucket Cloud Storage yang sebenarnya. - Di bagian Cloud Storage bucket, klik Browse.
- Pilih
BUCKET_NAME
unik secara global Cloud Storage yang Anda buat, lalu klik Select. Klik Enable Cloud CDN.
(Opsional) Ubah setelan mode cache dan TTL.
Klik Create.
Mengonfigurasi aturan host dan pencocok jalur
Aturan host dan pencocok jalur adalah komponen konfigurasi dari 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 (ketik 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 (ketik 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 Done.
Meninjau konfigurasi
- Klik Review and finalize.
- Tinjau bagian Bucket backend, Host and path rules, dan Frontend.
- Klik Create.
- Tunggu load balancer dibuat.
- Klik nama load balancer (http-lb).
- Catat alamat IP load balancer untuk tugas berikutnya. 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 yang 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
: Menyimpan semua konten dalam cache, dengan mengabaikan perintahprivate
,no-store
, atauno-cache
dalam 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
Mengonfigurasi 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
.
Mengonfigurasi 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 lanjutan. - 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, konfirmasi bahwa bucket backend bersifat responsif. Akan ada tanda centang hijau di samping bucket backend Anda. Jika Anda melihat yang sebaliknya, coba muat ulang halaman terlebih dahulu. Diperlukan waktu beberapa saat hingga konsol Google Cloud menunjukkan bahwa backend berfungsi dengan baik.
Setelah konsol Google Cloud menunjukkan bahwa bucket backend berfungsi dengan 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 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
Memverifikasi bahwa Cloud CDN berfungsi
Jika Anda memuat ulang
halaman http://IP_ADDRESS/never-fetch/three-cats.jpg
beberapa kali secara berurutan, akan ada beberapa hit cache.
Entri log berikut menunjukkan hit cache. Anda dapat melihat hit cache di konsol Google 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, konfirmasi bahwa bucket backend bersifat responsif. Akan ada tanda centang hijau di samping bucket backend Anda. Jika Anda melihat yang sebaliknya, coba muat ulang halaman terlebih dahulu. Diperlukan waktu beberapa saat hingga konsol Google Cloud menunjukkan bahwa backend berfungsi dengan baik.
Setelah konsol Google Cloud menunjukkan bahwa bucket backend dalam keadaan 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 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 kembali saat masa berlakunya habis atau dihapus dari cache.
Konten dari cache memiliki header Age
yang lebih besar dari nol.
Konten yang perlu diperbarui lebih awal dari TTL dapat dibatalkan validasinya dan diambil kembali 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 bucket backend yang ingin Anda hentikan penggunaan Cloud CDN-nya.
- Klik Perbarui.
Menghapus Cloud CDN untuk semua bucket backend untuk origin
- 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 validasi atau menghapus cache. Jika Anda menonaktifkan dan mengaktifkan kembali Cloud CDN, sebagian besar atau semua konten yang disimpan dalam cache mungkin masih di-cache. Untuk mencegah konten digunakan oleh cache, Anda harus membatalkan validasi konten tersebut.
Langkah selanjutnya
- 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 menayangkan respons dari cache, lihat Melihat log.
- Untuk menemukan informasi tentang masalah umum dan solusinya, lihat Pemecahan masalah.
- Untuk mengonfigurasi kebijakan pemfilteran dan kontrol akses untuk konten Anda, lihat kebijakan keamanan Edge.