Halaman ini menyertakan dua contoh untuk Load Balancer Aplikasi klasik:
Untuk mengonfigurasi pengelolaan traffic untuk Load Balancer Aplikasi eksternal global dan Load Balancer Aplikasi eksternal regional, lihat halaman berikut:
- Menyiapkan pengelolaan traffic untuk Load Balancer Aplikasi eksternal global
- Menyiapkan pengelolaan traffic untuk Load Balancer Aplikasi eksternal regional
Sebelum memulai
Menyiapkan perutean berbasis parameter kueri
Contoh ini menunjukkan penggunaan parameter kueri untuk melakukan pengujian A/B dengan mencocokkan string kueri.
Menambahkan dua grup instance backend
Agar perutean berguna, Anda harus memiliki beberapa backend.
Untuk menyiapkan dua backend, VM Anda harus berada dalam dua grup instance. Panduan ini menjelaskan cara membuat grup instance terkelola dengan VM Linux yang telah menjalankan Apache, lalu menyiapkan load balancing.
Grup instance terkelola menyediakan VM yang menjalankan server backend load balancer HTTP eksternal. Untuk tujuan demonstrasi, backend menyediakan nama host-nya sendiri.
Untuk mempermudah, backend berada di region yang sama. Jika menginginkan penyiapan multi-region, Anda harus memiliki penyiapan template instance untuk region kedua.
Konsol
Membuat template instance. Di konsol Google Cloud, buka halaman Instance templates.
Buka halaman Template instance
- Klik Create instance template.
- Untuk Name, masukkan
lb-backend-template
. - Pastikan Boot disk disetel ke image Debian, seperti
Debian GNU/Linux 12 (bookworm). Petunjuk ini menggunakan perintah yang
hanya tersedia di Debian, seperti
apt-get
. - Klik Advanced options.
- Klik Networking dan konfigurasikan kolom berikut:
- Untuk Network tags, masukkan
allow-health-check
.
- Untuk Network tags, masukkan
Klik Management. Masukkan skrip berikut ke dalam kolom Skrip startup.
#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2
Klik Create.
Membuat grup instance terkelola. Buka halaman Grup instance di konsol Google Cloud.
- Klik Create instance group.
- Pilih New managed instance group (stateless). Untuk informasi selengkapnya, lihat MIG stateless atau stateful.
- Untuk Name, masukkan
first-example-ig
. - Di bagian Lokasi, pilih Zona tunggal.
- Untuk Region, pilih wilayah yang diinginkan. Contoh ini menggunakan
us-east1
. - Untuk Zone, pilih
us-east1-b
. - Di bagian Instance template, pilih template instance
lb-backend-template
. - Di bagian Maximum number of instances, masukkan
2
. - Di bagian Autoscaling mode, pilih
Off:do not autoscale
. - Klik Create.
Buat grup instance terkelola lain seperti ini. Beri nama yang kedua
second-example-ig
, dan dasari pada template lb-backend-template
.
gcloud
Membuat template instance.
gcloud compute instance-templates create lb-backend-template \ --region=us-east1 \ --network=default \ --subnet=default \ --tags=allow-health-check \ --image-family=debian-12 \ --image-project=debian-cloud \ --metadata=startup-script='#! /bin/bash apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html systemctl restart apache2'
Buat grup instance terkelola pertama berdasarkan template.
gcloud compute instance-groups managed create first-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-b
Buat grup instance terkelola kedua berdasarkan template.
gcloud compute instance-groups managed create second-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-c
Mengonfigurasi aturan firewall
Dalam contoh ini, Anda akan membuat aturan firewall fw-allow-health-check
.
Ini adalah aturan masuk yang mengizinkan traffic dari sistem health check Google Cloud (130.211.0.0/22
dan 35.191.0.0/16
). Contoh ini menggunakan tag target allow-health-check
untuk mengidentifikasi VM.
Konsol
- Pada konsol Google Cloud, buka halaman Kebijakan Firewall.
Buka Kebijakan firewall - Klik Create firewall rule untuk membuat aturan firewall kedua:
- Masukkan Nama
fw-allow-health-check
. - Di bagian Network, pilih
Default
. - Di bagian Target, pilih Tag target yang ditentukan.
- Isi kolom Target tags dengan
allow-health-check
. - Tetapkan Source filter ke IPv4 ranges.
- Tetapkan Source IPv4 ranges ke
130.211.0.0/22
dan35.191.0.0/16
. - Di bagian Protocols and ports, pilih Specified protocols and ports.
- Pilih kotak centang TCP dan masukkan
80
untuk nomor port. - Klik Create.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=default \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp
Mencadangkan alamat IP eksternal
Setelah instance aktif dan berjalan, siapkan alamat IP eksternal statis global yang digunakan pelanggan untuk menjangkau load balancer Anda.
Konsol
- Buka halaman External IP addresses di Konsol Google Cloud.
Buka halaman Alamat IP eksternal - Klik Reserve static address untuk memesan alamat IPv4.
- Tetapkan Nama
lb-ipv4-1
. - Tetapkan paket Jaringan ke Standar.
- Tetapkan IP version ke IPv4.
- Tetapkan Type ke Global.
- Klik Reserve.
- Pastikan Type ditetapkan ke Global.
- Klik Reserve.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Menyiapkan backend load balancer
Konsol
Konsol Google Cloud saat ini tidak didukung untuk menyiapkan
rute berbasis header dan parameter. Sebagai gantinya, gunakan gcloud
atau API.
gcloud
- Buat health check.
gcloud compute health-checks create http http-basic-check \ --port 80
- Buat layanan backend pertama.
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
load-balancing-scheme=EXTERNAL_MANAGED
. Setelan ini menawarkan kapabilitas pengelolaan traffic tingkat lanjut. - Untuk Load Balancer Aplikasi klasik, gunakan
load-balancing-scheme=EXTERNAL
.
gcloud compute backend-services create service-a \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
- Buat layanan backend kedua.
gcloud compute backend-services create service-b \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --global-health-checks \ --protocol HTTP \ --health-checks http-basic-check \ --global
- Tambahkan grup instance pertama sebagai backend ke layanan backend pertama.
gcloud compute backend-services add-backend service-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=first-example-ig \ --instance-group-zone=us-east1-b \ --global
- Tambahkan grup instance kedua sebagai backend ke layanan backend kedua.
gcloud compute backend-services add-backend service-b \ --balancing-mode=UTILIZATION \ --max-utilization=0.8 \ --capacity-scaler=1 \ --instance-group=second-example-ig \ --instance-group-zone=us-east1-c \ --global
Membuat peta URL
Konsol
Konsol Google Cloud saat ini tidak didukung untuk menyiapkan
rute berbasis header dan parameter. Sebagai gantinya, gunakan gcloud
atau API.
gcloud
Buat file YAML
/tmp/web-map-http.yaml
. GantiPROJECT_ID
dengan project ID Anda.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a hostRules: - hosts: - '*' pathMatcher: path-matcher-1 name: web-map-http pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / queryParameterMatches: - name: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http tests: - description: Test routing for query ABTest with A host: example.com path: /?ABTest=A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a expectedOutputUrl: http://example.com/?ABTest=A - description: Test routing for query ABTest with B host: example.com path: /?ABTest=B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b expectedOutputUrl: http://example.com/?ABTest=B
Validasi peta URL.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Jika pengujian lulus dan perintah menampilkan pesan berhasil, simpan perubahan ke peta URL.
Perbarui peta URL.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Membuat proxy target dan aturan penerusan
Konsol
Konsol Google Cloud saat ini tidak didukung untuk menyiapkan
rute berbasis header dan parameter. Sebagai gantinya, gunakan gcloud
atau API.
gcloud
- Buat proxy HTTP target untuk merutekan permintaan ke peta URL Anda.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map web-map-http
- Buat aturan penerusan global untuk mengarahkan permintaan masuk ke proxy.
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
load-balancing-scheme=EXTERNAL_MANAGED
. Setelan ini menawarkan kapabilitas pengelolaan traffic tingkat lanjut. - Untuk Load Balancer Aplikasi klasik, gunakan
load-balancing-scheme=EXTERNAL
.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=LOAD_BALANCING_SCHEME \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
-
Untuk Load Balancer Aplikasi eksternal global, gunakan perintah gcloud CLI dengan
Pengujian
Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Uji penyiapan ini dengan menjalankan:
curl http://IP_ADDRESS?ABTest=A
curl http://IP_ADDRESS?ABTest=B
Di browser, buka
http://IP_ADDRESS?ABTest=A
dan
http://IP_ADDRESS?ABTest=B
.
Menyiapkan pemilihan rute berbasis header HTTP
Contoh ini menunjukkan cara menambahkan dan menghapus header HTTP untuk melakukan rute cerdas.
Sebelum memulai
Anda dapat menggunakan Load Balancer Aplikasi eksternal yang ada atau membuat yang baru.
Anda dapat menggunakan fitur ini dengan salah satu jenis backend yang didukung. Contoh ini mengasumsikan bahwa Anda menggunakan VM dalam grup instance.
Untuk menyiapkan load balancer sederhana, lihat contoh berbasis parameter kueri di atas.
Memperbarui peta URL
Konsol
Konsol Google Cloud saat ini tidak didukung untuk menyiapkan
rute berbasis header dan parameter. Sebagai gantinya, gunakan gcloud
atau API.
gcloud
Contoh ini menunjukkan penggunaan header permintaan HTTP untuk melakukan pengujian A/B dengan mencocokkan nilai dalam header HTTP permintaan.
Buat file YAML
/tmp/web-map-http.yaml
. GantiPROJECT_ID
dengan project ID Anda.defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a kind: compute#urlMap name: web-map-http hostRules: - hosts: - '*' pathMatcher: path-matcher-1 pathMatchers: - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a name: path-matcher-1 routeRules: - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: A priority: 0 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - matchRules: - prefixMatch: / headerMatches: - headerName: ABTest exactMatch: B priority: 1 service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b tests: - description: Test routing for query ABTest with A host: example.com path: / headers: - name: ABTest value: A service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-a - description: Test routing for query ABTest with B host: example.com path: / headers: - name: ABTest value: B service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/service-b
Validasi peta URL.
gcloud compute url-maps validate --source /tmp/web-map-http.yaml
Jika pengujian lulus dan perintah menampilkan pesan berhasil, simpan perubahan ke peta URL.
Perbarui peta URL.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Pengujian
Dengan menggunakan alamat IPv4 load balancer terkait, uji penyiapan ini dengan menjalankan:
curl http://IP_ADDRESS -H "ABTest: A"
curl http://IP_ADDRESS -H "ABTest: B"