Halaman ini berisi dua contoh untuk Load Balancer Aplikasi klasik:
Guna 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 pemilihan rute berbasis parameter kueri
Contoh ini menunjukkan penggunaan parameter kueri untuk melakukan pengujian A/B dengan melakukan pencocokan pada string kueri.
Menambahkan dua grup instance backend
Agar perutean bermanfaat, Anda harus memiliki beberapa backend.
Untuk menyiapkan dua backend, VM harus berada dalam dua grup instance. Panduan ini menjelaskan cara membuat grup instance terkelola dengan VM Linux yang menjalankan Apache, kemudian 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 memudahkan, 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.
- Klik Create instance template.
- Untuk Name, masukkan
lb-backend-template
. - Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 10 (buster). Petunjuk ini menggunakan perintah yang
hanya tersedia di Debian, seperti
apt-get
. - Klik Advanced options.
- Klik Networking dan konfigurasikan kolom berikut:
- Untuk Tag jaringan, masukkan
allow-health-check
.
- Untuk Tag jaringan, masukkan
Klik Management. Masukkan skrip berikut ke 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 grup instance.
- Pilih New managed instance group (stateless). Untuk mengetahui informasi selengkapnya, lihat MIG stateless atau stateful.
- Untuk Name, masukkan
first-example-ig
. - Di bagian Location, pilih Single zone.
- Untuk Wilayah, pilih wilayah yang Anda inginkan. Contoh ini menggunakan
us-east1
. - Untuk Zone, pilih
us-east1-b
. - Di bagian Instance template, pilih template instance
lb-backend-template
. - Di bagian Jumlah maksimum instance, masukkan
2
. - Di bagian Autoscaling mode, pilih
Off:do not autoscale
. - Klik Create.
Buat grup instance terkelola lain seperti ini. Beri nama kedua second-example-ig
, dan dasarkan 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-10 \ --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'
Membuat grup instance terkelola pertama berdasarkan template tersebut.
gcloud compute instance-groups managed create first-example-ig \ --template=lb-backend-template --size=2 --zone=us-east1-b
Membuat grup instance terkelola kedua berdasarkan template tersebut.
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 membuat aturan firewall fw-allow-health-check
.
Ini adalah aturan masuk yang memungkinkan 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 Jaringan, pilih
Default
. - Di bagian Target, pilih Tag target yang ditentukan.
- Isi kolom Tag target dengan
allow-health-check
. - Tetapkan Filter sumber ke rentang IPv4.
- Setel Rentang IPv4 sumber 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
Melakukan reservasi alamat IP eksternal
Setelah instance Anda aktif dan berjalan, siapkan alamat IP eksternal statis global yang digunakan pelanggan untuk menjangkau load balancer Anda.
Konsol
- Buka halaman External IP addresses di Google Cloud Console.
Buka halaman External IP addresses - Klik Reserve static address untuk memesan alamat IPv4.
- Tetapkan Nama
lb-ipv4-1
. - Tetapkan tingkat Jaringan ke Standar.
- Tetapkan IP version ke IPv4.
- Tetapkan Type ke Global.
- Klik Reserve.
- Pastikan Jenis disetel 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 perutean berbasis header dan berbasis parameter. Gunakan gcloud
atau API sebagai gantinya.
gcloud
- Membuat 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 Anda 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 Anda 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 perutean berbasis header dan berbasis parameter. Gunakan gcloud
atau API sebagai gantinya.
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 pada peta URL.
Perbarui peta URL.
gcloud compute url-maps import web-map-http \ --source /tmp/web-map-http.yaml \ --global
Membuat aturan penerusan dan proxy target
Konsol
Konsol Google Cloud saat ini tidak didukung untuk menyiapkan perutean berbasis header dan berbasis parameter. Gunakan gcloud
atau API sebagai gantinya.
gcloud
- Buat proxy HTTP target untuk mengarahkan permintaan ke peta URL.
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 penambahan dan penghapusan header HTTP untuk melakukan perutean cerdas.
Sebelum memulai
Anda dapat menggunakan Load Balancer Aplikasi eksternal yang sudah ada atau membuat yang baru.
Anda dapat menggunakan fitur ini dengan jenis backend yang didukung apa pun. 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 perutean berbasis header dan berbasis parameter. Gunakan gcloud
atau API sebagai gantinya.
gcloud
Contoh ini menunjukkan penggunaan header permintaan HTTP untuk melakukan pengujian A/B dengan mencocokkan nilai di 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 pada 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 dari load balancer yang terkait, uji penyiapan ini dengan menjalankan:
curl http://IP_ADDRESS -H "ABTest: A"
curl http://IP_ADDRESS -H "ABTest: B"