Dokumen ini memperkenalkan konsep yang perlu Anda pahami untuk mengonfigurasi Load Balancer Aplikasi eksternal.
Load Balancer Aplikasi eksternal adalah load balancer Lapisan 7 berbasis proxy yang memungkinkan Anda menjalankan dan menskalakan layanan di balik satu alamat IP eksternal. Load Balancer Aplikasi eksternal mendistribusikan traffic HTTP dan HTTPS ke backend yang dihosting di berbagaiGoogle Cloud platform (seperti Compute Engine, Google Kubernetes Engine (GKE), dan Cloud Storage), serta backend eksternal yang terhubung melalui internet atau melalui konektivitas hibrida. Untuk mengetahui detailnya, lihat Ringkasan Load Balancer Aplikasi: Kasus penggunaan.
Mode operasi
Anda dapat mengonfigurasi Load Balancer Aplikasi eksternal dalam mode berikut:
- Load Balancer Aplikasi eksternal global. Load balancer ini adalah load balancer global yang diimplementasikan sebagai layanan terkelola di Google Front Ends (GFE). Layanan ini menggunakan proxy Envoy open source untuk mendukung kemampuan pengelolaan traffic lanjutan seperti pencerminan traffic, pemisahan traffic berbasis bobot, dan transformasi header berbasis permintaan atau berbasis respons.
- Load Balancer Aplikasi Klasik. Ini adalah Load Balancer Aplikasi eksternal klasik yang bersifat global dalam Paket Premium, tetapi dapat dikonfigurasi agar bersifat regional dalam Paket Standar. Load balancer ini diimplementasikan di Google Front End (GFE). GFE didistribusikan secara global dan beroperasi bersama menggunakan jaringan global dan bidang kontrol Google.
- Load Balancer Aplikasi eksternal regional. Ini adalah load balancer regional yang diimplementasikan sebagai layanan terkelola di proxy Envoy open source. Fitur ini mencakup kemampuan pengelolaan traffic lanjutan seperti pencerminan traffic, pemisahan traffic berbasis bobot, dan transformasi header berbasis permintaan atau respons.
Mode load balancer | Kasus penggunaan yang direkomendasikan | Kemampuan |
---|---|---|
Load Balancer Aplikasi eksternal global | Gunakan load balancer ini untuk beban kerja HTTP(S) eksternal dengan pengguna yang tersebar secara global atau layanan backend di beberapa region. |
|
Load Balancer Aplikasi Klasik | Load balancer ini bersifat global di Paket Premium. Pada Tingkat Layanan Jaringan Premium, load balancer ini menawarkan load balancing multi-region, berupaya mengarahkan traffic ke backend responsif terdekat yang memiliki kapasitas, dan menghentikan traffic HTTP(S) sedekat mungkin dengan pengguna Anda. Untuk mengetahui detail tentang proses distribusi permintaan, lihat Distribusi traffic. Di Paket Layanan Jaringan Standar, load balancer ini hanya dapat mendistribusikan traffic ke backend di satu region. |
|
Load Balancer Aplikasi eksternal regional | Load balancer ini berisi banyak fitur Load Balancer Aplikasi klasik yang ada, bersama dengan kemampuan pengelolaan traffic lanjutan. Gunakan load balancer ini jika Anda ingin menayangkan konten dari hanya satu geolokasi (misalnya, untuk mematuhi peraturan kepatuhan). Load balancer ini dapat dikonfigurasi di Paket Premium atau Standar. |
|
Mengidentifikasi mode
Konsol
Di konsol Google Cloud , buka halaman Load balancing.
Di tab Load Balancers, jenis, protokol, dan region load balancer ditampilkan. Jika region kosong, berarti load balancer bersifat global. Tabel berikut meringkas cara mengidentifikasi mode load balancer.
Mode load balancer | Jenis load balancer | Jenis akses | Wilayah |
---|---|---|---|
Load Balancer Aplikasi eksternal global | Aplikasi | Eksternal | |
Load Balancer Aplikasi Klasik | Aplikasi(Klasik) | Eksternal | |
Load Balancer Aplikasi eksternal regional | Aplikasi | Eksternal | Menentukan wilayah |
gcloud
Untuk menentukan mode load balancer, jalankan perintah berikut:
gcloud compute forwarding-rules describe FORWARDING_RULE_NAME
Di output perintah, periksa skema load balancing, region, dan tingkat jaringan. Tabel berikut meringkas cara mengidentifikasi mode load balancer.
Mode load balancer | Skema load balancing | Aturan penerusan | Tingkat jaringan |
---|---|---|---|
Load Balancer Aplikasi eksternal global | EXTERNAL_MANAGED | Global | Premium |
Load Balancer Aplikasi Klasik | EKSTERNAL | Global | Standar atau Premium |
Load Balancer Aplikasi eksternal regional | EXTERNAL_MANAGED | Menentukan wilayah | Standar atau Premium |
Arsitektur
Resource berikut diperlukan untuk deployment Load Balancer Aplikasi eksternal:
Khusus untuk Load Balancer Aplikasi eksternal regional, subnet khusus proxy digunakan untuk mengirim koneksi dari load balancer ke backend.
Aturan penerusan eksternal menentukan alamat IP eksternal, port, dan proxy HTTP(S) target. Klien menggunakan alamat IP dan port untuk terhubung ke load balancer.
Proxy HTTP(S) target menerima permintaan dari klien. Proxy HTTP(S) mengevaluasi permintaan menggunakan peta URL untuk membuat keputusan perutean traffic. Proxy juga dapat mengautentikasi komunikasi dengan menggunakan sertifikat SSL.
- Untuk load balancing HTTPS, proxy HTTPS target menggunakan sertifikat SSL untuk membuktikan identitasnya kepada klien. Proxy HTTPS target mendukung hingga jumlah sertifikat SSL yang didokumentasikan.
Proxy HTTP(S) menggunakan peta URL untuk membuat penentuan perutean berdasarkan atribut HTTP (seperti jalur permintaan, cookie, atau header). Berdasarkan keputusan pemilihan rute, proxy meneruskan permintaan klien ke layanan backend atau bucket backend tertentu. Peta URL dapat menentukan tindakan tambahan, seperti mengirim pengalihan ke klien.
Layanan backend mendistribusikan permintaan ke backend yang sehat. Load Balancer Aplikasi eksternal global juga mendukung bucket backend. Satu atau beberapa backend harus terhubung ke layanan backend atau bucket backend.
Health check secara berkala memantau kesiapan backend Anda. Tindakan ini mengurangi risiko permintaan dikirim ke backend yang tidak dapat melayani permintaan.
Aturan firewall untuk backend Anda agar menerima pemeriksaan health check. Load Balancer Aplikasi eksternal regional memerlukan aturan firewall tambahan untuk mengizinkan traffic dari subnet khusus proxy menjangkau backend.
- Global
Diagram ini menunjukkan komponen deployment Load Balancer Aplikasi eksternal global. Arsitektur ini berlaku untuk Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi klasik di Paket Premium.
Komponen Load Balancer Aplikasi eksternal global (klik untuk memperbesar).
- Regional
Diagram ini menunjukkan komponen deployment Load Balancer Aplikasi eksternal regional.
Komponen Load Balancer Aplikasi eksternal regional (klik untuk memperbesar).
Subnet khusus proxy
Subnet khusus proxy hanya diperlukan untuk Load Balancer Aplikasi eksternal regional.
Subnet khusus proxy menyediakan serangkaian alamat IP yang digunakan Google untuk menjalankan proxy Envoy atas nama Anda. Anda harus membuat satu subnet khusus proxy di setiap region jaringan VPC tempat Anda menggunakan Load Balancer Aplikasi eksternal regional.
Flag --purpose
untuk subnet khusus proxy ini ditetapkan ke
REGIONAL_MANAGED_PROXY
. Semua load balancer berbasis Envoy regional di region dan jaringan VPC yang sama berbagi kumpulan proxy Envoy dari subnet khusus proxy yang sama. Selanjutnya:
- Subnet khusus proxy hanya digunakan untuk proxy Envoy, bukan backend Anda.
- VM atau endpoint backend dari semua Load Balancer Aplikasi eksternal regional di region dan jaringan VPC menerima koneksi dari subnet khusus proxy.
- Alamat IP Load Balancer Aplikasi eksternal regional tidak berada di subnet khusus proxy. Alamat IP load balancer ditentukan oleh aturan penerusan terkelola eksternalnya, yang dijelaskan di bawah.
Jika sebelumnya Anda membuat subnet khusus proxy dengan
--purpose=INTERNAL_HTTPS_LOAD_BALANCER
, migrasikan tujuan
subnet ke
REGIONAL_MANAGED_PROXY
sebelum Anda dapat membuat load balancer berbasis Envoy lainnya
di region yang sama dengan jaringan
VPC.
Aturan penerusan dan alamat IP
Aturan penerusan merutekan traffic menurut alamat IP, port, dan protokol ke konfigurasi load balancing yang terdiri dari proxy target, peta URL, dan satu atau beberapa layanan backend.
Spesifikasi alamat IP. Setiap aturan penerusan menyediakan satu alamat IP yang dapat digunakan dalam catatan DNS untuk aplikasi Anda. Tidak diperlukan load balancing berbasis DNS. Anda dapat menentukan alamat IP yang akan digunakan atau membiarkan Cloud Load Balancing menetapkannya untuk Anda.
Spesifikasi port. Setiap aturan penerusan untuk Load Balancer Aplikasi dapat mereferensikan satu port dari 1-65535. Untuk mendukung beberapa port, Anda harus mengonfigurasi beberapa aturan penerusan. Anda dapat mengonfigurasi beberapa aturan penerusan untuk menggunakan alamat IP eksternal (VIP) yang sama dan mereferensikan proxy HTTP(S) target yang sama selama kombinasi alamat IP, port, dan protokol secara keseluruhan unik untuk setiap aturan penerusan. Dengan cara ini, Anda dapat menggunakan satu load balancer dengan peta URL bersama sebagai proxy untuk beberapa aplikasi.
Jenis aturan penerusan, alamat IP, dan skema load balancing yang digunakan oleh Load Balancer Aplikasi eksternal bergantung pada mode load balancer dan Tingkat Layanan Jaringan tempat load balancer berada.
Mode load balancer | Network Service Tier | Aturan penerusan, alamat IP, dan skema load balancing | Merutekan dari internet ke frontend load balancer |
---|---|---|---|
Load Balancer Aplikasi eksternal global | Paket Premium |
Aturan penerusan eksternal global Skema load balancing: |
Permintaan dirutekan ke GFE yang terdekat dengan klien di internet. |
Load Balancer Aplikasi Klasik | Paket Premium |
Aturan penerusan eksternal global Skema load balancing: |
Permintaan dirutekan ke GFE yang terdekat dengan klien di internet. |
Paket Standar |
Aturan penerusan eksternal regional Skema load balancing: |
Permintaan dirutekan ke GFE di region load balancer. | |
Load Balancer Aplikasi eksternal regional | Paket Premium atau Paket Standar |
Aturan penerusan eksternal regional Skema load balancing: |
Permintaan mencapai Google Cloud di PoP yang terdekat dengan klien. Permintaan kemudian dirutekan melalui jaringan backbone premium Google Cloudhingga mencapai proxy Envoy di region yang sama dengan load balancer. |
EXTERNAL_MANAGED
layanan backend ke
EXTERNAL
aturan penerusan. Namun, layanan backend EXTERNAL
tidak dapat dilampirkan ke aturan penerusan EXTERNAL_MANAGED
.
Untuk memanfaatkan fitur baru yang hanya tersedia dengan Load Balancer Aplikasi eksternal global, sebaiknya Anda memigrasikan resource EXTERNAL
yang ada ke EXTERNAL_MANAGED
dengan menggunakan proses migrasi yang dijelaskan di Memigrasikan resource dari Load Balancer Aplikasi eksternal klasik ke global.
Untuk mengetahui daftar lengkap protokol yang didukung oleh aturan penerusan Load Balancer Aplikasi eksternal dalam setiap mode, lihat Fitur load balancer.
Aturan penerusan dan jaringan VPC
Bagian ini menjelaskan cara aturan penerusan yang digunakan oleh Load Balancer Aplikasi eksternal dikaitkan dengan jaringan VPC.
Mode load balancer | Asosiasi jaringan VPC |
---|---|
Load Balancer Aplikasi eksternal global Load Balancer Aplikasi Klasik |
Tidak ada jaringan VPC terkait. Aturan penerusan selalu menggunakan alamat IP yang berada di luar jaringan VPC. Oleh karena itu, aturan penerusan tidak memiliki jaringan VPC terkait. |
Load Balancer Aplikasi eksternal regional | Jaringan VPC aturan penerusan adalah jaringan tempat subnet khusus proxy telah dibuat. Anda menentukan jaringan saat membuat aturan penerusan. Bergantung pada apakah Anda menggunakan rentang alamat IPv4 atau IPv6, selalu ada jaringan VPC eksplisit atau implisit yang terkait dengan aturan penerusan.
|
Proxy target
Proxy target menghentikan koneksi HTTP(S) dari klien. Satu atau beberapa aturan penerusan mengarahkan traffic ke proxy target, dan proxy target berkonsultasi dengan peta URL untuk menentukan cara merutekan traffic ke backend.
Jangan mengandalkan proxy untuk mempertahankan huruf besar/kecil nama header permintaan atau respons. Misalnya, header respons Server: Apache/1.0
mungkin muncul di
klien sebagai server: Apache/1.0
.
Tabel berikut menentukan jenis proxy target yang diperlukan oleh Load Balancer Aplikasi eksternal.
Mode load balancer | Jenis proxy target | Header yang ditambahkan proxy | Header kustom didukung |
---|---|---|---|
Load Balancer Aplikasi eksternal global | HTTP Global, HTTPS Global |
Proxy menetapkan header permintaan/respons HTTP sebagai berikut:
Proxy juga menetapkan header |
Dikonfigurasi di
layanan backend atau bucket backend
Tidak didukung dengan Cloud CDN |
Load Balancer Aplikasi Klasik | HTTP Global, HTTPS Global |
Proxy menetapkan header permintaan/respons HTTP sebagai berikut:
Proxy juga menetapkan header |
Dikonfigurasi di layanan backend atau bucket backend |
Load Balancer Aplikasi eksternal regional | HTTP Regional, HTTPS Regional |
|
Dikonfigurasi di peta URL |
Selain header yang ditambahkan oleh proxy target, load balancer menyesuaikan header HTTP lainnya dengan cara berikut:
Untuk Load Balancer Aplikasi eksternal global, header permintaan dan respons dapat dikonversi menjadi huruf kecil.
Satu-satunya pengecualian untuk hal ini adalah saat Anda menggunakan backend NEG internet global dengan HTTP/1.1. Untuk mengetahui detail tentang cara header HTTP/1.1 diproses dengan NEG internet global, lihat ringkasan NEG internet.
Untuk Load Balancer Aplikasi klasik, header permintaan dan respons dikonversi menjadi huruf kecil, kecuali saat Anda menggunakan HTTP/1.1. Dengan HTTP/1.1, header ditulis dengan huruf kapital yang tepat. Huruf pertama kunci header dan setiap huruf setelah tanda hubung (
-
) dikapitalisasi untuk mempertahankan kompatibilitas dengan klien HTTP/1.1. Misalnya,user-agent
diubah menjadiUser-Agent
, dancontent-encoding
diubah menjadiContent-Encoding
.
- Beberapa header digabungkan. Jika ada beberapa instance dari kunci header yang sama (misalnya,
Via
), load balancer akan menggabungkan nilainya menjadi satu daftar yang dipisahkan koma untuk satu kunci header. Hanya header yang nilainya dapat direpresentasikan sebagai daftar yang dipisahkan koma yang digabungkan. Header lain, sepertiSet-Cookie
, tidak pernah digabungkan.
Header host
Saat membuat permintaan HTTP, load balancer mempertahankan header Host permintaan asli.
Header X-Forwarded-For
Load balancer menambahkan dua alamat IP ke header X-Forwarded-For
, yang dipisahkan oleh satu koma, dalam urutan berikut:
- Alamat IP klien yang terhubung ke load balancer
- Alamat IP aturan penerusan load balancer
Jika permintaan masuk tidak menyertakan header X-Forwarded-For
,
header yang dihasilkan adalah sebagai berikut:
X-Forwarded-For: <client-ip>,<load-balancer-ip>
Jika permintaan masuk sudah menyertakan header X-Forwarded-For
,
load balancer akan menambahkan nilainya ke header yang ada:
X-Forwarded-For: <existing-value>,<client-ip>,<load-balancer-ip>
Menghapus nilai header yang ada menggunakan header permintaan kustom
Anda dapat menghapus nilai header yang ada menggunakan header permintaan kustom di layanan backend. Contoh berikut menggunakan flag --custom-request-header
untuk membuat ulang header X-Forwarded-For
dengan menggunakan variabel
client_ip_address
dan server_ip_address
. Konfigurasi ini menggantikan header X-Forwarded-For
masuk hanya dengan alamat IP klien dan load balancer.
--custom-request-header=x-forwarded-for:{client_ip_address},{server_ip_address}
Cara software proxy terbalik backend dapat mengubah header X-Forwarded-For
Jika backend load balancer Anda menjalankan software reverse proxy HTTP, software tersebut dapat menambahkan satu atau kedua alamat IP berikut ke akhir header X-Forwarded-For
:
Alamat IP GFE yang terhubung ke backend. Alamat IP GFE berada dalam rentang
130.211.0.0/22
dan35.191.0.0/16
.Alamat IP sistem backend itu sendiri.
Akibatnya, sistem upstream mungkin melihat header X-Forwarded-For
yang disusun sebagai berikut:
<existing-value>,<client-ip>,<load-balancer-ip>,<GFE-ip>,<backend-ip>
Dukungan Cloud Trace
Trace tidak didukung dengan Load Balancer Aplikasi. Load Balancer Aplikasi global dan klasik menambahkan header X-Cloud-Trace-Context
jika tidak ada. Load Balancer Aplikasi eksternal regional tidak menambahkan header ini. Jika header
X-Cloud-Trace-Context
sudah ada, header tersebut akan melewati load balancer tanpa diubah. Namun, tidak ada rekaman aktivitas atau rentang yang diekspor oleh load
balancer.
Peta URL
Peta URL menentukan pola pencocokan untuk perutean berbasis URL dari permintaan ke layanan backend yang sesuai. Peta URL memungkinkan Anda membagi traffic dengan memeriksa komponen URL untuk mengirim permintaan ke berbagai set backend. Layanan default ditentukan untuk menangani permintaan yang tidak cocok dengan aturan host atau aturan pencocokan jalur yang ditentukan.
Dalam beberapa situasi, seperti contoh load balancing multi-region, Anda mungkin tidak menentukan aturan URL apa pun dan hanya mengandalkan layanan default.
Peta URL mendukung beberapa fitur pengelolaan traffic lanjutan seperti pengarahan traffic berbasis header, pemisahan traffic berbasis bobot, dan pencerminan permintaan. Untuk informasi selengkapnya, lihat referensi berikut:
Tabel berikut menentukan jenis peta URL yang diperlukan oleh Load Balancer Aplikasi eksternal di setiap mode.
Mode load balancer | Jenis peta URL |
---|---|
Load Balancer Aplikasi eksternal global | Global |
Load Balancer Aplikasi Klasik | Global (dengan hanya subset fitur yang didukung) |
Load Balancer Aplikasi eksternal regional | Regional |
Sertifikat SSL
Load Balancer Aplikasi Eksternal yang menggunakan proxy HTTPS target memerlukan kunci pribadi dan sertifikat SSL sebagai bagian dari konfigurasi load balancer.
Google Cloud menyediakan dua metode konfigurasi untuk menetapkan kunci pribadi dan sertifikat SSL ke proxy HTTPS target: sertifikat SSL Compute Engine dan Certificate Manager. Untuk mengetahui deskripsi setiap konfigurasi, lihat Metode konfigurasi sertifikat di ringkasan sertifikat SSL.
Google Cloud menyediakan dua jenis sertifikat: Dikelola sendiri dan Dikelola Google. Untuk mengetahui deskripsi setiap jenis, lihat Jenis sertifikat di ringkasan sertifikat SSL.
Jenis Load Balancer Aplikasi eksternal (global, regional, atau klasik) menentukan metode konfigurasi dan jenis sertifikat yang didukung. Untuk mengetahui detailnya, lihat Sertifikat dan load balancer di ringkasan sertifikat SSL. Google Cloud
Kebijakan SSL
Kebijakan SSL menentukan serangkaian fitur SSL yang digunakan load balancer saat menegosiasikan SSL dengan klien. Google Cloud
Secara default, Load Balancing HTTPS menggunakan serangkaian fitur SSL yang memberikan keamanan yang baik dan kompatibilitas yang luas. Beberapa aplikasi memerlukan kontrol yang lebih besar atas versi dan cipher SSL yang digunakan untuk koneksi HTTPS atau SSL mereka. Anda dapat menentukan kebijakan SSL untuk menentukan serangkaian fitur SSL yang digunakan load balancer saat menegosiasikan SSL dengan klien. Selain itu, Anda dapat menerapkan kebijakan SSL tersebut ke proxy HTTPS target.
Tabel berikut menentukan dukungan kebijakan SSL untuk load balancer di setiap mode.
Mode load balancer | Kebijakan SSL yang didukung |
---|---|
Load Balancer Aplikasi eksternal global | |
Load Balancer Aplikasi Klasik | |
Load Balancer Aplikasi eksternal regional |
Layanan backend
Layanan backend memberikan informasi konfigurasi ke load balancer sehingga load balancer dapat mengarahkan permintaan ke backend-nya—misalnya, grup instance Compute Engine atau grup endpoint jaringan (NEG). Untuk mengetahui informasi selengkapnya tentang layanan backend, lihat Ringkasan layanan backend.
Untuk contoh yang menunjukkan cara menyiapkan load balancer dengan layanan backend dan backend Compute Engine, lihat Menyiapkan Load Balancer Aplikasi eksternal dengan backend Compute Engine.
Cakupan layanan backend
Tabel berikut menunjukkan resource dan cakupan layanan backend yang digunakan oleh Load Balancer Aplikasi eksternal:
Mode load balancer | Resource layanan backend |
---|---|
Load Balancer Aplikasi eksternal global |
backendServices (global) |
Load Balancer Aplikasi Klasik |
backendServices (global) |
Load Balancer Aplikasi eksternal regional |
regionBackendServices (regional) |
Protokol ke backend
Layanan backend untuk Load Balancer Aplikasi harus menggunakan salah satu protokol berikut untuk mengirim permintaan ke backend:
- HTTP, yang menggunakan HTTP/1.1 dan tidak ada TLS
- HTTPS, yang menggunakan HTTP/1.1 dan TLS
- HTTP/2, yang menggunakan HTTP/2 dan TLS (HTTP/2 tanpa enkripsi tidak didukung).
- H2C, yang menggunakan HTTP/2 melalui TCP. TLS tidak diperlukan. H2C tidak didukung untuk Load Balancer Aplikasi klasik.
Load balancer hanya menggunakan protokol layanan backend yang Anda tentukan untuk berkomunikasi dengan backend-nya. Load balancer tidak melakukan failover ke protokol lain jika tidak dapat berkomunikasi dengan backend menggunakan protokol layanan backend yang ditentukan.
Protokol layanan backend tidak harus cocok dengan protokol yang digunakan oleh klien untuk berkomunikasi dengan load balancer. Misalnya, klien dapat mengirim permintaan ke load balancer menggunakan HTTP/2, tetapi load balancer dapat berkomunikasi dengan backend menggunakan HTTP/1.1 (HTTP atau HTTPS).
Bucket backend
Bucket backend mengarahkan traffic masuk langsung ke bucket Cloud Storage. Untuk contoh yang menunjukkan cara menambahkan bucket ke Load Balancer Aplikasi eksternal, lihat Menyiapkan load balancer dengan bucket backend. Untuk informasi umum tentang Cloud Storage, lihat Apa itu Cloud Storage?
Backend
Tabel berikut menentukan backend dan fitur terkait yang didukung oleh Load Balancer Aplikasi eksternal dalam setiap mode.
Mode load balancer |
Backend yang didukung pada layanan backend1 | Mendukung bucket backend | Mendukung Google Cloud Armor | Mendukung Cloud CDN2 | Mendukung IAP2 | Mendukung Ekstensi Layanan | |||||
---|---|---|---|---|---|---|---|---|---|---|---|
Grup instance3 | NEG Zona4 | NEG Internet | NEG Serverless | NEG Hybrid | NEG Private Service Connect | ||||||
Load Balancer Aplikasi eksternal global | |||||||||||
Load Balancer Aplikasi Klasik |
Paket Premium |
|
|||||||||
Load Balancer Aplikasi eksternal regional |
1Backend pada layanan backend harus memiliki jenis yang sama: semua grup instance atau semua NEG dengan jenis yang sama. Pengecualian untuk aturan ini adalah bahwa
GCE_VM_IP_PORT
NEG zonal dan NEG hybrid dapat digunakan pada layanan backend yang sama untuk mendukung
arsitektur hybrid.
2 IAP dan Cloud CDN tidak kompatibel satu sama lain. Keduanya tidak dapat diaktifkan di layanan backend yang sama.
3 Kombinasi grup instance tidak terkelola zonal, terkelola zonal, dan terkelola regional didukung di layanan backend yang sama. Saat menggunakan penskalaan otomatis untuk grup instance terkelola yang merupakan backend untuk dua atau lebih layanan backend, konfigurasi kebijakan penskalaan otomatis grup instance untuk menggunakan beberapa sinyal.
NEG Zona 4 harus menggunakan endpoint GCE_VM_IP_PORT
.
Backend dan jaringan VPC
Batasan lokasi backend dapat berada bergantung pada jenis load balancer.
Untuk backend Load Balancer Aplikasi eksternal global, hal berikut berlaku:
Instance backend (untuk backend grup instance) dan endpoint backend (untuk backend NEG) dapat berada di jaringan VPC mana pun dalam organisasi yang sama. Jaringan VPC yang berbeda tidak perlu terhubung menggunakan Peering Jaringan VPC karena GFE berkomunikasi langsung dengan backend di jaringan VPC masing-masing.
Bucket Cloud Storage tidak dikaitkan dengan jaringan VPC. Resource ini dapat berada di project mana pun dalam organisasi yang sama.
Load Balancer Aplikasi eksternal global juga mendukung lingkungan VPC Bersama tempat Anda dapat berbagi jaringan VPC dan resource terkaitnya di seluruh project. Namun, untuk Load Balancer Aplikasi eksternal global, Anda tidak perlu mengonfigurasi VPC Bersama agar dapat mereferensikan layanan backend atau bucket backend dari project lain di organisasi Anda.
Untuk backend Load Balancer Aplikasi klasik, hal berikut berlaku:
Semua instance backend dari backend grup instance dan semua endpoint backend dari backend NEG harus berada dalam project yang sama. Namun, backend grup instance atau NEG dapat menggunakan jaringan VPC yang berbeda dalam project tersebut. Jaringan VPC yang berbeda tidak perlu dihubungkan menggunakan Peering Jaringan VPC karena GFE berkomunikasi langsung dengan backend di jaringan VPC masing-masing.
Bucket Cloud Storage tidak dikaitkan dengan jaringan VPC. Namun, backend harus berada dalam project yang sama dengan load balancer.
Untuk backend Load Balancer Aplikasi eksternal regional, hal berikut berlaku:
Untuk grup instance, NEG zonal, dan NEG konektivitas hibrida, semua backend harus berada di project dan region yang sama dengan layanan backend. Namun, load balancer dapat mereferensikan backend yang menggunakan jaringan VPC yang berbeda dalam project yang sama dengan layanan backend. Konektivitas antara jaringan VPC load balancer dan jaringan VPC backend dapat dikonfigurasi menggunakan Peering Jaringan VPC, tunnel Cloud VPN, lampiran VLAN Cloud Interconnect, atau framework Network Connectivity Center.
Definisi jaringan backend
- Untuk NEG zonal dan NEG hybrid, Anda secara eksplisit menentukan jaringan VPC saat membuat NEG.
- Untuk grup instance terkelola, jaringan VPC ditentukan dalam template instance.
- Untuk grup instance tidak terkelola, jaringan VPC grup instance ditetapkan agar cocok dengan jaringan VPC antarmuka
nic0
untuk VM pertama yang ditambahkan ke grup instance.
Persyaratan jaringan backend
Jaringan backend Anda harus memenuhi salah satu persyaratan jaringan berikut:
Jaringan VPC backend harus sama persis dengan jaringan VPC aturan penerusan.
Jaringan VPC backend harus terhubung ke jaringan VPC aturan penerusan menggunakan Peering Jaringan VPC. Anda harus mengonfigurasi pertukaran rute subnet untuk mengizinkan komunikasi antara subnet khusus proxy di jaringan VPC aturan penerusan dan subnet yang digunakan oleh instance atau endpoint backend.
- Jaringan VPC backend dan jaringan VPC aturan penerusan harus berupa spoke VPC yang terhubung ke hub Network Connectivity Center yang sama. Filter impor dan ekspor harus mengizinkan komunikasi antara subnet khusus proxy di jaringan VPC aturan penerusan dan subnet yang digunakan oleh instance atau endpoint backend.
Untuk semua jenis backend lainnya, semua backend harus berada di region dan jaringan VPC yang sama.
Load Balancer Aplikasi eksternal regional juga mendukung lingkungan VPC Bersama tempat Anda dapat berbagi jaringan VPC dan resource terkaitnya di seluruh project. Jika Anda ingin layanan backend dan backend Load Balancer Aplikasi eksternal regional berada di project yang berbeda dari aturan penerusan, Anda harus mengonfigurasi load balancer di lingkungan VPC Bersama dengan referensi layanan lintas project.
Backend dan antarmuka jaringan
Jika Anda menggunakan backend grup instance, paket akan selalu dikirimkan ke nic0
. Jika Anda ingin mengirim paket ke antarmuka non-nic0
(baik vNIC atau
Antarmuka Jaringan Dinamis), gunakan
backend NEG.
Jika Anda menggunakan backend NEG zonal, paket akan dikirim ke antarmuka jaringan apa pun yang diwakili oleh endpoint di NEG. Endpoint NEG harus berada di jaringan VPC yang sama dengan jaringan VPC yang ditentukan secara eksplisit oleh NEG.
Health check
Setiap layanan backend menentukan health check yang secara berkala memantau kesiapan backend untuk menerima koneksi dari load balancer. Hal ini mengurangi risiko permintaan dikirim ke backend yang tidak dapat melayani permintaan. Health check tidak memeriksa apakah aplikasi itu sendiri berfungsi.
Untuk pemeriksaan health check, Anda harus membuat aturan firewall masuk yang mengizinkan pemeriksaan health check menjangkau instance backend Anda. Biasanya, pemeriksaan health check berasal dari mekanisme pemeriksaan kondisi terpusat Google.
Load Balancer Aplikasi eksternal regional yang menggunakan backend NEG hibrida adalah pengecualian terhadap aturan ini karena health check-nya berasal dari subnet khusus proxy. Untuk mengetahui detailnya, lihat Ringkasan NEG hibrida.
Protokol health check
Meskipun tidak wajib dan tidak selalu memungkinkan, sebaiknya gunakan health check yang protokolnya cocok dengan protokol layanan backend. Misalnya, health check HTTP/2 paling akurat menguji konektivitas HTTP/2 ke backend. Sebaliknya, Load Balancer Aplikasi eksternal regional yang menggunakan backend NEG hybrid tidak mendukung health check gRPC. Untuk mengetahui daftar protokol health check yang didukung, lihat Fitur load balancing.
Tabel berikut menentukan cakupan health check yang didukung oleh Load Balancer Aplikasi eksternal dalam setiap mode.
Mode load balancer | Jenis health check |
---|---|
Load Balancer Aplikasi eksternal global | Global |
Load Balancer Aplikasi Klasik | Global |
Load Balancer Aplikasi eksternal regional | Regional |
Untuk mengetahui informasi selengkapnya tentang pemeriksaan kondisi, lihat artikel berikut:
Aturan firewall
Load balancer memerlukan aturan firewall berikut:
- Untuk Load Balancer Aplikasi eksternal global, aturan izinkan masuk untuk mengizinkan traffic dari Google Front End (GFE) menjangkau backend Anda. Untuk Load Balancer Aplikasi eksternal regional, aturan izinkan masuk untuk mengizinkan traffic dari subnet khusus proxy menjangkau backend Anda.
- Aturan izin masuk untuk mengizinkan traffic dari rentang pemeriksaan health check. Untuk mengetahui informasi selengkapnya tentang pemeriksaan health check dan alasan perlunya mengizinkan traffic dari pemeriksaan tersebut, lihat Aturan firewall dan rentang IP pemeriksaan.
Aturan firewall diterapkan di tingkat instance VM, bukan di proxy GFE. Anda tidak dapat menggunakan aturan firewall Google Cloud untuk mencegah traffic mencapai load balancer. Untuk Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi klasik, Anda dapat menggunakan Google Cloud Armor untuk melakukannya.
Port untuk aturan firewall ini harus dikonfigurasi sebagai berikut:
Izinkan traffic ke port tujuan untuk health check setiap layanan backend.
Untuk backend grup instance: Tentukan port yang akan dikonfigurasi dengan pemetaan antara port bernama layanan backend dan nomor port yang terkait dengan port bernama tersebut di setiap grup instance. Nomor port dapat bervariasi di antara grup instance yang ditetapkan ke layanan backend yang sama.
Untuk backend NEG
GCE_VM_IP_PORT
: Izinkan traffic ke nomor port endpoint.
Tabel berikut merangkum rentang alamat IP sumber yang diperlukan untuk aturan firewall:
Mode load balancer | Rentang sumber health check | Rentang sumber permintaan |
---|---|---|
Load Balancer Aplikasi eksternal global |
Agar traffic IPv6 dapat mencapai backend:
|
Sumber traffic GFE bergantung pada jenis backend:
|
Load Balancer Aplikasi Klasik |
|
Sumber traffic GFE bergantung pada jenis backend:
|
Load Balancer Aplikasi eksternal regional |
Agar traffic IPv6 dapat mencapai backend:
|
Subnet khusus proxy yang Anda konfigurasi. |
Dukungan GKE
GKE menggunakan Load Balancer Aplikasi eksternal dengan cara berikut:
- Gateway eksternal yang dibuat menggunakan pengontrol Gateway GKE dapat menggunakan mode Load Balancer Aplikasi eksternal apa pun. Anda mengontrol mode load balancer dengan memilih
GatewayClass. Pengontrol GKE Gateway selalu menggunakan backend NEG zonal
GCE_VM_IP_PORT
.
- Ingress eksternal yang dibuat menggunakan pengontrol Ingress GKE selalu berupa Load Balancer Aplikasi klasik. Pengontrol GKE Ingress lebih memilih menggunakan backend NEG zonal
GCE_VM_IP_PORT
, meskipun backend grup instance juga didukung.
- Anda dapat menggunakan NEG zonal
GCE_VM_IP_PORT
yang dibuat dan dikelola oleh Layanan GKE sebagai backend untuk Load Balancer Aplikasi atau Load Balancer Jaringan Proxy. Untuk mengetahui informasi selengkapnya, lihat Load balancing berbasis container melalui NEG zona mandiri.
Arsitektur VPC Bersama
Load Balancer Aplikasi eksternal mendukung jaringan yang menggunakan VPC Bersama. VPC Bersama memungkinkan organisasi menghubungkan resource dari beberapa project ke jaringan VPC umum sehingga resource tersebut dapat berkomunikasi satu sama lain secara aman dan efisien menggunakan alamat IP internal dari jaringan tersebut. Jika Anda belum memahami VPC Bersama, baca Ringkasan VPC Bersama.
Ada banyak cara untuk mengonfigurasi Load Balancer Aplikasi eksternal dalam jaringan VPC Bersama. Terlepas dari jenis deployment, semua komponen load balancer harus berada di organisasi yang sama.
Load balancer | Komponen frontend | Komponen backend |
---|---|---|
Load Balancer Aplikasi eksternal global |
Jika Anda menggunakan jaringan VPC Bersama untuk backend, buat jaringan yang diperlukan di project host VPC Bersama. Alamat IP eksternal global, aturan penerusan, proxy HTTP(S) target, dan peta URL terkait harus ditentukan dalam project yang sama. Project ini dapat berupa project host atau project layanan. |
Anda dapat melakukan salah satu hal berikut:
Setiap layanan backend harus ditentukan dalam project yang sama dengan backend yang dirujuknya. Health check yang terkait dengan layanan backend juga harus ditentukan dalam project yang sama dengan layanan backend. Backend dapat menjadi bagian dari jaringan VPC Bersama dari project host atau jaringan VPC mandiri, yaitu jaringan VPC yang tidak dibagikan di project layanan. |
Load Balancer Aplikasi Klasik | Alamat IP eksternal global, aturan penerusan, proxy HTTP(S) target, dan peta URL terkait harus ditentukan dalam project host atau layanan yang sama dengan backend. | Layanan backend global harus ditentukan dalam project host atau layanan yang sama dengan backend (grup instance atau NEG). Health check yang terkait dengan layanan backend juga harus ditentukan dalam project yang sama dengan layanan backend. |
Load Balancer Aplikasi eksternal regional | Buat jaringan dan subnet khusus proxy yang diperlukan di project host VPC Bersama. Alamat IP eksternal regional, aturan penerusan, proxy HTTP(S) target, dan peta URL terkait harus ditentukan dalam project yang sama. Project ini dapat berupa project host atau project layanan. |
Anda dapat melakukan salah satu hal berikut:
Setiap layanan backend harus ditentukan dalam project yang sama dengan backend yang dirujuknya. Pemeriksaan kondisi yang terkait dengan layanan backend juga harus ditentukan dalam project yang sama dengan layanan backend. |
Meskipun Anda dapat membuat semua komponen load balancing dan backend di project host VPC Bersama, jenis deployment ini tidak memisahkan tanggung jawab administrasi jaringan dan pengembangan layanan.
Semua komponen dan backend load balancer dalam project layanan
Diagram arsitektur berikut menunjukkan deployment VPC Bersama standar dengan semua komponen load balancer dan backend berada dalam project layanan. Jenis deployment ini didukung oleh semua Load Balancer Aplikasi.
Komponen load balancer dan backend harus menggunakan jaringan VPC yang sama.
Backend serverless di lingkungan VPC Bersama
Untuk load balancer yang menggunakan backend NEG serverless, layanan Cloud Run atau Cloud Run Functions backend harus berada dalam project yang sama dengan NEG serverless.
Selain itu, untuk Load Balancer Aplikasi eksternal regional yang mendukung referensi layanan lintas project, layanan backend, NEG serverless, dan layanan Cloud Run harus selalu berada dalam project layanan yang sama.
Referensi layanan lintas project
Referensi layanan lintas project adalah model deployment yang menempatkan frontend dan peta URL load balancer di satu project, serta layanan backend dan backend load balancer di project yang berbeda.
Referensi layanan lintas project memungkinkan organisasi mengonfigurasi satu load balancer pusat dan merutekan traffic ke ratusan layanan yang didistribusikan di beberapa project yang berbeda. Anda dapat mengelola semua aturan dan kebijakan perutean traffic secara terpusat dalam satu peta URL. Anda juga dapat mengaitkan load balancer dengan satu set nama host dan sertifikat SSL. Oleh karena itu, Anda dapat mengoptimalkan jumlah load balancer yang diperlukan untuk men-deploy aplikasi, serta menurunkan kemudahan pengelolaan, biaya operasional, dan persyaratan kuota.
Dengan memiliki project yang berbeda untuk setiap tim fungsional, Anda juga dapat mencapai pemisahan peran dalam organisasi. Pemilik layanan dapat berfokus pada pembuatan layanan dalam project layanan, sementara tim jaringan dapat menyediakan dan memelihara load balancer dalam project lain, dan keduanya dapat terhubung menggunakan referensi layanan lintas project.
Pemilik layanan dapat mempertahankan otonomi atas eksposur layanan mereka dan mengontrol pengguna mana yang dapat mengakses layanan mereka dengan menggunakan load balancer. Hal ini
dicapai dengan peran IAM khusus yang disebut
peran Compute Load Balancer Services User
(roles/compute.loadBalancerServiceUser
).
Dukungan referensi layanan lintas project berbeda-beda berdasarkan jenis load balancer:
Untuk Load Balancer Aplikasi eksternal global: frontend dan peta URL load balancer Anda dapat mereferensikan layanan backend atau bucket backend dari project mana pun dalam organisasi yang sama. Tidak ada batasan jaringan VPC yang berlaku. Meskipun Anda dapat menggunakan lingkungan VPC Bersama untuk mengonfigurasi deployment lintas project seperti yang ditunjukkan dalam contoh ini, hal ini bukan persyaratan.
Untuk Load Balancer Aplikasi eksternal regional: Anda harus membuat load balancer di lingkungan VPC Bersama. Frontend dan peta URL load balancer harus berada di project host atau layanan, dan layanan backend serta backend load balancer dapat didistribusikan di project host atau layanan dalam lingkungan VPC Bersama yang sama.
Untuk mempelajari cara mengonfigurasi VPC Bersama untuk Load Balancer Aplikasi eksternal regional—dengan dan tanpa referensi layanan lintas project—lihat Menyiapkan Load Balancer Aplikasi eksternal regional dengan VPC Bersama.
Catatan penggunaan untuk referensi layanan lintas project
-
Referensi layanan lintas project dapat digunakan dengan grup instance, NEG tanpa server, dan sebagian besar jenis backend lain yang didukung. Namun, batasan berikut berlaku:
Dengan Load Balancer Aplikasi eksternal global, Anda tidak dapat mereferensikan layanan backend lintas project jika layanan backend memiliki backend NEG serverless dengan App Engine.
- Dengan Load Balancer Aplikasi eksternal regional, Anda tidak dapat mereferensikan layanan backend lintas project jika layanan backend memiliki backend NEG internet regional.
- Referensi layanan lintas project tidak didukung untuk Load Balancer Aplikasi klasik.
- Google Cloud tidak membedakan resource (misalnya, layanan backend) yang menggunakan nama yang sama di beberapa project. Oleh karena itu, saat Anda menggunakan referensi layanan lintas project, sebaiknya Anda menggunakan nama layanan backend yang unik di seluruh project dalam organisasi Anda.
- Jika Anda melihat error seperti "Referensi lintas project untuk resource ini tidak diizinkan", pastikan Anda memiliki izin untuk menggunakan resource tersebut. Administrator project yang memiliki resource harus memberi Anda
peran Pengguna Layanan Load Balancer Compute
(
roles/compute.loadBalancerServiceUser
). Peran ini dapat diberikan di tingkat project atau di tingkat resource. Untuk contoh, lihat Memberikan izin kepada Admin Load Balancer Compute untuk menggunakan layanan backend atau bucket backend.
Contoh 1: Frontend dan backend load balancer di project layanan yang berbeda
Berikut adalah contoh deployment VPC Bersama di mana frontend dan peta URL load balancer dibuat di project layanan A dan peta URL mereferensikan layanan backend di project layanan B.
Dalam hal ini, Admin Jaringan atau Admin Load Balancer di project layanan A memerlukan akses ke layanan backend di project layanan B. Admin project layanan B memberikan peran Compute Load Balancer Services User (roles/compute.loadBalancerServiceUser
) kepada Admin Load Balancer di project layanan A yang ingin mereferensikan layanan backend di project layanan B.
Contoh 2: Frontend load balancer di project host dan backend di project layanan
Berikut adalah contoh deployment VPC Bersama tempat frontend dan peta URL load balancer dibuat di project host, serta layanan backend (dan backend) dibuat di project layanan.
Dalam kasus ini, Admin Jaringan atau Admin Load Balancer di project host memerlukan akses ke layanan backend di project layanan. Admin project layanan memberikan peran Compute Load Balancer Services User (roles/compute.loadBalancerServiceUser
) kepada Admin Load Balancer di project host A yang ingin mereferensikan layanan backend di project layanan.
Contoh 3: Frontend dan backend load balancer dalam project yang berbeda
Berikut adalah contoh deployment tempat frontend dan peta URL Load Balancer Aplikasi eksternal global dibuat di project yang berbeda dari layanan backend dan backend load balancer. Jenis deployment ini tidak menggunakan VPC Bersama dan hanya didukung untuk Load Balancer Aplikasi eksternal global.
Untuk mempelajari lebih lanjut penyiapan ini, lihat Menyiapkan referensi layanan lintas project dengan layanan backend dan bucket backend.
Cara kerja koneksi
Koneksi Load Balancer Aplikasi eksternal global
Load Balancer Aplikasi eksternal global diterapkan oleh banyak proxy yang disebut Google Front End (GFE). Tidak hanya ada satu proxy. Di Paket Premium, alamat IP eksternal global yang sama diiklankan dari berbagai titik kehadiran, dan permintaan klien diarahkan ke GFE terdekat klien.
Bergantung pada lokasi klien Anda, beberapa GFE dapat memulai koneksi HTTP(S) ke backend Anda. Paket yang dikirim dari GFE memiliki alamat IP sumber dari rentang yang sama dengan yang digunakan oleh pemeriksa health check: 35.191.0.0/16 dan 130.211.0.0/22.
Bergantung pada konfigurasi layanan backend, protokol yang digunakan oleh setiap GFE untuk terhubung ke backend Anda dapat berupa HTTP, HTTPS, atau HTTP/2. Untuk koneksi HTTP atau HTTPS, versi HTTP yang digunakan adalah HTTP 1.1.
Keep-alive HTTP diaktifkan secara default, seperti yang ditentukan dalam spesifikasi HTTP 1.1. Keep-alive HTTP berupaya menggunakan sesi TCP yang sama secara efisien, tetapi tidak ada jaminan. GFE menggunakan waktu tunggu keep-alive HTTP klien sebesar 610 detik dan nilai waktu tunggu keep-alive backend default sebesar 600 detik. Anda dapat memperbarui waktu tunggu HTTP keep-alive klien, tetapi nilai waktu tunggu keep-alive backend ditetapkan. Anda dapat mengonfigurasi waktu tunggu permintaan/respons dengan menyetel waktu tunggu layanan backend. Meskipun terkait erat, HTTP keep-alive dan waktu tunggu TCP idle tidak sama. Untuk mengetahui informasi selengkapnya, lihat waktu tunggu dan percobaan ulang.
Untuk memastikan traffic di-load balance secara merata, load balancer dapat menutup koneksi TCP dengan baik dengan mengirimkan paket FIN ACK
setelah menyelesaikan respons yang menyertakan header Connection: close
, atau dapat mengeluarkan frame GOAWAY
HTTP/2 setelah menyelesaikan respons. Perilaku ini tidak mengganggu
permintaan atau respons yang aktif.
Jumlah koneksi HTTP dan sesi TCP bervariasi, bergantung pada jumlah GFE yang terhubung, jumlah klien yang terhubung ke GFE, protokol ke backend, dan tempat backend di-deploy.
Untuk mengetahui informasi selengkapnya, lihat Cara kerja Load Balancer Aplikasi eksternal dalam panduan solusi: Pengoptimalan Kapasitas Aplikasi dengan Load Balancing Global.
Koneksi Load Balancer Aplikasi eksternal regional
Load Balancer Aplikasi eksternal regional adalah layanan terkelola yang diterapkan pada proxy Envoy.
Load Balancer Aplikasi eksternal regional menggunakan subnet bersama yang disebut subnet khusus proxy untuk menyediakan serangkaian alamat IP yang digunakan Google untuk menjalankan proxy Envoy atas nama Anda. Flag --purpose
untuk subnet khusus proxy ini ditetapkan ke
REGIONAL_MANAGED_PROXY
. Semua load balancer berbasis Envoy regional dalam jaringan dan region tertentu berbagi subnet ini.
Klien menggunakan alamat IP dan port load balancer untuk terhubung ke load balancer. Permintaan klien diarahkan ke subnet khusus proxy di region yang sama dengan klien. Load balancer menghentikan permintaan klien, lalu membuka koneksi baru dari subnet khusus proxy ke backend Anda. Oleh karena itu, paket yang dikirim dari load balancer memiliki alamat IP sumber dari subnet khusus proxy.
Bergantung pada konfigurasi layanan backend, protokol yang digunakan oleh proxy Envoy untuk terhubung ke backend Anda dapat berupa HTTP, HTTPS, atau HTTP/2. Jika HTTP atau HTTPS, versi HTTP adalah HTTP 1.1. Keep-alive HTTP diaktifkan secara default, seperti yang ditentukan dalam spesifikasi HTTP 1.1. Proxy Envoy menetapkan waktu tunggu keep-alive HTTP klien dan waktu tunggu keep-alive backend ke nilai default 600 detik. Anda dapat memperbarui waktu tunggu tetap aktif HTTP klien, tetapi nilai waktu tunggu tetap aktif backend sudah ditetapkan. Anda dapat mengonfigurasi waktu tunggu permintaan/respons dengan menetapkan waktu tunggu layanan backend. Untuk mengetahui informasi selengkapnya, lihat waktu tunggu dan percobaan ulang.
Komunikasi klien dengan load balancer
- Klien dapat berkomunikasi dengan load balancer menggunakan protokol HTTP 1.1 atau HTTP/2.
- Jika HTTPS digunakan, klien modern secara default menggunakan HTTP/2. Hal ini dikontrol di klien, bukan di load balancer HTTPS.
- Anda tidak dapat menonaktifkan HTTP/2 dengan melakukan perubahan konfigurasi pada load balancer. Namun, Anda dapat mengonfigurasi beberapa klien untuk menggunakan HTTP 1.1, bukan
HTTP/2. Misalnya, dengan
curl
, gunakan parameter--http1.1
. - Load Balancer Aplikasi Eksternal mendukung respons
HTTP/1.1 100 Continue
.
Untuk mengetahui daftar lengkap protokol yang didukung oleh aturan penerusan Load Balancer Aplikasi eksternal dalam setiap mode, lihat Fitur load balancer.
Alamat IP sumber untuk paket klien
Alamat IP sumber untuk paket, seperti yang terlihat oleh backend, bukan Google Cloud alamat IP eksternal load balancer. Dengan kata lain, ada dua koneksi TCP.
Untuk Load Balancer Aplikasi eksternal global:Koneksi 1, dari klien asli ke load balancer (GFE):
- Alamat IP sumber: klien asli (atau alamat IP eksternal jika klien berada di belakang gateway NAT atau proxy penerusan).
- Alamat IP tujuan: alamat IP load balancer Anda.
Koneksi 2, dari load balancer (GFE) ke VM atau endpoint backend:
Alamat IP sumber: alamat IP dalam salah satu rentang yang ditentukan dalam Aturan firewall.
Alamat IP tujuan: alamat IP internal VM atau penampung backend di jaringan VPC.
Koneksi 1, dari klien asli ke load balancer (subnet khusus proxy):
- Alamat IP sumber: klien asli (atau alamat IP eksternal jika klien berada di belakang gateway NAT atau proxy penerusan).
- Alamat IP tujuan: alamat IP load balancer Anda.
Koneksi 2, dari load balancer (subnet khusus proxy) ke VM atau endpoint backend:
Alamat IP sumber: alamat IP di subnet khusus proxy yang digunakan bersama oleh semua load balancer berbasis Envoy yang di-deploy di region dan jaringan yang sama dengan load balancer.
Alamat IP tujuan: alamat IP internal VM atau penampung backend di jaringan VPC.
Jalur perutean khusus
Google Cloud menggunakan rute khusus yang tidak ditentukan di jaringan VPC Anda untuk merutekan paket untuk jenis traffic berikut:
- Untuk health check, kecuali health check Envoy terdistribusi. Untuk mengetahui informasi selengkapnya, lihat Jalur untuk health check.
- Antara GFE dan backend Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi klasik. Untuk mengetahui informasi selengkapnya, lihat Jalur antara Google Front End dan backend.
Google Cloud menggunakan rute subnet untuk subnet khusus proxy guna merutekan paket untuk jenis traffic berikut:
- Saat menggunakan health check Envoy terdistribusi.
Untuk Load Balancer Aplikasi eksternal regional, Google Cloud menggunakan proxy Envoy open source untuk menghentikan permintaan klien ke load balancer. Load balancer menghentikan sesi TCP dan membuka sesi TCP baru dari subnet khusus proxy di region ke backend Anda. Rute yang ditentukan dalam jaringan VPC Anda memfasilitasi komunikasi dari proxy Envoy ke backend Anda dan dari backend Anda ke proxy Envoy.
Port yang terbuka
GFE memiliki beberapa port terbuka untuk mendukung layanan Google lainnya yang berjalan di arsitektur yang sama. Saat menjalankan pemindaian port, Anda mungkin melihat port terbuka lainnya untuk layanan Google lain yang berjalan di GFE.
Load balancer berbasis GFE—Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi klasik—selalu menampilkan port 80 dan 443 sebagai terbuka (bersama dengan port lain yang telah Anda konfigurasi dalam aturan penerusan load balancer). Namun, jika Anda belum mengonfigurasi aturan penerusan untuk port 80 atau port 443, semua koneksi yang dikirim ke port tersebut akan ditolak. Sebaliknya, Load Balancer Aplikasi eksternal regional diimplementasikan menggunakan proxy Envoy dan tidak menampilkan port terbuka tambahan selama pemindaian.Menjalankan pemindaian port pada alamat IP load balancer berbasis GFE tidak berguna dari perspektif audit karena alasan berikut:
Pemindaian port (misalnya, dengan
nmap
) umumnya tidak mengharapkan paket respons atau paket TCP RST saat melakukan penyelidikan TCP SYN. GFE mengirim paket SYN-ACK sebagai respons terhadap probe SYN hanya untuk port yang telah Anda konfigurasi aturan penerusannya. GFE hanya mengirim paket ke backend Anda sebagai respons terhadap paket yang dikirim ke alamat IP load balancer Anda dan port tujuan yang dikonfigurasi pada aturan penerusannya. Paket yang dikirim ke alamat IP atau port yang berbeda tidak dikirim ke backend Anda.GFE menerapkan fitur keamanan seperti Google Cloud Armor. Dengan Google Cloud Armor Standard, GFE menyediakan perlindungan yang selalu aktif dari serangan DDoS berbasis protokol dan volumetrik serta serangan bertubi-tubi menggunakan SYN. Perlindungan ini tersedia meskipun Anda belum secara eksplisit mengonfigurasi Google Cloud Armor. Anda hanya dikenai biaya jika mengonfigurasi kebijakan keamanan atau jika Anda mendaftar ke Managed Protection Plus.
Paket yang dikirim ke alamat IP load balancer Anda dapat dijawab oleh GFE mana pun di fleet Google; namun, pemindaian kombinasi alamat IP dan port tujuan load balancer hanya menginterogasi satu GFE per koneksi TCP. Alamat IP load balancer Anda tidak ditetapkan ke satu perangkat atau sistem. Oleh karena itu, memindai alamat IP load balancer berbasis GFE tidak memindai semua GFE dalam fleet Google.
Dengan mempertimbangkan hal tersebut, berikut beberapa cara yang lebih efektif untuk mengaudit keamanan instance backend Anda:
Auditor keamanan harus memeriksa konfigurasi aturan penerusan untuk konfigurasi load balancer. Aturan penerusan menentukan port tujuan tempat load balancer Anda menerima paket dan meneruskannya ke backend. Untuk load balancer berbasis GFE, setiap aturan penerusan eksternal hanya dapat mereferensikan satu port TCP tujuan. Untuk load balancer yang menggunakan port TCP 443, port UDP 443 digunakan saat koneksi diupgrade ke QUIC (HTTP/3).
Auditor keamanan harus memeriksa konfigurasi aturan firewall yang berlaku untuk VM backend. Aturan firewall yang Anda tetapkan memblokir traffic dari GFE ke VM backend, tetapi tidak memblokir traffic masuk ke GFE. Untuk praktik terbaik, lihat bagian aturan firewall.
TLS termination
Tabel berikut merangkum cara peniadaan TLS ditangani oleh Load Balancer Aplikasi eksternal.
Mode load balancer | TLS termination |
---|---|
Load Balancer Aplikasi eksternal global | TLS dihentikan di GFE, yang dapat berada di mana saja di dunia. |
Load Balancer Aplikasi Klasik | TLS dihentikan di GFE, yang dapat berada di mana saja di dunia. |
Load Balancer Aplikasi eksternal regional | TLS dihentikan pada proxy Envoy yang berada di subnet khusus proxy di region yang dipilih oleh pengguna. Gunakan mode load balancer ini jika Anda memerlukan kontrol geografis atas region tempat TLS dihentikan. |
Waktu tunggu dan percobaan ulang
Load Balancer Aplikasi Eksternal mendukung jenis waktu tunggu berikut untuk traffic HTTP atau HTTPS:
Jenis dan deskripsi waktu tunggu | Nilai default | Mendukung nilai waktu tunggu kustom | ||
---|---|---|---|---|
Global | Klasik | Regional | ||
Waktu tunggu layanan backend1
Waktu tunggu permintaan dan respons. Mewakili jumlah waktu maksimum yang diizinkan antara load balancer yang mengirim byte pertama permintaan ke backend dan backend yang menampilkan byte terakhir respons HTTP ke load balancer. Jika backend belum menampilkan seluruh respons HTTP ke load balancer dalam batas waktu ini, data respons yang tersisa akan dihilangkan. |
|
|||
Waktu tunggu aktif HTTP klien
Waktu maksimum koneksi TCP antara klien dan proxy load balancer dapat tidak aktif. (Koneksi TCP yang sama dapat digunakan untuk beberapa permintaan HTTP.)
|
610 detik | |||
Waktu tunggu keep-alive HTTP backend
Jumlah waktu maksimum koneksi TCP antara proxy load balancer dan backend dapat tidak aktif. (Koneksi TCP yang sama dapat digunakan untuk beberapa permintaan HTTP.)
|
|
|||
Waktu tunggu tidak ada aktivitas sesi QUIC
Jumlah waktu maksimum sesi QUIC dapat tidak aktif antara klien (downstream) dan GFE Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik. |
Untuk Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi klasik: Waktu tunggu tidak ada aktivitas sesi QUIC adalah minimum dari waktu tunggu tidak ada aktivitas klien atau waktu tunggu tidak ada aktivitas GFE (300 detik). Waktu tunggu tidak ada aktivitas GFE ditetapkan pada 300 detik. Waktu tunggu tidak ada aktivitas klien dapat dikonfigurasi. |
1Tidak dapat dikonfigurasi untuk backend NEG serverless. Tidak dapat dikonfigurasi untuk bucket backend.
Waktu tunggu layanan backend
Waktu tunggu layanan backend yang dapat dikonfigurasi menunjukkan jumlah waktu maksimum yang ditunggu load balancer agar backend Anda memproses permintaan HTTP dan menampilkan respons HTTP yang sesuai. Kecuali untuk NEG tanpa server, nilai default untuk waktu tunggu layanan backend adalah 30 detik.
Misalnya, jika Anda ingin mendownload file berukuran 500 MB, dan nilai waktu tunggu layanan backend adalah 90 detik, load balancer akan mengharapkan backend mengirimkan seluruh file berukuran 500 MB dalam waktu 90 detik. Waktu tunggu layanan backend dapat dikonfigurasi agar tidak cukup bagi backend untuk mengirim respons HTTP lengkapnya. Dalam situasi ini, jika load balancer telah menerima header respons HTTP dari backend, load balancer akan menampilkan header respons lengkap dan isi respons sebanyak yang dapat diperoleh dalam waktu tunggu layanan backend.
Sebaiknya tetapkan waktu tunggu layanan backend ke waktu terlama yang Anda perkirakan dibutuhkan backend untuk memproses respons HTTP.
Jika software yang berjalan di backend Anda memerlukan lebih banyak waktu untuk memproses permintaan HTTP dan menampilkan seluruh responsnya, sebaiknya tingkatkan waktu tunggu layanan backend.
Misalnya, sebaiknya tingkatkan batas waktu jika Anda melihat respons kode status HTTP 408
dengan error jsonPayload.statusDetail client_timed_out
.
Waktu tunggu layanan backend menerima nilai antara 1
dan 2,147,483,647
detik; namun, nilai yang lebih besar bukanlah opsi konfigurasi yang praktis.
Google Cloud juga tidak menjamin bahwa koneksi TCP yang mendasarinya dapat
tetap terbuka selama seluruh nilai waktu tunggu layanan backend.
Untuk Load Balancer Aplikasi global dan klasik, GFE menerapkan waktu tunggu layanan backend maksimum yang efektif sebesar 86,400
detik (1 hari).
Sistem klien harus menerapkan logika percobaan ulang, bukan mengandalkan koneksi TCP agar tetap terbuka dalam jangka waktu yang lama.
Untuk mengonfigurasi waktu tunggu layanan backend, gunakan salah satu metode berikut:
Konsol
Ubah kolom Waktu tunggu layanan backend load balancer.
gcloud
Gunakan perintah
gcloud compute backend-services update
untuk mengubah parameter --timeout
dari resource
layanan backend.
API
Untuk Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik, ubah
parameter timeoutSec
untuk
resource global
backendServices
.
Untuk Load Balancer Aplikasi eksternal regional, ubah parameter timeoutSec
untuk
regionBackendServices
resource.
Mode load balancer | Nilai default | Deskripsi waktu tunggu untuk websockets |
---|---|---|
Load Balancer Aplikasi eksternal global | waktu tunggu layanan backend: 30 detik | Koneksi websocket aktif tidak menggunakan waktu tunggu layanan backend yang dikonfigurasi pada load balancer. Koneksi akan otomatis ditutup setelah 24 jam (86.400 detik). Batas 24 jam ini tetap dan menggantikan waktu tunggu layanan backend jika lebih dari 24 jam. Koneksi websocket yang tidak aktif akan ditutup setelah layanan backend mengalami waktu tunggu. Sebaiknya jangan gunakan nilai waktu tunggu layanan backend yang lebih besar dari 24 jam (86.400 detik) karena GFE dimulai ulang secara berkala untuk update software dan pemeliharaan rutin lainnya. Google Cloud Nilai waktu tunggu layanan backend Anda tidak menunda aktivitas pemeliharaan. Makin lama nilai waktu tunggu layanan backend, makin besar kemungkinan Google Cloud menghentikan koneksi TCP untuk pemeliharaan. |
Load Balancer Aplikasi Klasik | waktu tunggu layanan backend: 30 detik | Koneksi Websocket, baik dalam keadaan tidak aktif maupun aktif, akan otomatis ditutup setelah layanan backend mengalami waktu tunggu. Sebaiknya jangan gunakan nilai waktu tunggu layanan backend yang lebih besar dari 24 jam (86.400 detik) karena GFE dimulai ulang secara berkala untuk update software dan pemeliharaan rutin lainnya. Google Cloud Nilai waktu tunggu layanan backend Anda tidak menunda aktivitas pemeliharaan. Makin lama nilai waktu tunggu layanan backend, makin besar kemungkinan Google Cloud menghentikan koneksi TCP untuk pemeliharaan. |
Load Balancer Aplikasi eksternal regional | waktu tunggu layanan backend: 30 detik | Koneksi websocket aktif tidak menggunakan waktu tunggu layanan backend load balancer. Koneksi websocket yang tidak aktif akan ditutup setelah layanan backend mengalami waktu tunggu. Google Cloud secara berkala memulai ulang atau mengubah jumlah tugas software Envoy yang melayani permintaan. Semakin lama nilai waktu tunggu layanan backend, semakin besar kemungkinan tugas Envoy dimulai ulang atau menghentikan koneksi TCP. |
Load Balancer Aplikasi eksternal regional menggunakan parameter
routeActions.timeout
yang dikonfigurasi dari peta URL dan mengabaikan waktu tunggu layanan backend. Jika
routeActions.timeout
tidak dikonfigurasi, nilai waktu tunggu layanan
backend akan digunakan. Jika routeActions.timeout
diberikan,
waktu tunggu layanan backend akan diabaikan, dan nilai
routeActions.timeout
akan digunakan sebagai waktu tunggu permintaan dan respons.
Waktu tunggu keep-alive HTTP klien
Waktu tunggu keep-alive HTTP klien menunjukkan jumlah waktu maksimum koneksi TCP dapat tidak aktif antara klien (downstream) dan salah satu jenis proxy berikut:
- Untuk Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik: Google Front End lapisan pertama
- Untuk Load Balancer Aplikasi eksternal regional: proxy Envoy
Waktu tunggu HTTP keep-alive klien mewakili waktu tunggu tidak ada aktivitas TCP untuk koneksi TCP yang mendasarinya. Waktu tunggu HTTP keep-alive klien tidak berlaku untuk websockets.
Nilai default untuk waktu tunggu keep-alive HTTP klien adalah 610 detik. Untuk Load Balancer Aplikasi eksternal global dan regional, Anda dapat mengonfigurasi waktu tunggu keep-alive HTTP klien dengan nilai antara 5 dan 1.200 detik.
Untuk mengonfigurasi waktu tunggu habis keep-alive HTTP klien, gunakan salah satu metode berikut:
Konsol
Ubah kolom HTTP keepalive timeout dari konfigurasi frontend load balancer.
gcloud
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah
gcloud compute target-http-proxies update
atau perintah gcloud compute target-https-proxies update
untuk mengubah parameter --http-keep-alive-timeout-sec
dari resource proxy HTTP target atau proxy HTTPS target.
Untuk Load Balancer Aplikasi eksternal regional, Anda tidak dapat memperbarui parameter waktu tunggu tetap aktif proxy HTTP(S) target regional secara langsung. Untuk memperbarui parameter waktu tunggu tetap aktif proxy target regional, Anda harus melakukan hal berikut:
- Buat proxy target baru dengan setelan waktu tunggu yang diinginkan.
- Menyalin semua setelan lainnya dari proxy target saat ini ke proxy target baru. Untuk proxy HTTPS target, hal ini mencakup penautan sertifikat SSL atau peta sertifikat ke proxy target baru.
- Perbarui aturan penerusan untuk mengarah ke proxy target baru.
- Hapus proxy target sebelumnya.
API
Untuk Load Balancer Aplikasi eksternal global, ubah parameter
httpKeepAliveTimeoutSec
untuk
targetHttpProxies
resource atau
targetHttpsProxies
resource.
Untuk Load Balancer Aplikasi eksternal regional, Anda tidak dapat memperbarui parameter waktu tunggu tetap aktif proxy HTTP(S) target regional secara langsung. Untuk memperbarui parameter waktu tunggu tetap aktif proxy target regional, Anda harus melakukan hal berikut:
- Buat proxy target baru dengan setelan waktu tunggu yang diinginkan.
- Menyalin semua setelan lainnya dari proxy target saat ini ke proxy target baru. Untuk proxy HTTPS target, hal ini mencakup penautan sertifikat SSL atau peta sertifikat ke proxy target baru.
- Perbarui aturan penerusan untuk mengarah ke proxy target baru.
- Hapus proxy target sebelumnya.
Waktu tunggu HTTP keep-alive klien load balancer harus lebih besar daripada waktu tunggu HTTP keep-alive (TCP idle) yang digunakan oleh klien atau proxy hilir. Jika klien hilir memiliki waktu tunggu HTTP keep-alive (TCP idle) yang lebih besar daripada waktu tunggu HTTP keep-alive klien load balancer, kondisi persaingan dapat terjadi. Dari perspektif klien hilir, koneksi TCP yang dibuat diizinkan untuk tidak aktif lebih lama daripada yang diizinkan oleh load balancer. Artinya, klien hilir dapat mengirim paket setelah load balancer menganggap koneksi TCP telah ditutup. Jika hal itu terjadi, load balancer akan merespons dengan paket reset TCP (RST).
Saat waktu tunggu keep-alive HTTP klien berakhir, proxy GFE atau Envoy akan mengirim TCP FIN ke klien untuk menutup koneksi dengan benar.
Waktu tunggu keep-alive HTTP backend
Load Balancer Aplikasi eksternal adalah proxy yang menggunakan minimal dua koneksi TCP:
- Untuk Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik, koneksi TCP pertama ada di antara klien (downstream) dan GFE lapisan pertama. GFE lapisan pertama terhubung ke GFE lapisan kedua, lalu GFE lapisan kedua membuka koneksi TCP kedua ke backend Anda.
- Untuk Load Balancer Aplikasi eksternal regional, koneksi TCP pertama ada antara klien (downstream) dan proxy Envoy. Proxy Envoy kemudian membuka koneksi TCP kedua ke backend Anda.
Koneksi TCP sekunder load balancer mungkin tidak ditutup setelah setiap permintaan; koneksi tersebut dapat tetap terbuka untuk menangani beberapa permintaan dan respons HTTP. Waktu tunggu tetap aktif HTTP backend menentukan waktu tunggu tidak ada aktivitas TCP antara load balancer dan backend Anda. Waktu tunggu HTTP keep-alive backend tidak berlaku untuk websocket.
Waktu tunggu tetap aktif backend ditetapkan pada 10 menit (600 detik) dan tidak dapat diubah. Hal ini membantu memastikan load balancer mempertahankan koneksi tidak aktif selama minimal 10 menit. Setelah periode ini, load balancer dapat mengirimkan paket penghentian ke backend kapan saja.
Waktu tunggu tetap aktif backend load balancer harus kurang dari waktu tunggu tetap aktif yang digunakan oleh software yang berjalan di backend Anda. Hal ini menghindari kondisi race di mana sistem operasi backend Anda dapat menutup koneksi TCP dengan reset TCP (RST). Karena waktu tunggu tetap aktif backend untuk load balancer tidak dapat dikonfigurasi, Anda harus mengonfigurasi software backend sehingga nilai waktu tunggu tetap aktif HTTP (TCP idle) lebih besar dari 600 detik.
Saat waktu tunggu keep-alive HTTP backend berakhir, GFE atau proxy Envoy akan mengirim TCP FIN ke VM backend untuk menutup koneksi dengan benar.
Tabel berikut mencantumkan perubahan yang diperlukan untuk mengubah nilai waktu tunggu tetap aktif untuk software server web umum.
Software server web | Parameter | Setelan default | Setelan yang direkomendasikan |
---|---|---|---|
Apache | KeepAliveTimeout | KeepAliveTimeout 5 |
KeepAliveTimeout 620 |
nginx | keepalive_timeout | keepalive_timeout 75s; |
keepalive_timeout 620s; |
Waktu tunggu tidak ada aktivitas sesi QUIC
Waktu tunggu tidak ada aktivitas sesi QUIC menunjukkan jumlah waktu maksimum saat sesi QUIC dapat tidak ada aktivitas antara klien dan GFE Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi klasik.
Nilai waktu tunggu tidak ada aktivitas sesi QUIC ditentukan sebagai nilai minimum dari waktu tunggu tidak ada aktivitas klien atau waktu tunggu tidak ada aktivitas GFE (300 detik). Waktu tunggu tidak ada aktivitas GFE ditetapkan pada 300 detik. Waktu tunggu tidak ada aktivitas klien dapat dikonfigurasi.
Upaya coba lagi
Dukungan untuk logika percobaan ulang bergantung pada mode Load Balancer Aplikasi eksternal.
Mode load balancer | Logika percobaan ulang |
---|---|
Load Balancer Aplikasi eksternal global |
Dapat dikonfigurasi menggunakan
kebijakan percobaan ulang
dalam peta URL. Jumlah maksimum percobaan ulang
( Jika Anda ingin menonaktifkan percobaan ulang, Anda harus menetapkan
Tanpa kebijakan percobaan ulang, permintaan yang gagal dan tidak memiliki
isi HTTP (misalnya, permintaan Permintaan Permintaan yang dicoba lagi hanya menghasilkan satu entri log untuk respons akhir. |
Load Balancer Aplikasi Klasik |
Kebijakan percobaan ulang tidak dapat diubah untuk percobaan ulang koneksi. Permintaan Permintaan HTTP Load balancer mencoba kembali permintaan Permintaan yang dicoba lagi hanya menghasilkan satu entri log untuk respons akhir. Untuk mengetahui informasi selengkapnya, lihat Logging dan monitoring Load Balancer Aplikasi Eksternal. Permintaan yang gagal akan menyebabkan load balancer menyintesis respons
HTTP |
Load Balancer Aplikasi eksternal regional |
Dapat dikonfigurasi menggunakan
kebijakan
coba lagi di peta URL. Jumlah percobaan ulang default
( Tanpa kebijakan percobaan ulang, permintaan yang gagal yang tidak memiliki
isi HTTP (misalnya, permintaan Permintaan Permintaan yang dicoba lagi hanya menghasilkan satu entri log untuk respons akhir. |
Protokol WebSocket didukung dengan GKE Ingress.
Penanganan permintaan dan respons ilegal
Load balancer memblokir permintaan klien dan respons backend agar tidak mencapai backend atau klien, masing-masing, karena sejumlah alasan. Beberapa alasannya adalah untuk kepatuhan terhadap HTTP/1.1 dan yang lainnya adalah untuk menghindari data yang tidak terduga diteruskan ke atau dari backend. Tidak ada pemeriksaan yang dapat dinonaktifkan.
Load balancer memblokir permintaan berikut agar sesuai dengan HTTP/1.1:
- Tidak dapat mengurai baris pertama permintaan.
- Header tidak memiliki pemisah titik dua (
:
). - Header atau baris pertama berisi karakter yang tidak valid.
- Panjang konten bukan angka yang valid, atau ada beberapa header panjang konten.
- Ada beberapa kunci encoding transfer, atau ada nilai encoding transfer yang tidak dikenali.
- Ada isi yang tidak di-chunk dan tidak ada panjang konten yang ditentukan.
- Chunk isi tidak dapat diuraikan. Ini adalah satu-satunya kasus saat beberapa data mencapai backend. Load balancer menutup koneksi ke klien dan backend saat menerima potongan yang tidak dapat diuraikan.
Penanganan permintaan
Load balancer memblokir permintaan jika salah satu hal berikut terpenuhi:
- Total ukuran header permintaan dan URL permintaan melebihi batas untuk ukuran header permintaan maksimum untuk Load Balancer Aplikasi eksternal.
- Metode permintaan tidak mengizinkan isi, tetapi permintaan memilikinya.
- Permintaan berisi header
Upgrade
, dan headerUpgrade
tidak digunakan untuk mengaktifkan koneksi WebSocket. - Versi HTTP tidak diketahui.
Penanganan respons
Load balancer memblokir respons backend jika salah satu hal berikut benar:
- Total ukuran header respons melebihi batas ukuran header respons maksimum untuk Load Balancer Aplikasi eksternal.
- Versi HTTP tidak diketahui.
Saat menangani permintaan dan respons, load balancer dapat menghapus atau mengganti header hop-by-hop di HTTP/1.1 sebelum meneruskannya ke tujuan yang diinginkan.
Distribusi traffic
Saat menambahkan grup instance backend atau NEG ke layanan backend, Anda menentukan mode load balancing, yang menentukan metode pengukuran beban backend dan kapasitas target. Load Balancer Aplikasi Eksternal mendukung dua mode penyeimbangan:
RATE
, untuk grup instance atau NEG, adalah jumlah maksimum target permintaan (kueri) per detik (RPS, QPS). Target RPS/QPS maksimum dapat terlampaui jika semua backend berada pada atau di atas kapasitas.UTILIZATION
adalah pemanfaatan backend VM dalam grup instance.
Cara traffic didistribusikan di antara backend bergantung pada mode load balancer.
Load Balancer Aplikasi eksternal global
Sebelum mengirim permintaan ke instance backend, Google Front End (GFE) memperkirakan instance backend mana yang memiliki kapasitas untuk menerima permintaan. Estimasi kapasitas ini dilakukan secara proaktif, bukan pada saat yang sama dengan permintaan tiba. GFE menerima informasi berkala tentang kapasitas yang tersedia dan mendistribusikan permintaan masuk dengan tepat.
Arti kapasitas sebagian bergantung pada mode penyeimbangan. Untuk mode RATE
, prosesnya relatif sederhana: GFE menentukan secara tepat jumlah permintaan yang dapat ditetapkan per detik. Load balancing berbasis UTILIZATION
lebih kompleks: load balancer memeriksa penggunaan instance saat ini, lalu memperkirakan beban kueri yang dapat ditangani setiap instance. Estimasi ini berubah seiring waktu saat pemanfaatan instance dan pola traffic berubah.
Kedua faktor—estimasi kapasitas dan penetapan proaktif—memengaruhi distribusi di antara instance. Dengan demikian, Cloud Load Balancing berperilaku berbeda dari load balancer round-robin sederhana yang menyebarkan permintaan tepat 50:50 di antara dua instance. Sebagai gantinya, Google Cloud load balancing berupaya mengoptimalkan pemilihan instance backend untuk setiap permintaan.
Untuk Load Balancer Aplikasi eksternal global, load balancing terdiri dari dua tingkat. Mode load balancing
menentukan bobot atau fraksi traffic yang akan dikirim ke setiap
backend (grup instance atau NEG). Kemudian, kebijakan load balancing
(LocalityLbPolicy
) menentukan cara traffic didistribusikan ke instance atau
endpoint dalam grup. Untuk mengetahui informasi selengkapnya, lihat Kebijakan lokalitas load balancing (dokumentasi API layanan backend).
Untuk Load Balancer Aplikasi klasik, mode penyeimbangan digunakan untuk memilih backend (grup instance atau NEG) yang paling sesuai. Traffic kemudian didistribusikan secara round robin di antara instance atau endpoint dalam backend.
Cara permintaan didistribusikan
Load Balancer Aplikasi eksternal berbasis GFE menggunakan proses berikut untuk mendistribusikan permintaan masuk:
- Dari klien ke GFE lapisan pertama. Router edge mengiklankan alamat IP eksternal aturan penerusan di batas jaringan Google.
Setiap iklan mencantumkan next hop ke sistem load balancing Layer 3 dan Layer 4 (Maglev). Sistem Maglev merutekan traffic ke Google Front End (GFE) lapisan pertama.
- Saat menggunakan Paket Premium, Google akan mengiklankan alamat IP load balancer Anda dari semua titik kehadiran di seluruh dunia. Setiap alamat IP load balancer adalah anycast global.
- Saat menggunakan Paket Standar, Google mengiklankan alamat IP load balancer Anda dari titik kehadiran yang terkait dengan region aturan penerusan. Load balancer menggunakan alamat IP eksternal regional. Menggunakan aturan penerusan Paket Standar membatasi Anda untuk menggunakan grup instance dan backend NEG zonal di region yang sama dengan aturan penerusan load balancer.
- Dari GFE lapisan pertama ke GFE lapisan kedua. GFE lapisan pertama
menghentikan TLS jika diperlukan, lalu merutekan traffic ke GFE lapisan kedua
sesuai dengan proses berikut:
- GFE lapisan pertama mengurai peta URL dan memilih layanan backend atau bucket backend.
- Untuk layanan backend dengan NEG internet, GFE lapisan pertama memilih gateway penerusan eksternal lapisan kedua yang ditempatkan bersama GFE lapisan pertama. Gateway penerusan mengirimkan permintaan ke endpoint NEG internet. Dengan demikian, proses distribusi permintaan untuk NEG internet telah selesai.
- Untuk layanan backend dengan NEG serverlessdan NEG Private Service Connect (PSC), serta bucket backend satu region, GFE lapisan pertama memilih GFE lapisan kedua di region yang cocok dengan region NEG atau bucket. Untuk bucket Cloud Storage multi-region, GFE lapisan pertama memilih GFE lapisan kedua di region bucket, atau region yang sedekat mungkin dengan bucket multi-region (ditentukan oleh waktu perjalanan pulang pergi jaringan).
- Untuk layanan backend dengan grup instance,
NEG zonal dengan
endpoint
GCE_VM_IP_PORT
, dan NEG hybrid, sistem pengelolaan kapasitas Google memberi tahu GFE lapisan pertama tentang kapasitas yang digunakan dan dikonfigurasi untuk setiap backend. Kapasitas yang dikonfigurasi untuk backend ditentukan oleh mode load balancing, kapasitas target mode load balancing, dan penghitung skala kapasitas.- Paket Standar: GFE lapisan pertama memilih GFE lapisan kedua di region yang berisi backend.
- Tingkat Premium: GFE lapisan pertama memilih GFE lapisan kedua dari serangkaian region yang berlaku. Wilayah yang berlaku adalah semua wilayah tempat backend telah dikonfigurasi, tidak termasuk wilayah dengan backend yang dikonfigurasi yang memiliki kapasitas nol. GFE lapisan pertama memilih GFE lapisan kedua terdekat di region yang berlaku (ditentukan oleh waktu perjalanan pulang pergi jaringan). Jika backend dikonfigurasi di dua region atau lebih, GFE lapisan pertama dapat melimpahkan permintaan ke region lain yang berlaku jika region pilihan pertama penuh. Pelimpahan ke wilayah lain dapat terjadi jika semua backend di wilayah pilihan pertama mencapai kapasitas maksimum.
- GFE lapisan kedua memilih backend. GFE lapisan kedua berada di
zona suatu region. Mereka menggunakan proses berikut untuk memilih backend:
- Untuk layanan backend dengan NEG tanpa server, NEG Private Service Connect, dan bucket backend, GFE lapisan kedua meneruskan permintaan ke sistem produksi Google. Hal ini mengakhiri proses distribusi permintaan untuk backend ini.
Untuk layanan backend dengan grup instance, NEG tingkat zona dengan endpoint
GCE_VM_IP_PORT
, dan NEG hybrid, sistem probe health check Google memberi tahu GFE lapisan kedua tentang status health check instance atau endpoint backend.Khusus Tingkat Premium: Jika GFE lapisan kedua tidak memiliki instance atau endpoint backend yang berfungsi baik di regionnya, GFE tersebut dapat mengirim permintaan ke GFE lapisan kedua lain di region lain yang berlaku dengan backend yang dikonfigurasi. Pelimpahan antara GFE lapisan kedua di berbagai region tidak menghabiskan semua kemungkinan kombinasi antar-region. Jika Anda perlu mengarahkan traffic dari backend di region tertentu, alih-alih mengonfigurasi backend agar gagal dalam health check, tetapkan pengubah skala kapasitas backend ke nol sehingga GFE lapisan pertama mengecualikan region selama langkah sebelumnya.
GFE lapisan kedua kemudian mengarahkan permintaan ke instance backend atau endpoint di zona dalam regionnya seperti yang dibahas pada langkah berikutnya.
GFE lapisan kedua memilih zona. Secara default, GFE lapisan kedua menggunakan algoritma
WATERFALL_BY_REGION
dengan setiap GFE lapisan kedua lebih memilih untuk memilih instance atau endpoint backend di zona yang sama dengan zona yang berisi GFE lapisan kedua. KarenaWATERFALL_BY_REGION
meminimalkan traffic antar-zona, pada kecepatan permintaan yang rendah, setiap GFE lapisan kedua dapat secara eksklusif mengirim permintaan ke backend di zona yang sama dengan GFE lapisan kedua itu sendiri.Khusus untuk Load Balancer Aplikasi eksternal global, GFE lapisan kedua dapat dikonfigurasi untuk menggunakan salah satu algoritma alternatif berikut dengan menggunakan
serviceLbPolicy
:SPRAY_TO_REGION
: GFE lapisan kedua tidak lebih memilih memilih instance atau endpoint backend di zona yang sama dengan GFE lapisan kedua. GFE lapisan kedua mencoba mendistribusikan traffic ke semua instance atau endpoint backend di semua zona region. Hal ini dapat menyebabkan distribusi beban yang lebih merata dengan mengorbankan peningkatan traffic antar-zona.WATERFALL_BY_ZONE
: GFE lapisan kedua sangat lebih suka memilih instance atau endpoint backend di zona yang sama dengan GFE lapisan kedua. GFE lapisan kedua hanya mengarahkan permintaan ke backend di zona yang berbeda setelah semua backend di zona saat ini mencapai kapasitas yang dikonfigurasi.
- GFE lapisan kedua memilih instance atau endpoint dalam zona. Secara
default, GFE lapisan kedua mendistribusikan permintaan di antara backend
secara round robin. Khusus untuk Load Balancer Aplikasi eksternal global, Anda dapat mengubahnya
dengan menggunakan kebijakan lokalitas load balancing (
localityLbPolicy
). Kebijakan lokalitas load balancing hanya berlaku untuk backend dalam zona yang dipilih yang dibahas pada langkah sebelumnya.
Load Balancer Aplikasi eksternal regional
Untuk Load Balancer Aplikasi eksternal regional, distribusi traffic didasarkan pada mode load balancing dan kebijakan lokalitas load balancing.
Mode penyeimbangan menentukan bobot dan fraksi traffic yang akan dikirim ke
setiap grup (grup instance atau NEG). Kebijakan lokalitas load balancing
(LocalityLbPolicy
) menentukan cara backend dalam grup di-load balance.
Saat menerima traffic, layanan backend pertama-tama mengarahkan traffic ke backend (grup instance atau NEG) sesuai dengan mode load balancing backend. Setelah backend dipilih, traffic akan didistribusikan di antara instance atau endpoint dalam grup backend tersebut sesuai dengan kebijakan lokalitas load balancing.
Untuk informasi selengkapnya, lihat referensi berikut:
Afinitas sesi
Afinitas sesi memberikan upaya terbaik untuk mengirim permintaan dari klien tertentu ke backend yang sama selama backend tersebut responsif dan memiliki kapasitas, sesuai dengan mode penyeimbangan yang dikonfigurasi.
Saat menggunakan afinitas sesi, sebaiknya gunakan mode penyeimbangan RATE
, bukan UTILIZATION
. Afinitas sesi berfungsi paling baik jika Anda menyetel mode load balancing ke
permintaan per detik (RPS).
Load Balancer Aplikasi eksternal menawarkan jenis afinitas sesi berikut:
- TIDAK ADA. Afinitas sesi tidak ditetapkan untuk load balancer.
- Afinitas IP klien
- Afinitas berbasis cookie
- Afinitas kolom header
- Afinitas Cookie HTTP
- Afinitas sesi berbasis cookie stateful
Tabel berikut meringkas opsi afinitas sesi yang didukung oleh Load Balancer Aplikasi eksternal:
Mode load balancer | Opsi afinitas sesi | ||||||
---|---|---|---|---|---|---|---|
Tidak ada | IP Klien | Cookie yang dihasilkan | Kolom header | Cookie HTTP | Cookie stateful | ||
Load Balancer Aplikasi eksternal global | |||||||
Load Balancer Aplikasi Klasik | |||||||
Load Balancer Aplikasi eksternal regional |
Ketersediaan tinggi dan failover
Ketersediaan tinggi dan failover di Load Balancer Aplikasi eksternal dapat dikonfigurasi di tingkat load balancer. Hal ini ditangani dengan membuat Load Balancer Aplikasi eksternal regional cadangan di region mana pun yang memerlukan pencadangan.
Tabel berikut menjelaskan perilaku failover.
Mode load balancer | Metode failover |
---|---|
Load Balancer Aplikasi eksternal global Load Balancer Aplikasi Klasik |
Anda dapat mengonfigurasi konfigurasi failover aktif-pasif yang membuat traffic beralih ke Load Balancer Aplikasi eksternal regional cadangan. Anda menggunakan health check untuk mendeteksi gangguan dan kebijakan perutean Cloud DNS untuk merutekan traffic saat failover dipicu. |
Load Balancer Aplikasi eksternal regional | Gunakan salah satu metode berikut untuk memastikan deployment dengan ketersediaan tinggi:
|
Dukungan HTTP/2
HTTP/2 adalah revisi besar protokol HTTP/1. Ada 2 mode dukungan HTTP/2:
- HTTP/2 melalui TLS
- HTTP/2 Cleartext melalui TCP
HTTP/2 melalui TLS
HTTP/2 melalui TLS didukung untuk koneksi antara klien dan Load Balancer Aplikasi eksternal, serta untuk koneksi antara load balancer dan backend-nya.
Load balancer otomatis menegosiasikan HTTP/2 dengan klien sebagai bagian dari handshake TLS menggunakan ekstensi TLS ALPN. Meskipun load balancer dikonfigurasi untuk menggunakan HTTPS, klien modern secara default menggunakan HTTP/2. Hal ini dikontrol di klien, bukan di load balancer.
Jika klien tidak mendukung HTTP/2 dan load balancer dikonfigurasi untuk menggunakan HTTP/2 antara load balancer dan instance backend, load balancer mungkin masih menegosiasikan koneksi HTTPS atau menerima permintaan HTTP yang tidak aman. Permintaan HTTPS atau HTTP tersebut kemudian diubah oleh load balancer untuk memproksi permintaan melalui HTTP/2 ke instance backend.
Untuk menggunakan HTTP/2 melalui TLS, Anda harus mengaktifkan TLS di backend dan menetapkan
protokol layanan backend ke
HTTP2
. Untuk
mengetahui informasi selengkapnya, lihat Enkripsi dari load balancer ke
backend.
Streaming serentak maksimum HTTP/2
Setelan HTTP/2
SETTINGS_MAX_CONCURRENT_STREAMS
menjelaskan jumlah maksimum aliran yang diterima endpoint,
yang dimulai oleh peer. Nilai yang diiklankan oleh klien HTTP/2 ke load balancerGoogle Cloud pada dasarnya tidak berarti karena load balancer tidak memulai streaming ke klien.
Jika load balancer menggunakan HTTP/2 untuk berkomunikasi dengan server yang berjalan di VM, load balancer akan mematuhi nilai SETTINGS_MAX_CONCURRENT_STREAMS
yang diiklankan oleh server. Jika nilai nol diiklankan, load balancer tidak dapat meneruskan permintaan ke server, dan hal ini dapat menyebabkan error.
Batasan HTTP/2
- HTTP/2 antara load balancer dan instance dapat memerlukan koneksi TCP yang jauh lebih banyak ke instance daripada HTTP atau HTTPS. Penggabungan koneksi, pengoptimalan yang mengurangi jumlah koneksi ini dengan HTTP atau HTTPS, tidak tersedia dengan HTTP/2. Akibatnya, Anda mungkin melihat latensi backend yang tinggi karena koneksi backend dibuat lebih sering.
- HTTP/2 antara load balancer dan backend tidak mendukung menjalankan Protokol WebSocket melalui satu aliran koneksi HTTP/2 (RFC 8441).
- HTTP/2 antara load balancer dan backend tidak mendukung push server.
- Volume permintaan dan rasio error gRPC tidak terlihat di
Google Cloud API atau konsol Google Cloud . Jika endpoint gRPC
menampilkan error, log load balancer dan data pemantauan akan melaporkan
kode status HTTP
200 OK
.
HTTP/2 teks biasa melalui TCP (H2C)
HTTP/2 cleartext melalui TCP, juga dikenal sebagai H2C, memungkinkan Anda menggunakan HTTP/2 tanpa TLS. H2C didukung untuk kedua koneksi berikut:
- Koneksi antara klien dan load balancer. Tidak diperlukan konfigurasi khusus.
Koneksi antara load balancer dan backend-nya.
Untuk mengonfigurasi H2C untuk koneksi antara load balancer dan backend-nya, Anda menetapkan protokol layanan backend ke
H2C
.
Dukungan H2C juga tersedia untuk load balancer yang dibuat menggunakan pengontrol Gateway GKE dan Cloud Service Mesh.
H2C tidak didukung untuk Load Balancer Aplikasi klasik.
Dukungan HTTP/3
HTTP/3 adalah protokol internet generasi berikutnya. HTTP/3 dibangun di atas IETF QUIC, sebuah protokol yang dikembangkan dari protokol Google QUIC asli. HTTP/3 didukung antara Load Balancer Aplikasi eksternal, Cloud CDN, dan klien.
Secara khusus:
- IETF QUIC adalah protokol lapisan transport yang menyediakan kontrol kemacetan dan keandalan yang serupa dengan TCP, menggunakan TLS 1.3 untuk keamanan, dan performa yang lebih baik.
- HTTP/3 adalah lapisan aplikasi yang dibangun di atas IETF QUIC, dan bergantung pada QUIC untuk menangani multiplexing, kontrol kemacetan, deteksi kehilangan, dan transmisi ulang.
- HTTP/3 memungkinkan inisiasi koneksi klien yang lebih cepat, menghentikan pemblokiran head-of-line di stream multipleks, dan mendukung migrasi koneksi saat alamat IP klien berubah.
- HTTP/3 didukung untuk koneksi antara klien dan load balancer, bukan koneksi antara load balancer dan backend-nya.
- Koneksi HTTP/3 menggunakan algoritma kontrol kemacetan BBR.
HTTP/3 di load balancer Anda dapat meningkatkan waktu pemuatan halaman web, mengurangi buffering ulang video, dan meningkatkan throughput pada koneksi latensi yang lebih tinggi.
Tabel berikut menentukan dukungan HTTP/3 untuk Load Balancer Aplikasi eksternal di setiap mode.
Mode load balancer | Dukungan HTTP/3 |
---|---|
Load Balancer Aplikasi eksternal global (selalu Paket Premium) | |
Load Balancer Aplikasi Klasik di Paket Premium | |
Load Balancer Aplikasi Klasik di Paket Standar | |
Load Balancer Aplikasi eksternal regional (Paket Premium atau Standar) |
Cara negosiasi HTTP/3
Jika HTTP/3 diaktifkan, load balancer akan mengiklankan dukungan ini kepada klien, sehingga klien yang mendukung HTTP/3 dapat mencoba membuat koneksi HTTP/3 dengan load balancer HTTPS.
- Klien yang diimplementasikan dengan benar selalu melakukan penggantian ke HTTPS atau HTTP/2 jika tidak dapat membuat koneksi HTTP/3.
- Klien yang mendukung HTTP/3 menggunakan pengetahuan sebelumnya yang di-cache tentang dukungan HTTP/3 untuk menghemat perjalanan pulang pergi yang tidak perlu di masa mendatang.
- Karena penggantian ini, mengaktifkan atau menonaktifkan HTTP/3 di load balancer tidak mengganggu kemampuan load balancer untuk terhubung ke klien.
Dukungan diiklankan di header respons HTTP Alt-Svc
. Jika HTTP/3 diaktifkan, respons dari load balancer
mencakup nilai header alt-svc
berikut:
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000"
Jika HTTP/3 telah ditetapkan secara eksplisit ke DISABLE
, respons tidak menyertakan header respons
alt-svc
.
Jika Anda telah mengaktifkan HTTP/3 di load balancer HTTPS, beberapa situasi dapat menyebabkan klien Anda melakukan penggantian ke HTTPS atau HTTP/2, bukan melakukan negosiasi HTTP/3. Contoh ini meliputi:
- Saat klien mendukung versi HTTP/3 yang tidak kompatibel dengan versi HTTP/3 yang didukung oleh load balancer HTTPS.
- Saat load balancer mendeteksi bahwa traffic UDP diblokir atau dibatasi lajunya dengan cara yang mencegah HTTP/3 berfungsi.
- Klien tidak mendukung HTTP/3 sama sekali, sehingga tidak mencoba menegosiasikan koneksi HTTP/3.
Saat koneksi kembali ke HTTPS atau HTTP/2, kami tidak menghitungnya sebagai kegagalan load balancer.
Sebelum mengaktifkan HTTP/3, pastikan perilaku yang dijelaskan sebelumnya dapat diterima untuk beban kerja Anda.
Mengonfigurasi HTTP/3
NONE
(default) dan ENABLE
mengaktifkan dukungan HTTP/3 untuk load balancer Anda.
Jika HTTP/3 diaktifkan, load balancer akan mengiklankannya kepada klien, sehingga klien yang mendukungnya dapat melakukan negosiasi versi HTTP/3 dengan load balancer. Klien yang tidak mendukung HTTP/3 tidak melakukan negosiasi koneksi HTTP/3. Anda tidak perlu menonaktifkan HTTP/3 secara eksplisit kecuali jika Anda telah mengidentifikasi penerapan klien yang rusak.
Load Balancer Aplikasi Eksternal menyediakan tiga cara untuk mengonfigurasi HTTP/3 seperti yang ditunjukkan dalam tabel berikut.
Nilai quicOverride | Perilaku |
---|---|
NONE |
Dukungan untuk HTTP/3 diiklankan kepada klien. |
ENABLE |
Dukungan untuk HTTP/3 diiklankan kepada klien. |
DISABLE |
Secara eksplisit menonaktifkan HTTP/3 dan Google QUIC untuk iklan kepada klien. |
Untuk mengaktifkan (atau menonaktifkan) HTTP/3 secara eksplisit, ikuti langkah-langkah berikut.
Konsol: HTTPS
- Di konsol Google Cloud , buka halaman Load balancing.
- Pilih load balancer yang ingin Anda edit.
- Klik Frontend configuration.
- Pilih alamat IP dan port frontend yang ingin Anda edit. Untuk mengedit konfigurasi HTTP/3, protokolnya harus HTTPS.
Aktifkan HTTP/3
- Pilih menu QUIC negotiation.
- Untuk mengaktifkan HTTP/3 secara eksplisit untuk frontend ini, pilih Diaktifkan.
- Jika Anda memiliki beberapa aturan frontend yang merepresentasikan IPv4 dan IPv6, pastikan untuk mengaktifkan HTTP/3 di setiap aturan.
Menonaktifkan HTTP/3
- Pilih menu QUIC negotiation.
- Untuk menonaktifkan HTTP/3 secara eksplisit untuk frontend ini, pilih Nonaktif.
- Jika Anda memiliki beberapa aturan frontend yang merepresentasikan IPv4 dan IPv6, pastikan untuk menonaktifkan HTTP/3 untuk setiap aturan.
gcloud: HTTPS
Sebelum menjalankan perintah ini, Anda harus membuat resource sertifikat SSL untuk setiap sertifikat.
gcloud compute target-https-proxies create HTTPS_PROXY_NAME \ --global \ --quic-override=QUIC_SETTING
Ganti QUIC_SETTING
dengan salah satu dari berikut ini:
NONE
(default): memungkinkan Google mengontrol kapan HTTP/3 diiklankan.Jika Anda memilih
NONE
, HTTP/3 akan diiklankan kepada klien, tetapi Google QUIC tidak diiklankan. Di konsol Google Cloud , opsi ini disebut Automatic (Default).ENABLE
: mengiklankan HTTP/3 kepada klien.DISABLE
: tidak mengiklankan HTTP/3 kepada klien.
API: HTTPS
POST https://www.googleapis.com/v1/compute/projects/PROJECT_ID/global/targetHttpsProxies/TARGET_PROXY_NAME/setQuicOverride { "quicOverride": QUIC_SETTING }
Ganti QUIC_SETTING
dengan salah satu dari berikut ini:
NONE
(default): Mengizinkan Google mengontrol kapan HTTP/3 diiklankan.Jika Anda memilih
NONE
, HTTP/3 akan diiklankan kepada klien, tetapi Google QUIC tidak diiklankan. Di konsol Google Cloud , opsi ini disebut Automatic (Default).ENABLE
: Mengiklankan HTTP/3 dan Google QUIC kepada klien.DISABLE
: Tidak mengiklankan HTTP/3 atau Google QUIC ke klien.
Dukungan WebSocket
Load balancer berbasis HTTP(S) mendukung protokol websocket saat Anda menggunakan HTTP atau HTTPS sebagai protokol ke backend.Google Cloud Load balancer tidak memerlukan konfigurasi apa pun untuk memproksi koneksi websocket.
Protokol websocket menyediakan saluran komunikasi full-duplex antara klien dan load balancer. Untuk mengetahui informasi selengkapnya, lihat RFC 6455.
Protokol websocket berfungsi sebagai berikut:
- Load balancer mengenali permintaan websocket
Upgrade
dari klien HTTP atau HTTPS. Permintaan berisi headerConnection: Upgrade
danUpgrade: websocket
, diikuti dengan header permintaan terkait websocket lainnya yang relevan. - Backend mengirim respons websocket
Upgrade
. Instance backend mengirimkan respons101 switching protocol
dengan headerConnection: Upgrade
danUpgrade: websocket
serta header respons terkait websocket lainnya. - Load balancer memproksi traffic dua arah selama durasi koneksi saat ini.
Jika instance backend menampilkan kode status 426
atau 502
,
load balancer akan menutup koneksi.
Afinitas sesi untuk websocket berfungsi sama seperti untuk permintaan lainnya. Untuk mengetahui informasi selengkapnya, lihat Afinitas sesi.
Dukungan gRPC
gRPC adalah framework open source untuk remote procedure call. gRPC didasarkan pada standar HTTP/2. Kasus penggunaan untuk gRPC mencakup hal berikut:
- Sistem terdistribusi yang berlatensi rendah dan sangat skalabel
- Mengembangkan klien seluler yang berkomunikasi dengan server cloud
- Merancang protokol baru yang harus akurat, efisien, dan tidak bergantung pada bahasa
- Desain berlapis untuk mengaktifkan ekstensi, autentikasi, dan logging
Untuk menggunakan gRPC dengan aplikasi Google Cloud , Anda harus mem-proxy permintaan end-to-end melalui HTTP/2. Untuk melakukannya, Anda membuat Load Balancer Aplikasi dengan salah satu konfigurasi berikut:
Untuk traffic tidak terenkripsi end-to-end (tanpa TLS): Anda membuat load balancer HTTP (dikonfigurasi dengan proxy HTTP target). Selain itu, Anda mengonfigurasi load balancer untuk menggunakan HTTP/2 untuk koneksi yang tidak dienkripsi antara load balancer dan backend-nya dengan menyetel protokol layanan backend ke
H2C
.Untuk traffic terenkripsi end-to-end (dengan TLS): Anda membuat load balancer HTTPS (dikonfigurasi dengan proxy HTTPS target dan sertifikat SSL). Load balancer menegosiasikan HTTP/2 dengan klien sebagai bagian dari handshake SSL menggunakan ekstensi TLS ALPN.
Selain itu, Anda harus memastikan bahwa backend dapat menangani traffic TLS dan mengonfigurasi load balancer untuk menggunakan HTTP/2 untuk koneksi terenkripsi antara load balancer dan backend-nya dengan menyetel protokol layanan backend ke
HTTP2
.Load balancer mungkin masih melakukan negosiasi HTTPS dengan beberapa klien atau menerima permintaan HTTP yang tidak aman pada load balancer yang dikonfigurasi untuk menggunakan HTTP/2 antara load balancer dan instance backend. Permintaan HTTP atau HTTPS tersebut diubah oleh load balancer untuk memproksi permintaan melalui HTTP/2 ke instance backend.
Jika Anda ingin mengonfigurasi Load Balancer Aplikasi menggunakan HTTP/2 dengan Ingress Google Kubernetes Engine atau menggunakan gRPC dan HTTP/2 dengan Ingress, lihat HTTP/2 untuk load balancing dengan Ingress.
Jika Anda ingin mengonfigurasi Load Balancer Aplikasi eksternal menggunakan HTTP/2 dengan Cloud Run, lihat Menggunakan HTTP/2 di balik load balancer.
Untuk mengetahui informasi tentang cara memecahkan masalah HTTP/2, lihat Memecahkan masalah HTTP/2 ke backend.
Untuk mengetahui informasi tentang batasan HTTP/2, lihat Batasan HTTP/2.
Dukungan TLS
Secara default, proxy target HTTPS hanya menerima TLS 1.0, 1.1, 1.2, dan 1.3 saat menghentikan permintaan SSL klien.
Jika Load Balancer Aplikasi eksternal global atau Load Balancer Aplikasi eksternal regional menggunakan HTTPS sebagai protokol layanan backend, keduanya dapat melakukan negosiasi TLS 1.2 atau 1.3 ke backend.Jika menggunakan HTTPS sebagai protokol layanan backend, Load Balancer Aplikasi klasik dapat melakukan negosiasi TLS 1.0, 1.1, 1.2, atau 1.3 ke backend.
Dukungan TLS bersama
TLS timbal balik, atau mTLS, adalah protokol standar industri untuk autentikasi timbal balik antara klien dan server. mTLS membantu memastikan bahwa klien dan server saling mengautentikasi dengan memverifikasi bahwa masing-masing memegang sertifikat valid yang dikeluarkan oleh otoritas sertifikat (CA) tepercaya. Tidak seperti TLS standar, yang hanya mengautentikasi server, mTLS mengharuskan klien dan server untuk memberikan sertifikat, yang mengonfirmasi identitas kedua pihak sebelum komunikasi dilakukan.
Semua Load Balancer Aplikasi mendukung mTLS. Dengan mTLS, load balancer meminta klien mengirimkan sertifikat untuk mengautentikasi dirinya sendiri selama handshake TLS dengan load balancer. Anda dapat mengonfigurasi trust store Certificate Manager yang kemudian digunakan load balancer untuk memvalidasi rantai kepercayaan sertifikat klien.
Untuk mengetahui informasi selengkapnya tentang mTLS, lihat Autentikasi TLS bersama.
Dukungan data awal TLS 1.3
Data awal TLS 1.3 didukung di proxy HTTPS target dari Load Balancer Aplikasi eksternal berikut untuk HTTPS melalui TCP (HTTP/1.1, HTTP/2) dan HTTP/3 melalui QUIC:
- Load Balancer Aplikasi eksternal global
- Load Balancer Aplikasi Klasik
TLS 1.3 ditentukan dalam RFC 8446 dan memperkenalkan konsep data awal, yang juga dikenal sebagai data zero-round-trip time (0-RTT), yang dapat meningkatkan performa aplikasi untuk koneksi yang dilanjutkan sebesar 30 hingga 50%.
Dengan TLS 1.2, dua perjalanan pulang pergi diperlukan sebelum data dapat ditransmisikan dengan aman. TLS 1.3 mengurangi hal ini menjadi satu round trip (1-RTT) untuk koneksi baru, sehingga klien dapat mengirim data aplikasi segera setelah respons server pertama. Selain itu, TLS 1.3 memperkenalkan konsep data awal untuk sesi yang dilanjutkan, sehingga memungkinkan klien mengirim data aplikasi dengan ClientHello
awal, sehingga mengurangi waktu perjalanan pulang pergi yang efektif menjadi nol (0-RTT).
Data awal TLS 1.3 memungkinkan server backend mulai memproses data klien sebelum proses handshake dengan klien selesai, sehingga mengurangi latensi; namun, tindakan pencegahan harus dilakukan untuk memitigasi risiko serangan replay.
Karena data awal dikirim sebelum handshake selesai, penyerang dapat
mencoba mengambil dan memutar ulang permintaan. Untuk memitigasi hal ini, server backend
harus mengontrol penggunaan data awal dengan cermat, membatasi penggunaannya pada permintaan
idempotensi. Metode HTTP yang dimaksudkan agar bersifat idempoten, tetapi dapat memicu perubahan non-idempoten—seperti permintaan GET yang mengubah database—tidak boleh menerima data awal. Dalam kasus tersebut, server backend
harus menolak permintaan dengan header HTTP Early-Data: 1
dengan menampilkan kode status HTTP
425 Too Early
.
Permintaan dengan data awal memiliki header HTTP Early-Data yang ditetapkan ke nilai
1
, yang menunjukkan kepada server backend bahwa permintaan telah disampaikan dalam
data awal TLS. Header ini juga menunjukkan bahwa klien memahami kode status HTTP 425 Too
Early
.
Mode data awal TLS (0-RTT)
Anda dapat mengonfigurasi data awal TLS menggunakan salah satu mode berikut pada resource proxy HTTPS target load balancer.
STRICT
. Hal ini memungkinkan data awal TLS 1.3 untuk permintaan dengan metode HTTP yang aman (GET, HEAD, OPTIONS, TRACE), dan permintaan HTTP yang tidak memiliki parameter kueri. Permintaan yang mengirim data awal yang berisi metode HTTP non-idempotent (seperti POST atau PUT) atau dengan parameter kueri ditolak dengan kode status HTTP425
.PERMISSIVE
. Hal ini memungkinkan data awal TLS 1.3 untuk permintaan dengan metode HTTP yang aman (GET, HEAD, OPTIONS, TRACE). Mode ini tidak menolak permintaan yang menyertakan parameter kueri. Pemilik aplikasi harus memastikan bahwa data awal aman digunakan untuk setiap jalur permintaan, terutama untuk endpoint tempat pemutaran ulang permintaan dapat menyebabkan efek samping yang tidak diinginkan, seperti update database atau logging yang dipicu oleh permintaan GET.DISABLED
. Early data TLS 1.3 tidak diiklankan, dan setiap upaya (tidak valid) untuk mengirim early data akan ditolak. Jika aplikasi Anda tidak dilengkapi untuk menangani permintaan data awal dengan aman, Anda harus menonaktifkan data awal. Data awal TLS 1.3 dinonaktifkan secara default.UNRESTRICTED
(tidak direkomendasikan untuk sebagian besar beban kerja). Hal ini memungkinkan data awal TLS 1.3 untuk permintaan dengan metode HTTP apa pun, termasuk metode non-idempoten, seperti POST. Mode ini tidak menerapkan batasan lain. Mode ini dapat berguna untuk kasus penggunaan gRPC. Namun, sebaiknya Anda tidak menggunakan metode ini kecuali jika Anda telah mengevaluasi postur keamanan dan memitigasi risiko serangan replay menggunakan mekanisme lain.
Mengonfigurasi data awal TLS
Untuk mengaktifkan atau menonaktifkan data awal TLS secara eksplisit, lakukan hal berikut:
Konsol
Di konsol Google Cloud , buka halaman Load balancing.
Pilih load balancer yang datanya perlu Anda aktifkan lebih awal.
Klik
Edit.Klik Frontend configuration.
Pilih alamat IP dan port frontend yang ingin Anda edit. Untuk mengaktifkan data awal TLS, protokolnya harus HTTPS.
Dalam daftar Early data (0-RTT), pilih mode data awal TLS.
Klik Selesai.
Untuk memperbarui load balancer, klik Update.
gcloud
Konfigurasi mode data awal TLS pada proxy HTTPS target Load Balancer Aplikasi.
gcloud compute target-https-proxies update TARGET_HTTPS_PROXY \ --tls-early-data=TLS_EARLY_DATA_MODE
Ganti kode berikut:
TARGET_HTTPS_PROXY
: proxy HTTPS target load balancer AndaTLS_EARLY_DATA_MODE
:STRICT
,PERMISSIVE
,DISABLED
, atauUNRESTRICTED
API
PATCH https://compute.googleapis.com/compute/v1/projects/{project}/global/targetHttpsProxies/TARGET_HTTPS_PROXY { "tlsEarlyData":"TLS_EARLY_DATA_MODE", "fingerprint": "FINGERPRINT" }
Ganti kode berikut:
TARGET_HTTPS_PROXY
: proxy HTTPS target load balancer AndaTLS_EARLY_DATA_MODE
:STRICT
,PERMISSIVE
,DISABLED
, atauUNRESTRICTED
FINGERPRINT
: string berenkode Base64. Sidik jari yang terbaru harus diberikan untuk menambal proxy HTTPS target; jika tidak, permintaan akan gagal dengan kode status HTTP412 Precondition Failed
.
Setelah mengonfigurasi data awal TLS, Anda dapat mengeluarkan permintaan dari klien HTTP yang mendukung data awal TLS. Anda dapat mengamati latensi yang lebih rendah untuk permintaan yang dilanjutkan.
Jika klien yang tidak mematuhi RFC mengirimkan permintaan dengan metode yang tidak bersifat idempoten atau dengan parameter kueri, permintaan akan ditolak. Anda melihat kode status HTTP 425 Early
di log load balancer dan respons HTTP berikut:
HTTP/1.1 425 Too Early Content-Type: text/html; charset=UTF-8 Referrer-Policy: no-referrer Content-Length: 1558 Date: Thu, 03 Aug 2024 02:45:14 GMT Connection: close <!DOCTYPE html> <html lang=en> <title>Error 425 (Too Early)</title> <p>The request was sent to the server too early, please retry. That's all we know.</p> </html>
Batasan
- Load balancer HTTPS tidak mengirimkan
close_notify
penutupan peringatan saat menghentikan koneksi SSL. Artinya, load balancer menutup koneksi TCP alih-alih melakukan penonaktifan SSL. - Load balancer HTTPS hanya mendukung karakter huruf kecil dalam domain di atribut
nama umum (
CN
) atau atribut nama alternatif subjek (SAN
) sertifikat. Sertifikat dengan karakter huruf besar di domain hanya ditampilkan jika ditetapkan sebagai sertifikat primer di proxy target. - Load balancer HTTPS tidak menggunakan ekstensi Server Name Indication (SNI) saat terhubung ke backend, kecuali untuk load balancer dengan backend NEG Internet. Untuk mengetahui informasi selengkapnya, lihat Enkripsi dari load balancer ke backend.
- Saat menggunakan Load Balancer Aplikasi eksternal regional dengan Cloud Run di lingkungan VPC Bersama, jaringan VPC mandiri di project layanan dapat mengirim traffic ke layanan Cloud Run lainnya yang di-deploy di project layanan lain dalam lingkungan VPC Bersama yang sama. Ini adalah masalah umum.
Google Cloud tidak menjamin bahwa koneksi TCP yang mendasarinya dapat tetap terbuka selama durasi nilai waktu tunggu layanan backend. Sistem klien harus menerapkan logika percobaan ulang, bukan mengandalkan koneksi TCP agar tetap terbuka dalam jangka waktu yang lama.
Anda tidak dapat membuat Load Balancer Aplikasi eksternal regional di Paket Premium menggunakan konsolGoogle Cloud . Selain itu, hanya region yang mendukung Paket Standar yang tersedia untuk load balancer ini di Google Cloud konsol. Sebagai gantinya, gunakan gcloud CLI atau API.
- Cloud CDN memungkinkan Anda memaksa objek atau sekumpulan objek diabaikan oleh cache dengan meminta invalidasi cache. Saat Anda menggunakan Load Balancer Aplikasi eksternal global dengan referensi layanan lintas project VPC Bersama, secara default, admin project layanan tidak akan memiliki izin yang diperlukan untuk meminta pembatalan validasi cache. Hal ini karena pembatalan cache dikonfigurasi di project frontend (yaitu, project yang memiliki aturan penerusan, proxy target, dan peta URL load balancer). Oleh karena itu, pembatalan validasi cache hanya dapat dilakukan oleh akun utama yang memiliki peran IAM untuk mengonfigurasi resource terkait load balancer di project frontend (misalnya, peran Compute Network Admin). Admin layanan, yang mengontrol penyediaan layanan backend di project terpisah, harus berkoordinasi dengan administrator load balancer project frontend untuk mengeluarkan pembatalan cache bagi layanan lintas project mereka.
Langkah berikutnya
- Untuk mempelajari cara men-deploy Load Balancer Aplikasi eksternal global, lihat Menyiapkan Load Balancer Aplikasi eksternal dengan backend Compute Engine.
- Untuk mempelajari cara men-deploy Load Balancer Aplikasi eksternal regional, lihat Menyiapkan Load Balancer Aplikasi eksternal regional dengan backend Compute Engine.
Jika Anda adalah pengguna Load Balancer Aplikasi klasik, pastikan Anda meninjau Ringkasan migrasi saat merencanakan deployment baru dengan Load Balancer Aplikasi eksternal global.
Untuk mempelajari cara mengotomatiskan penyiapan Load Balancer Aplikasi eksternal dengan Terraform, lihat Contoh modul Terraform untuk Load Balancer Aplikasi eksternal.
Untuk mempelajari cara mengonfigurasi kemampuan pengelolaan traffic lanjutan yang tersedia dengan Load Balancer Aplikasi eksternal global, lihat Ringkasan pengelolaan traffic untuk Load Balancer Aplikasi eksternal global.
- Untuk mempelajari cara mengonfigurasi kemampuan pengelolaan traffic lanjutan yang tersedia dengan Load Balancer Aplikasi eksternal regional, lihat Ringkasan pengelolaan traffic untuk Load Balancer Aplikasi eksternal regional.
Untuk mempelajari cara menayangkan situs, lihat Menayangkan situs.
Untuk menemukan lokasi PoP Google, lihat Lokasi GFE.
Untuk mempelajari pengelolaan kapasitas, lihat tutorial Pengelolaan kapasitas dengan load balancing dan Pengoptimalan kapasitas aplikasi dengan load balancing global.
Untuk mempelajari cara menggunakan Certificate Manager untuk menyediakan dan mengelola sertifikat SSL, lihat Ringkasan Certificate Manager.
Untuk menyisipkan logika kustom ke jalur data load balancing, konfigurasi plugin atau callout Ekstensi Layanan.
Khusus untuk Load Balancer Aplikasi eksternal regional, Anda dapat mencoba menggunakan Penemuan API Shadow Apigee untuk menemukan API shadow (juga dikenal sebagai API yang tidak terdokumentasi) di infrastrukturGoogle Cloud yang ada. Pastikan Anda membaca batasan terkait sebelum mengaktifkan Penemuan Shadow API.