Menyiapkan penyimpanan objek pihak ketiga

Anda dapat menggunakan backend eksternal saat konten dihosting secara lokal atau di cloud lain. Backend eksternal dapat Anda gunakan untuk menyajikan konten dari Cloud CDN Google.

Dokumen ini berisi penjelasan terkait 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 bekerja bersama dengan Load Balancer Aplikasi eksternal.

Arsitektur

Untuk membuat backend eksternal, Anda perlu membuat grup endpoint jaringan (NEG) internet 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-hal berikut:

  1. Manyiapkan bucket penyimpanan pihak ketiga untuk menyajikan konten.
  2. Membuat NEG internet yang menggunakan FQDN bucket.
  3. Mengonfigurasi Load Balancer Aplikasi eksternal dengan NEG internet sebagai backend.
  4. Menguji 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 membuat perubahan pada bucket dan objek Amazon S3.

  1. Pastikan bucket Amazon S3 dan objek di bucket bersifat publik atau Anda telah mengonfigurasi autentikasi server asal pribadi untuk bucket Amazon S3.

  2. Pastikan konten memenuhi persyaratan dapat di-cache yang tercantum dalam Konten yang dapat di-cache. Jika Anda perlu menambahkan metadata objek, baca pusat informasi AWS, misalnya Mengedit metadata objek.

  3. 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.

Membuat NEG internet yang menggunakan nama host bucket

Agar mudah, contoh ini menggunakan FQDN backend.example.com. Pastikan untuk mengganti FQDN ini dengan FQDN bucket penyimpanan pihak ketiga Anda, 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 server asal kustom) di Load Balancer Aplikasi eksternal. Backend eksternal adalah endpoint di luar Google Cloud. Saat menggunakan backend eksternal dengan Load Balancer Aplikasi eksternal, Anda dapat meningkatkan performa menggunakan caching Cloud CDN.

Panduan ini menjelaskan langkah-langkah cara mengonfigurasi Load Balancer Aplikasi eksternal global dengan layanan backend yang mendukung 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, dan 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, baca artikel Menyiapkan Load Balancer Aplikasi klasik dengan backend grup instance terkelola.

Gambar 1 menunjukkan contoh arsitektur.

Gambar 1. Kasus penggunaan bucket S3 untuk backend eksternal.
Gambar 1. Kasus penggunaan bucket S3 untuk backend eksternal.

Dalam diagram, www.example.com memiliki frontend load balancer dengan alamat IP 120.1.1.1. Jika terjadi cache tidak ditemukan, permintaan pengguna untuk /cart/id/1223515 akan diambil dari backend eksternal melalui HTTPS. Semua traffic masuk lainnya akan diarahkan ke layanan backend Google Cloud dengan VM Compute Engine atau ke bucket backend, berdasarkan peta URL.

Sebelum memulai

Sebelum mengikuti panduan ini, pahami hal-hal berikut:

Izin

Untuk mengikuti panduan ini, Anda perlu membuat grup endpoint jaringan (NEG) internet dan membuat atau mengubah Load Balancer Aplikasi eksternal dalam suatu project. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki kedua peran IAM Compute Engine berikut:

Tugas Peran yang diperlukan
Membuat dan mengubah komponen load balancer Network Admin
Membuat dan mengubah NEG Compute Instance Admin

Mengonfigurasi load balancer dengan backend eksternal.

Bagian ini menunjukkan cara mengonfigurasi dan menguji NEG internet.

Ringkasan penyiapan

Penyiapan NEG internet mencakup langkah-langkah berikut:

  • Menentukan endpoint internet di NEG internet.
  • Menambahkan NEG internet sebagai backend ke layanan backend.
  • Menentukan traffic pengguna yang akan dipetakan ke layanan backend ini dengan mengonfigurasi peta URL Load Balancer Aplikasi eksternal Anda.
  • Memasukkan rentang IP yang diperlukan ke dalam daftar yang diizinkan.

Contoh ini membuat resource berikut:

  • Aturan penerusan dengan alamat IP 120.1.1.1 mengarahkan permintaan masuk ke proxy target.
    • networkTier aturan penerusan harus berupa PREMIUM.
  • Proxy target membandingkan tiap permintaan dengan peta URL guna menentukan layanan backend yang sesuai untuk permintaan tersebut.
    • Untuk backend eksternal, proxy target harus berupa TargetHttpProxy atau TargetHttpsProxy. Contoh ini menggunakan TargetHttpsProxy.
  • Cloud CDN yang diaktifkan (opsional) di layanan backend memungkinkan caching 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.

Gambar 2. Cloud CDN dengan backend bucket Amazon S3.
Gambar 2. Cloud CDN dengan backend bucket Amazon S3.

Membuat NEG dan endpoint internet

Konsol

  1. Di konsol Google Cloud , buka halaman Network endpoint groups.

    Buka Network endpoint groups

  2. Klik Create network endpoint group.
  3. Masukkan nama grup endpoint jaringan: example-fqdn-neg.
  4. Untuk Network endpoint group type, pilih Network endpoint group (Internet).
  5. Untuk Default port, masukkan 443.
  6. Untuk New network endpoint, pilih Fully qualified domain name and port.
  7. Untuk FQDN, masukkan backend.example.com.
  8. Untuk Port type, pilih Default, dan pastikan Port number adalah 443.
  9. Klik Create.

gcloud

  1. Buat NEG internet, dan tetapkan --network-endpoint-type ke internet-fqdn-port (nama host dan port dengan backend eksternal yang dapat dijangkau):

    gcloud compute network-endpoint-groups create example-fqdn-neg \
        --network-endpoint-type="internet-fqdn-port" --global
    
  2. Tambahkan endpoint Anda ke NEG. Jika port tidak ditentukan, pemilihan port akan ditetapkan secara default ke port 80 (HTTP) atau 443 (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
    
  3. Cantumkan 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
    

  4. 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 mengupdate load balancer yang ada.

Di load balancer yang ada, layanan default adalah layanan Google Cloud Contoh ini mengubah peta URL yang ada dengan menambahkan pencocok jalur yang mengirim semua permintaan untuk cart/id/1223515 ke layanan backend images, yang terkait dengan NEG internet.

Konsol

Membuat layanan backend dan menambahkan NEG internet

  1. Di konsol Google Cloud , buka halaman Load balancing.

    Buka Load balancing

  2. Untuk menambahkan layanan backend ke load balancer yang ada, pilih Load Balancer Aplikasi klasik Anda, klik Menu , lalu pilih Edit.
  3. Klik Backend configuration.
  4. Di menu Backend services & backend buckets, pilih Create a backend service.
  5. Tetapkan nama layanan backend menjadi images.
  6. Untuk Backend type, pilih Internet network endpoint group.
  7. Pilih protokol yang akan Anda gunakan dari load balancer ke NEG internet. Untuk contoh ini, pilih HTTPS.
  8. Di bagian New backend > Internet network endpoint group, pilih example-fqdn-neg, lalu klik Done.
  9. Pilih Enable Cloud CDN.
  10. Opsional: Ubah setelan cache mode dan TTL.
  11. Di Advanced configurations, di bagian Custom request headers, klik Add header.
    1. Untuk Header name, masukkan Host.
    2. Untuk Header value, masukkan backend.example.com.
  12. Klik Create.
  13. Biarkan jendela tetap terbuka untuk melanjutkan.

Menghubungkan layanan backend ke peta URL yang ada

  1. Klik Host and path rules.
  2. Baris pertama atau beberapa baris pertama memiliki layanan Google Cloud di kolom kanan, dan salah satunya sudah diisi dengan aturan default Any unmatched (default) untuk Hosts dan Paths.
  3. Pastikan ada baris dengan images yang dipilih di kolom kanan. Jika tidak ada, klik Add host and path rule, lalu pilih images. Isi kolom lainnya sebagai berikut:
    1. Di Hosts, masukkan *.
    2. Di Paths, masukkan /cart/id/1223515.

Meninjau dan memfinalisasi

  1. Klik Review and finalize.
  2. Bandingkan setelan Anda dengan yang ingin Anda buat.
  3. Jika semuanya sudah benar, klik Update.

gcloud

  1. Buat layanan backend baru untuk VM:

    gcloud compute backend-services create images \
       --global \
       --enable-cdn \
       --cache-mode=CACHE_MODE \
       --protocol=HTTP2
    

    Tetapkan cache mode dengan mengganti CACHE_MODE dengan salah satu dari berikut:

    • CACHE_ALL_STATIC: otomatis meng-cache konten statis.

    • USE_ORIGIN_HEADERS (default): mewajibkan server asal menyetel header caching yang valid untuk meng-cache konten

    • FORCE_CACHE_ALL: meng-cache semua konten, dengan mengabaikan semua perintah private, no-store, atau no-cache di header respons Cache-Control.

  2. Konfigurasi 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
    
  3. 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
    
  4. Hubungkan layanan backend yang 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 ada
    • GCP_SERVICE_EXAMPLE: nama layanan backend default yang ada
    • CUSTOM_ORIGIN_PATH_MATCHER_EXAMPLE: nama aturan jalur baru ini
    • /CART/ID/1223515: jalur
    • IMAGES: nama layanan backend baru dengan NEG internet yang terhubung

Memasukkan 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.

Contohnya, jalankan perintah dig berikut:

dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2

Outputnya berisi dua rentang IP, sebagai berikut:

34.96.0.0/20
34.127.192.0/18

Catat rentang IP dan pastikan rentang ini diizinkan oleh firewall atau daftar kontrol akses (ACL) cloud Anda.

Untuk mengetahui informasi selengkapnya, baca bagian 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, baca bagian Menambahkan, mengubah, dan menghapus kumpulan data.

Menguji Load Balancer Aplikasi eksternal

Setelah mengonfigurasi load balancer, Anda dapat mulai mengirimkan traffic ke alamat IP load balancer. Jika Anda mengonfigurasi domain, Anda juga dapat mengirim traffic ke nama domain tersebut. Namun, propagasi DNS memerlukan waktu untuk selesai, jadi Anda dapat memulai dengan menggunakan alamat IP untuk pengujian.

  1. Di konsol Google Cloud , buka halaman Load balancing.

    Buka Load balancing

  2. Klik load balancer yang baru saja dibuat.

  3. Catat Alamat IP load balancer.

  4. Jika Anda membuat load balancer HTTP, Anda dapat menguji load balancer menggunakan browser web di http://IP_ADDRESS. Ganti IP_ADDRESS dengan alamat IP load balancer. Anda akan diarahkan ke halaman beranda layanan helloworld.

    Jika Anda membuat load balancer HTTPS, Anda dapat menguji load balancer menggunakan browser web di https://IP_ADDRESS. Ganti IP_ADDRESS dengan alamat IP load balancer. Anda akan diarahkan ke halaman beranda layanan helloworld.

    Jika tidak berhasil dan Anda menggunakan sertifikat yang dikelola Google, pastikan status resource sertifikat Anda adalah ACTIVE. Untuk mengetahui informasi selengkapnya, baca bagian Status resource sertifikat SSL yang dikelola Google.

    Atau, Anda dapat menggunakan curl dari command line komputer lokal Anda. Ganti IP_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
    

  5. Opsional: Jika Anda menggunakan domain kustom, Anda mungkin perlu menunggu hingga setelan DNS yang diupdate diterapkan. Kemudian, uji domain Anda (misalnya, backend.example.com) di browser web.

    Untuk mendapatkan bantuan terkait pemecahan masalah, baca bagian Memecahkan masalah backend eksternal dan NEG internet.

Menguji Cloud CDN

Pengujian 1: Mengakses endpoint bucket secara langsung

Pengujian ini menggunakan perintah time dan wget dari VM. Contoh yang tersedia mendownload /cart/id/1223515/image.jpg dari bucket backend.example.com.

Dari output, Anda dapat melihat bahwa keseluruhan permintaan memerlukan waktu 780 md. 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, cache tidak ditemukan dan Cloud CDN akan mengambil gambar dari server asal, yaitu Amazon S3. Dari output, 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 kembali menggunakan IP LB yang sama, yaitu LOAD_BALANCER_IP_ADDRESS. Dari output, 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

Memverifikasi menggunakan log

Log untuk Cloud CDN dikaitkan dengan Load Balancer Aplikasi eksternal yang terhubung ke backend yang mendukung Cloud CDN. Dengan menggunakan log, Anda dapat memeriksa apakah permintaan ada atau tidak ada di cache Cloud CDN. Anda dapat membaca informasi selengkapnya tentang log Cloud CDN di bagian Melihat log.

Batasan

  • Bucket dan objek pihak ketiga harus bersifat publik. Atau, Anda dapat memastikan bucket dan objek Anda tetap bersifat pribadi jika Anda mengonfigurasi autentikasi server asal pribadi. Backend eksternal tidak mendukung metode lain untuk autentikasi konten, seperti URL yang ditandatangani atau cookie yang ditandatangani.

  • Saat menggunakan layanan backend eksternal yang mengharapkan nilai tertentu untuk header Host permintaan HTTP, Anda harus mengonfigurasi layanan backend untuk menyetel header Host ke nilai yang diharapkan tersebut. Jika Anda tidak mengonfigurasi header permintaan kustom layanan backend akan mempertahankan header Host yang digunakan klien untuk terhubung ke Load Balancer Aplikasi eksternal Google Cloud . Untuk mengetahui informasi umum tentang header kustom, baca bagian Mengonfigurasi header permintaan kustom. Untuk mengetahui contoh spesifik, baca bagian Mengonfigurasi load balancer dengan backend eksternal.

Langkah berikutnya