Mengonfigurasi failover untuk Load Balancer Jaringan passthrough internal

Panduan ini menggunakan contoh untuk mengajari Anda cara mengonfigurasi failover untuk Google Cloud Load Balancer Jaringan passthrough internal. Sebelum mengikuti panduan ini, pahami hal-hal berikut:

Izin

Untuk mengikuti panduan ini, Anda perlu membuat instance dan mengubah jaringan dalam sebuah project. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki semua peran IAM Compute Engine berikut:

Tugas Peran yang Diperlukan
Membuat jaringan, subnet, dan komponen load balancer Network Admin
Menambahkan dan menghapus aturan firewall Security Admin
Membuat instance Compute Instance Admin

Untuk mendapatkan informasi selengkapnya, lihat panduan berikut:

Penyiapan

Panduan ini menunjukkan cara mengonfigurasi dan menguji Load Balancer Jaringan passthrough internal yang menggunakan failover. Langkah-langkah dalam bagian ini menjelaskan cara mengonfigurasi hal berikut:

  1. Contoh jaringan VPC dengan subnet kustom
  2. Aturan firewall yang mengizinkan koneksi masuk ke VM backend
  3. VM backend:
    • Satu backend utama dalam grup instance tidak terkelola di zona us-west1-a
    • Satu backend failover di grup instance tidak terkelola di zona us-west1-c
  4. Satu VM klien untuk menguji koneksi dan mengamati perilaku failover
  5. Komponen Load Balancer Jaringan passthrough internal berikut:
    • Health check untuk layanan backend
    • Layanan backend internal di region us-west1 untuk mengelola distribusi koneksi di antara VM backend
    • Aturan penerusan internal dan alamat IP internal untuk frontend load balancer

Arsitektur untuk contoh ini terlihat seperti ini:

Contoh failover sederhana untuk Load Balancer Jaringan passthrough internal.
Contoh failover sederhana untuk Load Balancer Jaringan passthrough internal (klik untuk memperbesar).

Grup instance tidak terkelola digunakan untuk backend utama dan failover dalam contoh ini.

Mengonfigurasi jaringan, region, dan subnet

Contoh ini menggunakan jaringan VPC, region, dan subnet berikut:

  • Jaringan: Jaringan adalah jaringan VPC mode kustom bernama lb-network.

  • Wilayah: Wilayahnya adalah us-west1.

  • Subnet: Subnet, lb-subnet, menggunakan rentang IP 10.1.2.0/24.

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

Konsol

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Masukkan Nama lb-network.

  4. Di bagian Subnets:

    • Setel Subnet creation mode ke Custom.
    • Di bagian New subnet, masukkan informasi berikut:
      • Nama: lb-subnet
      • Region: us-west1
      • Rentang alamat IP: 10.1.2.0/24
      • Klik Done.
  5. Klik Create.

gcloud

  1. Buat jaringan VPC kustom:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Buat subnet di jaringan lb-network di region us-west1:

    gcloud compute networks subnets create lb-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

API

Buat permintaan POST ke metode networks.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks

{
 "routingConfig": {
   "routingMode": "REGIONAL"
 },
 "name": "lb-network",
 "autoCreateSubnetworks": false
}

Buat permintaan POST ke metode subnetworks.insert. Ganti PROJECT_ID dengan project ID Google Cloud Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks

{
 "name": "lb-subnet",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "ipCidrRange": "10.1.2.0/24",
 "privateIpGoogleAccess": false
}

Mengonfigurasi aturan firewall

Contoh ini menggunakan aturan firewall berikut:

  • fw-allow-lb-subnet: Aturan ingress, yang berlaku untuk semua target di jaringan VPC, yang mengizinkan traffic dari sumber dalam rentang 10.1.2.0/24. Aturan ini mengizinkan traffic masuk dari sumber mana pun dalam lb-subnet ke instance (VM) yang diseimbangkan bebannya.

  • fw-allow-ssh: Aturan ingress yang diterapkan ke instance yang di-load balance, yang memungkinkan konektivitas SSH yang masuk pada TCP port 22 dari alamat mana pun. Anda dapat memilih rentang IP sumber yang lebih ketat untuk aturan ini; misalnya, Anda dapat menentukan rentang IP sistem tempat Anda berencana memulai sesi SSH. Contoh ini menggunakan tag target allow-ssh untuk mengidentifikasi VM yang menerapkan aturan firewall.

  • fw-allow-health-check: Aturan ingress, yang berlaku untuk instance yang di-load balance, 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 instance yang harus diterapkan dengan tag tersebut.

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

Konsol

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

    Buka Firewall policies

  2. Klik Create firewall rule dan masukkan informasi berikut untuk membuat aturan yang mengizinkan traffic subnet:

    • Nama: fw-allow-lb-subnet
    • Network: lb-network
    • Prioritas: 1000
    • Direction of traffic: ingress
    • Tindakan terhadap kecocokan: izinkan
    • Targets: All instances in the network
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 10.1.2.0/24
    • Protocols and ports: Izinkan semua
  3. Klik Create.

  4. Klik Create firewall rule lagi untuk membuat aturan yang mengizinkan koneksi SSH yang masuk:

    • Nama: fw-allow-ssh
    • Network: lb-network
    • Prioritas: 1000
    • Direction of traffic: ingress
    • Tindakan terhadap kecocokan: izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-ssh
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 0.0.0.0/0
    • Protocols and ports: Pilih Specified protocols and ports, lalu ketik: tcp:22
  5. Klik Create.

  6. Klik Create firewall rule untuk ketiga kalinya guna membuat aturan yang mengizinkan health checkGoogle Cloud :

    • Nama: fw-allow-health-check
    • Network: lb-network
    • Prioritas: 1000
    • Direction of traffic: ingress
    • Tindakan terhadap kecocokan: izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-health-check
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 130.211.0.0/22 dan 35.191.0.0/16
    • Protocols and ports: Izinkan semua
  7. Klik Create.

gcloud

  1. Buat aturan firewall fw-allow-lb-subnet untuk mengizinkan komunikasi dari dengan subnet:

    gcloud compute firewall-rules create fw-allow-lb-subnet \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.1.2.0/24 \
        --rules=tcp,udp,icmp
    
  2. Buat aturan firewall fw-allow-ssh untuk mengizinkan konektivitas SSH ke VM dengan tag jaringan allow-ssh. Jika Anda menghapus source-ranges,Google Cloud akan menafsirkan aturan sebagai sumber apa pun.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Buat aturan fw-allow-health-check untuk mengizinkan health check Google Cloud.

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

API

Buat aturan firewall fw-allow-lb-subnet dengan membuat permintaan POST ke metode firewalls.insert. Ganti PROJECT_ID dengan project ID Google Cloud Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-lb-subnet",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "10.1.2.0/24"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp"
   },
   {
     "IPProtocol": "udp"
   },
   {
     "IPProtocol": "icmp"
   }
 ],
 "direction": "INGRESS",
 "logConfig": {
   "enable": false
 },
 "disabled": false
}

Buat aturan firewall fw-allow-ssh dengan membuat permintaan POST ke metode firewalls.insert. Ganti PROJECT_ID dengan project ID Google Cloud Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-ssh",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "0.0.0.0/0"
 ],
 "targetTags": [
   "allow-ssh"
 ],
 "allowed": [
  {
    "IPProtocol": "tcp",
    "ports": [
      "22"
    ]
  }
 ],
"direction": "INGRESS",
"logConfig": {
  "enable": false
},
"disabled": false
}

Buat aturan firewall fw-allow-health-check dengan membuat permintaan POST ke metode firewalls.insert. Ganti PROJECT_ID dengan project ID Google Cloud Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls

{
 "name": "fw-allow-health-check",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "130.211.0.0/22",
   "35.191.0.0/16"
 ],
 "targetTags": [
   "allow-health-check"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp"
   },
   {
     "IPProtocol": "udp"
   },
   {
     "IPProtocol": "icmp"
   }
 ],
 "direction": "INGRESS",
 "logConfig": {
   "enable": false
 },
 "disabled": false
}

Membuat VM backend dan grup instance

Pada langkah ini, Anda akan membuat VM backend dan grup instance tidak terkelola:

  • Grup instance ig-a di us-west1-a adalah backend utama dengan dua VM:
    • vm-a1
    • vm-a2
  • Grup instance ig-c di us-west1-c adalah backend failover dengan dua VM:
    • vm-c1
    • vm-c2

Backend utama dan failover ditempatkan di zona terpisah untuk kejelasan instruksional dan untuk menangani failover jika satu zona tidak berfungsi.

Setiap VM utama dan failover dikonfigurasi untuk menjalankan server web Apache di port TCP 80 dan 443. Setiap VM diberi alamat IP internal di lb-subnet untuk akses klien dan alamat IP eksternal (publik) sementara untuk akses SSH. Untuk mengetahui informasi tentang cara menghapus alamat IP eksternal, lihat menghapus alamat IP eksternal dari VM backend.

Secara default, Apache dikonfigurasi untuk terikat ke alamat IP apa pun. Load Balancer Jaringan passthrough internal mengirimkan paket dengan mempertahankan alamat IP tujuan.

Pastikan software server yang berjalan di VM utama dan failover Anda memproses alamat IP aturan penerusan internal load balancer. Jika Anda mengonfigurasi beberapa aturan penerusan internal, pastikan software Anda memproses alamat IP internal yang terkait dengan setiap aturan penerusan. Alamat IP tujuan paket yang dikirim ke VM backend oleh Load Balancer Jaringan passthrough internal adalah alamat IP internal aturan penerusan.

Untuk menyederhanakan petunjuk, semua VM primer dan failover menjalankan Debian GNU/Linux 12.

Konsol

Membuat VM backend

  1. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

  2. Ulangi langkah-langkah berikut untuk membuat empat VM, menggunakan kombinasi nama dan zona berikut.

    • Nama: vm-a1, zona: us-west1-a
    • Nama: vm-a2, zona: us-west1-a
    • Nama: vm-c1, zona: us-west1-c
    • Nama: vm-c2, zona: us-west1-c
  3. Klik Create instance.

  4. Tetapkan Name seperti yang ditunjukkan pada langkah 2.

  5. Untuk Region, pilih us-west1, dan pilih Zone seperti yang ditunjukkan pada langkah 2.

  6. Di bagian Boot disk, pastikan image yang dipilih adalah Debian GNU/Linux 12 (bookworm). Klik Pilih untuk mengubah gambar jika perlu.

  7. Klik Advanced options.

  8. Klik Networking dan konfigurasi kolom berikut:

    1. Untuk Network tags, masukkan allow-health-check dan allow-ssh.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Network: lb-network
      • Subnet: lb-subnet
  9. Klik Management. Masukkan skrip berikut ke kolom Startup script. Isi skrip identik untuk keempat VM:

    #! /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
    
  10. Klik Create.

Membuat grup instance

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

    Buka Instance groups

  2. Ulangi langkah-langkah berikut untuk membuat dua grup instance tidak terkelola, masing-masing dengan dua VM di dalamnya, menggunakan kombinasi berikut.

    • Grup instance: ig-a, zona: us-west1-a, VM: vm-a1 dan vm-a2
    • Grup instance: ig-c, zona: us-west1-c, VM: vm-c1 dan vm-c2
  3. Klik Create instance group.

  4. Klik New unmanaged instance group.

  5. Tetapkan Name seperti yang ditunjukkan pada langkah 2.

  6. Di bagian Location, pilih us-west1 untuk Region, lalu pilih Zone seperti yang ditunjukkan pada langkah 2.

  7. Untuk Network, masukkan lb-network.

  8. Untuk Subnetwork, masukkan lb-subnet.

  9. Di bagian VM instances, tambahkan VM seperti yang ditunjukkan pada langkah 2.

  10. Klik Create.

gcloud

  1. Buat empat VM dengan menjalankan perintah berikut empat kali, menggunakan empat kombinasi ini untuk VM_NAME dan ZONE. Isi skripnya sama untuk keempat VM.

    • VM_NAME dari vm-a1 dan ZONE dari us-west1-a
    • VM_NAME dari vm-a2 dan ZONE dari us-west1-a
    • VM_NAME dari vm-c1 dan ZONE dari us-west1-c
    • VM_NAME dari vm-c2 dan ZONE dari us-west1-c
    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --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'
    
  2. Buat dua grup instance tidak terkelola di setiap zona:

    gcloud compute instance-groups unmanaged create ig-a \
        --zone=us-west1-a
    gcloud compute instance-groups unmanaged create ig-c \
        --zone=us-west1-c
    
  3. Tambahkan VM ke grup instance yang sesuai:

    gcloud compute instance-groups unmanaged add-instances ig-a \
        --zone=us-west1-a \
        --instances=vm-a1,vm-a2
    gcloud compute instance-groups unmanaged add-instances ig-c \
        --zone=us-west1-c \
        --instances=vm-c1,vm-c2
    

API

Buat empat VM backend dengan membuat empat permintaan POST ke metode instances.insert.

Untuk keempat VM, gunakan nama dan zona VM berikut:

  • VM_NAME dari vm-a1 dan ZONE dari us-west1-a
  • VM_NAME dari vm-a2 dan ZONE dari us-west1-a
  • VM_NAME dari vm-c1 dan ZONE dari us-west1-c
  • VM_NAME dari vm-c2 dan ZONE dari us-west1-c

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • ZONE: zona instance
  • DEBIAN_IMAGE_NAME: nama image Debian untuk instance. DEBIAN_IMAGE_NAME saat ini dapat diperoleh dengan menjalankan perintah gcloud berikut:

    gcloud compute images list \
     --filter="family=debian-12"
    

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "name": "VM_NAME",
 "tags": {
   "items": [
     "allow-health-check",
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "VM_NAME",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "metadata": {
   "items": [
     {
       "key": "startup-script",
       "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2"
     }
   ]
 },
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Buat dua grup instance dengan membuat permintaan POST ke metode instanceGroups.insert. Ganti PROJECT_ID dengan project ID Google Cloud Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups

{
 "name": "ig-a",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups

{
 "name": "ig-c",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

Tambahkan instance ke setiap grup instance dengan membuat permintaan POST ke metode instanceGroups.addInstances. Ganti PROJECT_ID dengan project ID Google Cloud Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a2"
   }
 ]
}

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-c2"
   }
 ]
}

Membuat VM klien

Contoh ini membuat VM klien (vm-client) di region yang sama dengan load balancer. Klien digunakan untuk mendemonstrasikan cara kerja failover.

Konsol

  1. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

  2. Klik Create instance.

  3. Tetapkan Name ke vm-client.

  4. Tetapkan Zone ke us-west1-a.

  5. Klik Advanced options.

  6. Klik Networking dan konfigurasi kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Network: lb-network
      • Subnet: lb-subnet
  7. Klik Create.

gcloud

VM klien dapat berada di zona mana pun di region yang sama dengan load balancer, dan dapat menggunakan subnet apa pun di region tersebut. Dalam contoh ini, klien berada di zona us-west1-a, dan menggunakan subnet yang sama dengan yang digunakan oleh VM utama dan failover.

gcloud compute instances create vm-client \
    --zone=us-west1-a \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=lb-subnet

API

Buat permintaan POST ke metode instances.insert.

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • DEBIAN_IMAGE_NAME: nama image Debian untuk instance. DEBIAN_IMAGE_NAME saat ini dapat diperoleh dengan menjalankan perintah gcloud berikut:

    gcloud compute images list \
     --filter="family=debian-12"
    

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances

{
 "name": "vm-client",
 "tags": {
   "items": [
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "vm-client",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
       "diskType": "projects/PROJECT_ID/zones/us-west1-a/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Mengonfigurasi komponen load balancer

Langkah-langkah ini mengonfigurasi semua komponen Load Balancer Jaringan passthrough internal yang dimulai dengan pemeriksaan kondisi dan layanan backend, lalu komponen frontend:

  • Health check: Contoh ini menggunakan health check HTTP yang hanya memeriksa respons HTTP 200 (OK). Untuk mengetahui informasi selengkapnya, lihat bagian health check pada ringkasan Load Balancer Jaringan passthrough internal.

  • Layanan backend: Karena contoh meneruskan traffic HTTP melalui load balancer, konfigurasi menentukan TCP, bukan UDP. Untuk mengilustrasikan failover, layanan backend ini memiliki rasio failover 0.75.

  • Aturan penerusan: Contoh ini membuat satu aturan penerusan internal.

  • Alamat IP internal: Dalam contoh ini, kita menentukan alamat IP internal, 10.1.2.99, saat membuat aturan penerusan.

Konsol

Mulai 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 Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
  4. Untuk Proxy or passthrough, pilih Passthrough load balancer, lalu klik Next.
  5. Untuk Public facing or internal, pilih Internal, lalu klik Next.
  6. Klik Configure.

Konfigurasi dasar

  1. Tetapkan Name ke be-ilb.
  2. Setel Wilayah ke us-west1.
  3. Setel Network ke lb-network.
  4. Klik Backend configuration dan lakukan perubahan berikut:
    1. Untuk Backends, di bagian New item, pilih ig-a grup instance. Pastikan Gunakan grup instance ini sebagai grup failover untuk cadangan tidak dicentang. Klik Done.
    2. Klik Add backend. Di bagian Item baru yang muncul, pilih grup instance ig-c. Centang Gunakan grup instance ini sebagai grup failover untuk cadangan. Klik Selesai.
    3. Untuk Health check, pilih Create another health check, masukkan informasi berikut, lalu klik Save and continue:
      • Nama: hc-http-80
      • Protokol: HTTP
      • Port: 80
      • Protokol proxy: NONE
      • Jalur permintaan: / Perhatikan bahwa saat Anda menggunakan konsol Google Cloud untuk membuat load balancer, health check bersifat global. Jika Anda ingin membuat health check regional, gunakan gcloud atau API.
    4. Klik Konfigurasi lanjutan. Di bagian Failover policy, konfigurasikan hal berikut:
      • Rasio failover: 0.75
      • Centang Aktifkan pengosongan koneksi saat failover.
    5. Pastikan terdapat tanda centang biru di samping Backend configuration sebelum melanjutkan. Tinjau langkah ini jika tidak.
  5. Klik Frontend configuration. Di bagian New Frontend IP and port, lakukan perubahan berikut:
    1. Nama: fr-ilb
    2. Subnetwork: ilb-subnet
    3. Dari Internal IP, pilih Reserve a static internal IP address, masukkan informasi berikut, lalu klik Reserve:
      • Nama: ip-ilb
      • Static IP address: Let me choose
      • Alamat IP kustom: 10.1.2.99
    4. Port: Pilih Single, lalu masukkan 80 untuk Port number.
    5. Pastikan terdapat tanda centang biru di samping Frontend configuration sebelum melanjutkan. Tinjau langkah ini jika tidak.
  6. Klik Review and finalize. Periksa kembali setelan Anda.
  7. Klik Create.

gcloud

  1. Buat health check HTTP baru untuk menguji konektivitas TCP ke VM di port 80.

    gcloud compute health-checks create http hc-http-80 \
        --region=us-west1 \
        --port=80
    
  2. Buat layanan backend untuk traffic HTTP:

    gcloud compute backend-services create be-ilb \
        --load-balancing-scheme=internal \
        --protocol=tcp \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --health-checks-region=us-west1 \
        --failover-ratio 0.75
    
  3. Tambahkan backend utama ke layanan backend:

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    
  4. Tambahkan backend failover ke layanan backend:

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c \
        --failover
    
  5. Buat aturan penerusan untuk layanan backend. Saat membuat aturan penerusan, tentukan 10.1.2.99 untuk IP internal di subnet.

    gcloud compute forwarding-rules create fr-ilb \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    

API

Buat health check dengan membuat permintaan POST ke metode regionHealthChecks.insert. Ganti PROJECT_ID dengan project ID Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks

{
"name": "hc-http-80",
"type": "HTTP",
"httpHealthCheck": {
  "port": 80
}
}

Buat layanan backend regional dengan membuat permintaan POST ke metode regionBackendServices.insert. Ganti PROJECT_ID dengan project ID Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices

{
"name": "be-ilb",
"backends": [
  {
    "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a",
    "balancingMode": "CONNECTION"
  },
  {
    "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-c",
    "balancingMode": "CONNECTION"
    "failover": true
  }
],
"failoverPolicy": {
  "failoverRatio": 0.75
},
"healthChecks": [
  "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80"
],
"loadBalancingScheme": "INTERNAL"
}

Buat aturan penerusan dengan membuat permintaan POST ke metode forwardingRules.insert. Ganti PROJECT_ID dengan project ID Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules

{
"name": "fr-ilb",
"IPAddress": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
  "80", "8008", "8080", "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

Pengujian

Pengujian ini menunjukkan cara memvalidasi konfigurasi load balancer dan mempelajari perilakunya yang diharapkan.

Prosedur pengujian klien

Prosedur ini menghubungi load balancer dari VM klien. Anda akan menggunakan prosedur ini untuk menyelesaikan pengujian lainnya.

  1. Hubungkan ke instance VM klien.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Buat permintaan web ke load balancer menggunakan curl untuk menghubungi alamat IP-nya.

    curl http://10.1.2.99
    
  3. Catat teks yang ditampilkan oleh perintah curl. Nama VM backend yang menghasilkan respons ditampilkan dalam teks tersebut; misalnya: Page served from: vm-a1

Menguji status awal

Setelah Anda mengonfigurasi contoh load balancer, keempat VM backend harus berfungsi dengan baik:

  • dua VM utama, vm-a1 dan vm-a2
  • dua VM failover, vm-c1 dan vm-c2

Ikuti prosedur pengujian klien. Ulangi langkah kedua beberapa kali. Perilaku yang diharapkan adalah traffic akan ditayangkan oleh dua VM utama, vm-a1 dan vm-a2, karena keduanya responsif. Anda akan melihat setiap VM primer melayani respons sekitar setengah dari waktu karena tidak ada afinitas sesi yang dikonfigurasi untuk load balancer ini.

Menguji failover

Pengujian ini menyimulasikan kegagalan vm-a1 sehingga Anda dapat mengamati perilaku failover.

  1. Hubungkan ke VM vm-a1.

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Hentikan server web Apache. Setelah sepuluh detik, Google Cloud menganggap VM ini tidak responsif. (Health check hc-http-80 yang Anda buat dalam penyiapan menggunakan interval pemeriksaan default lima detik dan batas tidak responsif dua pemeriksaan berturut-turut yang gagal.)

    sudo apachectl stop
    
  3. Ikuti prosedur pengujian klien. Ulangi langkah kedua beberapa kali. Perilaku yang diharapkan adalah koneksi baru didistribusikan di antara dua VM failover yang responsif, vm-c1 dan vm-c2. Hal ini terjadi karena hanya ada satu VM primer, vm-a2, yang responsif, dan rasio VM primer yang responsif terhadap total VM primer adalah 0.5—kurang dari nilai minimum failover 0.75. Setiap VM failover menyajikan respons sekitar setengah dari waktu selama afinitas sesi ditetapkan ke NONE.

Menguji failback

Pengujian ini menyimulasikan failback dengan memulai ulang server Apache di vm-a1.

  1. Hubungkan ke VM vm-a1.

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Mulai server web Apache dan tunggu 10 detik.

    sudo apachectl start
    
  3. Ikuti prosedur pengujian klien. Ulangi langkah kedua beberapa kali. Perilaku yang diharapkan adalah traffic ditayangkan oleh dua VM utama, vm-a1 dan vm-a2. Dengan kedua VM utama yang responsif, rasio VM utama yang responsif terhadap total VM utama adalah 1.0, lebih besar daripada nilai minimum failover 0.75, sehingga backend yang memenuhi syarat untuk load balancer terdiri dari semua VM backend utama yang responsif.

Menambahkan lebih banyak VM backend

Bagian ini memperluas contoh konfigurasi dengan menambahkan lebih banyak VM utama dan failover ke load balancer. Hal ini dilakukan dengan membuat dua grup instance backend lagi untuk menunjukkan bahwa Anda dapat mendistribusikan VM utama dan failover di beberapa zona dalam region yang sama:

  • Grup instance ketiga, ig-d di us-west1-c, berfungsi sebagai backend utama dengan dua VM:
    • vm-d1
    • vm-d2
  • Grup instance keempat, ig-b di us-west1-a, berfungsi sebagai backend failover dengan dua VM:
    • vm-b1
    • vm-b2

Arsitektur yang diubah untuk contoh ini terlihat seperti berikut:

Failover Load Balancer Jaringan passthrough internal multi-zona.
Failover Load Balancer Jaringan passthrough internal multi-zona (klik untuk memperbesar).

Buat VM dan grup instance tambahan

Ikuti langkah-langkah berikut untuk membuat VM utama dan failover tambahan serta grup instance tidak terkelola yang sesuai.

Konsol

Membuat VM backend

  1. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

  2. Ulangi langkah-langkah berikut untuk membuat empat VM, menggunakan kombinasi nama dan zona berikut.

    • Nama: vm-b1, zona: us-west1-a
    • Nama: vm-b2, zona: us-west1-a
    • Nama: vm-d1, zona: us-west1-c
    • Nama: vm-d2, zona: us-west1-c
  3. Klik Create instance.

  4. Tetapkan Name seperti yang ditunjukkan pada langkah 2.

  5. Untuk Region, pilih us-west1, dan pilih Zone seperti yang ditunjukkan pada langkah 2.

  6. Di bagian Boot disk, pastikan image yang dipilih adalah Debian GNU/Linux 12 (bookworm). Klik Pilih untuk mengubah gambar jika perlu.

  7. Klik Advanced options, lalu lakukan perubahan berikut:

    • Klik Networking, lalu tambahkan Tag jaringan berikut: allow-ssh dan allow-health-check
    • Klik tombol edit di bagian Network interfaces dan lakukan perubahan berikut, lalu klik Done:
      • Network: lb-network
      • Subnet: lb-subnet
      • Primary internal IP: Ephemeral (automatic)
      • IP Eksternal: Sementara
    • Klik Management. Di kolom Startup script, salin dan tempel konten skrip berikut. Isi skrip identik untuk keempat VM:

      #! /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
      
  8. Klik Create.

Membuat grup instance

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

    Buka Instance groups

  2. Ulangi langkah-langkah berikut untuk membuat dua grup instance tidak terkelola, masing-masing dengan dua VM di dalamnya, menggunakan kombinasi berikut.

    • Grup instance: ig-b, zona: us-west1-a, VM: vm-b1 dan vm-b2
    • Grup instance: ig-d, zona: us-west1-c, VM: vm-d1 dan vm-d2
  3. Klik Create instance group.

  4. Klik New unmanaged instance group.

  5. Tetapkan Name seperti yang ditunjukkan pada langkah 2.

  6. Di bagian Location, pilih us-west1 untuk Region, lalu pilih Zone seperti yang ditunjukkan pada langkah 2.

  7. Untuk Network, masukkan lb-network.

  8. Untuk Subnetwork, masukkan lb-subnet.

  9. Di bagian VM instances, tambahkan VM seperti yang ditunjukkan pada langkah 2.

  10. Klik Create.

gcloud

  1. Buat empat VM dengan menjalankan perintah berikut empat kali, menggunakan empat kombinasi ini untuk VM_NAME dan ZONE. Isi skripnya sama untuk keempat VM.

    • VM_NAME dari vm-b1 dan ZONE dari us-west1-a
    • VM_NAME dari vm-b2 dan ZONE dari us-west1-a
    • VM_NAME dari vm-d1 dan ZONE dari us-west1-c
    • VM_NAME dari vm-d2 dan ZONE dari us-west1-c
    gcloud compute instances create VM_NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --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'
    
  2. Buat dua grup instance tidak terkelola di setiap zona:

    gcloud compute instance-groups unmanaged create ig-b \
        --zone=us-west1-a
    gcloud compute instance-groups unmanaged create ig-d \
        --zone=us-west1-c
    
  3. Tambahkan VM ke grup instance yang sesuai:

    gcloud compute instance-groups unmanaged add-instances ig-b \
        --zone=us-west1-a \
        --instances=vm-b1,vm-b2
    gcloud compute instance-groups unmanaged add-instances ig-d \
        --zone=us-west1-c \
        --instances=vm-d1,vm-d2
    

API

Buat empat VM backend dengan membuat empat permintaan POST ke metode instances.insert.

Untuk keempat VM, gunakan nama dan zona VM berikut:

  • VM_NAME dari vm-b1 dan ZONE dari us-west1-a
  • VM_NAME dari vm-b2 dan ZONE dari us-west1-a
  • VM_NAME dari vm-d1 dan ZONE dari us-west1-c
  • VM_NAME dari vm-d2 dan ZONE dari us-west1-c

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • DEBIAN_IMAGE_NAME: nama image Debian untuk instance. DEBIAN_IMAGE_NAME saat ini dapat diperoleh dengan menjalankan perintah gcloud berikut:

    gcloud compute images list \
     --filter="family=debian-12"
    

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances

{
 "name": "VM_NAME",
 "tags": {
   "items": [
     "allow-health-check",
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "VM_NAME",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/DEBIAN_IMAGE_NAME",
       "diskType": "projects/PROJECT_ID/zones/ZONE/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "metadata": {
   "items": [
     {
       "key": "startup-script",
       "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nsystemctl restart apache2"
     }
   ]
 },
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Buat dua grup instance dengan membuat permintaan POST ke metode instanceGroups.insert. Ganti PROJECT_ID dengan project ID Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups

{
 "name": "ig-b",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups

{
 "name": "ig-d",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

Tambahkan instance ke setiap grup instance dengan membuat permintaan POST ke metode instanceGroups.addInstances. Ganti PROJECT_ID dengan project ID Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-b/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-b2"
   }
 ]
}

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups/ig-d/addInstances

{
 "instances": [
   {
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d1",
     "instance": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instances/vm-d2"
   }
 ]
}

Menambahkan backend utama

Anda dapat menggunakan prosedur ini sebagai template untuk cara menambahkan grup instance tidak terkelola ke layanan backend Load Balancer Jaringan passthrough internal yang ada sebagai backend utama. Untuk contoh konfigurasi, prosedur ini menunjukkan cara menambahkan grup instance ig-d sebagai backend utama ke load balancer be-ilb.

Konsol

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

    Buka Load balancing

  2. Di tab Load balancer, klik nama load balancer TCP internal atau UDP internal yang ada (dalam contoh ini, be-ilb).

  3. Klik Edit .

  4. Di Backend configuration, klik Add backend, lalu pilih grup instance yang tidak dikelola (dalam contoh ini, ig-d).

  5. Pastikan Gunakan grup instance ini sebagai grup failover untuk cadangan tidak dicentang.

  6. Klik Selesai, lalu klik Perbarui.

gcloud

Gunakan perintah gcloud berikut untuk menambahkan backend utama ke layanan backend Load Balancer Jaringan passthrough internal yang ada.

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION

Ganti kode berikut:

  • BACKEND_SERVICE_NAME: nama layanan backend load balancer. Untuk contoh, gunakan be-ilb.
  • INSTANCE_GROUP_NAME: nama grup instance yang akan ditambahkan sebagai backend utama. Untuk contoh, gunakan ig-d.
  • INSTANCE_GROUP_ZONE: adalah zona tempat grup instance ditentukan. Untuk contoh, gunakan us-west1-c.
  • REGION: region load balancer. Untuk contoh, gunakan us-west1.

API

Tambahkan backend utama ke layanan backend yang ada dengan metode regionBackendServices.patch.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "backends":
  [
    {
      "balancingMode": "connection",
      "failover": false,
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
    }
  ]
}

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • REGION: region load balancer. Untuk contoh, gunakan us-west1.
  • BACKEND_SERVICE_NAME: nama layanan backend load balancer. Untuk contoh, gunakan be-ilb.
  • INSTANCE_GROUP_NAME: nama grup instance yang akan ditambahkan sebagai backend utama. Untuk contoh, gunakan ig-d.
  • INSTANCE_GROUP_ZONE: zona tempat grup instance ditentukan. Untuk contoh, gunakan us-west1-c.

Menambahkan backend failover

Anda dapat menggunakan prosedur ini sebagai template untuk cara menambahkan grup instance tidak terkelola ke layanan backend Load Balancer Jaringan passthrough internal yang ada sebagai backend failover. Untuk contoh konfigurasi, prosedur ini menunjukkan cara menambahkan grup instance ig-b sebagai backend failover ke load balancer be-ilb.

Konsol

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

    Buka Load balancing

  2. Di tab Load balancer, klik nama load balancer yang ada dengan jenis TCP/UDP (Internal) (dalam contoh ini, be-ilb).

  3. Klik Edit .

  4. Di Backend configuration, klik Add backend, lalu pilih grup instance yang tidak dikelola (dalam contoh ini, ig-b).

  5. Centang Gunakan grup instance ini sebagai grup failover untuk cadangan.

  6. Klik Selesai, lalu klik Perbarui.

gcloud

Gunakan perintah gcloud berikut untuk menambahkan backend failover ke layanan backend Load Balancer Jaringan passthrough internal yang sudah ada.

gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --failover

Ganti kode berikut:

  • BACKEND_SERVICE_NAME: nama layanan backend load balancer. Untuk contoh, gunakan be-ilb.
  • INSTANCE_GROUP_NAME: nama grup instance yang akan ditambahkan sebagai backend utama. Untuk contoh, gunakan ig-b.
  • INSTANCE_GROUP_ZONE: adalah zona tempat grup instance ditentukan. Untuk contoh, gunakan us-west1-a.
  • REGION adalah region load balancer. Untuk contoh, gunakan us-west1.

API

Tambahkan backend failover ke layanan backend yang ada dengan metode regionBackendServices.patch.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "backends":
  [
    {
      "balancingMode": "connection",
      "failover": true,
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
    }
  ]
}

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • BACKEND_SERVICE_NAME: nama layanan backend load balancer. Untuk contoh, gunakan be-ilb.
  • INSTANCE_GROUP_NAME: nama grup instance yang akan ditambahkan sebagai backend utama. Untuk contoh, gunakan ig-b.
  • INSTANCE_GROUP_ZONE: adalah zona tempat grup instance ditentukan. Untuk contoh, gunakan us-west1-a.
  • REGION: region load balancer. Untuk contoh, gunakan us-west1.

Mengonversi backend utama atau failover

Anda dapat mengonversi backend utama menjadi backend failover, atau backend failover menjadi backend utama, tanpa harus menghapus grup instance dari layanan backend Load Balancer Jaringan passthrough internal.

Konsol

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

    Buka Load balancing

  2. Di tab Load balancer, klik nama load balancer yang ada dengan jenis TCP/UDP (Internal).

  3. Klik Edit .

  4. Di Backend configuration, klik nama salah satu grup instance backend. Setelah itu:

    • Untuk menjadikan grup instance sebagai backend failover, centang Gunakan grup instance ini sebagai grup failover untuk cadangan.
    • Untuk menjadikan grup instance sebagai backend utama, hapus centang pada Gunakan grup instance ini sebagai grup failover untuk cadangan.
  5. Klik Selesai, lalu klik Perbarui.

gcloud

Gunakan perintah gcloud berikut untuk mengonversi backend utama yang ada menjadi backend failover:

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --failover

Gunakan perintah gcloud berikut untuk mengonversi backend failover yang ada menjadi backend utama:

gcloud compute backend-services update-backend BACKEND_SERVICE_NAME \
   --instance-group INSTANCE_GROUP_NAME \
   --instance-group-zone INSTANCE_GROUP_ZONE \
   --region REGION \
   --no-failover

Ganti kode berikut:

  • BACKEND_SERVICE_NAME: nama layanan backend load balancer
  • INSTANCE_GROUP_NAME: nama grup instance yang akan ditambahkan sebagai backend utama
  • INSTANCE_GROUP_ZONE: zona tempat grup instance ditentukan
  • REGION: region load balancer

API

Konversi backend utama menjadi backend failover, atau sebaliknya, menggunakan metode regionBackendServices.patch.

Untuk mengonversi backend utama menjadi backend failover:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "backends":
  [
    {
      "failover": true,
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
    }
  ]
}

Untuk mengonversi backend failover menjadi backend utama:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "backends":
  [
    {
      "failover": false,
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/INSTANCE_GROUP_ZONE/instanceGroups/INSTANCE_GROUP_NAME"
    }
  ],
}

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • BACKEND_SERVICE_NAME: nama layanan backend load balancer
  • INSTANCE_GROUP_NAME: nama grup instance yang akan ditambahkan sebagai backend utama
  • INSTANCE_GROUP_ZONE: zona tempat grup instance ditentukan
  • REGION: region load balancer

Mengonfigurasi kebijakan failover

Bagian ini menjelaskan cara mengonfigurasi kebijakan failover untuk layanan backend Load Balancer Jaringan passthrough internal. Untuk mengetahui informasi selengkapnya tentang parameter kebijakan failover, lihat Failover.

Menentukan kebijakan failover

Petunjuk berikut menjelaskan cara menentukan kebijakan failover untuk Load Balancer Jaringan passthrough internal yang ada.

Konsol

Untuk menentukan kebijakan failover menggunakan konsol Google Cloud , Anda harus memiliki setidaknya satu backend failover.

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

    Buka Load balancing

  2. Dari tab Load balancer, klik nama load balancer yang ada dengan jenis TCP/UDP (Internal).

  3. Klik Edit .

  4. Pastikan Anda memiliki setidaknya satu backend failover. Setidaknya salah satu backend load balancer harus memilih Gunakan grup instance ini sebagai grup failover untuk cadangan.

  5. Klik Konfigurasi lanjutan.

    • Untuk Kebijakan Failover, tetapkan Rasio failover ke nilai antara 0.0 dan 1.0, inklusif.
    • Centang kotak di samping Aktifkan drop traffic jika Anda ingin menghentikan traffic saat semua VM backend utama dan failover tidak responsif.
    • Centang kotak di samping Aktifkan pengosongan koneksi saat failover jika Anda ingin menghentikan koneksi yang ada dengan cepat selama failover.
  6. Klik Review and finalize, lalu klik Update.

gcloud

Untuk menentukan kebijakan failover menggunakan gcloud CLI, perbarui layanan backend load balancer:

gcloud compute backend-services update BACKEND_SERVICE_NAME \
   --region REGION \
   --failover-ratio FAILOVER_RATIO \
   --drop-traffic-if-unhealthy \
   --no-connection-drain-on-failover

Ganti kode berikut:

  • BACKEND_SERVICE_NAME: nama layanan backend load balancer. Untuk contoh, gunakan be-ilb.
  • REGION: region load balancer. Untuk contoh, gunakan us-west1.
  • FAILOVER_RATIO: rasio failover. Kemungkinan nilainya adalah antara 0.0 dan 1.0, inklusif. Untuk contoh, gunakan 0.75.
  • --drop-traffic-if-unhealthy menginstruksikan load balancer untuk menghentikan traffic jika semua VM utama dan semua VM failover tidak responsif. Ubah ini menjadi --no-drop-traffic-if-unhealthy jika Anda ingin mendistribusikan traffic di antara semua VM utama saat semua VM backend tidak responsif.
  • --no-connection-drain-on-failover menginstruksikan load balancer untuk menghentikan koneksi TCP yang ada dengan cepat selama failover. Gunakan --connection-drain-on-failover untuk mengaktifkan pengosongan koneksi selama failover.

API

Gunakan metode regionBackendServices.patch untuk menentukan kebijakan failover.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

{
  "failoverPolicy":
  {
    "failoverRatio": FAILOVER_RATIO,
    "dropTrafficIfUnhealthy": [true|false],
    "disableConnectionDrainOnFailover": [true|false]
  }
}

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • REGION: region load balancer
  • BACKEND_SERVICE_NAME: nama layanan backend load balancer
  • FAILOVER_RATIO: rasio failover. Kemungkinan nilainya adalah antara 0.0 dan 1.0, inklusif.
  • Menetapkan dropTrafficIfUnhealthy ke true akan menginstruksikan load balancer untuk menghentikan traffic saat semua VM utama dan semua VM failover tidak responsif. Tetapkan ini ke false jika Anda ingin mendistribusikan traffic di antara semua VM utama saat semua VM backend tidak responsif.
  • Menyetel disableConnectionDrainOnFailover ke true akan menginstruksikan load balancer untuk menghentikan koneksi TCP yang ada dengan cepat saat melakukan failover. Setel ini ke false untuk mengaktifkan pengosongan koneksi selama failover.

Melihat kebijakan failover

Petunjuk berikut menjelaskan cara melihat kebijakan failover yang ada untuk Load Balancer Jaringan passthrough internal.

Konsol

Konsol Google Cloud menampilkan setelan kebijakan failover yang ada saat Anda mengedit Load Balancer Jaringan passthrough internal. Lihat menentukan kebijakan pengalihan otomatis untuk mengetahui petunjuknya.

gcloud

Untuk mencantumkan setelan kebijakan failover menggunakan gcloud CLI, gunakan perintah berikut. Setelan yang tidak ditentukan dalam kebijakan penggantian menggunakan nilai kebijakan penggantian default.

gcloud compute backend-services describe BACKEND_SERVICE_NAME \
   --region REGION \
   --format="get(failoverPolicy)"

Ganti kode berikut:

  • BACKEND_SERVICE_NAME: nama layanan backend load balancer
  • REGION: region load balancer

API

Gunakan metode regionBackendServices.get untuk melihat kebijakan failover.

Respons terhadap permintaan API menampilkan kebijakan failover. Contohnya ditampilkan di bawah ini.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE_NAME

Ganti kode berikut:

  • PROJECT_ID: project ID Anda
  • REGION: region load balancer
  • BACKEND_SERVICE_NAME: nama layanan backend load balancer
{
...
"failoverPolicy": {
  "disableConnectionDrainOnFailover": false,
  "dropTrafficIfUnhealthy": false,
  "failoverRatio": 0.75
...
}

Langkah berikutnya