Dokumen ini menjelaskan cara memigrasikan resource infrastruktur Load Balancer Aplikasi klasik ke infrastruktur Load Balancer Aplikasi eksternal global.
Sebelum memulai
Pastikan penyiapan Anda memenuhi prasyarat berikut.
Menetapkan project default
Konsol
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
gcloud
gcloud config set project PROJECT_ID
Ganti PROJECT_ID
dengan project yang Anda gunakan untuk panduan ini.
Izin
Untuk mengikuti dokumen ini, Anda harus memiliki izin untuk membuat instance virtual machine (VM) Compute Engine, aturan firewall, alamat IP yang dicadangkan, dan bucket Cloud Storage dalam project Google Cloud. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki peran IAM Compute Engine berikut:
Tugas | Peran yang diperlukan |
---|---|
Membuat instance | Peran Compute Instance Admin (beta) (roles/compute.instanceAdmin )
|
Menambahkan dan menghapus aturan firewall | Peran Compute Security Admin (roles/compute.securityAdmin )
|
Membuat komponen load balancer | Peran Compute Network Admin (roles/compute.networkAdmin )
|
Membuat project (opsional) | Peran Project Creator (roles/resourcemanager.projectCreator )
|
Membuat bucket Cloud Storage | Peran Storage Object Admin (roles/storage.objectAdmin )
|
Untuk informasi selengkapnya, lihat panduan berikut:
- Mengelola kontrol akses untuk Cloud Load Balancing menggunakan IAM
- Kondisi IAM untuk aturan penerusan
Membuat resource Load Balancer Aplikasi klasik
Dalam dokumen ini, Anda akan membuat resource Load Balancer Aplikasi klasik berikut, lalu memigrasikannya ke infrastruktur Load Balancer Aplikasi eksternal global.
- Grup instance terkelola dengan VM.
- Bucket Cloud Storage.
- Load Balancer Aplikasi klasik HTTP dengan grup instance terkelola dan bucket Cloud Storage sebagai backend.
Membuat grup instance terkelola
Bagian ini menjelaskan cara membuat grup instance terkelola dengan VM Linux yang menjalankan Apache. Grup instance terkelola membuat setiap instance terkelolanya berdasarkan template instance yang Anda tentukan.
Membuat template instance
Konsol
Di konsol Google Cloud, buka halaman Instance templates.
Klik Create instance template.
Untuk Name, masukkan
lb-backend-template
.Untuk Region, pilih
REGION
.Di bagian Boot disk, pastikan Image dari boot disk ditetapkan 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 di kolom Network tags, masukkan
allow-health-check
.Klik Management, lalu masukkan skrip berikut ke dalam kolom 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
Klik Create.
gcloud
Jalankan perintah gcloud compute instance-templates create
untuk membuat template.
gcloud compute instance-templates create lb-backend-template \ --region=REGION \ --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'
Membuat grup instance terkelola
Konsol
Di Konsol Google Cloud, buka halaman Instance groups.
Klik Create instance group.
Pilih New managed instance group (stateless).
Untuk Name, masukkan
lb-backend-example
.Untuk Instance template, pilih template instance
lb-backend-template
.Di bagian Lokasi, pilih Zona tunggal.
Untuk Region, pilih
REGION
.Untuk Zone, pilih
ZONE
.Untuk Mode penskalaan otomatis, pilih Aktif: tambahkan dan hapus instance ke grup.
Tetapkan Minimum number of instances dan Maximum number of instances ke
2
.Di bagian Port mapping, klik Add port.
Untuk nama port, masukkan
http
. Untuk nomor port, masukkan80
.Klik Create.
gcloud
Jalankan perintah gcloud compute instance-groups managed create
untuk membuat grup instance terkelola berdasarkan template.
gcloud compute instance-groups managed create lb-backend-example \ --template=lb-backend-template \ --size=2 --zone=ZONE
Jalankan perintah berikut untuk menambahkan port bernama ke grup instance:
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE
Mengonfigurasi aturan firewall
Di bagian ini, Anda akan membuat aturan firewall fw-allow-health-check
dan menggunakan tag target allow-health-check
untuk mengidentifikasi VM. Ini adalah aturan masuk yang mengizinkan traffic dari sistem health check Google Cloud (130.211.0.0/22
dan 35.191.0.0/16
).
Konsol
Di Konsol Google Cloud, buka halaman Firewall policies.
Klik Create firewall rule.
Untuk Name, masukkan
fw-allow-health-check
.Untuk Network, pilih default.
Untuk Target, pilih Tag target yang ditentukan.
Di kolom Target tags, masukkan
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, lalu ketik
80
untuk nomor port.Klik Create.
gcloud
Jalankan perintah gcloud compute firewall-rules create
untuk membuat aturan firewall.
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:80
Membuat bucket Cloud Storage
Di bagian ini, Anda akan membuat bucket Cloud Storage untuk diakses oleh load balancer. Untuk deployment produksi, sebaiknya pilih bucket multi-region, yang otomatis mereplikasi objek di beberapa region Google Cloud. Hal ini dapat meningkatkan ketersediaan konten dan meningkatkan toleransi kegagalan di seluruh aplikasi.
Konsol
Di konsol Google Cloud, buka halaman Bucket Cloud Storage.
Klik Create.
Di kotak Name your bucket, masukkan
storage-backend-bucket
, lalu klik Continue.Klik Pilih lokasi untuk menyimpan data.
Tetapkan Location type ke Region, dan tentukan
REGION
.Klik Create.
Opsional: Jika Anda melihat dialog Public access will be prevented, hapus centang pada kotak Enforce public access prevention on this bucket, lalu klik Confirm.
gcloud
Jalankan perintah gcloud storage buckets create
untuk membuat bucket:
gcloud storage buckets create gs://storage-backend-bucket \ --default-storage-class=standard \ --location=REGION --uniform-bucket-level-access
Mentransfer konten ke bucket Cloud Storage
Untuk menguji bucket setelah Anda membuat load balancer, salin file image berikut dari bucket Cloud Storage publik ke bucket Cloud Storage Anda sendiri.
gcloud
Klik
Aktifkan Cloud Shell.Jalankan perintah berikut di Cloud Shell:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://storage-backend-bucket/never-fetch/
Di konsol Google Cloud, klik Refresh di halaman detail bucket untuk memverifikasi bahwa file telah berhasil disalin.
Membuat bucket Cloud Storage Anda dapat dibaca secara publik
Jika Anda membuat bucket Cloud Storage dapat dibaca secara publik, siapa pun di internet dapat mencantumkan dan melihat objeknya, serta melihat metadatanya (tidak termasuk ACL). Jangan sertakan informasi sensitif dalam bucket publik Anda.
Untuk mengurangi kemungkinan eksposur informasi sensitif secara tidak sengaja, jangan simpan objek publik dan data sensitif di bucket yang sama.
Konsol
Untuk memberikan akses kepada semua pengguna agar dapat melihat objek di bucket Anda, ikuti langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Bucket Cloud Storage.
Klik nama
storage-backend-bucket
, lalu klik tab Permissions.Klik Grant access.
Di kotak New principals, masukkan
allUsers
.Di kotak Select a role, pilih Cloud Storage > Storage Object Viewer.
Klik Simpan.
Klik Allow public access.
gcloud
Jalankan perintah gcloud storage buckets add-iam-policy-binding
untuk memberikan akses kepada semua pengguna untuk melihat objek di bucket Anda:
gcloud storage buckets add-iam-policy-binding gs://storage-backend-bucket \ --member=allUsers \ --role=roles/storage.objectViewer
Mencadangkan alamat IP eksternal
Setelah instance aktif dan berjalan, siapkan alamat IP eksternal statis global yang digunakan pelanggan untuk menjangkau load balancer Anda.
Konsol
Di konsol Google Cloud, buka halaman External IP addresses.
Untuk mereservasi alamat IPv4, klik Reserve external static IP address.
Untuk Name, masukkan
lb-ipv4-1
.Tetapkan Network Service Tier ke Premium.
Setel IP version ke IPv4.
Setel Type ke Global.
Klik Reserve.
gcloud
Untuk mencadangkan alamat IP eksternal, jalankan perintah berikut:
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Untuk mencatat alamat IPv4 yang dicadangkan, jalankan perintah berikut:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Menyiapkan Load Balancer Aplikasi klasik
Di bagian ini, Anda akan menggunakan HTTP (frontend) antara klien dan load balancer.
Konsol
Memulai konfigurasi
Di konsol Google Cloud, buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
- Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
- Untuk Global or single region deployment, pilih Best for global workloads, lalu klik Next.
- Untuk Load balancer generation, pilih Classic Application Load Balancer, lalu klik Next.
- Klik Konfigurasikan.
Konfigurasi dasar
- Di kolom Nama load balancer, masukkan
web-map-http
. - Klik Frontend configuration, konfigurasikan kolom berikut, lalu klik Done.
- Protokol: HTTP.
- IP version: IPv4
- Alamat IP:
lb-ipv4-1
- Port:
443
- Klik Backend configuration.
- Di Backend services & backend buckets, klik Create a backend service, lalu lakukan hal berikut:
- Konfigurasikan kolom berikut:
- Nama:
web-backend-service
- Protokol: HTTP
- Named Port: http
- Nama:
- Di bagian Backends > New backend, konfigurasikan kolom berikut, lalu klik Done.
- Instance group: lb-backend-example
- Nomor port:
80
- Untuk Health check, klik Create a health check, tentukan kolom berikut, lalu klik Save.
- Nama:
http-basic-check
- Protokol: HTTP
- Nama:
- Di bagian Logging, centang kotak Enable logging.
- Klik Create.
- Konfigurasikan kolom berikut:
- Klik Oke.
- Di Backend services & backend buckets, klik Create a backend bucket, konfigurasikan kolom berikut, lalu klik Create.
- Nama bucket backend:
cats
- Bucket Cloud Storage:
storage-backend-bucket
- Nama bucket backend:
- Klik Oke.
- Klik Host and path rules.
- Untuk
cats
, masukkan*
di kolom Host 2, dan/never-fetch/*
di kolom Path 2. - Klik Review and finalize.
- Tinjau setelan konfigurasi load balancer Anda.
- Klik Create.
gcloud
Membuat health check.
gcloud compute health-checks create http http-basic-check \ --port 80
Buat layanan backend.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --enable-logging \ --logging-sample-rate=1.0 \ --enable-cdn \ --global
Tambahkan grup instance sebagai backend ke layanan backend.
gcloud compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE \ --global
Tambahkan bucket backend.
gcloud compute backend-buckets create cats \ --gcs-bucket-name=storage-backend-bucket
Buat peta URL untuk mengarahkan permintaan masuk ke layanan backend dan bucket backend.
gcloud compute url-maps create web-map-http \ --default-service web-backend-service
gcloud compute url-maps add-path-matcher web-map-http \ --path-matcher-name=cats-path-matcher \ --default-backend-bucket=cats \ --new-hosts="*" \ --backend-bucket-path-rules="/never-fetch/*=cats"
Buat proxy HTTP target untuk merutekan 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.
gcloud compute forwarding-rules create web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Menguji traffic yang dikirim ke instance
Setelah layanan load balancing berjalan, Anda dapat mengirim traffic ke aturan penerusan dan melihat traffic tersebut disebar ke berbagai instance.
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
Klik
web-map-http
.Di bagian Frontend, catat IP:Port load balancer.
Untuk menguji instance backend, masukkan
http://IP_ADDRESS
di kolom URL browser web.Browser Anda merender halaman berisi konten yang menampilkan nama instance yang menampilkan halaman tersebut, bersama dengan zonanya (misalnya,
Page served from: lb-backend-example-xxxx
).Untuk menguji bucket backend, masukkan
http://IP_ADDRESS/never-fetch/three-cats.jpg
di kolom URL browser web.Browser Anda merender gambar.
Memigrasikan resource Load Balancer Aplikasi klasik
Di bagian ini, Anda akan memigrasikan layanan backend, bucket backend, dan aturan penerusan ke infrastruktur Load Balancer Aplikasi eksternal global.
Memigrasikan layanan backend
Siapkan layanan backend untuk migrasi.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=PREPARE \ --global
Tunggu beberapa saat (sekitar enam menit).
Kirim beberapa traffic, seperti 10%, ke layanan backend.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=10 \ --global
Tunggu beberapa saat (sekitar enam menit).
Setelah siap, resource akan mengirim 10% permintaan ke infrastruktur Load Balancer Aplikasi eksternal global dan 90% permintaan ke infrastruktur Load Balancer Aplikasi klasik.
Akses layanan backend.
Masukkan
http://IP_ADDRESS
di kolom URL browser web. Jika Anda melihat pesanPage served from: lb-backend-example-xxxx
, jalankan perintah berikut untuk meningkatkan persentase.gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_BY_PERCENTAGE \ --external-managed-migration-testing-percentage=50 \ --global
Ulangi proses ini hingga Anda mencapai 100%.
Opsional: Periksa log layanan backend.
Selesaikan pengujian dan kirim semua traffic ke layanan backend.
gcloud beta compute backend-services update web-backend-service \ --external-managed-migration-state=TEST_ALL_TRAFFIC \ --global
Opsional: Periksa log layanan backend.
Ubah skema layanan backend menjadi
EXTERNAL_MANAGED
.gcloud beta compute backend-services update web-backend-service \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Tunggu beberapa saat (sekitar enam menit) hingga layanan backend dimigrasikan sepenuhnya ke infrastruktur Load Balancer Aplikasi eksternal global.
Opsional: Periksa log layanan backend. Anda melihat bahwa skema load balancing adalah
EXTERNAL_MANAGED
.
Memigrasikan bucket backend
Siapkan bucket backend untuk migrasi.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=PREPARE \ --global
Tunggu beberapa saat (sekitar enam menit).
Kirim beberapa traffic, seperti 10%, ke bucket backend.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=10 \ --global
Tunggu beberapa saat (sekitar enam menit).
Setelah siap, resource akan mengirimkan 10% permintaan ke infrastruktur Load Balancer Aplikasi eksternal global dan 90% permintaan ke infrastruktur Load Balancer Aplikasi klasik.
Mengakses bucket backend.
Masukkan
http://IP_ADDRESS/never-fetch/three-cats.jpg
di kolom URL browser web. Jika Anda melihat gambar kucing, jalankan perintah berikut untuk meningkatkan persentase. Ulangi proses ini hingga Anda mencapai 100%.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_BY_PERCENTAGE \ --external-managed-backend-bucket-migration-testing-percentage=50 \ --global
Opsional: Periksa log bucket backend.
Selesaikan pengujian dan kirim semua traffic ke bucket backend.
gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --external-managed-backend-bucket-migration-state=TEST_ALL_TRAFFIC \ --global
Opsional: Periksa log bucket backend.
Memigrasikan aturan penerusan
Ubah skema aturan penerusan menjadi
EXTERNAL_MANAGED
.gcloud beta compute forwarding-rules update web-map-http-forwarding-rule \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Tunggu beberapa saat (sekitar enam menit) hingga aturan penerusan dimigrasikan sepenuhnya ke infrastruktur Load Balancer Aplikasi eksternal global.
Opsional: Periksa log aturan penerusan. Anda melihat bahwa skema load balancing adalah
EXTERNAL_MANAGED
.