Anda dapat menggunakan backend eksternal jika konten dihosting di infrastruktur lokal atau di cloud lain. Backend eksternal memungkinkan Anda menayangkan konten dari Cloud CDN Google.
Dokumen ini menjelaskan proses penyiapan penyimpanan objek pihak ketiga—seperti Amazon Simple Storage Service (Amazon S3) atau Azure Blob Storage—sebagai backend eksternal untuk Cloud CDN. Backend eksternal dan Cloud CDN berfungsi bersama dengan Load Balancer Aplikasi eksternal.
Arsitektur
Untuk membuat backend eksternal, buat grup endpoint jaringan internet (NEG) yang mengarah ke layanan penyimpanan pihak ketiga sebagai backend untuk load balancer. NEG internet digunakan untuk backend eksternal.
Untuk menyiapkan bucket penyimpanan pihak ketiga sebagai backend, Anda harus melakukan hal berikut:
- Siapkan bucket penyimpanan pihak ketiga untuk menayangkan konten.
- Buat NEG internet yang menggunakan FQDN bucket.
- Konfigurasikan Load Balancer Aplikasi eksternal dengan NEG internet sebagai backend.
- Uji penyiapan.
Menyiapkan bucket untuk menyajikan konten
Sebelum memulai penyiapan di Google Cloud, pastikan bucket dikonfigurasi dengan benar. Petunjuk ini mengasumsikan bahwa Anda menggunakan bucket Amazon S3 dan memiliki izin yang diperlukan untuk melakukan perubahan pada bucket dan objek Amazon S3.
Pastikan bucket Amazon S3 dan objek di dalam bucket bersifat publik atau Anda telah mengonfigurasi autentikasi origin pribadi untuk bucket Amazon S3.
Pastikan konten memenuhi persyaratan kemampuan cache yang tercantum dalam Konten yang dapat di-cache. Jika Anda perlu menambahkan metadata objek, lihat pusat informasi AWS, misalnya, Mengedit metadata objek.
Anda akan memerlukan endpoint bucket Amazon S3 (FQDN) saat menyiapkan NEG internet. Untuk mendapatkan informasi endpoint, ikuti petunjuk yang diberikan di pusat informasi AWS—misalnya, Mengakses bucket. Anda juga bisa mendapatkan URL endpoint Amazon S3 dari halaman ringkasan objek.
Buat NEG internet yang menggunakan nama host bucket
Untuk mempermudah, contoh ini menggunakan backend.example.com
FQDN. Pastikan untuk menggantinya dengan FQDN bucket penyimpanan pihak ketiga, yang mungkin terlihat seperti http://unique-name-bucket.s3-us-west-1.amazonaws.com/
.
Panduan ini menggunakan contoh untuk menjelaskan dasar-dasar penggunaan backend eksternal (terkadang disebut asal kustom) di Load Balancer Aplikasi eksternal. Backend eksternal adalah endpoint yang berada di luar Google Cloud. Saat Anda menggunakan backend eksternal dengan Load Balancer Aplikasi eksternal, Anda dapat meningkatkan performa menggunakan caching Cloud CDN.
Panduan ini mencakup cara mengonfigurasi Load Balancer Aplikasi eksternal global dengan layanan backend berkemampuan Cloud CDN yang melakukan proxy ke server backend eksternal di backend.example.com
.
Dalam contoh ini, load balancer menerima permintaan HTTPS dari klien dan membuat proxy permintaan ini sebagai HTTPS ke backend eksternal. Contoh ini mengasumsikan bahwa backend eksternal mendukung HTTPS.
Opsi lainnya adalah mengonfigurasi load balancer untuk menerima permintaan HTTP atau HTTPS, serta menggunakan HTTPS saat melakukan proxy permintaan ke backend eksternal.
Panduan ini mengasumsikan bahwa Anda telah menyiapkan load balancer dan Anda menambahkan backend eksternal baru. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan Load Balancer Aplikasi klasik dengan backend grup instance terkelola.
Gambar 1 menunjukkan arsitektur contoh.
Dalam diagram, www.example.com
memiliki frontend load balancer dengan alamat IP 120.1.1.1
. Jika cache tidak ditemukan, permintaan pengguna untuk
/cart/id/1223515
akan diambil dari backend eksternal melalui HTTPS. Semua traffic masuk lainnya diarahkan ke layanan backend Google Cloud dengan VM Compute Engine atau ke bucket backend, berdasarkan peta URL.
Sebelum memulai
Sebelum mengikuti panduan ini, biasakan diri Anda dengan hal-hal berikut:
Ringkasan grup endpoint jaringan internet, yang mencakup batasan.
backend eksternal yang ditentukan dengan menggunakan NEG internet
Izin
Untuk mengikuti panduan ini, Anda perlu membuat grup endpoint jaringan internet (NEG) dan membuat atau mengubah Load Balancer Aplikasi eksternal dalam sebuah project. Anda harus menjadi pemilik atau editor project, atau harus memiliki kedua peran IAM Compute Engine berikut.
Tugas | Peran yang diperlukan |
---|---|
Membuat dan mengubah komponen load balancer | Admin Jaringan |
Membuat dan mengubah NEG | Compute Instance Admin |
Mengonfigurasi load balancer dengan backend eksternal
Bagian ini menunjukkan cara mengonfigurasi dan menguji NEG internet.
Ringkasan penyiapan
Untuk menyiapkan NEG internet, Anda harus melakukan hal-hal berikut:
- Menentukan endpoint internet dalam NEG internet.
- Menambahkan NEG internet sebagai backend ke layanan backend.
- Tentukan traffic pengguna yang akan dipetakan ke layanan backend ini dengan mengonfigurasi peta URL Load Balancer Aplikasi eksternal Anda.
- Mengizinkan rentang IP yang diperlukan.
Contoh ini akan membuat resource berikut:
- Aturan penerusan dengan alamat IP
120.1.1.1
mengarahkan permintaan masuk ke proxy target. networkTier
aturan penerusan harusPREMIUM
.- Proxy target memeriksa setiap permintaan di peta URL untuk menentukan layanan backend yang sesuai untuk permintaan tersebut.
- Untuk backend eksternal, proxy target harus berupa
TargetHttpProxy
atauTargetHttpsProxy
. Contoh ini menggunakanTargetHttpsProxy
. - Cloud CDN yang diaktifkan (opsional) di layanan backend memungkinkan penyimpanan dalam cache dan penyajian respons dari cache Cloud CDN.
- Contoh ini mencakup header kustom, yang diperlukan saat backend eksternal mengharapkan nilai tertentu untuk header
Host
permintaan HTTP.
Penyiapannya akan terlihat seperti berikut.
Membuat endpoint NEG dan internet
Konsol
- Di Konsol Google Cloud, buka halaman Network endpoint groups.
- Klik Create network endpoint group.
- Masukkan nama grup endpoint jaringan:
example-fqdn-neg
. - Untuk Network endpoint group type, pilih Network endpoint group (Internet).
- Untuk Default port, masukkan
443
. - Untuk New network endpoint, pilih Fully qualified domain name and port.
- Untuk FQDN, masukkan
backend.example.com
. - Untuk Port type, pilih Default, dan pastikan Port
number adalah
443
. - Klik Create.
gcloud
Buat NEG internet, dan tetapkan
--network-endpoint-type
keinternet-fqdn-port
(nama host dan port tempat backend eksternal Anda dapat dijangkau):gcloud compute network-endpoint-groups create example-fqdn-neg \ --network-endpoint-type="internet-fqdn-port" --global
Tambahkan endpoint Anda ke NEG. Jika port tidak ditentukan, pemilihan port secara default akan ditetapkan ke port
80
(HTTP) atau443
(HTTPS; HTTP/2) bergantung pada protokol yang dikonfigurasi di layanan backend. Pastikan untuk menyertakan flag--global
:gcloud compute network-endpoint-groups update example-fqdn-neg \ --add-endpoint="fqdn=backend.example.com,port=443" \ --global
Daftar NEG internet yang dibuat:
gcloud compute network-endpoint-groups list --global
Output:
NAME LOCATION ENDPOINT_TYPE SIZE example-fqdn-neg global INTERNET_FQDN_PORT 1
Cantumkan endpoint dalam NEG tersebut:
gcloud compute network-endpoint-groups list-network-endpoints example-fqdn-neg \ --global
Output:
INSTANCE IP_ADDRESS PORT FQDN backend.example.com
Menambahkan backend eksternal ke load balancer
Contoh berikut memperbarui load balancer yang ada.
Di load balancer yang ada, layanan defaultnya adalah layanan Google Cloud. Contoh ini memodifikasi peta URL yang ada dengan menambahkan pencocok jalur yang
mengirimkan semua permintaan untuk cart/id/1223515
ke layanan backend images
, yang
dikaitkan dengan NEG internet.
Konsol
Membuat layanan backend dan menambahkan NEG internet
- Di Konsol Google Cloud, buka halaman Load balancing.
- Untuk menambahkan layanan backend ke load balancer yang sudah ada, pilih Load Balancer Aplikasi klasik Anda, klik Menu, lalu pilih Edit.
- Klik Backend configuration.
- Di menu Backend services & backend buckets, pilih Create a backend service.
- Tetapkan nama layanan backend ke
images
. - Untuk Backend type, pilih Internet network endpoint group.
- Pilih protokol yang ingin Anda gunakan dari load balancer ke NEG internet. Untuk contoh ini, pilih HTTPS.
- Di bagian New backend > Internet network endpoint group, pilih
example-fqdn-neg
, lalu klik Done. - Pilih Aktifkan Cloud CDN.
- Opsional: Ubah setelan mode cache dan TTL.
- Di bagian Advanced configurations, di bagian Custom request headers, klik Add header.
- Untuk Header name, masukkan
Host
. - Untuk Header value, masukkan
backend.example.com
.
- Untuk Header name, masukkan
- Klik Create.
- Biarkan jendela tetap terbuka untuk melanjutkan.
Melampirkan layanan backend ke peta URL yang ada
- Klik Host and path rules.
- Baris atau baris pertama memiliki layanan Google Cloud di kolom kanan, dan salah satunya sudah diisi dengan aturan default
Any unmatched (default)
untuk Host dan Path. - Pastikan ada baris dengan
images
yang dipilih di kolom sebelah kanan. Jika tidak ada, klik Add host and path rule, lalu pilihimages
. Isi kolom lainnya sebagai berikut:- Pada Hosts, masukkan
*
. - Di Paths, masukkan
/cart/id/1223515
.
- Pada Hosts, masukkan
Melakukan peninjauan dan penyelesaian
- Klik Review and finalize.
- Bandingkan setelan Anda dengan yang ingin Anda buat.
- Jika semuanya sudah benar, klik Perbarui.
gcloud
Buat layanan backend baru untuk NEG:
gcloud compute backend-services create images \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE \ --protocol=HTTP2
Tetapkan mode cache dengan mengganti CACHE_MODE dengan salah satu opsi berikut:
CACHE_ALL_STATIC
: otomatis meng-cache konten statisUSE_ORIGIN_HEADERS
(default): mengharuskan origin menetapkan header cache yang valid untuk menyimpan konten dalam cacheFORCE_CACHE_ALL
: menyimpan semua konten ke dalam cache, mengabaikan perintahprivate
,no-store
, atauno-cache
di header responsCache-Control
Konfigurasikan layanan backend untuk menambahkan header permintaan kustom
Host: backend.example.com
ke permintaan:gcloud compute backend-services update images \ --custom-request-header "Host: backend.example.com" --global
Gunakan perintah
backend-services add-backend
untuk menambahkan NEG internet ke layanan backend:gcloud compute backend-services add-backend images \ --network-endpoint-group "example-fqdn-neg" \ --global-network-endpoint-group \ --global
Lampirkan layanan backend baru ke peta URL load balancer dengan membuat aturan pencocokan baru untuk mengarahkan permintaan ke backend tersebut:
gcloud compute url-maps add-path-matcher EXAMPLE_URL_MAP \ --default-service=GCP_SERVICE_EXAMPLE \ --path-matcher-name=CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE \ --backend-service-path-rules=/CART/ID/1223515=IMAGES
Ganti kode berikut:
EXAMPLE_URL_MAP
: nama peta URL yang adaGCP_SERVICE_EXAMPLE
: nama layanan backend default yang adaCUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE
: nama aturan jalur baru ini/CART/ID/1223515
: jalurIMAGES
: nama layanan backend baru dengan NEG internet terlampir
Daftar rentang IP yang diperlukan ke daftar yang diizinkan
Untuk mengizinkan Load Balancer Aplikasi eksternal mengirim permintaan ke NEG internet Anda, Anda harus membuat kueri data TXT DNS _cloud-eoips.googleusercontent.com
menggunakan alat seperti dig
atau nslookup
.
Misalnya, jalankan perintah dig
berikut:
dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2
Output berisi dua rentang IP, sebagai berikut:
34.96.0.0/20
34.127.192.0/18
Perhatikan rentang IP dan pastikan rentang tersebut diizinkan oleh firewall atau daftar kontrol akses cloud (ACL).
Untuk mengetahui informasi selengkapnya, lihat Mengautentikasi permintaan.
Menghubungkan domain ke load balancer
Setelah load balancer dibuat, catat alamat IP yang terkait dengan load balancer, misalnya, 30.90.80.100
. Untuk mengarahkan domain ke load balancer, buat data A
menggunakan layanan pendaftaran domain. Jika
Anda menambahkan beberapa domain ke sertifikat SSL, Anda harus menambahkan data A
untuk setiap domain, yang semuanya mengarah ke alamat IP load balancer. Misalnya, untuk
membuat data A
bagi www.example.com
dan example.com
, gunakan string berikut:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Jika Anda menggunakan Cloud DNS sebagai penyedia DNS, lihat Menambahkan, mengubah, dan menghapus data.
Menguji Load Balancer Aplikasi eksternal
Setelah mengonfigurasi load balancer, Anda dapat mulai mengirim traffic ke alamat IP load balancer. Jika mengonfigurasi domain, Anda juga dapat mengirim traffic ke nama domain. Namun, penerapan DNS dapat memerlukan waktu untuk menyelesaikan pengujian sehingga Anda dapat memulai dengan menggunakan alamat IP untuk pengujian.
Di Konsol Google Cloud, buka halaman Load balancing.
Klik load balancer yang baru saja dibuat.
Catat alamat IP load balancer.
Jika membuat load balancer HTTP, Anda dapat menguji load balancer menggunakan browser web di
http://IP_ADDRESS
. GantiIP_ADDRESS
dengan alamat IP load balancer. Anda akan diarahkan ke halaman beranda layananhelloworld
.Jika membuat load balancer HTTPS, Anda dapat menguji load balancer menggunakan browser web di
https://IP_ADDRESS
. GantiIP_ADDRESS
dengan alamat IP load balancer. Anda akan diarahkan ke halaman beranda layananhelloworld
.Jika tidak berhasil dan Anda menggunakan sertifikat yang dikelola Google, konfirmasikan bahwa status resource sertifikat Anda AKTIF. Untuk mengetahui informasi selengkapnya, lihat Status resource sertifikat SSL yang dikelola Google.
Atau, Anda dapat menggunakan
curl
dari command line komputer lokal Anda. GantiIP_ADDRESS
dengan alamat IPv4 load balancer.Jika Anda menggunakan sertifikat yang dikelola Google, uji domain yang mengarah ke alamat IP load balancer. Contoh:
curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
Opsional: Jika menggunakan domain kustom, Anda mungkin perlu menunggu hingga setelan DNS yang telah diperbarui diterapkan. Kemudian, uji domain Anda (misalnya,
backend.example.com
) di browser web.Untuk mendapatkan bantuan terkait pemecahan masalah, lihat Memecahkan masalah backend eksternal dan NEG internet.
Menguji Cloud CDN
Pengujian 1: Membuka endpoint bucket secara langsung
Pengujian ini menggunakan perintah time
dan wget
dari VM. Contoh ini mendownload /cart/id/1223515/image.jpg
dari bucket backend.example.com
.
Dari output tersebut, Anda dapat melihat bahwa keseluruhan permintaan memerlukan waktu 780 milidetik. Ini adalah waktu untuk mengambil gambar berukuran 3,3 MB dari Amazon S3 secara langsung.
time wget backend.example.com/cart/id/1223515/image.jpg
--2020-06-26 18:22:46-- backend.example.com/cart/id/1223515/image.jpg Resolving backend.example.com (backend.example.com)... 52.219.120.233 Connecting to backend.example.com (backend.example.com)|52.219.120.233|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.47' /cart/id/1223515/image.jpg.47 100%[==============================================================================================================================================>] 3.29M 6.25MB/s in 0.5s 2020-06-26 18:22:47 (6.25 MB/s) - '/cart/id/1223515/image.jpg.47' saved [3447106/3447106] real 0m0.780s user 0m0.003s sys 0m0.012s
Pengujian 2: Permintaan pertama melalui Cloud CDN
Pengujian ini menggunakan alamat IP load balancer untuk mengambil file /cart/id/1223515/image.jpg
. Karena ini adalah permintaan pertama, permintaan ini seharusnya terlewatkan dan Cloud CDN harus mengambil image dari asalnya, yaitu Amazon S3. Dari outputnya, Anda dapat melihat bahwa permintaan memerlukan waktu 844 md.
time wget http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
--2020-06-26 18:19:27-- http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg Connecting to LOAD_BALANCER_IP_ADDRESS:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.44' /cart/id/1223515/image.jpg.44 100%[==============================================================================================================================================>] 3.29M 8.23MB/s in 0.4s 2020-06-26 18:19:28 (8.23 MB/s) - '/cart/id/1223515/image.jpg.44' saved [3447106/3447106] real 0m0.844s user 0m0.003s sys 0m0.012s
Pengujian 3: Permintaan kedua melalui CDN
Sekarang kita akan membuat satu permintaan lagi menggunakan IP load balancer ini. Kali ini, kita akan mendapatkan respons yang di-cache sehingga akan lebih cepat daripada 2 pengujian pertama.
Kita menggunakan kembali IP LB yang sama LOAD_BALANCER_IP_ADDRESS. Dari output tersebut, kita dapat melihat bahwa permintaan hanya memerlukan waktu 18 md.
time wget http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg
--2020-06-26 18:19:29-- http://LOAD_BALANCER_IP_ADDRESS/cart/id/1223515/image.jpg Connecting to LOAD_BALANCER_IP_ADDRESS:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3447106 (3.3M) [image/jpeg] Saving to: '/cart/id/1223515/image.jpg.45' /cart/id/1223515/image.jpg.45 100%[==============================================================================================================================================>] 3.29M --.-KB/s in 0.008s 2020-06-26 18:19:29 (423 MB/s) - '/cart/id/1223515/image.jpg.45' saved [3447106/3447106] real 0m0.018s user 0m0.001s sys 0m0.010s
Verifikasi menggunakan log
Log untuk Cloud CDN dikaitkan dengan Load Balancer Aplikasi eksternal tempat backend Anda yang mengaktifkan Cloud CDN dilampirkan. Dengan menggunakan log, Anda dapat memeriksa apakah permintaan berhasil atau gagal. Anda dapat membaca lebih lanjut tentang log Cloud CDN di bagian Melihat log.
Batasan
Bucket pihak ketiga dan objek harus bersifat publik. Atau, Anda dapat menjaga bucket dan objek tetap pribadi jika mengonfigurasi autentikasi origin pribadi. Backend eksternal tidak mendukung metode lain untuk autentikasi konten, seperti URL bertanda tangan atau cookie yang ditandatangani.
Saat menggunakan layanan backend eksternal yang mengharapkan nilai tertentu untuk header
Host
permintaan HTTP, Anda harus mengonfigurasi layanan backend untuk menetapkan headerHost
ke nilai yang diharapkan tersebut. Jika Anda tidak mengonfigurasi header permintaan kustom, layanan backend akan mempertahankan headerHost
yang digunakan klien untuk terhubung ke Load Balancer Aplikasi eksternal Google Cloud. Untuk mengetahui informasi umum tentang header kustom, lihat Mengonfigurasi header permintaan kustom. Untuk contoh spesifik, lihat Mengonfigurasi load balancer dengan backend eksternal.
Langkah selanjutnya
- Untuk memeriksa apakah Cloud CDN menayangkan respons dari cache, lihat Log dan metrik untuk penyimpanan dalam cache.
- Untuk mempelajari konten mana yang dapat di-cache atau tidak dapat di-cache, lihat Ringkasan cache.
- Untuk menemukan titik kehadiran GFE, lihat Lokasi cache.