Menyiapkan Load Balancer Aplikasi eksternal global dengan backend grup instance VM

Panduan penyiapan ini menunjukkan cara membuat Load Balancer Aplikasi eksternal global dengan backend grup instance terkelola Compute Engine.

Untuk mengetahui konsep umumnya, baca Ringkasan Load Balancer Aplikasi Eksternal.

Jika Anda adalah pengguna Load Balancer Aplikasi klasik, pastikan Anda meninjau Ringkasan migrasi saat merencanakan deployment baru dengan Load Balancer Aplikasi eksternal global.


Untuk mengikuti panduan langkah demi langkah untuk tugas ini langsung di Google Cloud konsol, klik Pandu saya:

Pandu saya


Topologi load balancer

Untuk load balancer HTTPS, Anda akan membuat konfigurasi yang ditunjukkan dalam diagram berikut.

Load Balancer Aplikasi eksternal dengan backend grup instance terkelola (MIG).
Gambar 1. Load Balancer Aplikasi eksternal dengan backend grup instance terkelola (MIG) (klik untuk memperbesar).

Untuk load balancer HTTP, Anda akan membuat konfigurasi yang ditunjukkan dalam diagram berikut.

Load Balancer Aplikasi eksternal dengan backend grup instance terkelola (MIG).
Gambar 2. Load Balancer Aplikasi eksternal dengan backend grup instance terkelola (MIG) (klik untuk memperbesar).

Urutan peristiwa dalam diagram adalah sebagai berikut:

  1. Klien mengirimkan permintaan konten ke alamat IPv4 eksternal yang ditentukan dalam aturan penerusan.
  2. Untuk load balancer HTTPS, aturan penerusan mengarahkan permintaan ke proxy HTTPS target.

    Untuk load balancer HTTP, aturan penerusan mengarahkan permintaan ke proxy HTTP target.

  3. Proxy target menggunakan aturan di peta URL untuk menentukan bahwa satu layanan backend menerima semua permintaan.

  4. Load balancer menentukan bahwa layanan backend hanya memiliki satu grup instance dan mengarahkan permintaan ke instance virtual machine (VM) dalam grup tersebut.

  5. VM menyajikan konten yang diminta oleh pengguna.

Sebelum memulai

Selesaikan langkah-langkah berikut sebelum Anda membuat load balancer.

Menyiapkan resource sertifikat SSL

Untuk load balancer HTTPS, buat resource sertifikat SSL seperti yang dijelaskan di bagian berikut:

Sebaiknya gunakan sertifikat yang dikelola Google.

Contoh ini mengasumsikan bahwa Anda sudah memiliki resource sertifikat SSL bernama www-ssl-cert.

Menyiapkan izin

Untuk menyelesaikan langkah-langkah dalam panduan ini, Anda harus memiliki izin untuk membuat instance Compute Engine, aturan firewall, dan alamat IP yang dicadangkan dalam project. Anda harus memiliki peran pemilik atau editor project, atau Anda harus memiliki peran IAM Compute Engine berikut.

Tugas Peran yang diperlukan
Membuat instance Instance Admin
Menambahkan dan menghapus aturan firewall Security Admin
Membuat komponen load balancer Network Admin
Membuat project (opsional) Project Creator

Untuk mendapatkan informasi selengkapnya, lihat panduan berikut:

Opsional: Menggunakan alamat BYOIP

Dengan fitur bawa IP Anda sendiri (BYOIP), Anda dapat mengimpor alamat publik Anda sendiri keGoogle Cloud untuk menggunakan alamat tersebut dengan resource Google Cloud . Misalnya, jika Anda mengimpor alamat IPv4 Anda sendiri, Anda dapat menetapkannya ke aturan penerusan saat mengonfigurasi load balancer. Saat Anda mengikuti petunjuk dalam dokumen ini untuk menyiapkan load balancer, berikan alamat BYOIP sebagai alamat IP.

Untuk mengetahui informasi selengkapnya tentang penggunaan BYOIP, lihat Membawa alamat IP Anda sendiri.

Mengonfigurasi jaringan dan subnet

Untuk membuat contoh jaringan dan subnet, ikuti langkah-langkah berikut.

Konsol

Untuk mendukung traffic IPv4 dan IPv6, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman VPC networks.

    Buka VPC networks

  2. Klik Create VPC network.

  3. Masukkan Name untuk jaringan.

  4. Opsional: Jika Anda ingin mengonfigurasi rentang alamat IPv6 internal pada subnet di jaringan ini, selesaikan langkah-langkah berikut:

    1. Untuk VPC network ULA internal IPv6 range, pilih Enabled.
    2. Untuk Allocate internal IPv6 range, Pilih Automatically atau Manually.

      Jika Anda memilih Manually, masukkan rentang /48 dari dalam rentang fd20::/20. Jika rentang tersebut sedang digunakan, Anda akan diminta untuk memberikan rentang yang berbeda.

  5. Untuk Subnet creation mode, pilih Custom.

  6. Di bagian New subnet, konfigurasi kolom berikut:

    1. Di kolom Name, berikan nama untuk subnet.
    2. Di kolom Region, pilih region.
    3. Untuk IP stack type, pilih IPv4 and IPv6 (dual-stack).
    4. Di kolom IP address range, masukkan rentang alamat IP. Ini adalah rentang IPv4 utama untuk subnet.

      Meskipun Anda dapat mengonfigurasi rentang alamat IPv4 untuk subnet, Anda tidak dapat memilih rentang alamat IPv6 untuk subnet. Google menyediakan blok CIDR IPv6 berukuran tetap (/64).

    5. Untuk IPv6 access type, pilih External.

  7. Klik Done.

  8. Klik Buat.

Untuk mendukung traffic IPv4 saja, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman VPC networks.

    Buka VPC networks

  2. Klik Create VPC network.

  3. Di kolom Name, masukkan nama untuk jaringan.

  4. Untuk Subnet creation mode, pilih Custom.

  5. Di bagian New subnet, konfigurasi hal berikut:

    1. Di kolom Name, berikan nama untuk subnet.
    2. Di kolom Region, pilih region.
    3. Untuk IP stack type, pilih IPv4 (single-stack).
    4. Di kolom Rentang alamat IP, masukkan rentang IPv4 utama untuk subnet.
  6. Klik Done.

  7. Klik Create.

gcloud

  1. Buat jaringan VPC mode kustom:

    gcloud compute networks create NETWORK \
        --subnet-mode=custom
    
  2. Di dalam jaringan, buat subnet untuk backend.

    Untuk traffic IPv4 dan IPv6, gunakan perintah berikut untuk memperbarui subnet:

    gcloud compute networks subnets create SUBNET \
       --stack-type=IPV4_IPV6 \
       --ipv6-access-type=EXTERNAL \
       --network=NETWORK \
       --range=IPV4_RANGE \
       --region=REGION_A
    

    Untuk traffic IPv4 saja, gunakan perintah berikut:

    gcloud compute networks subnets create SUBNET \
       --network=NETWORK \
       --stack-type=IPV4_ONLY \
       --range=IPV4_RANGE \
       --region=REGION_A
    

Ganti kode berikut:

  • NETWORK: nama untuk jaringan VPC

  • IPV4_RANGE: rentang IPv4 utama untuk subnet baru, dalam notasi CIDR. Contoh, 10.1.2.0/24.

  • SUBNET: nama untuk subnet

  • REGION_A: nama region

Membuat grup instance terkelola

Untuk menyiapkan load balancer dengan backend Compute Engine, VM Anda harus berada dalam grup instance. Panduan ini menjelaskan cara membuat grup instance terkelola dengan VM Linux yang menjalankan Apache, lalu menyiapkan load balancing. Grup instance terkelola membuat setiap instance terkelola berdasarkan template instance yang Anda tentukan.

Grup instance terkelola menyediakan VM yang menjalankan server backend load balancer HTTP(S) eksternal. Untuk tujuan demonstrasi, backend menyajikan nama host-nya sendiri.

Sebelum membuat grup instance terkelola, buat template instance.

Konsol

Untuk mendukung traffic IPv4 dan IPv6, ikuti langkah-langkah berikut:

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

    Buka Instance templates

  2. Klik Create instance template.

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

  4. Di daftar Region, pilih region.

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

  6. Luaskan Opsi lanjutan.

  7. Perluas Networking dan konfigurasi kolom berikut:

    1. Untuk Network tags, masukkan allow-health-check,allow-health-check-ipv6.
    2. Di bagian Network interfaces, klik Edit. Konfigurasi kolom berikut:
      • Network: NETWORK
      • Subnet: SUBNET
      • IP stack type: IPv4 and IPv6 (dual-stack)
    3. Klik Done
  8. Luaskan Management. Di kolom Startup script, masukkan skrip berikut:

    #! /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 Buat.

gcloud

Untuk mendukung traffic IPv4 dan IPv6, jalankan perintah berikut:

gcloud compute instance-templates create TEMPLATE_NAME \
  --region=REGION \
  --network=NETWORK \
  --subnet=SUBNET \
  --stack-type=IPv4_IPv6 \
  --tags=allow-health-check,allow-health-check-ipv6 \
  --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'

Terraform

Untuk membuat template instance, gunakan resource google_compute_instance_template.

resource "google_compute_instance_template" "default" {
  name = "lb-backend-template"
  disk {
    auto_delete  = true
    boot         = true
    device_name  = "persistent-disk-0"
    mode         = "READ_WRITE"
    source_image = "projects/debian-cloud/global/images/family/debian-11"
    type         = "PERSISTENT"
  }
  labels = {
    managed-by-cnrm = "true"
  }
  machine_type = "n1-standard-1"
  metadata = {
    startup-script = "#! /bin/bash\n     sudo apt-get update\n     sudo apt-get install apache2 -y\n     sudo a2ensite default-ssl\n     sudo a2enmod ssl\n     vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\n   http://169.254.169.254/computeMetadata/v1/instance/name)\"\n   sudo echo \"Page served from: $vm_hostname\" | \\\n   tee /var/www/html/index.html\n   sudo systemctl restart apache2"
  }
  network_interface {
    access_config {
      network_tier = "PREMIUM"
    }
    network    = "global/networks/default"
    subnetwork = "regions/us-east1/subnetworks/default"
  }
  region = "us-east1"
  scheduling {
    automatic_restart   = true
    on_host_maintenance = "MIGRATE"
    provisioning_model  = "STANDARD"
  }
  service_account {
    email  = "default"
    scopes = ["https://www.googleapis.com/auth/devstorage.read_only", "https://www.googleapis.com/auth/logging.write", "https://www.googleapis.com/auth/monitoring.write", "https://www.googleapis.com/auth/pubsub", "https://www.googleapis.com/auth/service.management.readonly", "https://www.googleapis.com/auth/servicecontrol", "https://www.googleapis.com/auth/trace.append"]
  }
  tags = ["allow-health-check"]
}

Buat grup instance terkelola dan pilih template instance.

Konsol

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

    Buka Instance groups

  2. Klik Create instance group.

  3. Di sebelah kiri, pilih New managed instance group (stateless).

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

  5. Di bagian Location, pilih Single zone.

  6. Untuk Region, pilih region yang Anda inginkan.

  7. Untuk Zone, pilih zona.

  8. Di bagian Instance template, pilih template instance lb-backend-template.

  9. Untuk Autoscaling mode, pilih On: add and remove instances to the group.

    Setel Minimum number of instances ke 2, dan setel Maximum number of instances ke 2 atau lebih.

  10. Untuk membuat grup instance baru, klik Create.

gcloud

  1. Buat grup instance terkelola berdasarkan template tersebut.

    gcloud compute instance-groups managed create lb-backend-example \
       --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
    

Terraform

Untuk membuat grup instance terkelola, gunakan resource google_compute_instance_group_manager.

resource "google_compute_instance_group_manager" "default" {
  name = "lb-backend-example"
  zone = "us-east1-b"
  named_port {
    name = "http"
    port = 80
  }
  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  base_instance_name = "vm"
  target_size        = 2
}

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Menambahkan port bernama ke grup instance

Untuk setiap grup instance, tentukan layanan HTTP dan petakan nama port ke port yang relevan. Layanan load balancing meneruskan traffic ke port bernama. Untuk mengetahui informasi selengkapnya, lihat Port bernama.

Konsol

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

    Buka Instance groups

  2. Klik lb-backend-example.

  3. Di halaman Overview grup instance, klik Edit.

  4. Di bagian Port mapping, klik Add port.

    1. Untuk nama port, masukkan http. Untuk nomor port, masukkan 80.
  5. Klik Save.

gcloud

Gunakan perintah gcloud compute instance-groups set-named-ports.

gcloud compute instance-groups set-named-ports lb-backend-example \
    --named-ports http:80 \
    --zone ZONE_A

Terraform

Atribut named_port disertakan dalam contoh grup instance terkelola.

Mengonfigurasi aturan firewall

Dalam contoh ini, Anda akan membuat aturan firewall fw-allow-health-check. Ini adalah aturan ingress 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

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

    Buka Firewall policies

  2. Klik Create firewall rule untuk membuat aturan firewall.

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

  4. Pilih sebuah Network.

  5. Di bagian Targets, pilih Specified target tags.

  6. Isi kolom Target tags dengan allow-health-check.

  7. Setel Source filter ke IPv4 ranges.

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

gcloud compute firewall-rules create fw-allow-health-check \
    --network=NETWORK \
    --action=allow \
    --direction=ingress \
    --source-ranges=130.211.0.0/22,35.191.0.0/16 \
    --target-tags=allow-health-check \
    --rules=tcp:80

Terraform

Untuk membuat aturan firewall, gunakan resource google_compute_firewall.

resource "google_compute_firewall" "default" {
  name          = "fw-allow-health-check"
  direction     = "INGRESS"
  network       = "global/networks/default"
  priority      = 1000
  source_ranges = ["130.211.0.0/22", "35.191.0.0/16"]
  target_tags   = ["allow-health-check"]
  allow {
    ports    = ["80"]
    protocol = "tcp"
  }
}

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Buat aturan firewall health check IPv6

Pastikan Anda memiliki aturan ingress, yang berlaku untuk instance yang di-load balance, yang mengizinkan traffic dari sistem health check (2600:2d00:1:b029::/64). Contoh ini menggunakan tag target allow-health-check-ipv6 untuk mengidentifikasi instance VM yang menerapkan aturan tersebut. Google Cloud

Tanpa aturan firewall ini, aturan ingress tolak tersirat akan memblokir traffic IPv6 masuk ke instance backend.

Konsol

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

    Buka Firewall policies

  2. Untuk mengizinkan traffic subnet IPv6, klik Create firewall rule lagi dan masukkan informasi berikut:

    • Nama: fw-allow-lb-access-ipv6
    • Network: NETWORK
    • Prioritas: 1000
    • Arah lalu lintas: masuk
    • Targets: Tag target yang ditentukan
    • Kolom Target tags, masukkan allow-health-check-ipv6
    • Filter sumber: Rentang IPv6
    • Rentang IPv6 sumber: 2600:2d00:1:b029::/64,2600:2d00:1:1::/64
    • Protocols and ports: Izinkan semua
  3. Klik Buat.

gcloud

Untuk mengizinkan komunikasi dengan subnet, buat aturan firewall fw-allow-lb-access-ipv6:

gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
  --network=NETWORK \
  --action=allow \
  --direction=ingress \
  --target-tags=allow-health-check-ipv6 \
  --source-ranges=2600:2d00:1:b029::/64,2600:2d00:1:1::/64 \
  --rules=all

Mencadangkan alamat IP eksternal

Setelah instance aktif dan berjalan, siapkan alamat IP eksternal statis global yang akan digunakan pelanggan untuk menjangkau load balancer Anda.

Konsol

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

    Buka External IP addresses

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

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

  4. Setel Network Service Tier ke Premium.

  5. Setel IP version ke IPv4.

  6. Setel Type ke Global.

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

Terraform

Untuk mencadangkan alamat IP, gunakan resource google_compute_global_address.

resource "google_compute_global_address" "default" {
  name       = "lb-ipv4-1"
  ip_version = "IPV4"
}

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Menyiapkan load balancer

Dalam contoh ini, Anda akan menggunakan HTTPS (frontend) antara klien dan load balancer. Untuk HTTPS, Anda memerlukan satu atau beberapa resource sertifikat SSL untuk mengonfigurasi proxy. Sebaiknya gunakan sertifikat yang dikelola Google.

Meskipun Anda menggunakan HTTPS di frontend, Anda dapat menggunakan HTTP di backend. Google secara otomatis mengenkripsi traffic antara Google Front End (GFE) dan backend Anda yang berada dalam jaringan VPC Google Cloud .

Konsol

Memilih jenis load balancer

  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 Global external Application Load Balancer, lalu klik Next.
  7. Klik Configure.

Basic configuration

Untuk Name pada load balancer, masukkan sesuatu seperti web-map-https atau web-map-http.

Frontend configuration

  1. Klik Frontend configuration.
  2. Setel Protocol ke HTTPS.
  3. Pilih IPv4 untuk traffic IPv4. Setel IP address ke lb-ipv4-1, yang Anda buat sebelumnya.
  4. Setel Port ke 443.
  5. Klik Certificate, lalu pilih sertifikat SSL utama Anda.
  6. Opsional: Buat kebijakan SSL:
    1. Di daftar SSL policy, pilih Create a policy.
    2. Setel nama kebijakan SSL ke my-ssl-policy.
    3. Untuk Minimum TLS Version, pilih TLS 1.0.
    4. Untuk Profile, pilih Modern. Opsi Enabled features dan Disabled features akan ditampilkan.
    5. Klik Save.
    Jika Anda belum membuat kebijakan SSL, kebijakan SSL default akan diterapkan.
  7. Opsional: Centang kotak Enable HTTP to HTTPS Redirect untuk mengaktifkan pengalihan.

    Dengan mencentang kotak ini, load balancer HTTP parsial tambahan akan dibuat menggunakan alamat IP yang sama dengan load balancer HTTPS Anda. Permintaan HTTP yang masuk juga akan dialihkan ke frontend HTTPS load balancer Anda.

    Kotak ini hanya dapat dicentang jika protokol HTTPS dipilih dan alamat IP yang dicadangkan digunakan.

  8. Klik Done.

Backend configuration

  1. Klik Backend configuration.
  2. Di bagian Backend services & backend buckets, pilih Create a backend service.
  3. Tambahkan nama untuk layanan backend Anda, seperti web-backend-service.
  4. Buka bagian Security, lalu pilih Enable IAP to secure access to your applications.

    Cloud CDN dan IAP tidak kompatibel. Jika Anda telah mengaktifkan Cloud CDN, dan Anda memilih untuk mengaktifkan IAP, Cloud CDN akan otomatis dinonaktifkan.

  5. Dalam daftar Kebijakan pemilihan alamat IP, pilih Lebih suka IPv6.
  6. Opsional: Konfigurasi kebijakan keamanan backend default. Kebijakan keamanan default membatasi traffic di atas batas yang dikonfigurasi pengguna. Untuk mengetahui informasi selengkapnya tentang kebijakan keamanan default, lihat Ringkasan pembatasan kapasitas.

    1. Untuk menonaktifkan kebijakan keamanan default Cloud Armor, pilih None dalam daftar Cloud Armor backend security policy.
    2. Untuk mengonfigurasi kebijakan keamanan default Cloud Armor, pilih Default security policy dalam daftar Cloud Armor backend security policy.
    3. Di kolom Policy name, terima nama yang dibuat secara otomatis atau masukkan nama untuk kebijakan keamanan Anda.
    4. Di kolom Request count, terima jumlah permintaan default atau masukkan bilangan bulat antara 1 dan 10,000.
    5. Di kolom Interval, pilih interval.
    6. Di kolom Enforce on key, pilih salah satu nilai berikut: All, IP address, atau X-Forwarded-For IP address. Untuk mengetahui informasi selengkapnya tentang opsi ini, lihat Mengidentifikasi klien untuk pembatasan kapasitas.
  7. Pertahankan setelan default lainnya.
  8. Klik Buat.

Aturan pemilihan rute

Untuk Routing rules, pertahankan setelan default.

Review and finalize

  1. Klik Review and finalize.
  2. Tinjau setelan konfigurasi load balancer Anda.
  3. Opsional: Klik Equivalent code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
  4. Klik Create.

Tunggu load balancer dibuat.

Jika Anda membuat load balancer HTTPS dan mencentang kotak Enable HTTP to HTTPS Redirect, Anda juga akan melihat load balancer HTTP yang dibuat dengan akhiran -redirect.

  1. Klik nama load balancer.
  2. Di layar Load balancer details, catat IP:Port untuk load balancer Anda.

gcloud

  1. Buat health check.
     gcloud compute health-checks create http http-basic-check \
         --port 80
     
  2. Buat layanan backend.
    gcloud beta compute backend-services create web-backend-service \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=HTTP \
        --port-name=http \
        --ip-address-selection-policy=PREFER_IPV6 \
        --health-checks=http-basic-check \
        --global
    
  3. Tambahkan grup instance sebagai backend ke layanan backend.
    gcloud beta compute backend-services add-backend web-backend-service \
      --instance-group=lb-backend-example \
      --instance-group-zone=ZONE_A \
      --global
    
  4. Untuk HTTP, buat peta URL untuk merutekan permintaan masuk ke layanan backend default.
    gcloud beta compute url-maps create web-map-http \
      --default-service web-backend-service
    
  5. Untuk HTTPS, buat peta URL untuk merutekan permintaan masuk ke layanan backend default.
    gcloud beta compute url-maps create web-map-https \
      --default-service web-backend-service
    

Menyiapkan frontend HTTPS

Lewati bagian ini untuk load balancer HTTP.

  1. Untuk HTTPS, jika Anda belum melakukannya, buat resource sertifikat SSL global, seperti yang ditunjukkan di bagian berikut:
  2. Untuk HTTPS, buat proxy HTTPS target untuk merutekan permintaan ke peta URL Anda. Proxy ini merupakan bagian dari load balancer yang menampung sertifikat SSL untuk load balancer HTTPS, sehingga Anda juga memuat sertifikat pada langkah ini.

    gcloud beta compute target-https-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-https \
      --ssl-certificates=www-ssl-cert
    

    Ganti HTTP_KEEP_ALIVE_TIMEOUT_SEC dengan nilai client HTTP keepalive timeout dari 5 hingga 1200 detik. Nilai default-nya adalah 610 detik. Kolom ini bersifat opsional.

  3. Untuk HTTPS, buat aturan penerusan global untuk merutekan permintaan masuk ke proxy.
    gcloud beta compute forwarding-rules create https-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=lb-ipv4-1 \
      --global \
      --target-https-proxy=https-lb-proxy \
      --ports=443
    
  4. Opsional: Untuk HTTPS, buat kebijakan SSL global dan lampirkan ke proxy HTTPS.
    Untuk membuat kebijakan SSL global:
    gcloud compute ssl-policies create my-ssl-policy \
      --profile MODERN \
      --min-tls-version 1.0
    
    Untuk melampirkan kebijakan SSL ke proxy HTTPS target global:
    gcloud compute target-https-proxies update https-lb-proxy \
      --ssl-policy my-ssl-policy
    

Menyiapkan frontend HTTP

Lewati bagian ini untuk load balancer HTTPS.

  1. Untuk HTTP, buat proxy HTTP target untuk merutekan permintaan ke peta URL Anda.
    gcloud beta compute target-http-proxies create http-lb-proxy \
      --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
      --url-map=web-map-http
    

    Ganti HTTP_KEEP_ALIVE_TIMEOUT_SEC dengan nilai client HTTP keepalive timeout dari 5 hingga 1200 detik. Nilai default-nya adalah 610 detik. Kolom ini bersifat opsional.

  2. Untuk HTTP, buat aturan penerusan global untuk merutekan permintaan masuk ke proxy.
    gcloud beta compute forwarding-rules create http-content-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --address=lb-ipv4-1 \
      --global \
      --target-http-proxy=http-lb-proxy \
      --ports=80
    

Terraform

  1. Untuk membuat health check, gunakan resource google_compute_health_check.

    resource "google_compute_health_check" "default" {
      name               = "http-basic-check"
      check_interval_sec = 5
      healthy_threshold  = 2
      http_health_check {
        port               = 80
        port_specification = "USE_FIXED_PORT"
        proxy_header       = "NONE"
        request_path       = "/"
      }
      timeout_sec         = 5
      unhealthy_threshold = 2
    }
  2. Untuk membuat layanan backend, gunakan resource google_compute_backend_service.

    resource "google_compute_backend_service" "default" {
      name                            = "web-backend-service"
      connection_draining_timeout_sec = 0
      health_checks                   = [google_compute_health_check.default.id]
      load_balancing_scheme           = "EXTERNAL_MANAGED"
      port_name                       = "http"
      protocol                        = "HTTP"
      session_affinity                = "NONE"
      timeout_sec                     = 30
      backend {
        group           = google_compute_instance_group_manager.default.instance_group
        balancing_mode  = "UTILIZATION"
        capacity_scaler = 1.0
      }
    }
  3. Untuk membuat peta URL, gunakan resource google_compute_url_map.

    resource "google_compute_url_map" "default" {
      name            = "web-map-http"
      default_service = google_compute_backend_service.default.id
    }
  4. Untuk membuat proxy HTTP target, gunakan resource google_compute_target_http_proxy.

    resource "google_compute_target_http_proxy" "default" {
      name    = "http-lb-proxy"
      url_map = google_compute_url_map.default.id
    }
  5. Untuk membuat aturan penerusan, gunakan resource google_compute_global_forwarding_rule.

    resource "google_compute_global_forwarding_rule" "default" {
      name                  = "http-content-rule"
      ip_protocol           = "TCP"
      load_balancing_scheme = "EXTERNAL_MANAGED"
      port_range            = "80-80"
      target                = google_compute_target_http_proxy.default.id
      ip_address            = google_compute_global_address.default.id
    }

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Menghubungkan domain ke load balancer

Setelah load balancer dibuat, catat alamat IP yang terkait dengan load balancer, misalnya, 30.90.80.100. Untuk mengarahkan domain ke load balancer, buat data A menggunakan layanan pendaftaran domain. Jika Anda menambahkan beberapa domain ke sertifikat SSL, Anda harus menambahkan data A untuk setiap domain, yang semuanya mengarah ke alamat IP load balancer. Misalnya, untuk membuat data A bagi www.example.com dan example.com, gunakan string berikut:

NAME                  TYPE     DATA
www                   A        30.90.80.100
@                     A        30.90.80.100

Jika Anda menggunakan Cloud DNS sebagai penyedia DNS, lihat Menambahkan, mengubah, dan menghapus data.

Menguji traffic yang dikirim ke instance Anda

Setelah layanan load balancing berjalan, Anda dapat mengirimkan 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 load balancer yang baru saja Anda buat.
  3. Di bagian Backend, pastikan bahwa VM responsif. Kolom Healthy akan terisi, yang menunjukkan bahwa kedua VM responsif (2/2). Jika tidak, coba muat ulang halaman terlebih dahulu. Diperlukan waktu beberapa saat hingga Konsol Google Cloud menunjukkan bahwa VM responsif. Jika backend tidak terlihat responsif setelah beberapa menit, tinjau konfigurasi firewall dan tag jaringan yang ditetapkan ke VM backend Anda.

  4. Untuk HTTPS, jika Anda menggunakan sertifikat yang dikelola Google, pastikan status resource sertifikat Anda adalah ACTIVE. Untuk mengetahui informasi selengkapnya, lihat Status resource sertifikat SSL yang dikelola Google.
  5. Setelah Konsol Google Cloud menunjukkan bahwa instance backend responsif, Anda dapat menguji load balancer menggunakan browser web dengan membuka https://IP_ADDRESS (atau http://IP_ADDRESS). Ganti IP_ADDRESS dengan alamat IP load balancer.
  6. Jika Anda menggunakan sertifikat yang ditandatangani sendiri untuk menguji HTTPS, browser akan menampilkan peringatan. Anda harus secara eksplisit memerintahkan browser untuk menerima sertifikat yang ditandatangani sendiri.
  7. Browser Anda akan merender halaman berisi konten yang menampilkan nama instance yang menampilkan halaman tersebut, beserta zonanya (misalnya, Page served from: lb-backend-example-xxxx). Jika browser Anda tidak merender halaman ini, tinjau setelan konfigurasi dalam panduan ini.

gcloud

gcloud compute addresses describe lb-ipv4-1 \
   --format="get(address)" \
   --global

Setelah beberapa menit berlalu, Anda dapat menguji penyiapan dengan menjalankan perintah curl berikut.

curl http://IP_ADDRESS

-ATAU-

curl https://HOSTNAME

Konfigurasi tambahan

Bagian ini memperluas contoh konfigurasi untuk memberikan opsi konfigurasi alternatif dan tambahan. Semua tugas bersifat opsional. Anda dapat melakukannya dalam urutan apa pun.

Memperbarui waktu tunggu keep-alive HTTP klien

Load balancer yang dibuat pada langkah sebelumnya telah dikonfigurasi dengan nilai default untuk waktu tunggu keep-alive HTTP klien.

Untuk memperbarui waktu tunggu keep-alive HTTP klien, gunakan petunjuk berikut.

Konsol

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

    Buka Load balancing

  2. Klik nama load balancer yang ingin Anda ubah.
  3. Klik Edit.
  4. Klik Frontend configuration.
  5. Luaskan Fitur lanjutan. Untuk HTTP keepalive timeout, masukkan nilai waktu tunggu.
  6. Klik Update.
  7. Untuk meninjau perubahan Anda, klik Tinjau dan selesaikan, lalu klik Perbarui.

gcloud

Untuk load balancer HTTP, perbarui proxy HTTP target menggunakan perintah gcloud compute target-http-proxies update:

      gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --global
    

Untuk load balancer HTTPS, perbarui proxy HTTPS target menggunakan perintah gcloud compute target-https-proxies update:

      gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \
          --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \
          --global
    

Ganti kode berikut:

  • TARGET_HTTP_PROXY_NAME: nama proxy HTTP target.
  • TARGET_HTTPS_PROXY_NAME: nama proxy HTTPS target.
  • HTTP_KEEP_ALIVE_TIMEOUT_SEC: nilai waktu tunggu HTTP keep-alive dari 5 hingga 600 detik.

Langkah berikutnya

Untuk dokumentasi terkait:

Untuk video terkait: