Mengonfigurasi load balancing berbobot

Panduan ini berisi petunjuk untuk membuat deployment Load Balancer Jaringan 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 ingress agar aturan firewall mengizinkan koneksi ke VM backend load balancer Anda.

  1. Membuat subnet dan jaringan VPC.

    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 izinkan firewall masuk untuk mengizinkan paket yang dikirim ke port TCP tujuan 80 dan 443 untuk dikirimkan ke VM backend. Dalam contoh ini, aturan firewall mengizinkan koneksi dari semua alamat IP sumber. 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 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-10 \
      --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-10 \
      --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-10 \
      --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 cara 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 cara membuat health check HTTP untuk 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 health check HTTP yang akan dibuat.

Buat layanan backend

Contoh berikut memberikan petunjuk cara 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. Catat alamat IP eksternal statis yang dicadangkan (IP_ADDRESS).

      gcloud compute addresses describe ADDRESS_NAME
      
  4. Buat aturan penerusan menggunakan alamat IP eksternal regional yang dicadangkan 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 bahwa bobot backend dilaporkan dengan benar ke health check HTTP.

Output-nya 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