Menyiapkan Load Balancer Jaringan 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 pada traffic untuk beberapa protokol.

Agar dapat mengonfigurasi load balancer untuk beberapa protokol, termasuk TCP dan UDP, buat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT. Aturan penerusan ini mengarah ke layanan backend dengan protokol yang ditetapkan ke UNSPECIFIED.

Dalam contoh ini, kami menggunakan satu Load Balancer Jaringan passthrough internal untuk mendistribusikan traffic di seluruh VM backend di region us-west1. Load balancer ini 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 zona.
Load Balancer Jaringan passthrough internal untuk beberapa protokol (klik untuk memperbesar).

Sebelum memulai

Izin

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

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.

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 Anda hanya ingin menangani lalu lintas IPv4. Namun, traffic IPv6 memerlukan subnet mode kustom.
  • Subnet single-stack (stack-type yang ditetapkan ke IPv4), yang diperlukan untuk traffic IPv4. Saat membuat subnet stack tunggal pada jaringan VPC mode kustom, Anda memilih rentang subnet IPv4 untuk subnet tersebut. Untuk traffic IPv6, kami memerlukan subnet dual-stack (stack-type yang ditetapkan ke IPv4_IPv6). Saat membuat subnet dual stack pada jaringan VPC mode kustom, Anda memilih jenis akses IPv6 untuk subnet tersebut. 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 akan ditetapkan secara otomatis. Google menyediakan blok CIDR IPv6 dengan ukuran 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 zona.
    • 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 Jenis akses IPv6, 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 Subnet baru, masukkan informasi berikut:
      • Name: lb-subnet
      • Region: us-west1
      • Jenis stack IP: IPv4 (stack tunggal)
      • 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 tanda --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 traffic IPv4 saja, 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. Membuat 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 masuk, yang berlaku untuk semua target dalam jaringan VPC, yang memungkinkan 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 masuk, berlaku untuk semua target dalam jaringan VPC, yang memungkinkan traffic dari sumber dalam rentang IPv6 yang dikonfigurasi di subnet. Aturan ini mengizinkan lalu lintas IPv6 yang masuk dari klien mana pun yang terletak di {i>subnet<i}.

  • 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 hanya dapat menentukan rentang IP sistem tempat Anda memulai sesi SSH. Contoh ini menggunakan tag target allow-ssh untuk mengidentifikasi VM yang harus diberi tag tersebut.

  • fw-allow-health-check: Aturan masuk, yang berlaku untuk instance yang mengalami load balancing, yang memungkinkan 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.

  • fw-allow-health-check-ipv6: Aturan masuk, yang berlaku untuk instance yang di-load balanced, yang memungkinkan traffic dari sistem health check Google Cloud (2600:2d00:1:b029::/64). Contoh ini menggunakan tag target allow-health-check-ipv6 untuk mengidentifikasi instance yang 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 TCP, UDP, dan ICMP IPv4 untuk menjangkau grup instance backend ig-a:

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

  4. Untuk mengizinkan koneksi SSH masuk:

    • Klik Create firewall rule.
    • Name: 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
    • 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. Agar traffic TCP, UDP, dan ICMP IPv6 dapat menjangkau grup instance backend ig-a:

    • Klik Create firewall rule.
    • Name: fw-allow-lb-access-ipv6
    • Jaringan: lb-network
    • Prioritas: 1000
    • Direction of traffic: Masuk
    • Action on match: Izinkan
    • Target: 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 dan masukkan 0-65535.
      • Pilih UDP.
      • Pilih Lainnya dan masukkan 58 untuk protokol ICMPv6.
  7. Klik Create.

  8. Untuk mengizinkan health check IPv6 Google Cloud:

    • Klik Create firewall rule.
    • Name: 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
    • Protokol dan port: Izinkan semua
  9. Klik Create.

  10. Untuk mengizinkan health check IPv4 Google Cloud:

    • Klik Create firewall rule
    • Name: 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
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 130.211.0.0/22 dan 35.191.0.0/16
    • Protokol dan port: Izinkan semua
  11. Klik Create.

gcloud

  1. Untuk mengizinkan traffic TCP IPv4 untuk mencapai 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. Agar traffic IPv6 dapat 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 harus membuat grup instance Compute Engine yang terkelola menurut zona dan menginstal server web Apache.

Untuk menangani traffic IPv4 dan IPv6, konfigurasikan VM backend menjadi dual-stack. 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, baca bagian Ringkasan Load Balancer Jaringan passthrough internal: Aturan penerusan.

Jika Anda ingin menggunakan VM yang ada sebagai backend, perbarui 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.

Demi kemudahan instruksi, 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 Instance templates

    1. Klik Create instance template.
    2. Untuk Name, masukkan vm-a1.
    3. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 10 (buster). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Klik Networking, disks, security, management, sole tenancy.
    5. Klik Management dan 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. Klik Networking.

      1. Untuk Tag jaringan, tambahkan allow-ssh dan allow-health-check-ipv6.
      2. Untuk Network interfaces, klik antarmuka default, lalu konfigurasikan kolom berikut:
        • Jaringan: lb-network
        • Subjaringan: lb-subnet
        • Jenis stack IP: IPv4 dan 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 Instance templates

    1. Klik Create instance template.
    2. Untuk Name, masukkan vm-a1.
    3. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 10 (buster). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Klik Networking, disks, security, management, sole tenancy.
    5. Klik Management dan 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. Klik Networking.

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

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

    Buka Instance groups

    1. Klik Create grup instance.
    2. Pilih Grup instance terkelola baru (stateless). Untuk mengetahui 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 Autoscaling:

      • 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 yang menginstal bash.

  1. Buat template instance VM dengan server HTTP menggunakan 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-10 \
        --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-10 \
        --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 tersebut 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 akan 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. Setel Zone ke us-west1-a.

  5. Klik Pengelolaan, keamanan, disk, jaringan, tenancy tunggal, lalu lakukan perubahan berikut:

    • Klik Networking dan tambahkan allow-ssh ke Tag jaringan.
    • Di bagian Network interfaces, klik Edit, lakukan perubahan berikut, lalu klik Done:
      • Jaringan: lb-network
      • Subnet: lb-subnet
      • Jenis stack IP: IPv4 dan IPv6 (dual-stack)
      • IP internal utama: Ephemeral (otomatis)
      • IP Eksternal: Efemeral
  6. Klik Create.

gcloud

VM klien dapat berada di zona mana pun dalam 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-10 \
    --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. Klik Advanced options.

  6. Klik Networking dan konfigurasikan kolom berikut:

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

gcloud

VM klien dapat berada di zona mana pun dalam 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-10 \
    --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. Membuat health check HTTP untuk port 80. Health check ini digunakan untuk memverifikasi kondisi backend di 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 disetel 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. Menghubungkan ke instance VM klien.

    gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
    
  2. Jelaskan fr-ilb-ipv6 aturan penerusan 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 efemeral 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 ini:

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

gcloud:IPv4

  1. Menghubungkan ke instance VM klien.

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

    gcloud compute forwarding-rules describe fr-ilb --region=us-west1
    
  3. Buat permintaan web ke load balancer dengan menggunakan curl untuk menghubungi alamat IP-nya. Ulangi permintaan tersebut sehingga Anda dapat melihat bahwa respons berasal dari VM backend yang berbeda. Nama VM yang menghasilkan respons ditampilkan dalam teks di 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 melayani 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. Menghubungkan ke instance VM klien.

    gcloud compute ssh vm-client-ipv6 --zone=us-west1-a
    
  2. Mencoba melakukan ping ke alamat IPv6 load balancer. Ganti IPV6_ADDRESS dengan alamat IPv6 efemeral 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. Menghubungkan ke instance VM klien.

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

    ping 10.1.2.99
    

    Output-nya 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 sebagai contoh. Dengan konfigurasi ini, beberapa aturan penerusan internal dapat menggunakan alamat IP yang sama dengan protokol dan port yang berbeda. Backend dari load balancer contoh Anda harus tetap berada di region us-west1.

Diagram berikut menunjukkan arsitektur untuk contoh ini.

Traffic load balancing berdasarkan protokol, dengan layanan backend untuk mengelola distribusi koneksi ke satu grup instance zona.
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

Cadangkan alamat IPv4 internal statis

Cadangkan alamat IP internal statis untuk 10.1.2.99 dan tetapkan flag --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 yang memiliki alamat IP. 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

Konfigurasi 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 pada 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. Membuat aturan penerusan untuk layanan backend. Gunakan alamat IP internal statis yang dicadangkan (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. 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",
    "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 pada port 53.

gcloud

  1. Buat layanan backend dengan protokol yang disetel 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. Membuat aturan penerusan untuk layanan backend. Gunakan alamat IP internal statis yang dicadangkan (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 dari load balancer ketiga untuk menggunakan alamat IP internal statis yang dicadangkan.

gcloud

Buat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT untuk menangani semua traffic protokol IPv4 lain yang didukung. Gunakan alamat IP internal statis yang dicadangkan (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