Memigrasikan resource dari Load Balancer Aplikasi klasik ke Load Balancer Aplikasi eksternal global

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

  1. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  5. 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:

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

  1. Di konsol Google Cloud, buka halaman Instance templates.

    Buka halaman Template instance

  2. Klik Create instance template.

  3. Untuk Name, masukkan lb-backend-template.

  4. Untuk Region, pilih REGION.

  5. 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.

  6. Klik Advanced options.

  7. Klik Networking, dan di kolom Network tags, masukkan allow-health-check.

  8. 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
    
  9. 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

  1. Di Konsol Google Cloud, buka halaman Instance groups.

    Buka Instance groups

  2. Klik Create instance group.

  3. Pilih New managed instance group (stateless).

  4. Untuk Name, masukkan lb-backend-example.

  5. Untuk Instance template, pilih template instance lb-backend-template.

  6. Di bagian Lokasi, pilih Single zone.

  7. Untuk Region, pilih REGION.

  8. Untuk Zone, pilih ZONE.

  9. Untuk Mode penskalaan otomatis, pilih Aktif: tambahkan dan hapus instance ke grup.

    Tetapkan Minimum number of instances dan Maximum number of instances ke 2.

  10. Di bagian Port mapping, klik Add port.

  11. Untuk nama port, masukkan http. Untuk nomor port, masukkan 80.

  12. 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

  1. Di Konsol Google Cloud, buka halaman Firewall policies.

    Buka Firewall policies

  2. Klik Create firewall rule.

  3. Untuk Name, masukkan fw-allow-health-check.

  4. Untuk Network, pilih default.

  5. Untuk Target, pilih Tag target yang ditentukan.

  6. Di kolom Tag target, masukkan allow-health-check.

  7. Tetapkan Source filter ke IPv4 ranges.

  8. Tetapkan Source IPv4 ranges ke 130.211.0.0/22 dan 35.191.0.0/16.

  9. Di bagian Protocols and ports, pilih Specified protocols and ports.

  10. Pilih kotak centang TCP, lalu ketik 80 untuk nomor port.

  11. 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 secara otomatis mereplikasi objek di beberapa region Google Cloud. Hal ini dapat meningkatkan ketersediaan konten dan meningkatkan toleransi kegagalan di seluruh aplikasi.

Konsol

  1. Di konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Bucket Cloud Storage

  2. Klik Create.

  3. Di kotak Name your bucket, masukkan storage-backend-bucket, lalu klik Continue.

  4. Klik Pilih lokasi untuk menyimpan data.

  5. Tetapkan Location type ke Region, dan tentukan REGION.

  6. Klik Create.

  7. 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 Anda

Untuk menguji bucket setelah Anda membuat load balancer, salin file image berikut dari bucket Cloud Storage publik ke bucket Cloud Storage Anda sendiri.

gcloud

  1. Klik Aktifkan Cloud Shell.

  2. 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:

  1. Di konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Bucket Cloud Storage

  2. Klik nama storage-backend-bucket, lalu klik tab Permissions.

  3. Klik Grant access.

  4. Di kotak New principals, masukkan allUsers.

  5. Di kotak Select a role, pilih Cloud Storage > Storage Object Viewer.

  6. Klik Simpan.

  7. 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

  1. Di konsol Google Cloud, buka halaman External IP addresses.

    Buka Alamat IP Eksternal

  2. Untuk mereservasi alamat IPv4, klik Reserve external static IP address.

  3. Untuk Name, masukkan lb-ipv4-1.

  4. Tetapkan Network Service Tier ke Premium.

  5. Setel IP version ke IPv4.

  6. Setel Type ke Global.

  7. 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

  1. Di konsol Google Cloud, buka halaman Load balancing.

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
  4. Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
  5. Untuk Global or single region deployment, pilih Best for global workloads, lalu klik Next.
  6. Untuk Load balancer generation, pilih Classic Application Load Balancer, lalu klik Next.
  7. Klik Konfigurasikan.

Konfigurasi dasar

  1. Di kolom Nama load balancer, masukkan web-map-http.
  2. Klik Frontend configuration, konfigurasikan kolom berikut, lalu klik Done.
    • Protokol: HTTP.
    • IP version: IPv4
    • Alamat IP: lb-ipv4-1
    • Port: 443
  3. Klik Backend configuration.
  4. Di Backend services & backend buckets, klik Create a backend service, lalu lakukan hal berikut:
    1. Konfigurasikan kolom berikut:
      • Nama: web-backend-service
      • Protokol: HTTP
      • Named Port: http
    2. Di bagian Backends > New backend, konfigurasikan kolom berikut, lalu klik Done.
      • Instance group: lb-backend-example
      • Nomor port: 80
    3. Untuk Health check, klik Create a health check, tentukan kolom berikut, lalu klik Save.
      • Nama: http-basic-check
      • Protokol: HTTP
    4. Di bagian Logging, centang kotak Enable logging.
    5. Klik Create.
  5. Klik Oke.
  6. 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
  7. Klik Oke.
  8. Klik Host and path rules.
  9. Untuk cats, masukkan * di kolom Host 2, dan /never-fetch/* di kolom Path 2.
  10. Klik Review and finalize.
  11. Tinjau setelan konfigurasi load balancer Anda.
  12. Klik Create.

gcloud

  1. Membuat health check.

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  2. 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
    
  3. 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
    
  4. Tambahkan bucket backend.

    gcloud compute backend-buckets create cats \
        --gcs-bucket-name=storage-backend-bucket
    
  5. Buat peta URL untuk merutekan 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"
    
  6. Buat proxy HTTP target untuk merutekan permintaan ke peta URL.

    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map=web-map-http
    
  7. 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

  1. Di konsol Google Cloud, buka halaman Load balancing.

    Buka Load balancing

  2. Klik web-map-http.

  3. Di bagian Frontend, catat IP:Port load balancer.

  4. 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).

  5. 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

  1. 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).

  2. 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 mengirimkan 10% permintaan ke infrastruktur Load Balancer Aplikasi eksternal global dan 90% permintaan ke infrastruktur Load Balancer Aplikasi klasik.

  3. Akses layanan backend.

    Masukkan http://IP_ADDRESS di kolom URL browser web. Jika Anda melihat pesan Page 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%.

  4. Opsional: Periksa log layanan backend.

  5. 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
    
  6. Opsional: Periksa log layanan backend.

  7. 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.

  8. Opsional: Periksa log layanan backend. Anda melihat bahwa skema load balancing adalah EXTERNAL_MANAGED.

Memigrasikan bucket backend

  1. 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).

  2. 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 mengirim 10% permintaan ke infrastruktur Load Balancer Aplikasi eksternal global dan 90% permintaan ke infrastruktur Load Balancer Aplikasi klasik.

  3. Akses 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 persentasenya. 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
    
  4. Opsional: Periksa log bucket backend.

  5. 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
    
  6. Opsional: Periksa log bucket backend.

Memigrasikan aturan penerusan

  1. 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.

  2. Opsional: Periksa log aturan penerusan. Anda melihat bahwa skema load balancing adalah EXTERNAL_MANAGED.

Langkah selanjutnya