Media CDN memungkinkan Anda mengambil konten dari infrastruktur asal, baik konten dihosting dalam Google Cloud, di cloud lain, atau di lokal.
Setiap konfigurasi dapat memiliki satu atau beberapa asal yang terkait. Konfigurasi origin memberi tahu Media CDN cara terhubung ke infrastruktur Anda, kapan dan bagaimana melakukan failover, mencoba lagi, dan waktu tunggu, serta protokol apa yang akan digunakan saat terhubung.
Origin memiliki fitur berikut:
- Asal dapat ditentukan per host dan per rute, yang memungkinkan satu resource
EdgeCacheService
dipetakan ke beberapa asal yang berisi, misalnya, manifes, segmen video, dan konten statis lainnya. - Origin dapat dijangkau melalui HTTP/2, HTTPS, dan HTTP/1.1 yang tidak terenkripsi.
- Anda dapat mengonfigurasi aturan firewall untuk mengizinkan hanya alamat IP Google tertentu sehingga hanya Media CDN yang dapat mengakses origin Anda.
- Perilaku percobaan ulang dan failover dikonfigurasi per asal, dan dapat memungkinkan layanan melakukan failover pada error berat (seperti kegagalan konektivitas) atau mencoba lagi berdasarkan respons HTTP
404 Not Found
atau HTTP429 Too Many Requests
. - Resource pribadi di dalam Google Cloud atau lokal dapat dijangkau dengan mengonfigurasi Load Balancer Aplikasi eksternal sebagai origin di belakang Media CDN.
- Perilaku mengikuti pengalihan dikonfigurasi per origin. Anda dapat mengaktifkan Media CDN untuk mengikuti pengalihan ke server asal lain.
Persyaratan asal
Untuk mengizinkan Media CDN menyimpan respons origin yang lebih besar dari
1 MiB, origin harus menyertakan hal berikut dalam header respons untuk
permintaan HEAD
dan GET
, kecuali jika ditentukan lain:
- Header respons HTTP
Last-Modified
atauETag
(validator). - Header HTTP
Date
yang valid. - Header
Content-Length
yang valid. - Header respons
Content-Range
, sebagai respons terhadap permintaanRange GET
. HeaderContent-Range
harus memiliki nilai yang valid dalam bentukbytes x-y/z
(denganz
adalah ukuran objek).
Protokol asal default adalah HTTP/2. Jika origin Anda hanya mendukung HTTP/1.1, Anda dapat menetapkan kolom protokol secara eksplisit untuk setiap origin.
Perlindungan asal
Media CDN menyediakan infrastruktur edge bertingkat yang komprehensif yang dirancang untuk secara aktif meminimalkan pengisian cache jika memungkinkan.
Ada tiga lapisan utama infrastruktur caching:
- Cache edge dalam, yang melayani sebagian besar traffic dan off-load dalam jaringan penyedia layanan.
- Edge peering Google, yang terhubung ke ribuan ISP dan berfungsi sebagai cache tingkat menengah untuk cache edge, dan untuk kasus ketika cache tersebut tidak ada dalam ISP tertentu, cache yang terlihat oleh pengguna.
- Cache long-tail dalam jaringan Google yang diisi oleh cache hilir lainnya dari sebelum origin. Cache ini mendukung fan-in yang signifikan, memiliki kapasitas penyimpanan cache yang besar, dan bertindak sebagai perisai asal.
Ringkasan topologi ini ditampilkan di sini:
Media CDN menyediakan perlindungan origin secara default menggunakan serangkaian lokasi global utama yang terbatas. Perlindungan asal default beroperasi berdasarkan lokasi pengguna akhir, bukan asal. Cara ini berfungsi dengan baik dan memberikan manfaat offload yang kuat saat pengguna akhir dan server asal berada di region yang sama dan saat server asal global berada di beberapa region.
Perisai fleksibel
Dalam skenario saat asal Anda terpusat di satu wilayah, tetapi pengguna Anda tersebar secara global, perilaku perisai asal default, yang didasarkan pada lokasi pengguna, mungkin tidak optimal dengan cara berikut:
- Meningkatkan latensi untuk cache tidak ditemukan saat lokasi perisai default berada jauh secara geografis dari asal terpusat Anda
- Mengurangi pelepasan asal dengan menyebarkan permintaan pengisian cache di beberapa lokasi perisai default global, bukan memusatkannya
Perlindungan fleksibel membantu Anda mengatasi batasan ini dengan mengonfigurasi satu region geografis tertentu untuk perlindungan asal, yang biasanya dipilih agar dekat dengan asal terpusat Anda. Perlindungan fleksibel kemudian merutekan semua permintaan pengisian cache melalui cache perisai yang berada di atau dekat dengan region yang dikonfigurasi. Hal ini menggabungkan beban ke asal Anda melalui cache yang berfokus pada regional tersebut.
Dengan mengonfigurasi region perlindungan fleksibel di region geografis yang sama dengan origin terpusat, Anda dapat mengoptimalkan hal berikut:
- Rasio cache ditemukan di lapisan perisai
- Offload asal
- Latensi untuk cache tidak ditemukan dan konten yang tidak dapat di-cache
- Stabilitas performa
Perlindungan fleksibel kompatibel dengan jenis origin apa pun yang dikonfigurasi di Media CDN.
Meminta penyusutan
Penciutan permintaan secara aktif menciutkan beberapa permintaan pengisian cache yang didorong pengguna untuk kunci cache yang sama menjadi satu permintaan asal, per node tepi.
Semua lapisan caching mendukung penyusutan permintaan (atau penggabungan) untuk lebih mengurangi beban origin. Berdasarkan beban kerja dunia nyata yang diamati dalam skala besar:
- > 95% pengisian cache menggunakan node cache long-tail khusus dalam region, untuk mengurangi biaya dan latensi pengisian cache.
- Pengisian cache antara origin dan infrastruktur edge Google sendiri sepenuhnya dilakukan melalui jaringan backbone pribadi global Google, yang mengurangi latensi pengisian cache dan meningkatkan keandalan—keduanya merupakan manfaat aktif untuk beban kerja live streaming.
- Cache saling mengisi jika menguntungkan, sehingga semakin menurunkan rasio pengisian cache.
- Media CDN memiliki kapasitas penyimpanan yang signifikan di seluruh cache, yang meminimalkan rasio penghapusan bahkan untuk konten long-tail yang kurang populer.
Pelanggan mungkin melihat rasio pelepasan yang berbeda, bergantung pada konfigurasi cache, beban pengguna, beban kerja (seperti live versus on-demand), distribusi pengguna, dan seberapa banyak konten long-tail (ukuran korpus total) yang mereka sajikan kepada pengguna di seluruh wilayah.
Jika digabungkan dengan perlindungan origin, penggabungan permintaan akan semakin mengurangi beban origin dan kebutuhan bandwidth keluar, serta merupakan perilaku default untuk Media CDN.
Permintaan yang diciutkan mencatat permintaan yang ditampilkan kepada klien dan permintaan pengisian cache (yang diciutkan). Pemimpin sesi yang diciutkan digunakan untuk membuat permintaan pengisian asal, yang berarti bahwa asal melihat header (termasuk User-Agent) hanya dari klien tersebut.
Permintaan yang tidak memiliki kunci cache yang sama tidak dapat diciutkan.
Konektivitas origin
Bagian berikut menjelaskan cara Media CDN terhubung ke origin, cara permintaan HTTP dibuat, dan cara Anda dapat mengautentikasi permintaan.
Asal dan protokol yang didukung
Media CDN secara langsung mendukung endpoint HTTP yang dapat dijangkau secara publik sebagai origin, termasuk:
- Bucket Cloud Storage, termasuk bucket pribadi melalui akun layanan Identity and Access Management
- Load Balancer Aplikasi Eksternal
- Bucket yang kompatibel dengan Amazon S3, termasuk bucket pribadi yang menggunakan AWS Signature Version 4
- Penyimpanan objek yang tersedia secara publik lainnya, seperti Azure Blob Storage
- Server web yang tersedia secara publik, seperti VM publik atau host lokal
Konektivitas ke origin dilakukan melalui tunnel yang aman dan jaringan backbone global Google.
Tabel berikut menjelaskan protokol asal yang didukung.
Protokol | Didukung | SSL (TLS) diperlukan |
---|---|---|
HTTP/2 | Ya (default) | Ya |
HTTPS (HTTP/1.1 melalui TLS) | Ya | Ya |
HTTP/1.1 | Ya | Tidak |
Media CDN menggunakan HTTP/2 (h2) untuk terhubung ke origin secara default. HTTP/2 dan HTTPS memerlukan sertifikat TLS (SSL) yang valid dan dipercaya secara publik. Sertifikat yang valid adalah sertifikat yang belum habis masa berlakunya, ditandatangani oleh Otoritas Sertifikat publik, dan memiliki Nama Alternatif Subjek yang cocok dengan hostname yang dikirim ke origin.
Catatan:
- Jika origin Anda tidak mendukung HTTP/2, Anda dapat secara eksplisit menyetel protokol
(berdasarkan per-origin) ke
HTTP
(HTTP/1.1) atauHTTPS
(HTTP/1.1 melalui TLS). - Saat mengonfigurasi HTTPS atau HTTP/1.1 sebagai protokol origin, Media CDN tidak menegosiasikan protokol alternatif (seperti HTTP/2). Demikian pula, saat mengonfigurasi HTTP/2, koneksi tidak akan kembali ke HTTP/1.1, agar perilaku konektivitas asal menjadi jelas.
- CDN Media otomatis menggunakan port yang benar berdasarkan
protokol: port
80
untuk HTTP atau port443
untuk HTTPS dan HTTP/2.
Header permintaan asal
Saat terhubung ke origin, Media CDN menggunakan header Host
dari permintaan klien secara default.
Tabel berikut mendokumentasikan apa yang dilihat origin dalam permintaan masuk di berbagai skenario konfigurasi:
Permintaan Klien | EdgeCacheService.hostRewrite |
EdgeCacheOrigin.hostRewrite |
originAddress | Header host / SNI TLS di origin |
---|---|---|---|---|
media.example.com | Tidak ada | Tidak ada | backend.example.com | media.example.com |
media.example.com | service.example.com | Tidak ada | backend.example.com | service.example.com |
media.example.com | Tidak ada | origin.example.com | backend.example.com | origin.example.com |
media.example.com | service.example.com | origin.example.com | backend.example.com | origin.example.com |
media.example.com | service.example.com | origin.example.com | gs://vod-content-bucket | ditetapkan secara otomatis berdasarkan nama bucket |
Asal utama dan asal failover melihat header host yang sama jika keduanya berbagi konfigurasi routeRule
atau hostRewrite
yang sama.
Setelan hostRewrite
diabaikan saat menggunakan bucket Cloud Storage sebagai asal karena nilai header host alternatif tidak didukung oleh bucket Cloud Storage. Header host otomatis ditetapkan berdasarkan
nama bucket.
Nilai TLS SNI (Server Name Indication) dalam permintaan (untuk permintaan HTTP/3, HTTP/2, dan HTTPS) ditetapkan ke nilai yang sama dengan header host yang dikirim ke origin.
Untuk mengetahui informasi tentang cara menulis ulang header host untuk konfigurasi per rute, lihat Mengonfigurasi rute layanan. Untuk mengetahui informasi tentang cara menyetel tindakan penggantian per-origin, lihat Pengalihan jika terjadi kegagalan origin tanpa mengikuti pengalihan.
Mengizinkan origin menerima traffic dari Media CDN
Untuk mengurangi risiko akses tidak sah ke konten Anda, gunakan daftar yang diizinkan IP di origin untuk memblokir akses ke semua alamat IP kecuali rentang alamat IP tertentu yang digunakan Google untuk mengirim permintaan ke origin eksternal. Dengan begitu, hanya Media CDN yang dapat terhubung ke server asal Anda.
Tabel berikut merangkum rentang alamat IP sumber yang diperlukan untuk aturan firewall:
Jenis alamat IP | Rentang IP sumber permintaan |
---|---|
IPv4 | 136.124.4.0/22 |
IPv6 | 2001:4860:4864:a::/64 |
Gunakan URL berikut untuk mengakses file JSON yang berisi rentang alamat IP yang ditetapkan Google yang telah diupdate.
https://www.gstatic.com/ipranges/mediacdn.json
Failover dan waktu tunggu
Bagian berikut menjelaskan opsi konfigurasi ini:
- Waktu tunggu: Tentukan berapa lama Media CDN menunggu untuk terhubung ke origin Anda atau untuk merespons permintaan.
- Coba lagi: Tentukan apakah Media CDN mencoba lagi permintaan HTTP origin ke origin Anda, dan dalam kondisi apa.
- Failover: Tentukan apakah Media CDN mencoba terhubung ke origin failover jika origin pertama tidak tersedia atau menampilkan kode status tertentu.
Waktu tunggu asal
Dengan waktu tunggu, Anda dapat mengonfigurasi kapan perilaku percobaan ulang dan failover asal dipicu, serta kapan failover klien berikutnya dapat dipicu.
Berikut ini menjelaskan waktu tunggu yang dapat dikonfigurasi yang didukung Media CDN:
connectTimeout
danmaxAttemptsTimeout
membatasi waktu yang dibutuhkan Media CDN untuk menemukan respons yang dapat digunakan.Kedua waktu tunggu mencakup waktu yang diperlukan asal untuk menampilkan header dan untuk menentukan apakah akan menggunakan failover atau pengalihan.
connectTimeout
berlaku secara independen untuk setiap upaya asal, sedangkanmaxAttemptsTimeout
mencakup waktu yang diperlukan untuk terhubung di semua upaya asal, termasuk failover dan pengalihan. Mengikuti pengalihan dihitung sebagai upaya tambahan untuk terhubung ke asal, dan dihitung dalammaxAttempts
yang ditetapkan untuk asal yang dikonfigurasi.Saat Media CDN menemukan respons non-pengalihan, seperti dari origin pengalihan atau failover, nilai
readTimeout
danresponseTimeout
akan berlaku. Origin yang dialihkan menggunakan nilaiconnectTimeout
,readTimeout
, danresponseTimeout
yang dikonfigurasi untukEdgeCacheOrigin
yang mengalami pengalihan.responseTimeout
danreadTimeout
mengontrol durasi respons streaming dapat diperlukan. Setelah Media CDN menentukan bahwa Media CDN akan menggunakan respons upstream,connectTimeout
maupunmaxAttemptsTimeout
tidak akan berpengaruh. Pada tahap ini,readTimeout
danresponseTimeout
akan berlaku.
Media CDN melakukan maksimal empat upaya origin di semua origin, terlepas dari maxAttempts
yang ditetapkan oleh setiap EdgeCacheOrigin
.
Media CDN menggunakan nilai maxAttemptsTimeout
dari EdgeCacheOrigin
utama. Nilai waktu tunggu per percobaan (connectTimeout
, readTimeout
, dan responseTimeout
) dikonfigurasi untuk EdgeCacheOrigin
setiap percobaan.
Tabel berikut menjelaskan kolom waktu tunggu:
Kolom | Default | Deskripsi |
---|---|---|
connectTimeout | 5 detik | Jumlah waktu maksimum yang dapat digunakan Media CDN dari
memulai permintaan ke origin hingga Media CDN menentukan
apakah respons dapat digunakan. Secara praktis, Waktu tunggu harus berupa nilai antara 1 detik dan 15 detik. |
maxAttemptsTimeout | 15 detik | Waktu maksimum di semua upaya koneksi ke origin, termasuk origin failover, sebelum menampilkan error ke klien. HTTP 504 akan ditampilkan jika waktu tunggu habis sebelum respons ditampilkan. Waktu tunggu harus berupa nilai antara 1 detik dan 30 detik. Setelan ini menentukan durasi total untuk semua upaya koneksi asal, termasuk asal failover, untuk membatasi total waktu yang harus ditunggu klien agar konten mulai di-streaming. Hanya nilai |
readTimeout | 15 detik | Durasi maksimum untuk menunggu di antara pembacaan satu respons HTTP.
|
responseTimeout | 30 seconds | Durasi maksimum yang diizinkan untuk menyelesaikan respons. Waktu tunggu harus berupa nilai antara 1 detik dan 120 detik. Durasi diukur dari waktu saat byte isi pertama diterima. Jika waktu tunggu ini tercapai sebelum respons selesai, respons akan terpotong dan dicatat. |
Perhatikan contoh berikut:
Origin A
mencocokkan permintaan ke "/segments/" dan memiliki nilaimaxAttemptsTimeout
5s
, nilaimaxAttempts
1
, dan nilaifailover_origin
Origin B
. NilaiconnectTimeout
berada pada defaultnya, yaitu5s
. Jika Anda mencoba terhubung keOrigin A
, dan gagal dalam waktu 1 detik karena sertifikat TLS tidak valid, Anda memiliki waktu ~4 detik untuk membuat koneksi yang berhasil keOrigin B
.Origin C
cocok dengan permintaan ke "/manifests/*, memiliki nilaimaxAttemptsTimeout
10s
, nilaimaxAttempts
3
, danfailover_origin
tidak dikonfigurasi. NilaiconnectTimeout
berada pada nilai defaultnya, yaitu5s
. CDN Media berupaya terhubung keOrigin C
hingga tiga kali, dengan waktu hingga 10 detik (batasmaxAttemptsTimeout
) untuk membuat koneksi yang berhasil.
Mencoba lagi permintaan origin
Media CDN mendukung percobaan ulang origin, sehingga permintaan yang tidak berhasil ke origin dapat dicoba ulang. Anda dapat menentukan berapa kali asal saat ini dapat dicoba ulang sebelum asal failover (jika dikonfigurasi) dicoba.
- Media CDN mencoba menjangkau origin utama hingga nilai
maxAttempts
yang dikonfigurasi, yang secara default adalah1
. - Media CDN mencoba ulang koneksi origin hingga maksimum tiga
kali sebelum gagal dan menampilkan error HTTP
502 Bad Gateway
kepada pengguna. Hal ini mencakup koneksi asal failover, yang dihitung dalam batas tiga. - Saat mengonfigurasi resource origin, Anda dapat mengonfigurasi origin utama menggunakan kolom
originAddress
, lalufailoverOrigin
opsional.failoverOrigin
mengarah ke resource asal lain.
retryConditions
untuk setiap origin menentukan jenis kegagalan yang memicu percobaan ulang:
Kondisi | Default | Deskripsi |
---|---|---|
CONNECT_FAILURE | ✔️ | Percobaan ulang saat terjadi kegagalan mencakup error perutean, handshake TLS dan DNS, serta waktu tunggu TCP/UDP. |
HTTP_5XX | Coba lagi pada kode status HTTP 5xx apa pun. |
|
GATEWAY_ERROR | Mirip dengan 5xx , tetapi hanya berlaku untuk kode status
502 , 503 , atau 504 . |
|
RETRIABLE_4XX | Coba lagi untuk kode status 4xx yang dapat dicoba lagi,
termasuk 409 dan 429 . |
|
NOT_FOUND | Coba lagi pada kode status HTTP 404 . |
|
TERLARANG | Coba lagi pada kode status HTTP 403 . |
Jika Anda memerlukan pemeriksaan kondisi aktif, round-robin, atau pengarahan yang sadar beban di seluruh asal, Anda dapat mengonfigurasi Load Balancer Aplikasi eksternal sebagai asal utama.
Perilaku failover
Tabel berikut menjelaskan cara kerja failover, dan respons apa yang akan diamati klien:
Skenario | Failover dikonfigurasi | Status yang ditampilkan kepada pengguna |
---|---|---|
Media CDN mencoba terhubung ke origin Anda, dan tidak menerima respons HTTP setelah dua kali percobaan (default). | Tidak | HTTP 502 Bad Gateway |
Media CDN mencoba terhubung ke origin utama Anda,
dan gagal terhubung (error handshake TLS). Upaya dilakukan terhadap
origin failover yang dikonfigurasi, yang menampilkan error 404
HTTP.
|
Ya | HTTP 404 Not Found |
Media CDN mencoba terhubung ke origin utama dan failover Anda, tetapi tidak menerima kode status HTTP. | Ya | HTTP 502 Bad Gateway |
Jika Media CDN menerima kode status yang cocok dengan retryConditions
yang dikonfigurasi, seperti error HTTP 404 Not Found
atau HTTP 429 Too Many
Requests
, dan permintaan origin coba lagi dan failover berikutnya terus gagal, error HTTP 502 Bad Gateway
akan ditampilkan ke klien setelah upaya origin habis.
Praktik terbaik untuk failover asal
Saat mengonfigurasi beberapa asal untuk failover atau load balancing, pastikan
konten media dan perilaku header Vary
, ETag
, dan Last-Modified
Anda
konsisten di antara asal Anda.
Sebagai praktik terbaik, konfigurasi pengalihan origin hanya untuk origin yang Anda percayai dan kontrol. Pastikan Anda memercayai setiap asal dalam rantai pengalihan karena setiap asal menghasilkan konten yang ditayangkan oleh EdgeCacheService
Anda.
Langkah berikutnya
- Mengonfigurasi origin
- Menggunakan bucket pribadi yang kompatibel dengan Amazon S3 sebagai origin
- Mengonfigurasi rute layanan