Menyiapkan Load Balancer Aplikasi klasik dengan Cloud Run, App Engine, atau Cloud Functions

Halaman ini menunjukkan cara membuat Load Balancer Aplikasi eksternal untuk mengarahkan permintaan ke backend serverless. Di sini, istilah serverless mengacu pada produk komputasi serverless berikut:

  • App Engine
  • Cloud Functions
  • Cloud Run

Integrasi Load Balancer Aplikasi eksternal dengan Gateway API memungkinkan backend serverless memanfaatkan semua fitur yang disediakan oleh Cloud Load Balancing. Untuk mengonfigurasi Load Balancer Aplikasi eksternal guna mengarahkan traffic ke Gateway API, baca artikel Memulai Load Balancer Aplikasi eksternal untuk Gateway API. Dukungan Load Balancer Aplikasi Eksternal untuk Gateway API berada di Pratinjau.

NEG Serverless memungkinkan Anda menggunakan aplikasi serverless Google Cloud dengan Load Balancer Aplikasi eksternal. Setelah Anda mengonfigurasi load balancer dengan backend NEG serverless, permintaan ke load balancer akan dirutekan ke backend aplikasi serverless.

Untuk mempelajari NEG serverless lebih lanjut, baca Ringkasan NEG Tanpa Server.

Sebelum memulai

  1. Deploy layanan App Engine, Cloud Functions, atau Cloud Run.
  2. Instal Google Cloud CLI jika Anda belum melakukannya.
  3. Mengonfigurasi izin.
  4. Tambahkan resource sertifikat SSL.

Men-deploy layanan App Engine, Cloud Functions, atau Cloud Run

Petunjuk di halaman ini mengasumsikan bahwa Anda sudah menjalankan layanan Cloud Run, Cloud Functions, atau App Engine.

Untuk contoh di halaman ini, kami telah menggunakan panduan memulai Cloud Run Python untuk men-deploy layanan Cloud Run di region us-central1. Bagian selanjutnya dari halaman ini akan menunjukkan cara menyiapkan Load Balancer Aplikasi eksternal yang menggunakan backend NEG serverless untuk mengarahkan permintaan ke layanan ini.

Jika Anda belum men-deploy aplikasi serverless, atau jika ingin mencoba NEG serverless dengan aplikasi contoh, gunakan salah satu panduan memulai berikut. Anda dapat membuat aplikasi serverless di region mana pun, tetapi Anda harus menggunakan region yang sama nanti untuk membuat NEG serverless dan load balancer.

Cloud Run

Untuk membuat aplikasi Halo Dunia sederhana, kemas ke dalam image container, lalu deploy image container ke Cloud Run. Lihat Panduan Memulai: Mem-build dan Men-deploy.

Jika Anda sudah mengupload container contoh ke Container Registry, lihat Panduan Memulai: Men-deploy Container Contoh Bawaan.

Cloud Functions

Lihat Panduan Memulai Cloud Functions: Python.

App Engine

Lihat panduan memulai App Engine berikut untuk Python 3:

Menginstal Google Cloud CLI.

Instal Google Cloud CLI. Lihat Ringkasan gcloud untuk mengetahui informasi konseptual dan penginstalan tentang alat ini.

Jika Anda belum menjalankan gcloud CLI sebelumnya, jalankan gcloud init terlebih dahulu untuk melakukan inisialisasi direktori gcloud Anda.

Konfigurasikan izin

Untuk mengikuti panduan ini, Anda perlu membuat NEG serverless dan membuat load balancer HTTP(S) eksternal di sebuah project. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki peran IAM Compute Engine berikut:

Tugas Peran yang Diperlukan
Membuat komponen jaringan dan load balancer Admin Jaringan
Membuat dan mengubah NEG Compute Instance Admin
Membuat dan mengubah sertifikat SSL Security Admin

Mencadangkan alamat IP eksternal

Setelah layanan Anda aktif dan berjalan, siapkan alamat IP eksternal statis global yang digunakan pelanggan untuk menjangkau load balancer Anda.

Konsol

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

    Buka External IP addresses

  2. Klik Reserve external static IP address.

  3. Untuk Name, masukkan example-ip.

  4. Untuk Tingkat layanan jaringan, pilih Premium.

  5. Untuk IP version, pilih IPv4.

  6. Untuk Jenis, pilih Global.

  7. Klik Reserve.

gcloud

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

Perhatikan alamat IPv4 yang dicadangkan:

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

Membuat resource sertifikat SSL

Untuk membuat load balancer HTTPS, Anda harus menambahkan resource sertifikat SSL ke front end load balancer. Buat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri.

  • Sertifikat yang dikelola Google. Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud mendapatkan, mengelola, dan memperpanjang sertifikat ini secara otomatis. Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain dan data DNS untuk domain tersebut agar sertifikat dapat disediakan. Jika belum memiliki domain, Anda bisa mendapatkannya dari Google Domains. Untuk mengetahui informasi selengkapnya, lihat Memulai Google Domains. Selain itu, Anda perlu memperbarui data A DNS domain agar mengarah ke alamat IP load balancer yang dibuat di langkah sebelumnya (example-ip). Untuk petunjuk mendetail, lihat Menggunakan sertifikat yang dikelola Google.

  • Sertifikat yang ditandatangani sendiri. Jika saat ini Anda tidak ingin menyiapkan domain, Anda dapat menggunakan sertifikat SSL yang ditandatangani sendiri untuk melakukan pengujian.

Contoh ini mengasumsikan bahwa Anda telah membuat resource sertifikat SSL.

Jika ingin menguji proses ini tanpa membuat resource sertifikat SSL (atau domain seperti yang diwajibkan oleh sertifikat yang dikelola Google), Anda tetap dapat menggunakan petunjuk di halaman ini untuk menyiapkan load balancer HTTP.

Membuat load balancer

Dalam diagram berikut, load balancer menggunakan backend NEG serverless untuk mengarahkan permintaan ke layanan Cloud Run serverless. Untuk contoh ini, kami telah menggunakan panduan memulai Cloud Run Python untuk men-deploy layanan Cloud Run.

Arsitektur Load Balancer Aplikasi Eksternal untuk aplikasi Cloud Run.
Arsitektur Load Balancer Aplikasi Eksternal untuk aplikasi Cloud Run (klik untuk memperbesar).

Karena health check tidak didukung untuk layanan backend dengan backend NEG serverless, Anda tidak perlu membuat aturan firewall yang mengizinkan health check jika load balancer hanya memiliki backend NEG serverless.

Konsol

Memulai konfigurasi Anda

  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 (eksternal), lalu klik Next.
  5. Untuk Global or single region deployment, pilih Best for global Workload, lalu klik Next.
  6. Untuk Load balancer generasi, pilih classic Application Load Balancer dan klik Next.
  7. Klik Konfigurasikan.

Konfigurasi dasar

  1. Untuk nama load balancer, masukkan serverless-lb.
  2. Biarkan jendela tetap terbuka untuk melanjutkan.

Konfigurasi frontend

  1. Klik Frontend configuration.
  2. Untuk Name, masukkan nama.
  3. Untuk membuat load balancer HTTPS, Anda harus memiliki sertifikat SSL (gcloud compute ssl-certificates list).

    Sebaiknya gunakan sertifikat yang dikelola Google seperti yang dijelaskan sebelumnya.

  4. Untuk mengonfigurasi Load Balancer Aplikasi eksternal, isi kolom sebagai berikut.

    Pastikan opsi berikut dikonfigurasi dengan nilai ini:

    Properti Nilai (ketik nilai atau pilih opsi yang ditentukan)
    Protokol HTTPS
    Network Service Tier Premium
    IP version IPv4
    Alamat IP example-ip
    Port 443
    Certificate 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). Direkomendasikan untuk menggunakan sertifikat yang dikelola Google karena Google Cloud akan mendapatkan, mengelola, dan memperpanjang sertifikat ini secara otomatis. Jika tidak memiliki domain, Anda dapat menggunakan sertifikat SSL yang ditandatangani sendiri untuk pengujian.
    Opsional: Mengaktifkan Pengalihan HTTP ke HTTPS Gunakan kotak centang ini untuk mengaktifkan pengalihan HTTP ke HTTPS.

    Jika kotak ini dicentang, load balancer HTTP sebagian tambahan akan menggunakan alamat IP yang sama dengan load balancer HTTPS dan akan mengalihkan permintaan HTTP ke frontend HTTPS load balancer.

    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 diwajibkan 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 (ketik nilai atau pilih opsi yang ditentukan)
    Protokol HTTP
    Network Service Tier Premium
    IP version IPv4
    Alamat IP example-ip
    Port 80
  5. Klik Done.

Konfigurasi backend

  1. Klik Backend configuration.
  2. Dalam daftar Backend services & backend buckets, klik Create a backend service.
  3. Untuk Name, masukkan nama.
  4. Di Backend type, pilih Serverless network endpoint group.
  5. Jangan ubah Protocol. Parameter ini diabaikan.
  6. Di bagian Backends, untuk New backend, pilih Create Serverless network endpoint group.
  7. Untuk Name, masukkan nama.
  8. Di Region, pilih us-central1, lalu pilih Cloud Run.
  9. Pilih Pilih nama layanan.
  10. Dalam daftar Service, pilih layanan Cloud Run yang ingin Anda buatkan load balancernya.
  11. Klik Create.
  12. Di bagian New backend, klik Done.
  13. Klik Create.

Aturan perutean

Aturan pemilihan rute menentukan cara traffic Anda diarahkan. Untuk mengonfigurasi perutean, Anda akan menyiapkan aturan host dan pencocok jalur, yang merupakan komponen konfigurasi dari peta URL Load Balancer Aplikasi eksternal.

  1. Klik Host and path rules.

  2. Pertahankan host dan jalur default. Untuk contoh ini, semua permintaan mengarah ke layanan backend yang dibuat di langkah sebelumnya.

Meninjau konfigurasi

  1. Klik Review and finalize.
  2. Tinjau semua setelan.
  3. Opsional: Klik Equivalent Code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
  4. Klik Create.
  5. Tunggu load balancer dibuat.
  6. Klik nama load balancer (serverless-lb).
  7. Catat alamat IP load balancer untuk tugas berikutnya. Nama ini disebut sebagai IP_ADDRESS.

gcloud

  1. Buat NEG serverless untuk aplikasi serverless Anda.

    Untuk membuat NEG serverless dengan layanan Cloud Run:

       gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \
           --region=us-central1 \
           --network-endpoint-type=serverless  \
           --cloud-run-service=CLOUD_RUN_SERVICE_NAME
       
    Untuk opsi lainnya, lihat panduan referensi gcloud untuk gcloud compute network-endpoint-groups create.
  2. Buat layanan backend.
       gcloud compute backend-services create BACKEND_SERVICE_NAME \
           --load-balancing-scheme=EXTERNAL \
           --global
       
  3. Tambahkan NEG serverless sebagai backend ke layanan backend:
       gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
           --global \
           --network-endpoint-group=SERVERLESS_NEG_NAME \
           --network-endpoint-group-region=us-central1
       
  4. Buat peta URL untuk mengarahkan permintaan masuk ke layanan backend:
       gcloud compute url-maps create URL_MAP_NAME \
           --default-service BACKEND_SERVICE_NAME
       

    Contoh peta URL ini hanya menargetkan satu layanan backend yang mewakili satu aplikasi serverless, sehingga kita tidak perlu menyiapkan aturan host atau pencocok jalur. Jika memiliki lebih dari satu layanan backend, Anda dapat menggunakan aturan host untuk mengarahkan permintaan ke layanan yang berbeda berdasarkan nama host, dan Anda juga dapat menyiapkan pencocok jalur untuk mengarahkan permintaan ke berbagai layanan berdasarkan jalur permintaan.

  5. 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 mendapatkan, mengelola, dan memperpanjang sertifikat ini secara otomatis.

    Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain. Jika tidak memiliki domain, Anda dapat menggunakan sertifikat SSL yang ditandatangani 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
       
  6. Buat proxy HTTP(S) target untuk merutekan 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
       

    Untuk load balancer HTTPS, buat proxy target HTTPS. Proxy adalah bagian dari load balancer yang menyimpan 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
       
  7. 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 \
           --network-tier=PREMIUM \
           --address=example-ip \
           --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 \
           --network-tier=PREMIUM \
           --address=example-ip \
           --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 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 internal.

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

  5. Untuk load balancer HTTPS, Anda dapat menguji load balancer menggunakan browser web dengan membuka 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, konfirmasi bahwa status resource sertifikat Anda AKTIF. Untuk mengetahui informasi selengkapnya, lihat Status resource sertifikat SSL yang dikelola Google.
    Jika Anda menggunakan sertifikat yang ditandatangani sendiri untuk pengujian, browser akan menampilkan peringatan. Anda harus secara eksplisit memerintahkan browser untuk menerima sertifikat yang ditandatangani sendiri. Klik peringatan untuk melihat halaman sebenarnya.

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

Menyiapkan load balancing multi-region

Pada contoh yang dijelaskan sebelumnya di halaman ini, kita hanya memiliki satu layanan Cloud Run yang berfungsi sebagai backend di region us-central1. Karena NEG serverless hanya dapat mengarah ke satu endpoint dalam satu waktu, load balancing tidak dilakukan di beberapa region. Load Balancer Aplikasi eksternal hanya berfungsi sebagai frontend, dan menjadi proxy traffic ke endpoint aplikasi helloworld yang ditentukan. Namun, Anda mungkin ingin menyalurkan aplikasi Cloud Run dari lebih dari satu region untuk mengurangi latensi pengguna akhir.

Jika layanan backend memiliki beberapa NEG serverless yang terpasang padanya, load balancer akan menyeimbangkan traffic dengan meneruskan permintaan ke NEG serverless di region terdekat yang tersedia. Namun, layanan backend hanya dapat berisi satu NEG serverless per region. Agar layanan Cloud Run tersedia dari beberapa region, Anda perlu menyiapkan perutean lintas region. Anda dapat menggunakan satu skema URL yang berfungsi di mana saja di seluruh dunia, tetapi melayani permintaan pengguna dari region yang paling dekat dengan pengguna.

Untuk menyiapkan penyaluran multi-region, Anda harus menggunakan tingkat jaringan Premium untuk memastikan bahwa semua deployment Cloud Run regional kompatibel dan siap untuk menyalurkan traffic dari region mana pun.

Untuk menyiapkan load balancer multi-region:

  1. Siapkan dua layanan Cloud Run di region yang berbeda. Anggaplah Anda telah men-deploy dua layanan Cloud Run: satu ke region di AS, dan satu lagi ke region di Eropa.
  2. Buat Load Balancer Aplikasi eksternal dengan penyiapan berikut:
    1. Siapkan layanan backend global dengan dua NEG serverless:
      1. Buat NEG pertama di region yang sama dengan layanan Cloud Run yang di-deploy di AS.
      2. Buat NEG kedua di region yang sama dengan layanan Cloud Run yang di-deploy di Eropa.
    2. Siapkan konfigurasi frontend Anda dengan Paket Layanan Jaringan Premium.

Penyiapan yang dihasilkan ditampilkan dalam diagram berikut.

Pemilihan rute multi-region untuk aplikasi serverless.
Pemilihan rute multi-region untuk aplikasi serverless

Bagian ini dibuat berdasarkan penyiapan load balancer yang dijelaskan sebelumnya di halaman ini, tempat Anda membuat satu NEG serverless di region us-central1 yang mengarah ke layanan Cloud Run di region yang sama. Contoh ini juga mengasumsikan bahwa Anda telah membuat layanan Cloud Run kedua di region europe-west1. NEG serverless kedua yang Anda buat akan mengarah ke layanan Cloud Run ini di region europe-west1.

Dalam contoh ini, Anda akan menyelesaikan langkah-langkah berikut:

  1. Buat NEG serverless kedua di region europe-west1.
  2. Lampirkan NEG serverless kedua ke layanan backend.

Untuk menambahkan NEG serverless kedua ke layanan backend yang ada, ikuti langkah-langkah berikut.

Konsol

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

    Buka Load balancing

  2. Klik nama load balancer yang layanan backend-nya ingin Anda edit.

  3. Di halaman Load balancer details, klik Edit.

  4. Di halaman Edit global external Application Load Balancer, klik Backend configuration.

  5. Di halaman Backend configuration, klik Edit untuk layanan backend yang ingin diubah.

  6. Di bagian Backends, klik Add a backend.

  7. Dalam daftar Serverless network endpoint groups, pilih Create Serverless network endpoint group.

  8. Masukkan nama untuk NEG serverless.

  9. Untuk Region, pilih europe-west1.

  10. Untuk Serverless network endpoint group type, pilih Cloud Run, lalu lakukan hal berikut:

    1. Pilih opsi Pilih Layanan.
    2. Dalam daftar Service, pilih layanan Cloud Run yang ingin Anda buatkan load balancernya.
  11. Klik Create.

  12. Di halaman New backend, klik Done.

  13. Klik Save.

  14. Untuk mengupdate layanan backend, klik Update.

  15. Untuk memperbarui load balancer, di halaman Edit global external Application Load Balancer, klik Update.

gcloud

  1. Buat NEG serverless kedua di region yang sama tempat layanan Cloud Run di-deploy.

    gcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME_2 \
      --region=europe-west1 \
      --network-endpoint-type=SERVERLESS \
      --cloud-run-service=CLOUD_RUN_SERVICE_2
    

    Ganti kode berikut:

    • SERVERLESS_NEG_NAME_2: nama NEG serverless kedua
    • CLOUD_RUN_SERVICE_2: nama layanan Cloud Run
  2. Tambahkan NEG serverless kedua sebagai backend ke layanan backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
      --global \
      --network-endpoint-group=SERVERLESS_NEG_NAME_2 \
      --network-endpoint-group-region=europe-west1
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama layanan backend
    • SERVERLESS_NEG_NAME_2: nama NEG serverless kedua

Menggunakan langganan push Pub/Sub terautentikasi dengan deployment Cloud Run multi-region

Untuk permintaan push terautentikasi, Cloud Run mengharapkan kolom audiens khusus region secara default. Dalam kasus deployment Cloud Run multi-region, jika permintaan push dirutekan ke layanan Cloud Run di region yang berbeda, verifikasi token JWT akan gagal karena ketidakcocokan audience.

Untuk mengatasi pembatasan spesifik per wilayah ini:

  1. Konfigurasikan audiens kustom yang sama untuk deployment layanan di berbagai region.
  2. Konfigurasikan pesan push Pub/Sub untuk menggunakan audiens kustom sebagai audience dalam token JWT.

Menyiapkan pemilihan rute regional

Alasan umum untuk menayangkan aplikasi dari beberapa region adalah untuk memenuhi persyaratan lokalitas data. Misalnya, Anda mungkin ingin memastikan bahwa permintaan yang dibuat oleh pengguna Eropa selalu disalurkan dari region yang berlokasi di Eropa. Untuk menyiapkannya, Anda memerlukan skema URL dengan URL terpisah untuk pengguna Uni Eropa dan non-Uni Eropa, dan mengarahkan pengguna Uni Eropa Anda ke URL Uni Eropa.

Dalam skenario seperti ini, Anda akan menggunakan peta URL untuk merutekan permintaan dari URL tertentu ke wilayah yang sesuai. Dengan penyiapan seperti itu, permintaan yang ditujukan untuk satu region tidak akan pernah dikirim ke region lain. Hal ini menyediakan isolasi antar-region. Di sisi lain, saat suatu region gagal, permintaan tidak dirutekan ke region lain. Jadi, pengaturan ini tidak meningkatkan ketersediaan layanan Anda.

Untuk menyiapkan perutean regional, Anda harus menggunakan tingkat jaringan Premium agar dapat menggabungkan region yang berbeda dalam satu aturan penerusan.

Untuk menyiapkan load balancer dengan perutean regional:

  1. Siapkan dua layanan Cloud Run di region yang berbeda. Anggaplah Anda telah men-deploy dua layanan Cloud Run: hello-world-eu ke region di Eropa, dan hello-world-us ke region di AS.
  2. Buat Load Balancer Aplikasi eksternal dengan penyiapan berikut:
    1. Siapkan layanan backend dengan NEG serverless di Eropa. NEG serverless harus dibuat di region yang sama dengan layanan Cloud Run yang di-deploy di Eropa.
    2. Siapkan layanan backend kedua dengan NEG serverless lain di AS. NEG serverless ini harus dibuat di region yang sama dengan layanan Cloud Run yang di-deploy di AS.
    3. Siapkan peta URL dengan aturan host dan jalur yang sesuai agar satu kumpulan URL dirutekan ke layanan backend Eropa sementara semua permintaan dirutekan ke layanan backend AS.
    4. Siapkan konfigurasi frontend Anda dengan tingkat jaringan Premium.

Penyiapan lainnya mungkin sama seperti yang dijelaskan sebelumnya. Konfigurasi yang dihasilkan akan terlihat seperti ini:

Perutean regional untuk aplikasi serverless tanpa failover.
Perutean regional untuk aplikasi serverless tanpa failover

Menggunakan mask URL

Saat membuat NEG serverless, daripada memilih layanan Cloud Run tertentu, Anda dapat menggunakan URL mask untuk mengarah ke beberapa layanan yang ditayangkan di domain yang sama. Masker URL adalah template skema URL Anda. NEG serverless akan menggunakan template ini untuk mengekstrak nama layanan dari URL permintaan masuk dan memetakan permintaan ke layanan yang sesuai.

Masker URL sangat berguna jika layanan Anda dipetakan ke domain kustom, bukan alamat default yang disediakan Google Cloud untuk layanan yang di-deploy. Dengan URL mask, Anda dapat menargetkan beberapa layanan dan versi dengan satu aturan meskipun aplikasi Anda menggunakan pola URL kustom.

Jika Anda belum melakukannya, pastikan Anda membaca Ringkasan NEG Tanpa Server: Masker URL.

Membuat mask URL

Untuk membuat mask URL bagi load balancer, mulailah dengan URL layanan Anda. Untuk contoh ini, kita akan menggunakan contoh aplikasi serverless yang berjalan di https://example.com/login. Ini adalah URL tempat layanan login aplikasi akan ditayangkan.

  1. Hapus http atau https dari URL. Anda memiliki example.com/login.
  2. Ganti nama layanan dengan placeholder untuk URL mask.
    1. Cloud Run: Ganti nama layanan Cloud Run dengan placeholder <service>. Jika layanan Cloud Run memiliki tag yang terkait dengannya, ganti nama tag dengan placeholder <tag>. Dalam contoh ini, mask URL yang tersisa adalah example.com/<service>.
    2. Cloud Functions: Ganti nama fungsi dengan placeholder <function>. Dalam contoh ini, mask URL yang tersisa adalah example.com/<function>.
    3. App Engine: Ganti nama layanan dengan placeholder <service>. Jika layanan memiliki versi yang terkait dengannya, ganti versi dengan placeholder <version>. Dalam contoh ini, mask URL yang tersisa adalah example.com/<service>.
    4. Gateway API: Ganti nama gateway dengan placeholder <gateway>. Dalam contoh ini, mask URL yang tersisa adalah example.com/<gateway>.
  3. (Opsional) Jika nama layanan (atau fungsi, versi, atau tag) dapat diekstrak dari bagian jalur URL,domain dapat dihilangkan. Bagian jalur mask URL dibedakan berdasarkan karakter / pertama. Jika / tidak ada dalam mask URL, mask akan dianggap mewakili host saja. Oleh karena itu, untuk contoh ini, mask URL dapat dikurangi menjadi /<service>, /<gateway>, atau /<function>.

    Demikian pula, jika nama layanan dapat diekstrak dari bagian host URL, Anda dapat menghilangkan seluruh jalur dari mask URL.

    Anda juga dapat menghilangkan komponen host atau subdomain yang muncul sebelum placeholder pertama dan komponen jalur apa pun yang muncul setelah placeholder terakhir. Dalam kasus tersebut, placeholder mencatat informasi yang diperlukan untuk komponen.

Berikut adalah beberapa contoh lain yang menunjukkan aturan tersebut:

Cloud Run

Tabel ini mengasumsikan bahwa Anda memiliki domain kustom bernama example.com dan semua layanan Cloud Run Anda sedang dipetakan ke domain ini menggunakan Load Balancer Aplikasi eksternal.

Layanan, Nama tag URL domain kustom Masker URL
layanan: login https://login-home.example.com/web <layanan>-home.example.com
layanan: login https://example.com/login/web example.com/<service> atau /<service>
service: login, tag: uji https://test.login.example.com/web <tag>.<layanan>.example.com
service: login, tag: uji https://example.com/home/login/test example.com/home/<service>/<tag> atau /home/<service>/<tag>
service: login, tag: uji https://test.example.com/home/login/web <tag>.example.com/home/<layanan>

Cloud Functions

Tabel ini mengasumsikan bahwa Anda memiliki domain kustom bernama example.com dan semua layanan Cloud Functions Anda sedang dipetakan ke domain ini.

Nama Fungsi URL domain kustom Penyamaran URL
login https://example.com/login /<function>
login https://example.com/home/login /home/<function>
login https://login.example.com <function>.example.com
login https://login.home.example.com <function>.home.example.com

App Engine

Tabel ini mengasumsikan bahwa Anda memiliki domain kustom bernama example.com dan semua layanan App Engine Anda sedang dipetakan ke domain ini.

Nama layanan, versi URL domain kustom Masker URL
layanan: login https://login.example.com/web <layanan>.example.com
layanan: login https://example.com/home/login/web example.com/home/<service>, atau /home/<service>
service: login, versi: uji coba https://test.example.com/login/web <versi>.example.com/<layanan>
service: login, versi: uji coba https://example.com/login/test example.com/<layanan>/<versi>

Gateway API

Tabel ini mengasumsikan bahwa Anda memiliki domain kustom bernama example.com dan semua layanan Gateway API Anda dipetakan ke domain ini.

Gateway name URL domain kustom(Pratinjau) Gateway API Masker URL
login https://example.com/login /<gateway>
login https://example.com/home/login /home/<gateway>
login https://login.example.com <gateway>.example.com
login https://login.home.example.com <gateway>.home.example.com

Membuat NEG serverless dengan mask URL

Konsol

Untuk load balancer baru, Anda dapat menggunakan proses menyeluruh yang sama seperti yang dijelaskan sebelumnya dalam topik ini. Saat mengonfigurasi layanan backend, masukkan mask URL, bukan memilih layanan tertentu.

Jika sudah memiliki load balancer, Anda dapat mengedit konfigurasi backend dan mengarahkan NEG serverless ke URL mask, bukan layanan tertentu.

Untuk menambahkan NEG tanpa server berbasis mask URL ke layanan backend yang ada:

  1. Buka halaman Load balancing di Konsol Google Cloud.
    Buka halaman Load balancing
  2. Klik nama load balancer yang layanan backend-nya ingin Anda edit.
  3. Di halaman Load balancer details, klik Edit .
  4. Di halaman Edit global external Application Load Balancer, klik Backend configuration.
  5. Di halaman Backend configuration, klik Edit untuk layanan backend yang ingin diubah.
  6. Klik Add backend.
  7. Pilih Create Serverless network endpoint group.
    1. Untuk Name, masukkan helloworld-serverless-neg.
    2. Di bagian Region, pilih us-central1.
    3. Di bagian Serverless network endpoint group type, pilih platform tempat pembuatan aplikasi (atau layanan atau fungsi) serverless Anda.
      1. Pilih Gunakan Masker URL.
      2. Masukkan mask URL. Untuk petunjuk cara membuat mask URL, lihat Membuat mask URL.
      3. Klik Create.
  8. Di bagian New backend, klik Done.
  9. Klik Perbarui.

gcloud: Cloud Run

Untuk membuat NEG Tanpa Server dengan contoh URL mask example.com/<service>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
  --region=us-central1 \
  --network-endpoint-type=serverless \
  --cloud-run-url-mask="example.com/<service>"

gcloud: Cloud Functions

Untuk membuat NEG Tanpa Server dengan contoh URL mask example.com/<service>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
 --region=us-central1 \
 --network-endpoint-type=serverless \
 --cloud-function-url-mask="example.com/<service>"

gcloud: App Engine

Untuk membuat NEG Tanpa Server dengan contoh mask URL example.com/<service>:

gcloud compute network-endpoint-groups create helloworld-neg-mask \
  --region=us-central1 \
  --network-endpoint-type=serverless \
  --app-engine-url-mask="example.com/<service>"

gcloud: Gateway API

Untuk membuat NEG Tanpa Server dengan contoh mask URL example.com/<gateway>:

gcloud beta compute network-endpoint-groups create helloworld-neg-mask \
  --region=us-central1 \
  --network-endpoint-type=serverless \
  --serverless-deployment-platform=apigateway.googleapis.com \
  --serverless-deployment-resource=my-gateway \
  --serverless-deployment-url-mask="example.com/<gateway>"

Untuk mempelajari cara load balancer menangani masalah ketidakcocokan mask URL, lihat Memecahkan masalah terkait NEG serverless.

Memindahkan domain kustom Anda untuk ditayangkan oleh Load Balancer Aplikasi eksternal

Jika aplikasi komputasi serverless Anda dipetakan ke domain kustom, sebaiknya perbarui data DNS sehingga traffic yang dikirim ke Cloud Run, Cloud Functions, Gateway API, atau URL domain kustom App Engine yang ada dirutekan melalui load balancer.

Misalnya, jika Anda memiliki domain kustom bernama example.com dan semua layanan Cloud Run Anda dipetakan ke domain ini, Anda harus memperbarui data DNS untuk example.com agar mengarah ke alamat IP load balancer.

Sebelum memperbarui data DNS, Anda dapat menguji konfigurasi secara lokal dengan memaksa resolusi DNS lokal domain kustom ke alamat IP load balancer. Untuk melakukan pengujian secara lokal, ubah file /etc/hosts/ di mesin lokal Anda agar mengarahkan example.com ke alamat IP load balancer, atau gunakan tanda curl --resolve untuk memaksa curl agar menggunakan alamat IP load balancer untuk permintaan tersebut.

Saat data DNS untuk example.com di-resolve ke alamat IP load balancer HTTP(S), permintaan yang dikirim ke example.com akan mulai dirutekan melalui load balancer. Load balancer mengirimkannya ke layanan backend yang relevan sesuai dengan peta URL-nya. Selain itu, jika layanan backend dikonfigurasi dengan mask URL, NEG serverless menggunakan mask untuk merutekan permintaan ke layanan Cloud Run, Cloud Functions, Gateway API, atau App Engine yang sesuai.

Enable Cloud CDN

Dengan mengaktifkan Cloud CDN untuk layanan Cloud Run, Anda dapat mengoptimalkan penayangan konten dengan meng-cache konten yang dekat dengan pengguna Anda.

Anda dapat mengaktifkan Cloud CDN di layanan backend yang digunakan oleh Load Balancer Aplikasi eksternal global dengan menggunakan perintah gcloud compute backend-services update.

gcloud compute backend-services update helloworld-backend-service 
--enable-cdn
--global

Cloud CDN didukung untuk layanan backend dengan Cloud Run, Cloud Functions, Gateway API, dan backend App Engine.

Mengaktifkan IAP di Load Balancer Aplikasi eksternal

Catatan: IAP tidak kompatibel dengan Cloud CDN.

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

Untuk mengaktifkan IAP, update layanan backend agar menyertakan flag --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

Aktifkan Google Cloud Armor

Google Cloud Armor adalah produk keamanan yang memberikan perlindungan terhadap serangan distributed denial of service (DDoS) ke semua load balancer proxy GCLB. Google Cloud Armor juga menyediakan kebijakan keamanan yang dapat dikonfigurasi untuk layanan yang diakses melalui Load Balancer Aplikasi eksternal. Untuk mempelajari kebijakan keamanan Google Cloud Armor untuk Load Balancer Aplikasi eksternal, baca Ringkasan kebijakan keamanan Google Cloud Armor.

Jika menggunakan Cloud Functions, Anda dapat memastikan bahwa permintaan yang dikirim ke URL default diblokir menggunakan setelan masuk internal-and-gclb.

Jika menggunakan Cloud Run, Anda dapat memastikan bahwa permintaan yang dikirim ke URL default atau domain kustom lainnya yang disiapkan melalui Cloud Run diblokir dengan membatasi traffic masuk ke "load balancing internal dan cloud".

Jika menggunakan App Engine, Anda dapat menggunakan kontrol masuk sehingga aplikasi Anda hanya menerima permintaan yang dikirim dari load balancer (dan VPC jika Anda menggunakannya).

Tanpa setelan ingress yang tepat, pengguna dapat menggunakan URL default aplikasi serverless Anda untuk mengabaikan load balancer, kebijakan keamanan Google Cloud Armor, sertifikat SSL, dan kunci pribadi yang diteruskan melalui load balancer.

Opsional: Konfigurasikan kebijakan keamanan backend default. Kebijakan keamanan default membatasi traffic pada nilai minimum yang dikonfigurasi pengguna. Untuk informasi selengkapnya tentang kebijakan keamanan default, lihat Ringkasan pembatasan kapasitas.

  1. Untuk memilih tidak mengikuti kebijakan keamanan default Google Cloud Armor, pilih None di menu daftar kebijakan keamanan backend.
  2. Di bagian Keamanan, pilih Kebijakan keamanan default.
  3. Di kolom Nama kebijakan, setujui nama yang dibuat otomatis atau masukkan nama untuk kebijakan keamanan Anda.
  4. Di kolom Request count, terima jumlah permintaan default atau masukkan bilangan bulat antara 1 dan 10,000.
  5. Di kolom Interval, pilih interval.
  6. Di kolom Enforce on key, pilih salah satu nilai berikut: All, IP address, atau X-Forwarded-For IP address. Untuk informasi selengkapnya tentang opsi ini, lihat Mengidentifikasi klien untuk pembatasan kapasitas.

Mengaktifkan logging dan pemantauan

Anda dapat mengaktifkan, menonaktifkan, dan melihat log untuk layanan backend Load Balancer Aplikasi eksternal. Saat menggunakan konsol Google Cloud, logging diaktifkan secara default untuk layanan backend dengan backend NEG serverless. Anda dapat menggunakan gcloud untuk menonaktifkan logging bagi setiap layanan backend jika diperlukan. Untuk mengetahui petunjuknya, lihat Logging.

Load balancer juga mengekspor data pemantauan ke Cloud Monitoring. Metrik Monitoring dapat digunakan untuk mengevaluasi konfigurasi, penggunaan, dan performa load balancer. Metrik juga dapat digunakan untuk memecahkan masalah serta meningkatkan pemanfaatan resource dan pengalaman pengguna. Untuk mengetahui petunjuknya, lihat Monitoring.

Menghapus NEG serverless

Grup endpoint jaringan tidak dapat dihapus jika dipasang ke layanan backend. Sebelum Anda menghapus NEG, pastikan NEG dilepas dari layanan backend.

Konsol

  1. Untuk memastikan NEG serverless yang ingin Anda hapus saat ini tidak digunakan oleh layanan backend mana pun, buka tab Backend services pada Menu lanjutan load balancing.
    Buka tab Layanan backend
  2. Jika NEG serverless saat ini digunakan:
    1. Klik nama layanan backend menggunakan NEG serverless.
    2. Klik Edit .
    3. Dari daftar Backend, klik untuk menghapus backend NEG serverless dari layanan backend.
    4. Klik Save.
  3. Buka halaman Grup endpoint jaringan di Konsol Google Cloud.
    Buka halaman Grup Endpoint Jaringan
  4. Pilih kotak centang untuk NEG serverless yang ingin Anda hapus.
  5. Klik Delete.
  6. Klik Delete lagi untuk mengonfirmasi.

gcloud

Untuk menghapus NEG serverless dari layanan backend, Anda harus menentukan region tempat NEG dibuat. Anda juga harus menentukan tanda --global karena helloworld-backend-service adalah resource global.

gcloud compute backend-services remove-backend helloworld-backend-service \
    --network-endpoint-group=helloworld-serverless-neg \
    --network-endpoint-group-region=us-central1 \
    --global

Untuk menghapus NEG serverless:

gcloud compute network-endpoint-groups delete helloworld-serverless-neg \
    --region=us-central1

Langkah selanjutnya