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
- Baca Ringkasan Load Balancer Jaringan passthrough eksternal berbasis layanan backend.
Instal Google Cloud CLI. Untuk ringkasan lengkap tentang alat ini, baca ringkasan gcloud CLI. Anda dapat menemukan perintah terkait load balancing di referensi API dan gcloud CLI.
Jika Anda belum pernah menjalankan Google Cloud CLI, jalankan
gcloud init
terlebih dahulu untuk melakukan autentikasi.Aktifkan Compute API.
gcloud services enable compute.googleapis.com
Membuat jaringan VPC, subnet, dan aturan firewall
Buat jaringan VPC, subnet, dan ingress agar aturan firewall mengizinkan koneksi ke VM backend load balancer Anda.
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 perintahgcloud 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.
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:
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.
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.
Tambahkan grup instance ke layanan backend.
Untuk menambahkan grup instance, jalankan perintah
gcloud compute backend-services add-backend
:gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group=INSTANCE_GROUP \ --instance-group-zone=us-central1-a \ --region=us-central1
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
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.
Untuk mendapatkan bobot backend (beserta status respons) dari layanan backend, jalankan perintah
gcloud compute backend-services get-health
:gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region=us-central1
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