Mengonfigurasi load balancing berbobot

Panduan ini memberikan petunjuk untuk membuat deployment Network Load Balancer passthrough eksternal berbobot untuk setiap instance virtual machine (VM) menggunakan layanan backend regional.

Dalam tutorial ini, Anda akan membuat grup instance dengan tiga instance VM dan menetapkan bobot untuk setiap instance. Anda membuat health check HTTP untuk melaporkan bobot instance backend. Load balancing berbobot diaktifkan di layanan backend dengan kebijakan load balancer lokalitas sebagai WEIGHTED_MAGLEV.

Sebelum memulai

Membuat jaringan VPC, subnet, dan aturan firewall

Buat jaringan VPC, subnet, dan aturan firewall traffic masuk untuk mengizinkan koneksi ke VM backend load balancer Anda.

  1. Buat jaringan VPC dan subnet.

    a. Untuk membuat jaringan VPC, jalankan perintah gcloud compute networks create:

    gcloud compute networks create NETWORK_NAME --subnet-mode custom
    

    b. Dalam contoh ini, rentang alamat IPv4 utama subnet adalah 10.10.0.0/24. Untuk membuat subnet, jalankan perintah gcloud compute networks subnets create:

    gcloud compute networks subnets create SUBNET_NAME \
      --network=NETWORK_NAME \
      --range=10.10.0.0/24 \
      --region=us-central1
    

    Ganti kode berikut:

    • NETWORK_NAME: nama jaringan VPC yang akan dibuat.
    • SUBNET_NAME: nama subnetwork yang akan dibuat.
  2. Buat aturan firewall izin masuk untuk mengizinkan paket yang dikirim ke port TCP tujuan 80 dan 443 dikirim ke VM backend. Dalam contoh ini, aturan firewall mengizinkan koneksi dari alamat IP sumber mana pun. Aturan firewall berlaku untuk VM dengan tag jaringan network-lb-tag.

    Untuk membuat aturan firewall, jalankan perintah gcloud compute firewall-rules create:

    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
       --direction=INGRESS \
       --priority=1000 \
       --network=NETWORK_NAME \
       --action=ALLOW \
       --rules=tcp:80,tcp:443 \
       --source-ranges=0.0.0.0/0 \
       --target-tags=network-lb-tag
    

    Ganti FIREWALL_RULE_NAME dengan nama aturan firewall yang akan dibuat.

Membuat instance VM dan menetapkan bobot

Buat tiga instance VM dan tetapkan bobot:

  1. Konfigurasikan tiga instance VM backend untuk menampilkan bobot di header X-Load-Balancing-Endpoint-Weight dengan respons HTTP. Untuk tutorial ini, Anda akan mengonfigurasi satu instance backend untuk melaporkan bobot nol, instance backend kedua untuk melaporkan bobot 100, dan instance backend ketiga untuk melaporkan bobot 900.

    Untuk membuat instance, jalankan perintah gcloud compute instances create:

    gcloud compute instances create instance-0 \
      --zone=us-central1-a \
      --tags=network-lb-tag \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --subnet=SUBNET_NAME \
      --metadata=load-balancing-weight=0,startup-script='#! /bin/bash
      apt-get update
      apt-get install apache2 -y
      ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      lb_weight="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)"
      echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \
      tee /etc/apache2/conf-enabled/headers.conf
      systemctl restart apache2'
    
    gcloud compute instances create instance-100 \
      --zone=us-central1-a \
      --tags=network-lb-tag \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --subnet=SUBNET_NAME \
      --metadata=load-balancing-weight=100,startup-script='#! /bin/bash
      apt-get update
      apt-get install apache2 -y
      ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      lb_weight="$(curl -H "Metadata-Flavor:Google" \
      http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)"
      echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \
      tee /etc/apache2/conf-enabled/headers.conf
      systemctl restart apache2'
    
    gcloud compute instances create instance-900 \
      --zone=us-central1-a \
      --tags=network-lb-tag \
      --image-family=debian-12 \
      --image-project=debian-cloud \
      --subnet=SUBNET_NAME \
      --metadata=load-balancing-weight=900,startup-script='#! /bin/bash
        apt-get update
        apt-get install apache2 -y
        ln -sr /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load
        vm_hostname="$(curl -H "Metadata-Flavor:Google" \
        http://169.254.169.254/computeMetadata/v1/instance/name)"
        echo "Page served from: $vm_hostname" | \
        tee /var/www/html/index.html
        lb_weight="$(curl -H "Metadata-Flavor:Google" \
        http://169.254.169.254/computeMetadata/v1/instance/attributes/load-balancing-weight)"
        echo "Header set X-Load-Balancing-Endpoint-Weight \"$lb_weight\"" | \
        tee /etc/apache2/conf-enabled/headers.conf
        systemctl restart apache2'
    

Membuat grup instance

Dalam tutorial ini, Anda akan memberikan petunjuk untuk membuat grup instance tidak terkelola yang berisi ketiga instance VM(instance-0, instance-100, dan instance-900).

  • Untuk membuat grup instance, jalankan perintah gcloud compute instance-groups unmanaged create:

    gcloud compute instance-groups unmanaged create INSTANCE_GROUP \     
      --zone=us-central1-a
    
    gcloud compute instance-groups unmanaged add-instances INSTANCE_GROUP \
      --zone=us-central1-a \
      --instances=instance-0,instance-100,instance-900
    

    Ganti INSTANCE_GROUP dengan nama grup instance yang akan dibuat.

Membuat health check HTTP

Dalam tutorial ini, Anda akan memberikan petunjuk untuk membuat health check HTTP guna membaca respons HTTP yang berisi bobot VM backend."

  • Untuk membuat health check HTTP, jalankan perintah gcloud compute health-checks create:

    gcloud compute health-checks create http HTTP_HEALTH_CHECK_NAME \
      --region=us-central1
    

    Ganti HTTP_HEALTH_CHECK_NAME dengan nama pemeriksaan status HTTP yang akan dibuat.

Buat layanan backend

Contoh berikut memberikan petunjuk untuk membuat layanan backend eksternal regional yang dikonfigurasi untuk menggunakan load balancing berbobot.

  1. Buat layanan backend dengan health check HTTP dan tetapkan kebijakan load balancer lokalitas ke WEIGHTED_MAGLEV.

    • Untuk membuat layanan backend, jalankan perintah gcloud compute backend-services create:

      gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=external \
        --protocol=tcp \
        --region=us-central1 \
        --health-checks=HTTP_HEALTH_CHECK_NAME \
        --health-checks-region=us-central1 \
        --locality-lb-policy=WEIGHTED_MAGLEV
      

      Ganti BACKEND_SERVICE_NAME dengan nama layanan backend yang akan dibuat.

  2. Tambahkan grup instance ke layanan backend.

  3. Cadangkan alamat IP eksternal regional untuk load balancer.

    • Untuk mencadangkan satu atau beberapa alamat IP, jalankan perintah gcloud compute addresses create:

      gcloud compute addresses create ADDRESS_NAME \
       --region us-central1
      

      Ganti ADDRESS_NAME dengan nama alamat IP yang akan dibuat.

      Gunakan perintah compute addresses describe untuk melihat hasilnya. Perhatikan alamat IP eksternal statis yang dipesan (IP_ADDRESS).

      gcloud compute addresses describe ADDRESS_NAME
      
  4. Buat aturan penerusan menggunakan alamat IP eksternal regional yang dicadangkan, yaitu IP_ADDRESS. Hubungkan aturan penerusan ke layanan backend.

    • Untuk membuat aturan penerusan, jalankan perintah gcloud compute forwarding-rules create:

      gcloud compute forwarding-rules create FORWARDING_RULE \
        --region=us-central1 \
        --ports=80 \
        --address=IP_ADDRESS \
        --backend-service=BACKEND_SERVICE_NAME
      

      Ganti kode berikut:

      FORWARDING_RULE: nama aturan penerusan yang akan dibuat.

      IP_ADDRESS: alamat IP yang akan ditetapkan ke instance. Gunakan alamat IP eksternal statis yang dicadangkan, bukan nama alamat.

Memverifikasi bobot backend menggunakan API layanan backend

Pastikan bobot backend dilaporkan dengan benar ke health check HTTP.

Outputnya adalah sebagai berikut:

backend: https://www.googleapis.com/compute/projects/project-name/{project}/zones/us-central1-a/instanceGroups/{instance-group-name}
status:
  healthStatus:
  - forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name}
    forwardingRuleIp: 34.135.46.66
    healthState: HEALTHY
    instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-0
    ipAddress: 10.10.0.5
    port: 80
    weight: '0'
  - forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name}
    forwardingRuleIp: 34.135.46.66
    healthState: HEALTHY
    instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-100
    ipAddress: 10.10.0.6
    port: 80
    weight: '100'
  - forwardingRule: https://www.googleapis.com/compute/projects/{project}/regions/us-central1/forwardingRules/{firewall-rule-name}
    forwardingRuleIp: 34.135.46.66
    healthState: HEALTHY
    instance: https://www.googleapis.com/compute/projects/{project}/zones/us-central1-a/instances/instance-900
    ipAddress: 10.10.0.7
    port: 80
    weight: '900'
  kind: compute#backendServiceGroupHealth