Ringkasan pengelolaan traffic untuk Load Balancer Aplikasi klasik

Halaman ini memberi Anda ringkasan kemampuan pengelolaan traffic yang tersedia untuk Load Balancer Aplikasi klasik. Halaman ini hanya ditujukan untuk Load Balancer Aplikasi klasik. Jika Anda menggunakan load balancer dalam mode yang berbeda dengan dukungan untuk serangkaian fitur pengelolaan traffic yang diperluas, lihat salah satu halaman berikut:

Load Balancer Aplikasi klasik mendukung fungsi pengelolaan traffic yang memungkinkan Anda menggunakan fitur berikut:

Anda mengonfigurasi fitur ini menggunakan peta URL load balancer. Untuk informasi latar belakang, lihat topik berikut:

Komponen pengelolaan traffic

Secara umum, Load Balancer Aplikasi eksternal menyediakan pengelolaan traffic menggunakan peta URL global.

Load balancer menyediakan tindakan utama yang saling eksklusif berikut:

  • Mengarahkan permintaan ke layanan backend
  • Melakukan pengalihan

Saat menyiapkan load balancer, Anda dapat mengonfigurasi tindakan penulisan ulang URL sebelum load balancer mengirim permintaan ke layanan backend atau bucket backend.

Penulisan ulang atau pengalihan dapat diterapkan di tiga tingkat dalam peta URL:

  • Di pathRule tempat tindakan berlaku saat jalur cocok
  • Di pathMatcher tempat tindakan berlaku jika tidak ada jalur yang cocok untuk pathMatcher ini
  • Di urlMap tempat tindakan berlaku jika tidak ada host yang ditentukan dalam aturan host yang cocok

Menggunakan routeRules di pathMatcher adalah alternatif untuk menggunakan pathRules. pathRules dan routeRules tidak dapat muncul bersamaan dalam pathMatcher yang sama. Tidak seperti pathRules, yang urutannya tidak penting, 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 kepada pengguna eksternal dari URL yang digunakan oleh layanan Anda.

Penulisan ulang URL memisahkan URL dari resource. Anda dapat menerjemahkan dari URL yang mudah dipahami manusia, yang lebih mudah diingat dan digunakan oleh pengguna, mengubahnya menjadi URL yang ramah mesin telusur, yang lebih mudah ditemukan oleh mesin telusur, atau menjadi URL khusus penerapan internal.

Fitur penulisan ulang URL melakukan hal berikut:

  1. Membaca URL yang masuk dalam permintaan.
  2. Mengganti host, jalur, atau host dan jalur, mengubah URL sebelum mengarahkan traffic ke layanan backend atau bucket backend.

Dalam diagram berikut:

  1. Pengguna di Jepang mengirim permintaan untuk URL www.mydomain.com/static/images/someimage.jpg.
  2. Saat permintaan mencapai Load Balancer Aplikasi eksternal, load balancer menggunakan informasi di peta URL untuk menulis ulang URL menjadi www.myorigin.com/august_snapshot/images/someimage.jpg.
  3. (Opsional) Dalam contoh ini, peta URL mengirimkan permintaan ke backend eksternal.
Penulisan ulang URL dengan Load Balancer Aplikasi klasik.
Gambar 1. Penulisan ulang URL dengan Load Balancer Aplikasi klasik.

Untuk contoh konfigurasi, lihat Penulisan Ulang.

Pengalihan

Dengan pengalihan URL, Anda dapat mengalihkan permintaan klien dari satu URL ke URL lain.

Hal ini mencakup kemampuan untuk:

  • Mengalihkan semua permintaan HTTP ke permintaan HTTPS.
  • Mengalihkan ke URL lain yang dibentuk 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:

  • Menyediakan penyingkatan URL. URL yang ditampilkan kepada klien dapat dibuat jauh lebih pendek. Layanan ini mengeluarkan pengalihan ke halaman web dengan URL panjang.
  • Mencegah link rusak saat halaman web dipindahkan atau menjadi tidak relevan.
  • Mengizinkan beberapa nama domain milik pemilik yang sama untuk merujuk ke satu situs web.
  • Hindari pekerjaan berat 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 khusus membantu Anda untuk:

  • Memenuhi persyaratan kepatuhan (seperti HIPAA) untuk traffic terenkripsi.
  • Mengalihkan permintaan menggunakan HTTPS, bukan menolak permintaan yang dikirim dengan protokol HTTP.
  • Meningkatkan profil keamanan aplikasi Anda dengan mengalihkan traffic di load balancer layer-7 itu sendiri, bukan menerapkan pengalihan di server backend.

Dalam diagram berikut:

  1. Pengguna di Jepang mengirim permintaan GET http://example.com/img1.
  2. Berdasarkan pengalihan yang ditentukan dalam peta URL, load balancer mengirimkan kembali pengalihan HTTP/1.1 302 Found Location: https://example.com/img1, mengalihkan permintaan HTTP ke permintaan HTTPS.
  3. Browser pengguna mengirim permintaan GET https://example.com/img1.
Pengalihan URL dengan Load Balancer Aplikasi klasik.
Gambar 2. Pengalihan URL dengan Load Balancer Aplikasi klasik.

Untuk contoh konfigurasi, lihat Pengalihan.

Kode respons yang didukung

Kode respons pengalihan yang didukung tercantum dalam tabel.

Response code Angka Catatan
MOVED_PERMANENTLY_DEFAULT 301
DITEMUKAN 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 parameter

Perutean berbasis header dan berbasis parameter memungkinkan load balancer membuat keputusan perutean yang didasarkan pada header HTTP dan parameter kueri URL.

Dengan fitur ini, Anda dapat menyederhanakan arsitektur cloud, tanpa men-deploy tingkatan proxy tambahan (misalnya, NGINX) untuk melakukan perutean.

Anda dapat menggunakan Load Balancer Aplikasi eksternal untuk melakukan hal berikut:

  • Pengujian A/B
  • Menetapkan pelanggan ke berbagai set layanan yang berjalan di backend
  • Menyampaikan halaman dan pengalaman yang berbeda berdasarkan berbagai kategori perangkat yang menjadi asal permintaan

Setelah pathMatcher dipilih berdasarkan string host, routeRules di pathMatcher memilih jalur URL. Untuk mengetahui 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.

Misalkan Anda ingin memastikan bahwa permintaan ditangani sebagai berikut:

  • Semua permintaan dengan nilai parameter kueri A akan ditujukan ke layanan backend yang disebut BackendServiceForProcessingOptionA.
  • Semua permintaan dengan nilai parameter kueri B akan ditujukan ke layanan backend yang disebut BackendServiceForProcessingOptionB.

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 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 Anda ditentukan dengan menggunakan pendekatan dua fase:

  • Load balancer memilih layanan backend dengan backend. Backend dapat berupa:

    • 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) dalam grup endpoint jaringan (NEG) zona
    • Backend eksternal di luar Google Cloud dalam NEG internet
    • Cloud Storage di bucket backend
    • Layanan App Engine, Cloud Run Functions, atau Cloud Run di NEG serverless

    Load balancer memilih layanan backend berdasarkan aturan yang ditentukan dalam peta URL global.

  • Layanan backend memilih instance backend berdasarkan kebijakan yang ditentukan dalam layanan backend global.

Saat mengonfigurasi pemilihan rute, Anda dapat memilih 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 tidak dapat digunakan secara bersamaan. Setiap peta URL hanya dapat berisi satu mode atau mode lainnya.

Aturan host dan jalur sederhana

Dalam aturan host dan jalur sederhana, peta URL berfungsi seperti yang dijelaskan dalam ringkasan peta URL.

Diagram berikut menunjukkan alur logis aturan host dan jalur sederhana.

Alur peta URL dengan aturan host dan jalur sederhana.
Gambar 3. Alur peta URL dengan aturan host dan jalur sederhana.

Permintaan awalnya dievaluasi menggunakan aturan host. Host 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 dievaluasi. Aturan jalur dievaluasi berdasarkan kecocokan jalur terpanjang terlebih dahulu, dan Anda dapat menentukan aturan jalur dalam urutan apa pun. Setelah kecocokan yang 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 yang umum mungkin terlihat seperti berikut, dengan traffic video menuju video-backend-service, dan semua traffic lainnya menuju 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.

Aturan host, jalur, dan rute lanjutan

Aturan host, jalur, dan rute lanjutan memberikan opsi konfigurasi tambahan dibandingkan dengan aturan host dan jalur sederhana. Opsi ini memungkinkan pola pengelolaan traffic yang lebih canggih dan juga mengubah beberapa semantik. Misalnya, aturan rute dieksekusi secara berurutan (bukan menggunakan semantik kecocokan jalur terpanjang terlebih dahulu).

Seperti dalam contoh aturan host dan jalur sederhana sebelumnya, Anda dapat mengonfigurasi pengelolaan traffic lanjutan menggunakan peta URL global, tetapi alih-alih menggunakan pathMatchers[].pathRules[], Anda menggunakan pathMatchers[].routeRules[].

Bagian berikut menjelaskan komponen aturan host, jalur, dan rute lanjutan.

Aturan host

Saat permintaan mencapai load balancer, kolom host permintaan akan dievaluasi terhadap 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 mengetahui informasi selengkapnya, lihat hostRules[] dan defaultService di dokumentasi API peta URL global.

Pencocok jalur

Setelah permintaan cocok dengan aturan host, load balancer akan mengevaluasi pencocok jalur yang sesuai dengan host.

Pencocokan jalur terdiri dari komponen berikut:

  • Satu atau beberapa aturan jalur (pathRules) atau aturan rute (routeRules).
  • Aturan default yang dijalankan jika tidak ada layanan backend lain yang cocok. Aturan memiliki opsi eksklusif berikut:

    • Layanan default menentukan layanan backend default yang akan dirutekan jika tidak ada layanan backend lain yang cocok.
    • Pengalihan default menentukan URL yang akan dialihkan jika tidak ada layanan backend lain yang cocok.

Jika dikonfigurasi untuk layanan default, load balancer juga dapat dikonfigurasi untuk menulis ulang URL sebelum mengirim permintaan ke layanan default.

Untuk mengetahui 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 perutean berbasis host dan jalur sederhana yang dijelaskan sebelumnya.

Untuk mengetahui informasi selengkapnya, lihat pathRules[] dalam dokumentasi API peta URL global.

Aturan rute

Aturan rute (routeRules) mencocokkan informasi dalam permintaan masuk dan membuat keputusan perutean berdasarkan kecocokan tersebut.

Aturan rute dapat berisi berbagai aturan pencocokan yang berbeda (matchRules) dan berbagai tindakan rute yang berbeda (routeAction).

Aturan pencocokan mengevaluasi permintaan masuk berdasarkan jalur, header, dan parameter kueri permintaan HTTP(S). Aturan pencocokan mendukung berbagai jenis kecocokan (misalnya, kecocokan awalan) serta pengubah (misalnya, tidak peka huruf besar/kecil). Dengan demikian, Anda dapat, misalnya, mengirim permintaan HTTP(S) ke serangkaian backend berdasarkan keberadaan header HTTP yang ditentukan kustom.

Untuk mengetahui daftar opsi mendetail yang didukung oleh matchRules, lihat matchRules[] dalam dokumentasi API peta URL global.

Jika memiliki beberapa aturan rute, load balancer akan mengeksekusinya secara berurutan, sehingga Anda dapat menentukan logika kustom untuk pencocokan, perutean, dan tindakan lainnya.

Dalam aturan rute tertentu, saat kecocokan pertama dibuat, load balancer berhenti mengevaluasi aturan kecocokan, dan aturan kecocokan yang tersisa akan diabaikan.

Google Cloud melakukan tindakan berikut:

  1. Mencari aturan kecocokan pertama yang cocok dengan permintaan.
  2. Berhenti mencari aturan kecocokan lainnya.
  3. Menerapkan tindakan di 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 dari 0 hingga 2.147.483.647 (yaitu, (2^31)-1) yang ditetapkan ke aturan rute dalam pencocok jalur tertentu untuk menentukan urutan evaluasi aturan rute.

Prioritas tertinggi adalah 0. Prioritas terendah adalah 2147483647. Sebagai contoh, aturan dengan prioritas 4 dievaluasi sebelum aturan dengan prioritas 25. Aturan pertama yang cocok dengan permintaan akan diterapkan.

Angka prioritas dapat memiliki kesenjangan; 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 yang menjadi tujuan traffic jika aturan ini cocok.
Aturan pencocokan (matchRules) Satu atau beberapa aturan yang dievaluasi terhadap permintaan. matchRules ini dapat mencocokkan semua atau sebagian kecil atribut HTTP permintaan, seperti jalur, header HTTP, dan parameter kueri (GET).

Dalam matchRule, semua kriteria yang cocok harus dipenuhi agar routeActions routeRule dapat berlaku. 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 dilakukan saat kriteria aturan pencocokan terpenuhi.
Tindakan pengalihan (urlRedirect) Anda dapat mengonfigurasi tindakan untuk merespons dengan pengalihan HTTP saat kriteria aturan kecocokan terpenuhi. Kolom ini tidak dapat digunakan bersama dengan tindakan rute.

Untuk mengetahui 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) mencocokkan satu atau beberapa atribut permintaan dan melakukan 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 adalah example.net. Dalam permintaan, nama host berasal dari header Host, seperti yang ditunjukkan dalam contoh perintah curl ini, dengan 10.1.2.9 adalah alamat IP yang di-load balance:

    curl -v http://10.1.2.9/video/hd --header 'Host: example.com'
    
  • Jalur mengikuti nama host; misalnya /images. Aturan dapat menentukan apakah seluruh jalur atau hanya bagian awal jalur yang perlu cocok.

  • 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[] dalam 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 Anda pilih, Anda menyiapkan pengelolaan traffic menggunakan konfigurasi YAML.

Untuk mendapatkan bantuan dalam menulis file YAML ini, Anda dapat menggunakan referensi berikut: