Cloud CDN memanfaatkan pilihan Anda antara Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik untuk menyediakan perutean, health check, dan dukungan IP anycast. Karena Load Balancer Aplikasi eksternal global dapat memiliki beberapa jenis backend instance—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 digunakan untuk mengaktifkan Cloud CDN.
Panduan penyiapan ini menunjukkan cara membuat Load Balancer Aplikasi eksternal dengan Cloud CDN aktif. Contoh ini menggunakan resource berikut:
- Jaringan Virtual Private Cloud (VPC) default
- Peta URL default
- Alamat IP eksternal yang dicadangkan
- Bucket Cloud Storage sebagai backend
- Bucket backend load balancer tunggal yang bertindak sebagai wrapper di sekitar bucket Cloud Storage
Bucket backend mendukung hal berikut:
- Bucket Cloud Storage dari semua kelas penyimpanan, termasuk bucket multi-region
- Kebijakan Cloud CDN untuk menyimpan konten 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 di konten Anda.
Kontrol Cloud CDN mencakup, misalnya, mode cache, URL bertanda tangan, 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 guna mengontrol caching 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 tertentu ke layanan yang ditentukan. Tabel berikut meringkas jenis backend tempat Anda dapat menghosting konten dan layanan.
Konfigurasi backend load balancer | Jenis konten 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 dikelola sendiri maupun dikelola Google. Sebaiknya gunakan sertifikat yang dikelola Google.
- Jika Anda menggunakan Google Cloud CLI, baca artikel 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 langsung melanjutkan ke langkah berikutnya.
Saat Anda membuat bucket Cloud Storage untuk digunakan sebagai backend untuk Load Balancer Aplikasi 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 Anda.
Konsol
- Di konsol Google Cloud, buka halaman Cloud Storage Buckets.
- Klik Create bucket.
Tentukan nilai untuk kolom dalam tabel berikut, dan biarkan kolom lainnya dalam nilai 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 Location Pilih region, seperti us (multiple region in United States). Kelas penyimpanan default Standar Kontrol akses Seragam Klik Create.
Perhatikan 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 dalam bucket Cloud Storage
Agar 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 unik Anda:
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.
Menjadikan bucket Cloud Storage Anda publik
Contoh ini membuat bucket Cloud Storage Anda dapat dibaca oleh publik. Ini adalah pendekatan yang direkomendasikan untuk konten publik. Dengan setelan ini, siapa pun di internet dapat melihat dan mencantumkan objek Anda beserta metadatanya, tidak termasuk ACL. Untuk mengurangi risiko eksposur data yang tidak diinginkan, biasanya Anda harus mendedikasikan bucket Cloud Storage tertentu untuk objek publik.
Berikut ini alternatif untuk mengubah seluruh bucket Cloud Storage menjadi publik:
Gunakan folder terkelola untuk menjadikan sebagian bucket bersifat publik.
Buat masing-masing objek yang dapat dibaca oleh publik dalam bucket Cloud Storage. Kami tidak merekomendasikan pendekatan ini.
Gunakan URL bertanda tangan.
Prosedur berikut memberi semua pengguna akses untuk melihat objek di bucket Cloud Storage Anda, sehingga bucket dapat dibaca oleh publik.
Konsol
- Di konsol Google Cloud, buka halaman Cloud Storage Buckets.
- Buka bucket dan klik tab Izin.
- Klik Add principals.
- Di New principals, masukkan
allUsers
. - Untuk peran, pilih Cloud Storage > Storage Object Viewer.
- Klik Save.
gcloud
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers --role=roles/storage.objectViewer
Terraform
Untuk menjadikan bucket Cloud Storage Anda 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 disarankan, 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 Tingkat Layanan Jaringan 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. 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.
- Pada HTTP(S) load balancing, klik Start configuration.
- Pilih From Internet to my VMs, lalu klik Continue.
- Di bagian Advanced traffic management, pilih salah satu opsi berikut:
- Untuk Load Balancer Aplikasi klasik, pilih Klasik HTTP(S) Load Balancer.
- Untuk Load Balancer Aplikasi eksternal global, pilih HTTP(S) Load Balancer dengan Advanced Traffic Management.
- Setel Name ke
http-lb
, lalu lanjutkan ke langkah berikutnya.
Mengonfigurasi backend dan mengaktifkan Cloud CDN
Membuat bucket backend load balancer, yang berfungsi sebagai wrapper untuk bucket Cloud Storage. 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. - Pada bucket Cloud Storage, klik Browse.
- Pilih Cloud Storage unik secara global
BUCKET_NAME
yang Anda buat, lalu klik Select. Klik Aktifkan 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 Certificate Pilih sertifikat atau Buat sertifikat baru Klik Done.
Meninjau konfigurasi
- Klik Review and finalize.
- Tinjau bagian Backend bucket, Aturan host dan jalur, serta Frontend.
- Klik Create.
- Tunggu load balancer dibuat.
- Klik nama load balancer (http-lb).
- Catat alamat IP load balancer untuk tugas berikutnya. Ini
disebut sebagai
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 opsi berikut:
CACHE_ALL_STATIC
atauUSE_ORIGIN_HEADERS
: Menggunakan header yang ditetapkan sesuai dengan metadata kontrol cache di Cloud Storage. Cloud Storage selalu menyediakan headerCache-Control
untuk Cloud CDN. Jika tidak ada nilai yang dipilih secara eksplisit, nilai default akan dikirimkan.FORCE_CACHE_ALL
: Menyimpan semua konten dalam cache, mengabaikan perintahprivate
,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
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, diperlukan waktu beberapa menit untuk menerapkan konfigurasi Anda ke seluruh dunia. Setelah beberapa menit, Anda dapat mulai mengirim 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 berfungsi dengan baik. Akan ada tanda centang hijau di samping bucket backend Anda. Jika Anda melihat hal sebaliknya, coba muat ulang halaman terlebih dahulu. Diperlukan waktu beberapa saat bagi Konsol Google Cloud untuk menunjukkan bahwa backend responsif.
Setelah konsol Google Cloud menunjukkan bahwa bucket backend responsif, 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 dengan 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
Mengirim 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 berturut-turut, akan ada beberapa cache yang ditemukan.
Entri log berikut menunjukkan cache ditemukan. Anda dapat melihat cache yang ditemukan dengan membuka Logs Explorer di Google Cloud Console 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 berfungsi dengan baik. Akan ada tanda centang hijau di samping bucket backend Anda. Jika Anda melihat hal sebaliknya, coba muat ulang halaman terlebih dahulu. Diperlukan waktu beberapa saat bagi Konsol Google Cloud untuk menunjukkan bahwa backend responsif.
Setelah konsol Google Cloud menunjukkan bahwa bucket backend responsif, 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 dengan 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
Mengirim permintaan curl:
curl -D- -o /dev/null /dev/null http://IP_ADDRESS/never-fetch/three-cats.jpg
Konten diambil dari Cloud Storage, yang disimpan dalam cache oleh Cloud CDN, lalu divalidasi dan diambil ulang setelah masa berlakunya habis atau dikeluarkan dari cache.
Konten dari cache memiliki header Age
di atas nol.
Konten yang perlu dimuat ulang sebelum TTL dapat dibatalkan dan diambil ulang dari Cloud Storage.
Nonaktifkan Cloud CDN
Konsol
Menonaktifkan Cloud CDN untuk bucket backend tunggal
- Di konsol Google Cloud, buka halaman Cloud CDN.
- Di sisi kanan baris origin, klik Menu lalu pilih Edit.
- Kosongkan kotak centang bucket backend yang ingin Anda hentikan penggunaan Cloud CDN.
- 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 Remove.
- 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 Cloud CDN lalu mengaktifkannya kembali, sebagian besar atau semua konten yang disimpan dalam cache mungkin masih disimpan dalam cache. Agar konten tidak digunakan oleh cache, Anda harus membatalkan validasi konten tersebut.
Langkah selanjutnya
- Untuk mempelajari konten apa saja yang di-cache, lihat Ringkasan cache.
- Untuk menggunakan Cloud CDN di GKE, lihat Fitur masuk.
- 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 bagi konten Anda, lihat Kebijakan keamanan Edge.