Halaman ini menunjukkan cara membuat Load Balancer Aplikasi eksternal untuk merutekan permintaan ke backend tanpa server. Di sini, istilah serverless mengacu pada produk komputasi serverless berikut:
- App Engine
- Fungsi Cloud Run
- Cloud Run
Integrasi Load Balancer Aplikasi eksternal dengan API Gateway memungkinkan backend serverless Anda memanfaatkan semua fitur yang disediakan oleh Cloud Load Balancing. Untuk mengonfigurasi Load Balancer Aplikasi eksternal guna merutekan traffic ke API Gateway, lihat Memulai Load Balancer Aplikasi eksternal untuk API Gateway. Dukungan Load Balancer Aplikasi Eksternal untuk API Gateway masih dalam Pratinjau.
NEG Serverless memungkinkan Anda menggunakan aplikasi serverless Google Cloud dengan Load Balancer Aplikasi eksternal. Setelah Anda mengonfigurasi load balancer dengan backend NEG tanpa server, permintaan ke load balancer akan dirutekan ke backend aplikasi tanpa server.
Untuk mempelajari NEG serverless lebih lanjut, baca Ringkasan NEG serverless.
Sebelum memulai
- Deploy App Engine, fungsi Cloud Run, atau layanan Cloud Run.
- Jika Anda belum melakukannya, instal Google Cloud CLI.
- Mengonfigurasi izin.
- Tambahkan resource sertifikat SSL.
Men-deploy App Engine, fungsi Cloud Run, atau layanan Cloud Run
Petunjuk di halaman ini mengasumsikan bahwa Anda sudah memiliki layanan Cloud Run, Cloud Functions, atau App Engine yang berjalan.
Untuk contoh di halaman ini, kami telah menggunakan panduan memulai Cloud Run Python untuk men-deploy layanan Cloud Run di region us-central1
. Bagian lain dari halaman ini menunjukkan cara menyiapkan Load Balancer Aplikasi eksternal yang menggunakan backend NEG tanpa server untuk merutekan permintaan ke layanan ini.
Jika Anda belum men-deploy aplikasi serverless, atau jika Anda ingin mencoba NEG serverless dengan aplikasi contoh, gunakan salah satu quickstart berikut. Anda dapat membuat aplikasi serverless di region mana pun, tetapi Anda harus menggunakan region yang sama nantinya untuk membuat NEG dan load balancer serverless.
Cloud Run
Untuk membuat aplikasi Hello World sederhana, kemas ke dalam image container, lalu deploy image container ke Cloud Run, lihat Mulai Cepat: Mem-build dan Men-deploy.
Jika Anda sudah memiliki container contoh yang diupload ke Container Registry, lihat Panduan Memulai: Men-deploy Container Contoh Bawaan.
Cloud Run Functions
Lihat Cloud Run Functions: Panduan Memulai 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.
Konfigurasikan izin
Untuk mengikuti panduan ini, Anda perlu membuat NEG tanpa server dan membuat load balancer HTTP(S) eksternal dalam sebuah project. Anda harus menjadi pemilik atau editor project, atau 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
Di konsol Google Cloud, buka halaman External IP addresses.
Klik Reserve external static IP address.
Untuk Name, masukkan
example-ip
.Untuk Network service tier, pilih Premium.
Untuk IP version, pilih IPv4.
Untuk Type, pilih Global.
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 memperoleh, 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. Selain itu, Anda perlu memperbarui data A DNS domain agar mengarah ke alamat IP load balancer yang dibuat di langkah sebelumnya (
example-ip
). Untuk mengetahui petunjuk selengkapnya, lihat Menggunakan sertifikat yang dikelola Google.Sertifikat yang ditandatangani sendiri. Jika tidak ingin menyiapkan domain saat ini, Anda dapat menggunakan sertifikat SSL yang ditandatangani sendiri untuk 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 masih dapat menggunakan petunjuk di halaman ini untuk menyiapkan load balancer HTTP.
Membuat load balancer
Dalam diagram berikut, load balancer menggunakan backend NEG tanpa server untuk mengarahkan permintaan ke layanan Cloud Run tanpa server. Untuk contoh ini, kita telah menggunakan panduan memulai Cloud Run Python untuk men-deploy layanan Cloud Run.
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
Di konsol Google Cloud, buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
- Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
- Untuk Global or single region deployment, pilih Best for global workloads, lalu klik Next.
- Untuk Load balancer generation, pilih Classic Application Load Balancer, lalu klik Next.
- Klik Konfigurasikan.
Konfigurasi dasar
- Untuk nama load balancer, masukkan
serverless-lb
. - Biarkan jendela tetap terbuka untuk melanjutkan.
Konfigurasi frontend
- Klik Frontend configuration.
- Untuk Name, masukkan nama.
-
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.
- Klik Done.
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 |
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: Mengaktifkan Pengalihan HTTP ke HTTPS |
Gunakan kotak centang ini untuk mengaktifkan pengalihan HTTP ke HTTPS.
Mengaktifkan kotak centang ini akan membuat load balancer HTTP parsial tambahan yang 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 (ketik nilai atau pilih opsi yang ditentukan) |
---|---|
Protokol | HTTP |
Network Service Tier | Premium |
IP version | IPv4 |
Alamat IP | example-ip |
Port | 80 |
Konfigurasi backend
- Klik Backend configuration.
- Dalam daftar Backend services & backend buckets, klik Create a backend service.
- Untuk Name, masukkan nama.
- Di bagian Backend type, pilih Serverless network endpoint group.
- Jangan ubah Protokol. Parameter ini diabaikan.
- Di bagian Backends, untuk New backend, pilih Create Serverless network endpoint group.
- Untuk Name, masukkan nama.
- Di Region, pilih us-central1, lalu pilih Cloud Run.
- Pilih Pilih nama layanan.
- Dalam daftar Service, pilih layanan Cloud Run yang ingin Anda buat load balancer-nya.
- Klik Create.
- Di bagian Backend baru, klik Selesai.
- Klik Create.
Aturan perutean
Aturan perutean menentukan cara traffic Anda diarahkan. Untuk mengonfigurasi pemilihan rute, Anda akan menyiapkan aturan host dan pencocok jalur, yang merupakan komponen konfigurasi dari peta URL Load Balancer Aplikasi eksternal.
-
Klik Host and path rules.
- Mempertahankan host dan jalur default. Untuk contoh ini, semua permintaan akan mengarah ke layanan backend yang dibuat pada langkah sebelumnya.
Meninjau konfigurasi
- Klik Review and finalize.
- Tinjau semua setelan.
- Opsional: Klik Equivalent Code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
- Klik Create.
- Tunggu load balancer dibuat.
- Klik nama load balancer (serverless-lb).
- Catat alamat IP load balancer untuk tugas berikutnya. Ini
disebut
IP_ADDRESS
.
gcloud
- Buat NEG tanpa server untuk aplikasi tanpa server Anda.
Untuk membuat NEG serverless dengan layanan Cloud Run:
Untuk opsi lainnya, lihat panduan referensigcloud compute network-endpoint-groups create SERVERLESS_NEG_NAME \ --region=us-central1 \ --network-endpoint-type=serverless \ --cloud-run-service=CLOUD_RUN_SERVICE_NAME
gcloud
untukgcloud compute network-endpoint-groups create
. - Buat layanan backend.
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL \ --global
- Tambahkan NEG tanpa server 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
- 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 dapat menyiapkan pencocok jalur untuk mengarahkan permintaan ke layanan yang berbeda berdasarkan jalur permintaan.
-
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.
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: Untuk membuat resource sertifikat SSL yang dikelola sendiri:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
-
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 merupakan 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
- 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 mengirimkan traffic ke alamat IP load balancer. Jika mengonfigurasi domain, Anda juga dapat mengirim traffic ke nama domain. Namun, perlu waktu untuk menyelesaikan penyebaran DNS sehingga Anda dapat memulai dengan menggunakan alamat IP untuk pengujian.
Di konsol Google Cloud, buka halaman Load balancing.
Klik load balancer yang baru saja dibuat.
Catat alamat IP load balancer internal.
Untuk load balancer HTTP, Anda dapat menguji load balancer menggunakan browser web dengan membuka
http://IP_ADDRESS
. GantiIP_ADDRESS
dengan alamat IP load balancer. Anda akan diarahkan ke halaman beranda layananhelloworld
.
Untuk load balancer HTTPS, Anda dapat menguji load balancer menggunakan browser web dengan membuka
https://IP_ADDRESS
. GantiIP_ADDRESS
dengan alamat IP load balancer. Anda akan diarahkan ke halaman beranda layananhelloworld
.
Jika tidak berhasil dan Anda menggunakan sertifikat yang dikelola Google, pastikan status resource sertifikat Anda AKTIF. Untuk 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
Dalam 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
sekaligus, load balancing tidak dilakukan di beberapa region. Load Balancer Aplikasi eksternal
hanya berfungsi sebagai frontend, dan melakukan proxy traffic ke
endpoint aplikasi helloworld
yang ditentukan. Namun, Anda mungkin ingin menayangkan aplikasi Cloud Run dari lebih dari satu region untuk meningkatkan latensi pengguna akhir.
Jika layanan backend memiliki beberapa NEG tanpa server yang terpasang, load balancer akan menyeimbangkan traffic dengan meneruskan permintaan ke NEG tanpa server 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 harus dapat menggunakan satu skema URL yang berfungsi di mana saja di seluruh dunia, tetapi menayangkan permintaan pengguna dari region yang paling dekat dengan pengguna.
Untuk menyiapkan penayangan multi-region, Anda harus menggunakan tingkat jaringan Premium untuk memastikan bahwa semua deployment Cloud Run regional kompatibel dan siap menayangkan traffic dari region mana pun.
Untuk menyiapkan load balancer multi-region:
- Siapkan dua layanan Cloud Run di region yang berbeda. Misalkan Anda telah men-deploy dua layanan Cloud Run: satu ke region di AS, dan satu lagi ke region di Eropa.
- Buat Load Balancer Aplikasi eksternal dengan penyiapan berikut:
- Siapkan layanan backend global dengan dua NEG serverless:
- Buat NEG pertama di region yang sama dengan layanan Cloud Run yang di-deploy di Amerika Serikat.
- Buat NEG kedua di region yang sama dengan layanan Cloud Run yang di-deploy di Eropa.
- Siapkan konfigurasi frontend Anda dengan Tingkat Layanan Jaringan Premium.
- Siapkan layanan backend global dengan dua NEG serverless:
Penyiapan yang dihasilkan ditampilkan dalam diagram berikut.
Bagian ini dibuat berdasarkan penyiapan load balancer yang dijelaskan sebelumnya di halaman ini,
tempat Anda membuat satu NEG tanpa server di region us-central1
yang mengarah
ke layanan Cloud Run di region yang sama. Contoh ini juga
menganggap 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:
- Buat NEG tanpa server kedua di region
europe-west1
. - Lampirkan NEG tanpa server kedua ke layanan backend.
Untuk menambahkan NEG tanpa server kedua ke layanan backend yang ada, ikuti langkah-langkah berikut.
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
Klik nama load balancer yang layanan backend-nya ingin Anda edit.
Di halaman Detail load balancer, klik
Edit.Di halaman Edit global external Application Load Balancer, klik Backend configuration.
Di halaman Backend configuration, klik
Edit untuk layanan backend yang ingin Anda ubah.Di bagian Backends, klik Add a backend.
Di daftar Serverless network endpoint groups, pilih Create Serverless network endpoint group.
Masukkan nama untuk NEG serverless.
Untuk Region, pilih
europe-west1
.Untuk Serverless network endpoint group type, pilih Cloud Run, lalu lakukan hal berikut:
- Pilih opsi Pilih Layanan.
- Dalam daftar Service, pilih layanan Cloud Run yang ingin Anda buat load balancer-nya.
Klik Create.
Di halaman Backend baru, klik Selesai.
Klik Simpan.
Untuk memperbarui layanan backend, klik Update.
Untuk memperbarui load balancer, di halaman Edit global external Application Load Balancer, klik Update.
gcloud
Buat NEG serverless kedua di region yang sama dengan 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 keduaCLOUD_RUN_SERVICE_2
: nama layanan Cloud Run
Tambahkan NEG tanpa server 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 backendSERVERLESS_NEG_NAME_2
: nama NEG serverless kedua
Menggunakan langganan push Pub/Sub terautentikasi dengan deployment Cloud Run multi-region
Untuk permintaan push yang diautentikasi, Cloud Run mengharapkan kolom audiens khusus wilayah 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 audiens.
Untuk mengatasi pembatasan khusus per wilayah ini:
- Konfigurasikan audiens kustom yang sama untuk deployment layanan di berbagai region.
- Konfigurasikan pesan push Pub/Sub untuk menggunakan audiens kustom sebagai audiens dalam token JWT.
Menyiapkan perutean 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 ditayangkan dari region yang berlokasi di Eropa. Untuk menyiapkannya, Anda memerlukan skema URL dengan URL terpisah untuk pengguna Uni Eropa dan non-Uni Eropa, serta mengarahkan pengguna Uni Eropa ke URL Uni Eropa.
Dalam skenario tersebut, Anda akan menggunakan peta URL untuk merutekan permintaan dari URL tertentu ke region yang sesuai. Dengan penyiapan tersebut, permintaan yang ditujukan untuk satu region tidak pernah dikirim ke region yang berbeda. Hal ini memberikan isolasi di antara region. Di sisi lain, jika region gagal, permintaan tidak akan dirutekan ke region lain. Jadi, penyiapan ini tidak meningkatkan ketersediaan layanan Anda.
Untuk menyiapkan perutean regional, Anda harus menggunakan tingkat jaringan Premium agar dapat menggabungkan berbagai region dalam satu aturan penerusan.
Untuk menyiapkan load balancer dengan pemilihan rute regional:
- Siapkan dua layanan Cloud Run di region yang berbeda. Misalkan Anda telah men-deploy dua layanan Cloud Run: hello-world-eu ke region di Eropa, dan hello-world-us ke region di AS.
- Buat Load Balancer Aplikasi eksternal dengan penyiapan berikut:
- Menyiapkan layanan backend dengan NEG tanpa server di Eropa. NEG serverless harus dibuat di region yang sama dengan layanan Cloud Run yang di-deploy di Eropa.
- Siapkan layanan backend kedua dengan NEG tanpa server lain di Amerika Serikat. NEG tanpa server ini harus dibuat di region yang sama dengan layanan Cloud Run yang di-deploy di Amerika Serikat.
- Siapkan peta URL dengan aturan host dan jalur yang sesuai sehingga satu kumpulan URL dirutekan ke layanan backend Eropa, sedangkan semua permintaan dirutekan ke layanan backend Amerika Serikat.
- Siapkan konfigurasi frontend Anda dengan paket jaringan Premium.
Penyiapan lainnya dapat sama seperti yang dijelaskan sebelumnya. Penyiapan yang dihasilkan akan terlihat seperti ini:
Menggunakan masker URL
Saat membuat NEG tanpa server, Anda dapat menggunakan masker URL untuk mengarah ke beberapa layanan yang ditayangkan di domain yang sama, bukan memilih layanan Cloud Run tertentu. Masker URL adalah template skema URL Anda. NEG tanpa server akan menggunakan template ini untuk mengekstrak nama layanan dari URL permintaan yang 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. Masker URL memungkinkan Anda menargetkan beberapa layanan dan versi dengan satu aturan meskipun aplikasi Anda menggunakan pola URL kustom.
Jika Anda belum melakukannya, pastikan Anda membaca Ringkasan NEG serverless: Masker URL.
Membuat masker URL
Untuk membuat mask URL untuk 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.
- Hapus
http
atauhttps
dari URL. Anda memilikiexample.com/login
. - Ganti nama layanan dengan placeholder untuk mask URL.
- Cloud Run: Ganti nama layanan Cloud Run dengan
placeholder
<service>
. Jika layanan Cloud Run memiliki tag yang terkait, ganti nama tag dengan placeholder<tag>
. Dalam contoh ini, masker URL yang tersisa adalahexample.com/<service>
. - Fungsi Cloud Run: Ganti nama fungsi dengan placeholder
<function>
. Dalam contoh ini, masker URL yang tersisa adalahexample.com/<function>
. - App Engine: Ganti nama layanan dengan placeholder
<service>
. Jika layanan memiliki versi yang terkait, ganti versi dengan placeholder<version>
. Dalam contoh ini, masker URL yang tersisa adalahexample.com/<service>
. - API Gateway: Ganti nama gateway dengan placeholder
<gateway>
. Dalam contoh ini, masker URL yang tersisa adalahexample.com/<gateway>
.
- Cloud Run: Ganti nama layanan Cloud Run dengan
placeholder
(Opsional) Jika nama layanan (atau fungsi, versi, atau tag) dapat diekstrak dari bagian jalur URL,domain dapat dihilangkan. Bagian jalur masker URL dibedakan oleh karakter
/
pertama. Jika/
tidak ada dalam mask URL, mask akan dipahami hanya mewakili host. Oleh karena itu, untuk contoh ini, masker URL dapat dikurangi menjadi/<service>
,/<gateway>
, atau/<function>
.Demikian pula, jika nama layanan dapat diekstrak dari bagian host URL, Anda dapat menghapus jalur sepenuhnya dari mask URL.
Anda juga dapat menghapus komponen host atau subdomain yang muncul sebelum placeholder pertama serta komponen jalur yang muncul setelah placeholder terakhir. Dalam kasus tersebut, placeholder akan mengambil informasi yang diperlukan untuk komponen.
Berikut beberapa contoh lainnya yang menunjukkan aturan ini:
Cloud Run
Tabel ini mengasumsikan bahwa Anda memiliki domain kustom bernama example.com
dan semua layanan Cloud Run Anda dipetakan ke domain ini menggunakan Load Balancer Aplikasi eksternal.
Layanan, Nama tag | URL domain kustom | Masker URL |
---|---|---|
service: login | https://login-home.example.com/web | <service>-home.example.com |
service: login | https://example.com/login/web | example.com/<service> atau /<service> |
service: login, tag: test | https://test.login.example.com/web | <tag>.<service>.example.com |
service: login, tag: test | https://example.com/home/login/test | example.com/home/<service>/<tag> atau /home/<service>/<tag> |
service: login, tag: test | https://test.example.com/home/login/web | <tag>.example.com/home/<service> |
Fungsi Cloud Run
Tabel ini mengasumsikan bahwa Anda memiliki domain kustom bernama example.com
dan semua layanan fungsi Cloud Run Anda dipetakan ke domain ini.
Nama Fungsi | URL domain kustom | Masker 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 dipetakan ke domain ini.
Nama layanan, versi | URL domain kustom | Masker URL |
---|---|---|
service: login | https://login.example.com/web | <service>.example.com |
service: login | https://example.com/home/login/web | example.com/home/<service>, atau /home/<service> |
service: login, version: test | https://test.example.com/login/web | <version>.example.com/<service> |
service: login, version: test | https://example.com/login/test | example.com/<service>/<version> |
Gateway API
Tabel ini mengasumsikan bahwa Anda memiliki domain kustom bernama example.com
dan semua layanan API Gateway Anda sedang dipetakan ke domain ini.
Gateway name | URL domain kustom API Gateway(Pratinjau) | 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 tanpa server dengan masker 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 masker URL, bukan layanan tertentu.
Untuk menambahkan NEG tanpa server berbasis masker URL ke layanan backend yang ada:
- Buka halaman Load balancing di Konsol Google Cloud.
Buka halaman Load balancing - Klik nama load balancer yang layanan backend-nya ingin Anda edit.
- Di halaman Detail load balancer, klik Edit .
- Di halaman Edit global external Application Load Balancer, klik Backend configuration.
- Di halaman Backend configuration, klik Edit untuk layanan backend yang ingin Anda ubah.
- Klik Add backend.
- Pilih Create Serverless network endpoint group.
- Untuk Name, masukkan
helloworld-serverless-neg
. - Di bagian Region, pilih us-central1.
- Di bagian Serverless network endpoint group type, pilih platform tempat aplikasi serverless (atau layanan atau fungsi) Anda dibuat.
- Pilih Gunakan Masker URL.
- Masukkan masker URL. Untuk mengetahui petunjuk cara membuat mask URL, lihat Membuat mask URL.
- Klik Create.
- Untuk Name, masukkan
- Di bagian Backend baru, klik Selesai.
- Klik Perbarui.
gcloud: Cloud Run
Untuk membuat NEG Tanpa Server dengan contoh masker URL 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 Run functions
Untuk membuat NEG Tanpa Server dengan contoh masker URL 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 masker 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: API Gateway
Untuk membuat NEG Tanpa Server dengan contoh masker 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 agar ditayangkan oleh Load Balancer Aplikasi eksternal
Jika aplikasi komputasi serverless Anda dipetakan ke domain kustom, sebaiknya update data DNS Anda agar traffic yang dikirim ke URL domain kustom Cloud Run, fungsi Cloud Run, API Gateway, atau App Engine yang ada dirutekan melalui load balancer.
Misalnya, jika Anda memiliki domain kustom bernama example.com
dan semua layanan Cloud Run 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 menguji secara lokal, ubah file /etc/hosts/
di
komputer lokal Anda untuk mengarahkan example.com
ke alamat IP load balancer, atau,
gunakan tanda curl --resolve
untuk memaksa curl
menggunakan alamat IP load
balancer untuk permintaan.
Saat data DNS untuk example.com
me-resolve ke alamat IP load balancer HTTP(S), permintaan yang dikirim ke example.com
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 akan menggunakan mask tersebut untuk merutekan permintaan ke layanan Cloud Run, fungsi Cloud Run, API Gateway, atau App Engine yang sesuai.
Enable Cloud CDN
Dengan mengaktifkan Cloud CDN untuk layanan Cloud Run, Anda dapat mengoptimalkan pengiriman konten dengan menyimpan konten ke dalam cache yang lebih dekat dengan pengguna.
Anda dapat mengaktifkan Cloud CDN di layanan backend yang digunakan oleh
Load Balancer Aplikasi eksternal global 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 backend Cloud Run, Cloud Functions, API Gateway, dan App Engine.
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
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
Secara opsional, Anda dapat mengaktifkan IAP untuk resource Compute Engine menggunakan konsol Google Cloud, gcloud CLI, atau API.
Mengaktifkan 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 ke layanan yang diakses melalui Load Balancer Aplikasi eksternal. Untuk mempelajari kebijakan keamanan Google Cloud Armor untuk Load Balancer Aplikasi eksternal, lihat ringkasan kebijakan keamanan Google Cloud Armor.
Jika menggunakan fungsi Cloud Run, Anda dapat memastikan bahwa permintaan yang dikirim ke URL default diblokir menggunakan setelan ingress 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 "internal dan cloud load balancing".
Jika menggunakan App Engine, Anda dapat menggunakan kontrol traffic 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 di atas nilai minimum yang dikonfigurasi pengguna. Untuk informasi selengkapnya tentang kebijakan keamanan default, lihat Ringkasan pembatasan kapasitas.
- Untuk memilih tidak menggunakan kebijakan keamanan default Google Cloud Armor, pilih
None
di menu daftar kebijakan keamanan backend. - Di bagian Security, pilih Default security policy.
- Di kolom Policy name, terima nama yang dibuat secara otomatis atau masukkan nama untuk kebijakan keamanan Anda.
- Di kolom Request count, terima jumlah permintaan
default atau masukkan bilangan bulat antara
1
dan10,000
. - Di kolom Interval, pilih interval.
- 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 untuk setiap layanan backend sesuai kebutuhan. Untuk mengetahui petunjuknya, lihat
Logging.
Load balancer juga mengekspor data pemantauan ke Cloud Monitoring. Metrik pemantauan dapat digunakan untuk mengevaluasi konfigurasi, penggunaan, dan performa load balancer. Metrik juga dapat digunakan untuk memecahkan masalah dan meningkatkan penggunaan resource serta pengalaman pengguna. Untuk mengetahui petunjuknya, lihat Pemantauan.
Menghapus NEG serverless
Grup endpoint jaringan tidak dapat dihapus jika dilampirkan ke layanan backend. Sebelum Anda menghapus NEG, pastikan NEG tersebut dilepaskan dari layanan backend.
Konsol
- Untuk memastikan NEG tanpa server yang ingin Anda hapus saat ini tidak digunakan oleh layanan backend apa pun, buka tab Layanan backend di Menu lanjutan load balancing.
Buka tab Layanan backend - Jika NEG serverless saat ini sedang digunakan:
- Klik nama layanan backend yang menggunakan NEG tanpa server.
- Klik Edit .
- Dari daftar Backends, klik untuk menghapus backend NEG serverless dari layanan backend.
- Klik Simpan.
- Buka halaman Network endpoint group di konsol Google Cloud.
Buka halaman Network Endpoint Group - Centang kotak untuk NEG serverless yang ingin Anda hapus.
- Klik Hapus.
- Klik Delete lagi untuk mengonfirmasi.
gcloud
Untuk menghapus NEG tanpa server dari layanan backend, Anda harus menentukan region tempat NEG dibuat. Anda juga harus menentukan flag --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 tanpa server:
gcloud compute network-endpoint-groups delete helloworld-serverless-neg \ --region=us-central1
Langkah selanjutnya
- Menggunakan logging dan pemantauan
- Memecahkan masalah NEG tanpa server
- Membersihkan penyiapan load balancer
- Menggunakan modul Terraform untuk load balancer HTTPS eksternal dengan backend Cloud Run