Menyiapkan backend eksternal dengan NEG internet

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.

Gambar 1. Kasus penggunaan umum untuk backend eksternal.
Gambar 1. Kasus penggunaan umum untuk backend eksternal.

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:

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 harus PREMIUM.
  • 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 atau TargetHttpsProxy. Contoh ini menggunakan TargetHttpsProxy.
  • 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.

Gambar 2. Cloud CDN dengan backend lokal.
Gambar 2. Cloud CDN dengan backend lokal.

Membuat endpoint NEG dan 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 tempat backend eksternal Anda 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 secara default akan ditetapkan 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. 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
    

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

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

    Buka Load balancing

  2. Untuk menambahkan layanan backend ke load balancer yang sudah 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 ke images.
  6. Untuk Backend type, pilih Internet network endpoint group.
  7. Pilih protokol yang ingin 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 Aktifkan Cloud CDN.
  10. Opsional: Ubah setelan mode cache dan TTL.
  11. Di bagian 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.

Melampirkan layanan backend ke peta URL yang ada

  1. Klik Host and path rules.
  2. 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.
  3. Pastikan ada baris dengan images yang dipilih di kolom sebelah kanan. Jika tidak ada, klik Add host and path rule, lalu pilih images. Isi kolom lainnya sebagai berikut:
    1. Pada Hosts, masukkan *.
    2. Di Paths, masukkan /cart/id/1223515.

Melakukan peninjauan dan penyelesaian

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

gcloud

  1. 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 statis

    • USE_ORIGIN_HEADERS (default): mengharuskan origin menetapkan header cache yang valid untuk menyimpan konten dalam cache

    • FORCE_CACHE_ALL: menyimpan semua konten ke dalam cache, mengabaikan perintah private, no-store, atau no-cache di header respons Cache-Control

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

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

Nonaktifkan Cloud CDN

Konsol

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

    Buka Load balancing.

  2. Klik nama load balancer yang ingin diubah.

  3. Klik Edit.

  4. Klik Backend configuration.

  5. Untuk layanan backend dengan backend NEG internet, klik Edit.

  6. Hapus centang pada kotak Aktifkan Cloud CDN.

  7. Untuk meninjau perubahan, klik Review and finalize, lalu klik Update.

gcloud

gcloud compute backend-services update BACKEND_SERVICE_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