Menyiapkan Load Balancer Aplikasi eksternal global dengan backend eksternal

Panduan ini menggunakan contoh untuk mengajarkan dasar-dasar penggunaan backend eksternal (terkadang disebut origin kustom) dengan Load Balancer Aplikasi eksternal global. Backend eksternal adalah endpoint yang bersifat eksternal ke Google Cloud. Saat menggunakan backend eksternal dengan Load Balancer Aplikasi eksternal global, Anda dapat meningkatkan performa dengan menggunakan caching Cloud CDN.

Panduan ini menunjukkan cara mengonfigurasi Load Balancer Aplikasi eksternal global dengan layanan backend yang mendukung Cloud CDN yang memproksi permintaan ke server backend eksternal.

Sebelum mengikuti panduan ini, pahami dokumentasi Ringkasan NEG Internet, termasuk batasan.

Diagram arsitektur berikut menunjukkan frontend Load Balancer Aplikasi eksternal global dengan backend eksternal.

Load Balancer Aplikasi eksternal global dengan backend eksternal.
Gambar 1. Load Balancer Aplikasi eksternal global dengan backend eksternal (klik untuk memperbesar).

Izin

Untuk mengikuti panduan ini, Anda perlu membuat NEG internet dan membuat atau mengubah Load Balancer Aplikasi eksternal dalam sebuah project. Anda harus menjadi Pemilik atau Editor project (roles/owner atau roles/editor), atau Anda harus memiliki kedua peran IAM Compute Engine berikut.

Tugas Peran yang diperlukan
Membuat dan mengubah komponen load balancer Compute Network Admin
(roles/compute.networkAdmin)
Membuat dan mengubah NEG Compute Instance Admin
(roles/compute.instanceAdmin)

Menyiapkan lingkungan backend eksternal di luar Google Cloud

Untuk menyiapkan lingkungan Anda, lihat bagian berikut.

Mengonfigurasi endpoint jaringan

Konfigurasi endpoint jaringan untuk mengekspos backend eksternal Anda ke Google Cloud. Pastikan endpoint—baik kombinasi IP:Port atau nama domain yang sepenuhnya memenuhi syarat (FQDN) dan port—dapat dijangkau melalui internet. Endpoint ini kemudian dirujuk dari NEG internet.

Untuk mengetahui persyaratan konfigurasi mendetail untuk endpoint NEG internet, lihat Ringkasan NEG internet.

Mengizinkan backend eksternal menerima traffic dari Google Cloud

Untuk mengizinkan permintaan dari Google Cloud mencapai backend eksternal Anda, Anda harus memasukkan rentang alamat IP yang digunakan Google untuk mengirim permintaan ke backend eksternal ke dalam daftar yang diizinkan. Untuk mencari alamat IP yang perlu diizinkan untuk mengirim traffic ke backend eksternal Anda, kueri data TXT DNS _cloud-eoips.googleusercontent.com menggunakan alat seperti dig atau nslookup.

Contoh:

  • Jalankan perintah nslookup berikut:

    nslookup -q=TXT _cloud-eoips.googleusercontent.com 8.8.8.8
    

    Outputnya akan terlihat seperti berikut:

    Non-authoritative answer:
    _cloud-eoips.googleusercontent.com    text = "v=spf1 ip4:34.96.0.0/20 ip4:34.127.192.0/18 ~all"
    

    Perhatikan rentang CIDR setelah ip4: dan pastikan rentang ini diizinkan oleh aturan firewall atau daftar kontrol akses (ACL) cloud yang dikonfigurasi di backend eksternal Anda.

  • Jalankan perintah dig berikut:

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

    Output-nya berisi dua rentang alamat IP, sebagai berikut:

    34.96.0.0/20
    34.127.192.0/18
    

Menyiapkan Google Cloud lingkungan

Buat Load Balancer Aplikasi eksternal global dengan backend NEG internet.

Mencadangkan alamat IP eksternal

Cadangkan alamat IP eksternal statis global yang digunakan klien untuk menjangkau aplikasi Anda.

Konsol

  1. Di konsol Google Cloud , buka halaman External IP addresses.

    Buka External IP addresses

  2. Klik Reserve external static address untuk memesan alamat IPv4.

  3. Masukkan nama.

  4. Untuk Network Service Tier, pilih Premium.

  5. Untuk IP version, pilih IPv4.

  6. Untuk Type, pilih Global.

  7. Klik Reserve.

gcloud

gcloud compute addresses create LB_IP_ADDRESS_NAME \
    --network-tier=PREMIUM \
    --ip-version=IPV4 \
    --global

Perhatikan alamat IPv4 yang dicadangkan:

gcloud compute addresses describe LB_IP_ADDRESS_NAME \
    --format="get(address)" \
    --global

Menyiapkan NEG 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.

  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. Masukkan Nama domain yang sepenuhnya memenuhi syarat.

  8. Untuk Jenis port, pilih Default, dan pastikan Nomor port adalah 443.

  9. Klik Buat.

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 INTERNET_NEG_NAME \
        --network-endpoint-type="internet-fqdn-port" \
        --global
    
  2. Tambahkan endpoint Anda ke NEG. Jika port tidak ditentukan, pemilihan port secara default adalah 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 INTERNET_NEG_NAME \
        --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME,port=443" \
        --global
    

Membuat load balancer

Konsol

Mulai konfigurasi

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

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
  4. Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
  5. Untuk Global or single region deployment, pilih Best for global workloads, lalu klik Next.
  6. Untuk Load balancer generation, pilih Global external Application Load Balancer, lalu klik Next.
  7. Klik Configure.

Konfigurasi frontend

  1. Klik Frontend configuration.
  2. Masukkan nama.
  3. Untuk membuat load balancer HTTPS, Anda harus memiliki sertifikat SSL. Sebaiknya gunakan sertifikat yang dikelola Google.

    Verifikasi bahwa opsi berikut dikonfigurasi dengan nilai ini.

    Properti Nilai (masukkan nilai atau pilih opsi yang ditentukan)
    Protokol HTTPS
    Network Service Tier Premium
    IP version IPv4
    Alamat IP Pilih alamat IP yang dibuat di langkah Reserve an external IP address.
    Port 443
    Opsional: Waktu tunggu HTTP keep-alive Masukkan nilai waktu tunggu dari 5 hingga 1.200 detik. Nilai default-nya adalah 610 detik.
    Sertifikat

    Pilih sertifikat SSL yang ada atau buat sertifikat baru.

    Untuk membuat load balancer HTTPS, Anda harus memiliki resource sertifikat SSL untuk digunakan di proxy HTTPS. Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri.

    Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain. Data A domain harus di-resolve ke alamat IP load balancer (dalam contoh ini, example-ip). Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud memperoleh, mengelola, dan memperpanjang sertifikat ini secara otomatis. Jika tidak memiliki domain, Anda dapat menggunakan sertifikat SSL yang ditandatangani sendiri untuk pengujian.

    Opsional: Aktifkan Pengalihan HTTP ke HTTPS

    Gunakan kotak centang ini untuk mengaktifkan pengalihan HTTP ke HTTPS.

    Dengan mencentang kotak ini, load balancer HTTP parsial tambahan akan dibuat menggunakan alamat IP yang sama dengan load balancer HTTPS Anda dan mengalihkan permintaan HTTP ke frontend HTTPS load balancer Anda.

    Kotak centang ini hanya dapat dipilih jika protokol HTTPS dipilih dan alamat IP yang dicadangkan digunakan.

    Jika ingin menguji proses ini tanpa menyiapkan resource sertifikat SSL (atau domain seperti yang diperlukan oleh sertifikat yang dikelola Google), Anda dapat menyiapkan load balancer HTTP.

    Untuk membuat load balancer HTTP, pastikan opsi berikut dikonfigurasi dengan nilai ini:

    Properti Nilai (masukkan nilai atau pilih opsi yang ditentukan)
    Protokol HTTP
    Network Service Tier Premium
    IP version IPv4
    Alamat IP Pilih alamat IP yang dibuat di langkah Reserve an external IP address.
    Port 80
    Opsional: Waktu tunggu HTTP keep-alive Masukkan nilai waktu tunggu dari 5 hingga 1.200 detik. Nilai defaultnya adalah 610 detik.
  4. Klik Selesai.

Konfigurasi backend

  1. Klik Backend configuration.
  2. Klik Backend services and backend buckets.
  3. Klik Create a backend service.
  4. Masukkan nama.
  5. Untuk Backend type, pilih Internet network endpoint group.
  6. Untuk Protocol, pilih protokol yang akan Anda gunakan dari load balancer ke NEG internet. Untuk contoh ini, pilih HTTP/2.
  7. Untuk Backends, di jendela New backend, pilih NEG internet yang dibuat pada langkah sebelumnya.
  8. Klik Buat.

Tinjau dan selesaikan

  1. Klik Review and finalize.
  2. Jika semuanya sudah benar, klik Buat.

gcloud

  1. Buat layanan backend:
      gcloud compute backend-services create BACKEND_SERVICE \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --global
      
  2. Tambahkan NEG internet ke layanan backend:
      gcloud compute backend-services add-backend BACKEND_SERVICE \
          --network-endpoint-group=INTERNET_NEG_NAME \
          --global-network-endpoint-group \
          --global
       
  3. Buat peta URL untuk mengarahkan permintaan masuk ke layanan backend:
      gcloud compute url-maps create URL_MAP_NAME \
          --default-service=BACKEND_SERVICE \
          --global
      
  4. Lakukan langkah ini hanya jika Anda ingin membuat load balancer HTTPS. Langkah ini tidak diperlukan untuk load balancer HTTP.

    Untuk membuat load balancer HTTPS, Anda harus memiliki resource sertifikat SSL untuk digunakan di proxy target HTTPS. Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri. Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud memperoleh, mengelola, dan memperpanjang sertifikat ini secara otomatis. Google Cloud

    Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain. Jika tidak memiliki domain, Anda dapat menggunakan sertifikat SSL yang dikelola sendiri untuk pengujian.

    Untuk membuat resource sertifikat SSL yang dikelola Google:
      gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
          --domains DOMAIN
      
    Untuk membuat resource sertifikat SSL yang dikelola sendiri:
      gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \
          --certificate CRT_FILE_PATH \
          --private-key KEY_FILE_PATH
      
  5. Buat proxy HTTP(S) target untuk mengarahkan permintaan ke peta URL Anda.

    Untuk load balancer HTTP, buat proxy target HTTP:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --global
      

    Untuk load balancer HTTPS, buat proxy target HTTPS. Proxy ini merupakan bagian dari load balancer yang menampung sertifikat SSL untuk Load Balancing HTTPS, sehingga Anda juga memuat sertifikat pada langkah ini.

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --ssl-certificates=SSL_CERTIFICATE_NAME \
          --url-map=URL_MAP_NAME \
          --global
      

    Ganti kode berikut:

    • TARGET_HTTP_PROXY_NAME: nama proxy HTTP target.
    • TARGET_HTTPS_PROXY_NAME: nama proxy HTTPS target.
    • SSL_CERTIFICATE_NAME: nama sertifikat SSL.
    • URL_MAP_NAME: nama peta URL.
    Opsional: Untuk Load Balancer Aplikasi eksternal global, Anda dapat menetapkan waktu tunggu HTTP tetap aktif klien menggunakan opsi --http-keep-alive-timeout-sec. Nilai waktu tunggu harus antara 5 hingga 1200 detik. Nilai defaultnya adalah 610 detik.
  6. Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy.

    Untuk load balancer HTTP:

      gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network-tier=PREMIUM \
          --address=LB_IP_ADDRESS_NAME \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --global \
          --ports=80
      

    Untuk load balancer HTTPS:

      gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network-tier=PREMIUM \
          --address=LB_IP_ADDRESS_NAME \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --global \
          --ports=443
      

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

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

Konsol

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

    Buka Load balancing

  2. Klik load balancer yang baru saja Anda buat.

  3. Catat alamat IP load balancer.

  4. Kirim traffic ke load balancer.

    • Jika Anda membuat load balancer HTTP, Anda dapat menguji load balancer dengan membuka http://IP_ADDRESS. Ganti IP_ADDRESS dengan alamat IP load balancer. Anda akan diarahkan ke aplikasi yang Anda jalankan di backend eksternal.

    • Jika Anda membuat load balancer HTTPS, Anda dapat menguji load balancer dengan membuka https://IP_ADDRESS. Ganti IP_ADDRESS dengan alamat IP load balancer. Anda akan diarahkan ke aplikasi yang berjalan di backend eksternal.

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

    Atau, Anda dapat menggunakan curl dari command line mesin lokal. 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 setelan DNS yang diperbarui diterapkan. Kemudian, uji domain Anda di browser web.

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

Konfigurasi tambahan

Bagian ini memperluas contoh konfigurasi untuk memberikan opsi konfigurasi alternatif dan tambahan. Semua tugas bersifat opsional. Anda dapat melakukannya dalam urutan apa pun.

Enable Cloud CDN

Jika Cloud CDN diaktifkan, Load Balancer Aplikasi eksternal hanya mengirimkan permintaan ke backend NEG internet jika terjadi cache miss Cloud CDN.

Konsol

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

    Buka Load balancing.

  2. Klik nama load balancer yang ingin Anda ubah.

  3. Klik Edit.

  4. Klik Backend configuration.

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

  6. Pilih Aktifkan Cloud CDN.

  7. Opsional: Ubah setelan mode cache dan TTL.

  8. Klik Perbarui.

  9. Untuk meninjau perubahan, klik Tinjau dan selesaikan, lalu klik Perbarui.

gcloud

  • Untuk mengaktifkan Cloud CDN di layanan backend, gunakan perintah berikut:
      gcloud compute backend-services update BACKEND_SERVICE \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --global \
          --enable-cdn \
          --cache-mode=CACHE_MODE
      

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

    • CACHE_All_STATIC: otomatis menyimpan dalam cache konten statis.
    • USE_ORIGIN_HEADERS (default): mewajibkan origin untuk menetapkan header caching yang valid untuk menyimpan konten dalam cache.
    • FORCE_CACHE_ALL: meng-cache semua konten, mengabaikan direktif private, no-store, atau no-cache di header respons Cache-Control.

Menggunakan header kustom untuk mengautentikasi permintaan

Untuk mengautentikasi permintaan yang dikirim ke backend eksternal, Anda dapat menyetel header kustom untuk menunjukkan bahwa permintaan berasal dari load balancer Google Cloud . Misalnya, Anda dapat mengonfigurasi backend eksternal agar mengharapkan nilai tertentu untuk header Host permintaan HTTP, dan Anda dapat mengonfigurasi layanan backend untuk menyetel header Host ke nilai yang diharapkan tersebut.

Gunakan langkah-langkah berikut untuk mengonfigurasi layanan backend guna menambahkan header Host kustom ke setiap permintaan.

Konsol

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

    Buka Load balancing.

  2. Klik nama load balancer yang ingin Anda ubah.

  3. Klik Edit.

  4. Klik Backend configuration.

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

  6. Klik Konfigurasi lanjutan.

  7. Untuk Header permintaan kustom, klik Tambahkan header:

    1. Untuk Header name, masukkan Host.
    2. Untuk Nilai header, masukkan FQDN_NEG_ENDPOINT.
  8. Klik Perbarui.

  9. Untuk meninjau perubahan, klik Tinjau dan selesaikan, lalu klik Perbarui.

gcloud

  • Gunakan perintah berikut untuk mengonfigurasi layanan backend guna menambahkan header `Host` kustom ke setiap permintaan.
      gcloud compute backend-services update BACKEND_SERVICE \
          --custom-request-header "Host: HEADER_VALUE" \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --global
      

Pastikan Anda juga mengonfigurasi backend eksternal untuk mengharapkan header Host sehingga dapat mengautentikasi permintaan masuk.

Untuk mengetahui informasi umum tentang header permintaan kustom, lihat Mengonfigurasi header permintaan kustom. Untuk metode autentikasi lainnya, lihat Mengautentikasi permintaan ke backend eksternal.

Mengaktifkan IAP di Load Balancer Aplikasi eksternal

Catatan: IAP tidak kompatibel dengan Cloud CDN.

Anda dapat mengonfigurasi IAP agar diaktifkan atau dinonaktifkan (default). Jika diaktifkan, Anda harus memberikan nilai untuk oauth2-client-id dan oauth2-client-secret.

Untuk mengaktifkan IAP, perbarui layanan backend untuk menyertakan tanda --iap=enabled dengan oauth2-client-id dan oauth2-client-secret.

gcloud compute backend-services update BACKEND_SERVICE_NAME \
    --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \
    --global

Secara opsional, Anda dapat mengaktifkan IAP untuk resource Compute Engine menggunakan Google Cloud konsol, gcloud CLI, atau API.

Memperbarui waktu tunggu keep-alive HTTP klien

Load balancer yang dibuat pada langkah sebelumnya telah dikonfigurasi dengan nilai default untuk waktu tunggu keep-alive HTTP klien.

Untuk memperbarui waktu tunggu keep-alive HTTP klien, gunakan petunjuk berikut.

Konsol

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

    Buka Load balancing.

  2. Klik nama load balancer yang ingin Anda ubah.
  3. Klik Edit.
  4. Klik Frontend configuration.
  5. Luaskan Fitur lanjutan. Untuk HTTP keepalive timeout, masukkan nilai waktu tunggu.
  6. Klik Perbarui.
  7. Untuk meninjau perubahan, klik Tinjau dan selesaikan, lalu klik Perbarui.

gcloud

Untuk load balancer HTTP, perbarui proxy HTTP target menggunakan perintah gcloud compute target-http-proxies update:

    gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --global
    

Untuk load balancer HTTPS, perbarui proxy HTTPS target menggunakan perintah gcloud compute target-https-proxies update:

    gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \
        --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
        --global
    

Ganti kode berikut:

  • TARGET_HTTP_PROXY_NAME: nama proxy HTTP target.
  • TARGET_HTTPS_PROXY_NAME: nama proxy HTTPS target.
  • HTTP_KEEP_ALIVE_TIMEOUT_SEC: nilai waktu tunggu HTTP keep-alive dari 5 hingga 600 detik.

Langkah berikutnya