Menyiapkan Network Load Balancer passthrough internal dengan backend grup instance VM untuk beberapa protokol

Halaman ini memberikan petunjuk untuk membuat Load Balancer Jaringan passthrough internal guna melakukan load balancing traffic untuk beberapa protokol.

Untuk mengonfigurasi load balancer untuk beberapa protokol, termasuk TCP dan UDP, Anda membuat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT. Aturan penerusan ini mengarah ke layanan backend dengan protokol yang disetel ke UNSPECIFIED.

Dalam contoh ini, kita menggunakan satu Load Balancer Jaringan passthrough internal untuk mendistribusikan traffic di seluruh VM backend di region us-west1. Load balancer memiliki aturan penerusan dengan protokol L3_DEFAULT untuk menangani TCP, UDP, ICMP, ICMPv6, SCTP, ESP, AH, dan GRE .

Load balancing traffic IPv4 dan IPv6 berdasarkan protokol, dengan
    layanan backend untuk mengelola distribusi koneksi ke satu grup instance zonal.
Load Balancer Jaringan passthrough internal untuk beberapa protokol (klik untuk memperbesar).

Sebelum memulai

Izin

Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan panduan ini, minta administrator untuk memberi Anda peran IAM berikut pada project:

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Menyiapkan load balancer untuk traffic L3_DEFAULT

Langkah-langkah di bagian ini menjelaskan konfigurasi berikut:

  • Contoh yang menggunakan jaringan VPC mode kustom bernama lb-network. Anda dapat menggunakan jaringan mode otomatis jika hanya ingin menangani traffic IPv4. Namun, traffic IPv6 memerlukan subnet mode kustom.
  • Subnet single-stack (stack-type ditetapkan ke IPv4), yang diperlukan untuk traffic IPv4. Saat membuat subnet satu stack di jaringan VPC mode kustom, Anda memilih rentang subnet IPv4 untuk subnet. Untuk traffic IPv6, kami memerlukan subnet dual-stack (stack-type ditetapkan ke IPv4_IPv6). Saat membuat subnet dual stack di jaringan VPC mode kustom, Anda memilih jenis akses IPv6 untuk subnet. Untuk contoh ini, kita menetapkan parameter ipv6-access-type subnet ke INTERNAL. Artinya, VM baru di subnet ini dapat diberi alamat IPv4 internal dan alamat IPv6 internal.
  • Aturan firewall yang mengizinkan koneksi masuk ke VM backend.
  • Grup instance backend dan komponen load balancer yang digunakan untuk contoh ini berada di region dan subnet ini:
    • Region: us-west1
    • Subnet: lb-subnet, dengan rentang alamat IPv4 utama 10.1.2.0/24. Meskipun Anda memilih rentang alamat IPv4 yang dikonfigurasi di subnet, rentang alamat IPv6 ditetapkan secara otomatis. Google menyediakan blok CIDR IPv6 berukuran tetap (/64).
  • VM backend dalam grup instance terkelola di zona us-west1-a.
  • VM klien untuk menguji koneksi ke backend.
  • Load Balancer Jaringan passthrough internal dengan komponen berikut:
    • Health check untuk layanan backend.
    • Layanan backend di region us-west1 dengan protokol yang ditetapkan ke UNSPECIFIED untuk mengelola distribusi koneksi ke grup instance zonal.
    • Aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT dan port yang ditetapkan ke ALL.

Mengonfigurasi jaringan, region, dan subnet

Untuk mengonfigurasi subnet dengan rentang IPv6 internal, aktifkan rentang IPv6 internal ULA jaringan Virtual Private Cloud (VPC). Rentang subnet IPv6 internal dialokasikan dari rentang ini. Untuk membuat contoh jaringan dan subnet, ikuti langkah-langkah berikut:

Konsol

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

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Untuk Name, masukkan lb-network.

  4. 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.
  5. Untuk Mode pembuatan subnet, klik Kustom.

  6. Di bagian New subnet tentukan parameter konfigurasi berikut untuk subnet:

    1. Untuk Name, masukkan lb-subnet.
    2. Untuk Region, pilih us-west1.
    3. Untuk membuat subnet stack ganda, pilih IPv4 and IPv6 (dual-stack) untuk IP stack type.
    4. Untuk IPv4 range, masukkan 10.1.2.0/24.
    5. Untuk IPv6 access type, pilih Internal.
  7. Klik Done.

  8. Klik Create.

Untuk mendukung traffic IPv4, gunakan langkah-langkah berikut:

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Untuk Name, masukkan lb-network.

  4. Di bagian Subnet:

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

gcloud

Untuk traffic IPv4 dan IPv6, gunakan perintah berikut:

  1. Untuk membuat jaringan VPC mode kustom baru, jalankan perintah gcloud compute networks create.

    Untuk mengonfigurasi rentang IPv6 internal pada subnet apa pun di jaringan ini, gunakan flag --enable-ula-internal-ipv6. Opsi ini menetapkan awalan ULA /48 dari dalam rentang fd20::/20 yang digunakan oleh Google Cloud untuk rentang subnet IPv6 internal.

    gcloud compute networks create lb-network \
     --subnet-mode=custom \
     --enable-ula-internal-ipv6
    
  2. Dalam lb-network, buat subnet untuk backend di region us-west1.

    Untuk membuat subnet, jalankan perintah gcloud compute networks subnets create:

    gcloud compute networks subnets create lb-subnet \
     --network=lb-network \
     --range=10.1.2.0/24 \
     --region=us-west1 \
     --stack-type=IPV4_IPV6 --ipv6-access-type=INTERNAL
    

Untuk hanya traffic IPv4, gunakan perintah berikut:

  1. Untuk membuat jaringan VPC kustom, gunakan perintah gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Untuk membuat subnet bagi backend di region us-west1 dalam jaringan lb-network, gunakan perintah gcloud compute networks subnets create.

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

API

Untuk traffic IPv4 dan IPv6, gunakan perintah berikut:

  1. Buat jaringan VPC mode kustom baru. Buat permintaan POST ke metode networks.insert.

    Untuk mengonfigurasi rentang IPv6 internal pada subnet apa pun di jaringan ini, tetapkan enableUlaInternalIpv6 ke true. Opsi ini menetapkan rentang /48 dari dalam rentang fd20::/20 yang digunakan oleh Google untuk rentang subnet IPv6 internal.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
    {
      "autoCreateSubnetworks": false,
      "name": "lb-network",
      "mtu": MTU,
      "enableUlaInternalIpv6": true,
    }
    

    Ganti kode berikut:

    • PROJECT_ID: ID project tempat jaringan VPC dibuat.
    • MTU: unit transmisi maksimum jaringan. MTU dapat berupa 1460 (default) atau 1500. Tinjau ringkasan unit transmisi maksimum sebelum menetapkan MTU ke 1500.
  2. Buat permintaan POST ke metode subnetworks.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
    {
    "ipCidrRange": "10.1.2.0/24",
    "network": "lb-network",
    "name": "lb-subnet"
    "stackType": IPV4_IPV6,
    "ipv6AccessType": Internal
    }
    

Untuk traffic IPv4 saja, gunakan langkah-langkah berikut:

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
    {
    "name": "lb-network",
    "autoCreateSubnetworks": false
    }
    
  2. Buat dua permintaan POST ke metode subnetworks.insert:

    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-access: 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 klien mana pun yang terletak di subnet.

  • fw-allow-lb-access-ipv6: Aturan ingress, yang berlaku untuk semua target di jaringan VPC, yang mengizinkan traffic dari sumber dalam rentang IPv6 yang dikonfigurasi di subnet. Aturan ini mengizinkan traffic IPv6 masuk dari klien mana pun yang terletak di subnet.

  • fw-allow-ssh: Aturan ingress, yang berlaku untuk instance yang di-load balanced, 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 hanya rentang IP sistem tempat Anda memulai sesi SSH. Contoh ini menggunakan tag target allow-ssh untuk mengidentifikasi VM tempat tag tersebut harus diterapkan.

  • 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 tempat tag tersebut harus diterapkan.

  • fw-allow-health-check-ipv6: Aturan ingress, yang berlaku untuk instance yang di-load balance, yang mengizinkan traffic dari sistem health check Google Cloud (2600:2d00:1:b029::/64). Contoh ini menggunakan tag target allow-health-check-ipv6 untuk mengidentifikasi instance tempat tag tersebut harus diterapkan.

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 Kebijakan firewall

  2. Untuk mengizinkan traffic IPv4 TCP, UDP, dan ICMP menjangkau grup instance backend ig-a:

    • Klik Create firewall rule.
    • Nama: fw-allow-lb-access
    • Jaringan: lb-network
    • Prioritas: 1000
    • Direction of traffic: Masuk
    • Action on match: Izinkan
    • Targets: Semua instance dalam jaringan
    • Source filter: Rentang IPv4
    • Rentang IPv4 sumber: 10.1.2.0/24
    • Protocols and ports: pilih Specified protocols and ports.
      • Pilih TCP, lalu masukkan ALL.
      • Pilih UDP.
      • Pilih Lainnya dan masukkan ICMP.
  3. Klik Create.

  4. Untuk mengizinkan koneksi SSH yang masuk:

    • Klik Create firewall rule.
    • Nama: fw-allow-ssh
    • Jaringan: lb-network
    • Prioritas: 1000
    • Direction of traffic: Masuk
    • Action on match: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-ssh
    • Source filter: 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. Untuk mengizinkan traffic IPv6 TCP, UDP, dan ICMP menjangkau grup instance backend ig-a:

    • Klik Create firewall rule.
    • Nama: fw-allow-lb-access-ipv6
    • Jaringan: lb-network
    • Prioritas: 1000
    • Direction of traffic: Masuk
    • Action on match: Izinkan
    • Targets: Semua instance dalam jaringan
    • Filter sumber: Rentang IPv6
    • Rentang IPv6 sumber: IPV6_ADDRESS ditetapkan di lb-subnet
    • Protocols and ports: pilih Specified protocols and ports.
      • Pilih TCP, lalu masukkan 0-65535.
      • Pilih UDP.
      • Pilih Other dan untuk protokol ICMPv6, masukkan 58.
  7. Klik Create.

  8. Untuk mengizinkan health check IPv6 Google Cloud:

    • Klik Create firewall rule.
    • Nama: fw-allow-health-check-ipv6
    • Jaringan: lb-network
    • Prioritas: 1000
    • Direction of traffic: Masuk
    • Action on match: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-health-check-ipv6
    • Filter sumber: Rentang IPv6
    • Rentang IPv6 sumber: 2600:2d00:1:b029::/64
    • Protocols and ports: Allow all
  9. Klik Create.

  10. Untuk mengizinkan health check IPv4 Google Cloud:

    • Klik Create firewall rule
    • Nama: fw-allow-health-check
    • Jaringan: lb-network
    • Prioritas: 1000
    • Direction of traffic: Masuk
    • Action on match: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-health-check
    • Source filter: Rentang IPv4
    • Rentang IPv4 sumber: 130.211.0.0/22 dan 35.191.0.0/16
    • Protocols and ports: Allow all
  11. Klik Create.

gcloud

  1. Untuk mengizinkan traffic TCP IPv4 menjangkau grup instance backend ig-a, buat aturan berikut:

    gcloud compute firewall-rules create fw-allow-lb-access \
        --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 menggunakan tag jaringan allow-ssh. Saat 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. Untuk mengizinkan traffic IPv6 menjangkau grup instance backend ig-a, buat aturan berikut:

    gcloud compute firewall-rules create fw-allow-lb-access-ipv6 \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=IPV6_ADDRESS \
        --rules=all
    

    Ganti IPV6_ADDRESS dengan alamat IPv6 yang ditetapkan di lb-subnet.

  4. Buat aturan firewall 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
    
  5. Buat aturan fw-allow-health-check-ipv6 untuk mengizinkan health check IPv6 Google Cloud.

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

API

  1. Untuk membuat aturan firewall fw-allow-lb-access, buat permintaan POST ke metode firewalls.insert. Ganti PROJECT_ID dengan ID project Google Cloud Anda.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    {
    "name": "fw-allow-lb-access",
    "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
    "priority": 1000,
    "sourceRanges": [
      "10.1.2.0/24"
    ],
    "allPorts": true,
    "allowed": [
      {
        "IPProtocol": "tcp"
      },
      {
        "IPProtocol": "udp"
      },
      {
        "IPProtocol": "icmp"
      }
    ],
    "direction": "INGRESS",
    "logConfig": {
      "enable": false
    },
    "disabled": false
    }
    
  2. Buat aturan firewall fw-allow-lb-access-ipv6 dengan membuat permintaan POST ke metode firewalls.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    {
     "name": "fw-allow-lb-access-ipv6",
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "priority": 1000,
     "sourceRanges": [
       "IPV6_ADDRESS"
     ],
     "allPorts": true,
     "allowed": [
       {
          "IPProtocol": "tcp"
        },
        {
          "IPProtocol": "udp"
        },
        {
          "IPProtocol": "58"
        }
     ],
     "direction": "INGRESS",
     "logConfig": {
        "enable": false
     },
     "disabled": false
    }
    

    Ganti IPV6_ADDRESS dengan alamat IPv6 yang ditetapkan di lb-subnet.

  3. Untuk membuat aturan firewall fw-allow-ssh, buat permintaan POST ke metode firewalls.insert:

    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
    }
    
  4. Untuk membuat aturan firewall fw-allow-health-check, buat permintaan POST ke metode firewalls.insert:

    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
    }
    
  5. Buat aturan firewall fw-allow-health-check-ipv6 dengan membuat permintaan POST ke metode firewalls.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
    {
    "name": "fw-allow-health-check-ipv6",
    "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
    "priority": 1000,
    "sourceRanges": [
      "2600:2d00:1:b029::/64"
    ],
    "targetTags": [
      "allow-health-check-ipv6"
    ],
    "allowed": [
      {
        "IPProtocol": "tcp"
      },
      {
        "IPProtocol": "udp"
      }
    ],
    "direction": "INGRESS",
    "logConfig": {
      "enable": false
    },
    "disabled": false
    }
    

Membuat VM backend dan grup instance

Untuk skenario load balancing ini, Anda akan membuat grup instance terkelola zona Compute Engine dan menginstal server web Apache.

Untuk menangani traffic IPv4 dan IPv6, konfigurasikan VM backend menjadi stack ganda. Tetapkan stack-type VM ke IPv4_IPv6. VM juga mewarisi setelan ipv6-access-type (dalam contoh ini, INTERNAL) dari subnet. Untuk mengetahui detail selengkapnya tentang persyaratan IPv6, lihat Ringkasan Load Balancer Jaringan passthrough internal: Aturan penerusan.

Jika Anda ingin menggunakan VM yang ada sebagai backend, update VM menjadi dual-stack menggunakan perintah gcloud compute instances network-interfaces update.

Instance yang berpartisipasi sebagai VM backend untuk Load Balancer Jaringan passthrough internal harus menjalankan Lingkungan Tamu Linux, Lingkungan Tamu Windows, atau proses lain yang menyediakan fungsi yang setara.

Untuk memudahkan petunjuk, VM backend menjalankan Debian GNU/Linux 10.

Membuat grup instance

Konsol

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

  1. Membuat template instance. Di konsol Google Cloud, buka halaman Instance templates.

    Buka halaman Template instance

    1. Klik Create instance template.
    2. Untuk Name, masukkan vm-a1.
    3. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 12 (bookworm). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Luaskan bagian Advanced options.
    5. Luaskan bagian Management, lalu salin skrip berikut ke kolom Startup script. Skrip startup juga mengonfigurasi server Apache untuk memproses port 8080, bukan port 80.

      #! /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
      sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf
      systemctl restart apache2
      
    6. Luaskan bagian Networking, lalu tentukan hal berikut:

      1. Untuk Tag jaringan, tambahkan allow-ssh dan allow-health-check-ipv6.
      2. Untuk Network interfaces, klik antarmuka default dan konfigurasi kolom berikut:
        • Jaringan: lb-network
        • Subnetwork: lb-subnet
        • IP stack type: IPv4 and IPv6 (dual-stack)
    7. Klik Create.

Untuk mendukung traffic IPv4, gunakan langkah-langkah berikut:

  1. Membuat template instance. Di konsol Google Cloud, buka halaman Instance templates.

    Buka halaman Template instance

  2. Klik Create instance template.

    1. Untuk Name, masukkan vm-a1.
    2. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 12 (bookworm). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    3. Luaskan bagian Advanced options.
    4. Luaskan bagian Management, lalu salin skrip berikut ke kolom Startup script. Skrip startup juga mengonfigurasi server Apache untuk memproses port 8080, bukan port 80.

      #! /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
      sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf
      systemctl restart apache2
      
    5. Luaskan bagian Networking, lalu tentukan hal berikut:

      1. Untuk Tag jaringan, tambahkan allow-ssh dan allow-health-check.
      2. Untuk Network interfaces, klik antarmuka default dan konfigurasikan kolom berikut:
        • Jaringan: lb-network
        • Subnetwork: lb-subnet
        • Jenis stack IP: IPv4 (single-stack)
    6. Klik Create.

  3. Membuat grup instance terkelola. Buka halaman Grup instance di konsol Google Cloud.

    Buka Instance groups

    1. Klik Create instance group.
    2. Pilih New managed instance group (stateless). Untuk informasi selengkapnya, lihat MIG stateless atau stateful.
    3. Untuk Name, masukkan ig-a.
    4. Untuk Location, pilih Single zone.
    5. Untuk Region, pilih us-west1.
    6. Untuk Zone, pilih us-west1-a.
    7. Untuk Instance template, pilih vm-a1.
    8. Tentukan jumlah instance yang ingin Anda buat dalam grup.

      Untuk contoh ini, tentukan opsi berikut di bagian Penskalaan otomatis:

      • Untuk Autoscaling mode, pilih Off:do not autoscale.
      • Untuk Maximum number of instances, masukkan 2.
    9. Klik Create.

gcloud

Petunjuk gcloud dalam panduan ini mengasumsikan bahwa Anda menggunakan Cloud Shell atau lingkungan lain dengan bash yang diinstal.

  1. Buat template instance VM dengan server HTTP dengan perintah gcloud compute instance-templates create.

    Skrip startup juga mengonfigurasi server Apache untuk memproses port 8080, bukan port 80.

    Untuk menangani traffic IPv4 dan IPv6, gunakan perintah berikut.

    gcloud compute instance-templates create vm-a1 \
        --region=us-west1 \
        --network=lb-network \
        --subnet=lb-subnet \
        --ipv6-network-tier=PREMIUM \
        --stack-type=IPv4_IPv6 \
        --tags=allow-ssh \
        --image-family=debian-12 \
        --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
          sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf
          systemctl restart apache2'
    

    Atau, jika Anda ingin menangani hanya traffic IPv4, gunakan perintah berikut.

    gcloud compute instance-templates create vm-a1 \
        --region=us-west1 \
        --network=lb-network \
        --subnet=lb-subnet \
        --tags=allow-ssh \
        --image-family=debian-12 \
        --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
          sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf
          systemctl restart apache2'
    
  2. Buat grup instance terkelola di zona dengan perintah gcloud compute instance-groups managed create.

    gcloud compute instance-groups managed create ig-a \
        --zone us-west1-a \
        --size 2 \
        --template vm-a1
    

api

Untuk menangani traffic IPv4 dan IPv6, gunakan langkah-langkah berikut:.

  1. Buat VM dengan membuat permintaan POST ke metode instances.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    "name": "vm-a1",
    "tags": {
     "items": [
       "allow-health-check-ipv6",
       "allow-ssh"
     ]
    },
    "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/machineTypes/e2-standard-2",
    "canIpForward": false,
    "networkInterfaces": [
     {
       "stackType": "IPV4_IPV6",
       "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-a1",
       "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\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2"
       }
     ]
    },
    "scheduling": {
     "preemptible": false
    },
    "deletionProtection": false
    }
    

Untuk menangani traffic IPv4, gunakan langkah-langkah berikut.

  1. Buat VM dengan membuat permintaan POST ke metode instances.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances
    {
    "name": "vm-a1",
    "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": [
     {
       "stackType": "IPV4",
       "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-a1",
       "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\nsed -ire "s/^Listen 80$/Listen 8080/g" /etc/\\napache2/ports.conf\nsystemctl restart apache2"
       }
     ]
    },
    "scheduling": {
     "preemptible": false
    },
    "deletionProtection": false
    }
    
  2. Buat grup instance dengan membuat permintaan POST ke metode instanceGroups.insert.

    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"
    }
    
  3. Tambahkan instance ke setiap grup instance dengan membuat permintaan POST ke metode instanceGroups.addInstances.

    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"
    }
    ]
    }
    

Membuat VM klien

Contoh ini membuat VM klien di region yang sama dengan VM backend (server). Klien digunakan untuk memvalidasi konfigurasi load balancer dan menunjukkan perilaku yang diharapkan seperti yang dijelaskan di bagian pengujian.

Untuk traffic IPv4 dan IPv6:

Konsol

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

    Buka instance VM

  2. Klik Create instance.

  3. Tetapkan Name ke vm-client-ipv6.

  4. Tetapkan Zona ke us-west1-a.

  5. Luaskan bagian Advanced options, lalu lakukan perubahan berikut:

    • Luaskan Networking, lalu tambahkan allow-ssh ke Network tags.
    • Di bagian Network interfaces, klik Edit, buat perubahan berikut, lalu klik Done:
      • Jaringan: lb-network
      • Subnet: lb-subnet
      • IP stack type: IPv4 and IPv6 (dual-stack)
      • Primary internal IP: Ephemeral (otomatis)
      • External IP: Sementara
  6. 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 VM backend.

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

api

Buat permintaan POST ke metode instances.insert.

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

{
 "name": "vm-client-ipv6",
 "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": [
   {
     "stackType": "IPV4_IPV6",
     "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
}

Untuk traffic IPv4:

Konsol

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

    Buka instance VM

  2. Klik Create instance.

  3. Untuk Name, masukkan vm-client.

  4. Untuk Zone, masukkan us-west1-a.

  5. Luaskan bagian Advanced options.

  6. Luaskan Networking, lalu konfigurasikan kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih dari daftar berikut:
      • Jaringan: 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 VM backend.

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 PROJECT_ID dengan ID project Google Cloud Anda.

 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

Membuat load balancer untuk beberapa protokol.

gcloud

  1. Buat health check HTTP untuk port 80. Health check ini digunakan untuk memverifikasi kondisi backend dalam grup instance ig-a.

    gcloud compute health-checks create http hc-http-80 \
        --region=us-west1 \
        --port=80
    
  2. Buat layanan backend dengan protokol yang ditetapkan ke UNSPECIFIED:

    gcloud compute backend-services create be-ilb-l3-default \
        --load-balancing-scheme=internal \
        --protocol=UNSPECIFIED \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --health-checks-region=us-west1
    
  3. Tambahkan grup instance ke layanan backend:

    gcloud compute backend-services add-backend be-ilb-l3-default \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    
  4. Untuk traffic IPv6: Buat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT untuk menangani semua traffic protokol IPv6 yang didukung. Semua port harus dikonfigurasi dengan aturan penerusan L3_DEFAULT.

    gcloud compute forwarding-rules create fr-ilb-ipv6 \
       --region=us-west1 \
       --load-balancing-scheme=internal \
       --subnet=lb-subnet \
       --ip-protocol=L3_DEFAULT \
       --ports=ALL \
       --backend-service=be-ilb-l3-default \
       --backend-service-region=us-west1 \
       --ip-version=IPV6
    
  5. Untuk traffic IPv4: Buat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT untuk menangani semua traffic protokol IPv4 yang didukung. Semua port harus dikonfigurasi dengan aturan penerusan L3_DEFAULT. Gunakan 10.1.2.99 sebagai alamat IP internal.

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

API

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionHealthChecks
    
    {
    "name": "hc-http-80",
    "type": "HTTP",
    "httpHealthCheck": {
     "port": 80
    }
    }
    
  2. Buat layanan backend regional dengan membuat permintaan POST ke metode regionBackendServices.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices
    
    {
    "name": "be-ilb-l3-default",
    "backends": [
     {
       "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a",
       "balancingMode": "CONNECTION"
     }
    ],
    "healthChecks": [
     "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80"
    ],
    "loadBalancingScheme": "INTERNAL",
    "protocol": "UNSPECIFIED",
    "connectionDraining": {
     "drainingTimeoutSec": 0
    }
    }
    
  3. Untuk traffic IPv6: Buat aturan penerusan dengan membuat permintaan POST ke metode forwardingRules.insert.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
    
    {
    "name": "fr-ilb-ipv6",
    "IPProtocol": "L3_DEFAULT",
    "allPorts": true,
    "loadBalancingScheme": "INTERNAL",
    "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
    "backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb-l3-default",
    "ipVersion": "IPV6",
    "networkTier": "PREMIUM"
    }
    
  4. Untuk traffic IPv4: Buat aturan penerusan dengan membuat permintaan POST ke metode forwardingRules.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
    
    {
    "name": "fr-ilb-l3-default",
    "IPAddress": "10.1.2.99",
    "IPProtocol": "L3_DEFAULT",
    "allPorts": true,
    "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-l3-default",
    "networkTier": "PREMIUM"
    }
    

Menguji load balancer

Pengujian berikut menunjukkan cara memvalidasi konfigurasi load balancer dan mempelajari perilaku yang diharapkan.

Menguji koneksi dari VM klien

Pengujian ini menghubungi load balancer dari VM klien terpisah; yaitu, bukan dari VM backend load balancer.

gcloud:IPv6

  1. Hubungkan ke instance VM klien.

    gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
    
  2. Deskripsikan aturan penerusan IPv6 fr-ilb-ipv6. Perhatikan IPV6_ADDRESS dalam deskripsi.

    gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
    
  3. Dari klien dengan konektivitas IPv6, jalankan perintah berikut. Ganti IPV6_ADDRESS dengan alamat IPv6 sementara di aturan penerusan fr-ilb-ipv6.

    curl -m 10 -s http://IPV6_ADDRESS:80
    

    Misalnya, jika alamat IPv6 yang ditetapkan adalah [fd20:1db0:b882:802:0:46:0:0/96]:80, perintahnya akan terlihat seperti:

    curl -m 10 -s http://[fd20:1db0:b882:802:0:46:0:0]:80
    

gcloud:IPv4

  1. Hubungkan ke instance VM klien.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Deskripsikan aturan penerusan IPv4 fr-ilb.

    gcloud compute forwarding-rules describe fr-ilb --region=us-west1
    
  3. Buat permintaan web ke load balancer menggunakan curl untuk menghubungi alamat IP-nya. Ulangi permintaan sehingga Anda dapat melihat bahwa respons berasal dari VM backend yang berbeda. Nama VM yang menghasilkan respons akan ditampilkan dalam teks dalam respons HTML berdasarkan konten /var/www/html/index.html di setiap VM backend. Respons yang diharapkan akan terlihat seperti Page served from: vm-a1.

    curl http://10.1.2.99
    

    Aturan penerusan dikonfigurasi untuk menayangkan port 80 dan 53. Untuk mengirim traffic ke port tersebut, tambahkan titik dua (:) dan nomor port setelah alamat IP, seperti ini:

    curl http://10.1.2.99:80
    

Melakukan ping ke alamat IP load balancer

Pengujian ini menunjukkan perilaku yang diharapkan: Anda dapat melakukan ping ke alamat IP load balancer.

gcloud:IPv6

  1. Hubungkan ke instance VM klien.

    gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
    
  2. Coba ping alamat IPv6 load balancer. Ganti IPV6_ADDRESS dengan alamat IPv6 sementara di aturan penerusan fr-ilb-ipv6.

    Perhatikan bahwa Anda mendapatkan respons dan perintah ping berfungsi dalam contoh ini.

    ping6 IPV6_ADDRESS
    

    Misalnya, jika alamat IPv6 yang ditetapkan adalah [2001:db8:1:1:1:1:1:1/96], perintahnya adalah sebagai berikut:

    ping6 2001:db8:1:1:1:1:1:1
    

    Outputnya mirip dengan hal berikut ini:

    @vm-client: ping IPV6_ADDRESS
    PING IPV6_ADDRESS (IPV6_ADDRESS) 56(84) bytes of data.
    64 bytes from IPV6_ADDRESS: icmp_seq=1 ttl=64 time=1.58 ms
    

gcloud:IPv4

  1. Hubungkan ke instance VM klien.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Coba ping alamat IPv4 load balancer. Perhatikan bahwa Anda mendapatkan respons dan perintah ping berfungsi dalam contoh ini.

    ping 10.1.2.99
    

    Outputnya adalah sebagai berikut:

    @vm-client: ping 10.1.2.99
    PING 10.1.2.99 (10.1.2.99) 56(84) bytes of data.
    64 bytes from 10.1.2.99: icmp_seq=1 ttl=64 time=1.58 ms
    64 bytes from 10.1.2.99: icmp_seq=2 ttl=64 time=0.242 ms
    64 bytes from 10.1.2.99: icmp_seq=3 ttl=64 time=0.295 ms
    

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

Anda dapat mencadangkan alamat IP internal statis untuk contoh Anda. Konfigurasi ini memungkinkan beberapa aturan penerusan internal menggunakan alamat IP yang sama dengan protokol dan port yang berbeda. Backend contoh load balancer Anda masih harus berada di region us-west1.

Diagram berikut menunjukkan arsitektur untuk contoh ini.

Melakukan load balancing traffic berdasarkan protokol, dengan layanan backend untuk
    mengelola distribusi koneksi ke satu grup instance zonal.
Load Balancer Jaringan passthrough internal untuk beberapa protokol yang menggunakan alamat IP internal statis (klik untuk memperbesar).

Anda juga dapat mempertimbangkan untuk menggunakan konfigurasi aturan penerusan berikut:

  • Aturan penerusan dengan beberapa port:

    • Protokol TCP dengan port 80,8080
    • Protokol L3_DEFAULT dengan port ALL
  • Aturan penerusan dengan semua port:

    • Protokol TCP dengan port ALL
    • Protokol L3_DEFAULT dengan port ALL

Mencadangkan alamat IPv4 internal statis

Cadangkan alamat IP internal statis untuk 10.1.2.99 dan tetapkan tanda --purpose-nya ke SHARED_LOADBALANCER_VIP. Flag --purpose diperlukan agar banyak aturan penerusan dapat menggunakan alamat IP internal yang sama.

gcloud

Gunakan perintah gcloud compute addresses create:

gcloud compute addresses create internal-lb-ipv4 \
    --region us-west1 \
    --subnet lb-subnet \
    --purpose SHARED_LOADBALANCER_VIP \
    --addresses 10.1.2.99

API

Panggil metode addresses.insert. Ganti PROJECT_ID dengan ID project Google Cloud Anda.

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

Isi permintaan harus menyertakan addressType, yang harus berupa INTERNAL, name alamat, dan subnetwork tempat alamat IP tersebut berada. Anda harus menentukan address sebagai 10.1.2.99.

{
  "addressType": "INTERNAL",
  "name": "internal-lb-ipv4",
  "subnetwork": "regions/us-west1/subnetworks/lb-subnet",
  "purpose": "SHARED_LOADBALANCER_VIP",
  "address": "10.1.2.99"
}

Mengonfigurasi komponen load balancer

Konfigurasikan tiga load balancer dengan komponen berikut:

  • Load balancer pertama memiliki aturan penerusan dengan protokol TCP dan port 80. Traffic TCP yang tiba di alamat IP internal pada port 80 ditangani oleh aturan penerusan TCP.
  • Load balancer kedua memiliki aturan penerusan dengan protokol UDP dan port 53. Traffic UDP yang tiba di alamat IP internal pada port 53 ditangani oleh aturan penerusan UDP.
  • Load balancer ketiga memiliki aturan penerusan dengan protokol L3_DEFAULT dan port ALL. Semua traffic lain yang tidak cocok dengan aturan penerusan TCP atau UDP ditangani oleh aturan penerusan L3_DEFAULT.
  • Ketiga load balancer tersebut memiliki alamat IP internal statis yang sama (internal-lb-ipv4) dalam aturan penerusannya.

Membuat load balancer pertama

Buat load balancer pertama untuk traffic TCP di port 80.

gcloud

  1. Buat layanan backend untuk traffic TCP:

    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
    
  2. Tambahkan grup instance ke layanan backend:

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    
  3. Buat aturan penerusan untuk layanan backend. Gunakan alamat IP internal statis yang direservasi (internal-lb-ipv4) untuk alamat IP internal.

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

API

  1. Buat layanan backend regional dengan membuat permintaan POST ke metode regionBackendServices.insert. Ganti PROJECT_ID dengan ID project Google Cloud 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"
     }
    ],
    "healthChecks": [
     "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80"
    ],
    "loadBalancingScheme": "INTERNAL",
    "protocol": "TCP",
    "connectionDraining": {
     "drainingTimeoutSec": 0
    }
    }
    

  2. Create the forwarding rule by making a POST request to the forwardingRules.insert method:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
    
    {
    "name": "fr-ilb",
    "IPAddress": "internal-lb-ipv4",
    "IPProtocol": "TCP",
    "ports": [
     "80"
    ],
    "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"
    }
    

Membuat load balancer kedua

Buat load balancer kedua untuk traffic UDP di port 53.

gcloud

  1. Buat layanan backend dengan protokol yang ditetapkan ke UDP:

    gcloud compute backend-services create be-ilb-udp \
        --load-balancing-scheme=internal \
        --protocol=UDP \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --health-checks-region=us-west1
    
  2. Tambahkan grup instance ke layanan backend:

    gcloud compute backend-services add-backend be-ilb-udp \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    
  3. Buat aturan penerusan untuk layanan backend. Gunakan alamat IP internal statis yang direservasi (internal-lb-ipv4) untuk alamat IP internal.

    gcloud compute forwarding-rules create fr-ilb-udp \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=internal-lb-ipv4 \
        --ip-protocol=UDP \
        --ports=53 \
        --backend-service=be-ilb-udp \
        --backend-service-region=us-west1
    

API

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices
    {
    "name": "be-ilb-udp",
    "backends": [
     {
      "group": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instanceGroups/ig-a",
      "balancingMode": "CONNECTION"
     }
    ],
    "healthChecks": [
     "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/healthChecks/hc-http-80"
    ],
    "loadBalancingScheme": "INTERNAL",
    "protocol": "UDP",
    "connectionDraining": {
     "drainingTimeoutSec": 0
    }
    }
    
  2. Buat aturan penerusan dengan membuat permintaan POST ke metode forwardingRules.insert:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
    
    {
    "name": "fr-ilb-udp",
    "IPAddress": "internal-lb-ipv4",
    "IPProtocol": "UDP",
    "ports": [
     "53"
    ],
    "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-udp",
    "networkTier": "PREMIUM"
    }
    

Membuat load balancer ketiga

Buat aturan penerusan load balancer ketiga untuk menggunakan alamat IP internal statis yang direservasi.

gcloud

Buat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT untuk menangani semua traffic protokol IPv4 lainnya yang didukung. Gunakan alamat IP internal statis yang direservasi (internal-lb-ipv4) sebagai alamat IP internal.

gcloud compute forwarding-rules create fr-ilb-l3-default \
    --region=us-west1 \
    --load-balancing-scheme=internal \
    --network=lb-network \
    --subnet=lb-subnet \
    --address=internal-lb-ipv4 \
    --ip-protocol=L3_DEFAULT \
    --ports=ALL \
    --backend-service=be-ilb-l3-default \
    --backend-service-region=us-west1

API

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

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

{
"name": "fr-ilb-l3-default",
"IPAddress": "internal-lb-ipv4",
"IPProtocol": "L3_DEFAULT",
"ports": [
  "ALL"
],
"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-l3-default",
"networkTier": "PREMIUM"
}

Menguji load balancer

Untuk menguji load balancer, ikuti langkah-langkah di bagian sebelumnya.

Langkah selanjutnya