Halaman ini menyajikan ringkasan kemampuan pengelolaan traffic yang tersedia untuk Load Balancer Aplikasi klasik. Halaman ini hanya untuk Load Balancer Aplikasi klasik. Jika Anda menggunakan load balancer dalam mode lain yang mendukung serangkaian fitur pengelolaan traffic yang diperluas, lihat salah satu halaman berikut:
Ringkasan pengelolaan traffic untuk Load Balancer Aplikasi eksternal regional
Ringkasan pengelolaan traffic untuk Load Balancer Aplikasi eksternal global
Load Balancer Aplikasi Klasik mendukung fungsi pengelolaan traffic yang memungkinkan Anda menggunakan fitur-fitur berikut:
- Pengarahan lalu lintas. Mengarahkan traffic secara cerdas berdasarkan parameter HTTP(S):
- Tindakan traffic. Melakukan tindakan berbasis permintaan:
- Kebijakan traffic. Sempurnakan perilaku load balancing:
Anda mengonfigurasi fitur ini menggunakan peta URL load balancer. Untuk mengetahui informasi latar belakang, lihat topik berikut:
Komponen pengelolaan traffic
Pada tingkat tinggi, Load Balancer Aplikasi eksternal menyediakan pengelolaan traffic menggunakan peta URL global.
Load balancer menyediakan tindakan utama yang sama-sama bersifat eksklusif berikut:
- Merutekan permintaan ke layanan backend
- Melakukan pengalihan
Saat menyiapkan load balancer, Anda dapat mengonfigurasi tindakan penulisan ulang URL sebelum penyeimbang beban mengirimkan permintaan ke layanan backend atau bucket backend.
Penulisan ulang atau pengalihan dapat diterapkan di tiga tingkat di peta URL:
- Di
pathRule
tempat tindakan akan diterapkan saat jalur cocok - Di
pathMatcher
tempat tindakan akan diterapkan saat tidak ada jalur yang cocok untukpathMatcher
ini - Di
urlMap
tempat tindakan terjadi saat tidak ada host yang ditetapkan di aturan host mana pun yang cocok
Menggunakan routeRules
dalam pathMatcher
adalah alternatif dari menggunakan pathRules
.
pathRules
dan routeRules
tidak dapat muncul di pathMatcher
yang sama.
Tidak seperti pathRules
, yang tidak mementingkan urutan, routeRules
diperiksa secara
berurutan. routeRule
dapat menguji jalur URL, header HTTP, dan parameter kueri URL.
Contoh kasus penggunaan
Pengelolaan traffic menangani banyak kasus penggunaan. Bagian ini memberikan beberapa contoh tingkat tinggi.
Penulisan ulang
Penulisan ulang URL memungkinkan Anda menampilkan URL yang berbeda dari URL yang digunakan layanan Anda kepada pengguna eksternal.
Penulisan ulang URL memisahkan URL dari resource. Anda dapat menerjemahkan dari URL ramah manusia, yang lebih mudah diingat dan digunakan pengguna, mengubahnya menjadi URL ramah mesin telusur, yang lebih mudah ditemukan oleh mesin telusur, atau menjadi URL khusus implementasi internal.
Fitur penulisan ulang URL akan melakukan hal berikut:
- Membaca URL yang masuk dalam permintaan.
- Mengganti host, jalur, atau host dan jalur, yang mengubah URL sebelum mengarahkan traffic ke layanan backend atau bucket backend.
Dalam diagram berikut:
- Pengguna di Jepang mengirimkan permintaan untuk URL
www.mydomain.com/static/images/someimage.jpg
. - Saat permintaan mencapai Load Balancer Aplikasi eksternal, load balancer menggunakan informasi dalam peta URL untuk menulis ulang URL ke
www.myorigin.com/august_snapshot/images/someimage.jpg
. - (Opsional) Dalam contoh ini, peta URL mengirim permintaan ke backend eksternal.
Untuk contoh konfigurasi, lihat Penulisan ulang.
Pengalihan
Dengan pengalihan URL, Anda dapat mengalihkan permintaan klien dari satu URL ke URL lainnya.
Hal ini mencakup kemampuan untuk:
- Mengalihkan semua permintaan HTTP ke permintaan HTTPS.
- Alihkan ke URL lain yang dibuat dengan mengubah host, jalur, atau bagian host dan jalur URL, serta menghapus atau mempertahankan parameter kueri.
- Pilih kode respons pengalihan yang akan dikeluarkan.
Gunakan pengalihan URL untuk kemampuan berikut:
- Berikan penyingkatan URL. URL yang ditampilkan kepada klien dapat dibuat jauh lebih singkat. Layanan ini menerbitkan pengalihan ke halaman web dengan URL panjang.
- Mencegah link rusak saat halaman web dipindahkan atau menjadi usang.
- Mengizinkan beberapa nama domain milik pemilik yang sama untuk merujuk ke satu situs web.
- Hindari toil dan inefisiensi dalam mengonfigurasi solusi di server backend untuk mendukung pengalihan yang diperlukan.
- Mengurangi latensi. Pengalihan yang dibuat di edge dapat menghasilkan latensi yang lebih rendah dibandingkan dengan pengalihan yang dibuat di endpoint backend.
Pengalihan HTTP-ke-HTTPS secara lebih spesifik membantu Anda untuk:
- Memenuhi persyaratan kepatuhan (seperti HIPAA) untuk traffic terenkripsi.
- Alihkan permintaan menggunakan HTTPS, bukan menolak permintaan yang dikirim dengan protokol HTTP.
- Meningkatkan profil keamanan aplikasi dengan mengalihkan traffic pada load balancer lapisan-7, bukan menerapkan pengalihan di server backend.
Dalam diagram berikut:
- Pengguna di Jepang mengirim permintaan
GET http://example.com/img1
. - Berdasarkan pengalihan yang ditentukan dalam peta URL, load balancer mengirimkan kembali
pengalihan
HTTP/1.1 302 Found Location: https://example.com/img1
, yang mengalihkan permintaan HTTP ke permintaan HTTPS. - Browser pengguna mengirim permintaan
GET https://example.com/img1
.
Untuk contoh konfigurasi, lihat Pengalihan.
Kode respons yang didukung
Kode respons pengalihan yang didukung tercantum dalam tabel.
Kode respons | Nomor | Notes |
---|---|---|
MOVED_PERMANENTLY_DEFAULT | 301 | |
FOUND | 302 | |
PERMANENT_REDIRECT | 308 | Dalam hal ini, metode permintaan dipertahankan. |
TEMPORARY_REDIRECT | 307 | Dalam hal ini, metode permintaan dipertahankan. |
SEE_OTHER | 303 |
Perutean berbasis header dan berbasis parameter
Dengan perutean berbasis header dan parameter, load balancer dapat membuat keputusan perutean yang didasarkan pada header HTTP dan parameter kueri URL.
Dengan fitur ini, Anda dapat menyederhanakan arsitektur cloud, tanpa men-deploy tingkat proxy tambahan (misalnya NGINX) untuk melakukan perutean.
Anda dapat menggunakan Load Balancer Aplikasi eksternal untuk melakukan hal berikut:
- Pengujian A/B
- Menetapkan pelanggan ke kumpulan layanan yang berbeda yang berjalan di backend
- Memberikan halaman dan pengalaman yang berbeda berdasarkan berbagai kategori perangkat tempat permintaan berasal
Setelah pathMatcher
dipilih berdasarkan string host, routeRules
dalam
pathMatcher
akan memilih jalur URL. Untuk informasi selengkapnya, lihat ringkasan peta URL.
Contoh: Mengonfigurasi pengujian A/B dengan perutean berbasis parameter kueri
Contoh berikut menunjukkan cara melakukan pengujian A/B dengan mencocokkan string kueri untuk menentukan eksperimen dan input.
Misalnya Anda ingin memastikan permintaan ditangani sebagai berikut:
- Semua permintaan dengan nilai parameter kueri
A
mengarah ke layanan backend yang disebutBackendServiceForProcessingOptionA
. - Semua permintaan dengan nilai parameter kueri
B
mengarah ke layanan backend yang disebutBackendServiceForProcessingOptionB
.
Persyaratan ini dirangkum dalam tabel berikut.
Permintaan | Layanan backend |
---|---|
http://test.mydomain.com?ABTest=A |
BackendServiceForProcessingOptionA |
http://test.mydomain.com?ABTest=B |
BackendServiceForProcessingOptionB |
Untuk mengonfigurasi hal ini di peta URL global, Anda dapat membuat setelan berikut.
Match | Tindakan |
---|---|
pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].name = ABTest pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].exactMatch = A |
pathMatchers[].routeRules[].service = BackendServiceForProcessingOptionA |
pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].name = ABTest pathMatchers[].routeRules[].matchRules[].queryParameterMatches[].exactMatch = B |
pathMatchers[].routeRules[].service = BackendServiceForProcessingOptionB |
Untuk contoh konfigurasi, lihat Perutean berbasis header dan berbasis parameter.
Merutekan permintaan ke backend
Backend untuk traffic ditentukan dengan menggunakan pendekatan dua tahap:
Load balancer memilih layanan backend dengan backend. Backend dapat berupa hal berikut:
- Instance virtual machine (VM) Compute Engine dalam grup instance yang tidak dikelola
- VM Compute Engine dalam grup instance terkelola (MIG)
- Container melalui node Google Kubernetes Engine (GKE) di grup endpoint jaringan zona (NEG)
- Backend eksternal di luar Google Cloud dalam NEG internet
- Cloud Storage di bucket backend
- Layanan App Engine, Cloud Functions, atau Cloud Run dalam NEG serverless
Load balancer memilih layanan backend berdasarkan aturan yang ditentukan dalam peta URL global.
Layanan backend memilih backend instance berdasarkan kebijakan yang ditentukan dalam layanan backend global.
Saat mengonfigurasi pemilihan rute, Anda dapat memilih di antara mode berikut:
- Pengujian host dan jalur sederhana, dengan menggunakan
pathRules
- Pengujian permintaan lanjutan, dengan menggunakan
routeRules
Untuk setiap peta URL, Anda dapat memilih untuk menggunakan aturan host dan jalur sederhana atau aturan host, jalur, dan rute lanjutan. Kedua mode ini sama-sama bersifat eksklusif. Setiap peta URL hanya dapat berisi satu mode atau mode lainnya.
Aturan host dan jalur sederhana
Dalam aturan host dan jalur yang sederhana, peta URL berfungsi seperti yang dijelaskan dalam Ringkasan peta URL.
Diagram berikut menunjukkan alur logis dari aturan host dan jalur yang sederhana.
Permintaan awalnya dievaluasi menggunakan aturan host. {i>Host<i} adalah domain
yang ditentukan oleh permintaan. Jika host
permintaan cocok dengan salah satu entri di
kolom hosts
, pencocok jalur terkait akan digunakan.
Selanjutnya, pencocok jalur akan dievaluasi. Aturan jalur dievaluasi berdasarkan jalur terpanjang yang cocok dengan jalur terpanjang, dan Anda dapat menentukan aturan jalur dalam urutan apa pun. Setelah kecocokan paling spesifik ditemukan, permintaan akan dirutekan ke layanan backend yang sesuai. Jika permintaan tidak cocok, layanan backend default akan digunakan.
Aturan host dan jalur sederhana mungkin terlihat seperti berikut,
ketika traffic video mengarah ke video-backend-service
, dan semua traffic lainnya menuju
ke web-backend-service
.
$ gcloud compute url-maps describe ext-https-map
defaultService: global/backendServices/web-backend-service
hostRules:
- hosts:
- '*'
pathMatcher: pathmap
name: ext-https-map
pathMatchers:
- defaultService: global/backendServices/web-backend-service
name: pathmap
pathRules:
- paths:
- /video
- /video/*
service: global/backendServices/video-backend-service
Untuk contoh konfigurasi, lihat Host dan jalur.
Host, jalur, dan aturan rute lanjutan
Aturan host, jalur, dan rute lanjutan memberikan opsi konfigurasi tambahan dibandingkan dengan aturan host dan jalur yang sederhana. Opsi ini mengaktifkan pola pengelolaan traffic yang lebih canggih dan juga memodifikasi beberapa semantik. Misalnya, aturan rute dijalankan secara berurutan (bukan dengan menggunakan semantik longest-path-matches-first).
Seperti pada contoh aturan host dan jalur sederhana sebelumnya, Anda dapat mengonfigurasi
pengelolaan traffic lanjutan menggunakan peta URL global, tetapi Anda menggunakan
pathMatchers[].routeRules[]
sebagai ganti menggunakan
pathMatchers[].pathRules[]
.
Bagian berikut menjelaskan komponen aturan host, jalur, dan rute lanjutan.
Aturan host
Saat permintaan mencapai load balancer, kolom host
permintaan
dievaluasi berdasarkan hostRules
yang ditentukan dalam peta URL. Setiap aturan host
terdiri dari daftar satu atau beberapa host dan satu pencocok jalur
(pathMatcher
). Jika tidak ada hostRules
yang ditentukan, permintaan akan dirutekan ke defaultService
.
Untuk informasi selengkapnya, lihat hostRules[]
dan defaultService
dalam dokumentasi API peta URL global.
Pencocok jalur
Setelah permintaan cocok dengan aturan host, load balancer akan mengevaluasi pencocok jalur yang sesuai dengan host.
Pencocok jalur terdiri dari komponen berikut:
- Satu atau beberapa aturan jalur (
pathRules
) atau aturan rute (routeRules
). Aturan default yang dijalankan saat tidak ada layanan backend lain yang cocok. Aturan ini memiliki opsi berikut yang sama-sama eksklusif:
- Layanan default menentukan layanan backend default yang akan dirutekan jika tidak ada layanan backend lain yang cocok.
- Pengalihan default menentukan URL yang akan menjadi tujuan pengalihan saat tidak ada layanan backend lain yang cocok.
Saat dikonfigurasi untuk layanan default, load balancer juga dapat dikonfigurasi untuk menulis ulang URL sebelum mengirim permintaan ke layanan default.
Untuk informasi selengkapnya, lihat pathMatchers[]
, pathMatchers[].pathRules[]
, dan pathMatchers[].routeRules[]
dalam dokumentasi API peta URL global.
Aturan jalur
Aturan jalur (pathRules
) menentukan satu atau beberapa jalur URL, seperti /
atau /video
.
Aturan jalur umumnya ditujukan untuk jenis host sederhana dan perutean berbasis jalur yang dijelaskan sebelumnya.
Untuk informasi selengkapnya, lihat pathRules[]
dalam dokumentasi API peta URL global.
Aturan rute
Aturan rute (routeRules
) mencocokkan informasi dalam permintaan masuk dan membuat keputusan pemilihan rute berdasarkan kecocokan tersebut.
Aturan rute dapat berisi berbagai aturan pencocokan (matchRules
) dan
berbagai tindakan rute yang berbeda (routeAction
).
Aturan pencocokan mengevaluasi permintaan masuk berdasarkan jalur, header, dan parameter kueri HTTP(S). Aturan pencocokan mendukung berbagai jenis pencocokan (misalnya, pencocokan awalan) serta pengubah (misalnya, ketidaksensitifan huruf besar/kecil). Hal ini memungkinkan Anda, misalnya, mengirim permintaan HTTP(S) ke sekumpulan backend berdasarkan keberadaan header HTTP yang ditentukan secara kustom.
Untuk daftar opsi mendetail yang didukung oleh matchRules
, lihat matchRules[]
dalam dokumentasi API peta URL global.
Jika Anda memiliki beberapa aturan rute, load balancer akan menjalankannya secara berurutan, sehingga Anda dapat menentukan logika kustom untuk pencocokan, pemilihan rute, dan tindakan lainnya.
Dalam aturan rute tertentu, saat pencocokan pertama dibuat, load balancer berhenti mengevaluasi aturan pencocokan, dan aturan pencocokan apa pun yang tersisa akan diabaikan.
Google Cloud akan melakukan tindakan berikut:
- Mencari aturan pencocokan pertama yang cocok dengan permintaan.
- Berhenti melihat aturan pencocokan lainnya.
- Menerapkan tindakan dalam tindakan rute yang sesuai.
Aturan rute memiliki beberapa komponen, seperti yang dijelaskan dalam tabel berikut.
Komponen aturan rute (API field name ) |
Deskripsi |
---|---|
Prioritas (priority ) |
Angka antara 0 hingga 2.147.483.647 (yaitu, (2^31)-1) yang ditetapkan ke aturan rute dalam matcher jalur tertentu untuk menentukan urutan evaluasi aturan rute. Prioritas tertinggi adalah 0 . Prioritas terendah adalah
2147483647 .
Misalnya, aturan dengan prioritas 4 dievaluasi sebelum
aturan dengan prioritas 25 . Aturan pertama yang sesuai dengan
permintaan akan diterapkan.
Angka prioritas dapat memiliki kesenjangan; angka tidak harus berurutan. Anda tidak dapat membuat beberapa aturan dengan prioritas yang sama. |
Deskripsi (description ) |
Deskripsi opsional hingga 1.024 karakter. |
Layanan (service ) |
URL lengkap atau sebagian dari resource layanan backend tempat traffic diarahkan jika aturan ini cocok. |
Aturan pencocokan (matchRules ) |
Satu atau beberapa aturan yang dievaluasi terhadap permintaan. matchRules ini dapat cocok dengan semua atau sebagian atribut HTTP permintaan, seperti jalur, header HTTP, dan parameter kueri (GET).Dalam matchRule , semua kriteria yang cocok harus dipenuhi agar routeActions routeRule dapat diterapkan. Jika routeRule memiliki beberapa
matchRules , routeActions dari
routeRule akan berlaku saat permintaan cocok dengan salah satu
matchRules routeRule .
|
Tindakan rute (routeAction ) |
Memungkinkan Anda menentukan tindakan penulisan ulang URL yang akan diambil saat kriteria aturan pencocokan terpenuhi. |
Tindakan pengalihan (urlRedirect ) |
Anda dapat mengonfigurasi tindakan untuk merespons pengalihan HTTP jika kriteria aturan pencocokan terpenuhi. Kolom ini tidak dapat digunakan bersama tindakan rute. |
Untuk informasi selengkapnya, lihat kolom berikut dalam dokumentasi API peta URL global:
routeRules[]
routeRules[].priority
routeRules[].description
routeRules[].service
routeRules[].matchRules[]
routeRules[].routeAction
routeRules[].urlRedirect
Aturan pencocokan
Aturan pencocokan (matchRules
) cocok dengan satu atau beberapa atribut permintaan dan mengambil tindakan yang ditentukan dalam aturan rute. Daftar berikut memberikan beberapa contoh
atribut permintaan yang dapat dicocokkan menggunakan aturan pencocokan:
Host: Nama host adalah bagian nama domain dari URL; misalnya, bagian nama host dari URL
http://example.net/video/hd
adalahexample.net
. Dalam permintaan, nama host berasal dari headerHost
, seperti yang ditunjukkan dalam contoh perintah curl ini, dengan10.1.2.9
sebagai alamat IP yang di-load balanced:curl -v http://10.1.2.9/video/hd --header 'Host: example.com'
Jalur mengikuti nama host; misalnya
/images
. Aturan ini dapat menentukan apakah seluruh jalur atau hanya bagian awal jalur yang harus dicocokkan.Parameter permintaan HTTP lainnya, seperti header HTTP, yang memungkinkan pencocokan cookie, serta pencocokan berdasarkan parameter kueri (variabel GET). Perhatikan bahwa pencocokan ekspresi reguler untuk nilai header tidak didukung.
Untuk mengetahui daftar lengkap aturan pencocokan yang didukung, lihat pathMatchers[].routeRules[].matchRules[]
di dokumentasi API peta URL global.
Mengonfigurasi pengelolaan traffic
Anda dapat menggunakan konsol Google Cloud, gcloud
, atau Cloud Load Balancing API untuk mengonfigurasi pengelolaan traffic. Dalam lingkungan konfigurasi yang dipilih, Anda menyiapkan pengelolaan traffic menggunakan konfigurasi YAML.
Untuk membantu menulis {i>file<i} YAML ini, Anda dapat menggunakan referensi berikut:
Dokumentasi API peta URL global
Menyediakan daftar lengkap kolom, termasuk semantik terkait hubungan, batasan, dan kardinalitas.
Contoh di halaman penyiapan pengelolaan traffic: