Menyiapkan Network Load Balancer passthrough internal dengan backend grup instance VM

Panduan ini menggunakan contoh untuk mengajarkan dasar-dasar Load Balancer Jaringan passthrough internal Google Cloud. Sebelum mengikuti panduan ini, pahami hal-hal berikut:


Jika ingin mengikuti panduan langkah demi langkah untuk tugas ini langsung di Konsol Google Cloud, klik Pandu saya:

Pandu saya


Izin

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

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

Untuk informasi selengkapnya, lihat panduan berikut:

Menyiapkan load balancer dengan subnet satu stack

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

  1. Contoh yang menggunakan jaringan VPC mode kustom bernama lb-network.
  2. Subnet single-stack (stack-type ditetapkan ke IPv4), yang diperlukan untuk traffic IPv4. Saat membuat subnet stack tunggal di jaringan VPC mode kustom, Anda memilih rentang subnet IPv4 untuk subnet.
  3. Aturan firewall yang mengizinkan koneksi masuk ke VM backend.
  4. Grup instance backend, yang terletak di region dan subnet berikut untuk contoh ini:
    • Region: us-west1
    • Subnet: lb-subnet, dengan rentang alamat IPv4 utama 10.1.2.0/24.
  5. Empat VM backend: dua VM dalam grup instance tidak terkelola di zona us-west1-a dan dua VM dalam grup instance tidak terkelola di zona us-west1-c. Untuk menunjukkan akses global, contoh ini membuat VM klien pengujian kedua di region dan subnet yang berbeda:
    • Region: europe-west1
    • Subnet: europe-subnet, dengan rentang alamat IP utama 10.3.4.0/24
  6. Satu VM klien untuk menguji koneksi.
  7. Komponen Load Balancer Jaringan passthrough internal berikut:
    • Health check untuk layanan backend.
    • Layanan backend internal di region us-west1 untuk mengelola distribusi koneksi ke dua grup instance zona.
    • Aturan penerusan internal dan alamat IP internal untuk frontend load balancer.

Arsitektur untuk contoh ini terlihat seperti ini:

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

Mengonfigurasi jaringan, region, dan subnet

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

Konsol

  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 Subnets, lakukan hal berikut:

    1. Setel Subnet creation mode ke Custom.
    2. 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
    3. Klik Done.
    4. Klik Tambahkan subnet, lalu masukkan informasi berikut:
      • Nama: europe-subnet
      • Region: europe-west1
      • Jenis stack IP: IPv4 (single-stack)
      • Rentang alamat IP: 10.3.4.0/24
    5. Klik Done.
  5. Klik Create.

gcloud

  1. Buat jaringan VPC kustom:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Di jaringan lb-network, buat subnet untuk backend di region us-west1:

    gcloud compute networks subnets create lb-subnet \
      --network=lb-network \
      --range=10.1.2.0/24 \
      --region=us-west1
    
  3. Di jaringan lb-network, buat subnet lain untuk menguji akses global di region europe-west1:

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

API

Buat permintaan POST ke metode networks.insert.

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

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

Buat 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
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/europe-west1/subnetworks

{
 "name": "europe-subnet",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
  "ipCidrRange": "10.3.4.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 dan 10.3.4.0/24. Aturan ini mengizinkan traffic masuk dari klien mana pun yang terletak di salah satu dari dua subnet. Kemudian, Anda dapat mengonfigurasi dan menguji akses global.

  • 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 akan 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.

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 subnet, klik Buat aturan firewall dan masukkan informasi berikut:

    • Nama: fw-allow-lb-access
    • Jaringan: lb-network
    • Prioritas: 1000
    • Direction of traffic: ingress
    • Tindakan jika ada kecocokan: izinkan
    • Targets: All instances in the network
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 10.1.2.0/24
    • Protocols and ports: Allow all
  3. Klik Create.

  4. Untuk mengizinkan koneksi SSH yang masuk, klik Create firewall rule lagi dan masukkan informasi berikut:

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

  6. Untuk mengizinkan health check Google Cloud, klik Create firewall rule untuk ketiga kalinya dan masukkan informasi berikut:

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

gcloud

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

    gcloud compute firewall-rules create fw-allow-lb-access \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.1.2.0/24,10.3.4.0/24 \
        --rules=tcp,udp,icmp
    
  2. Buat aturan firewall fw-allow-ssh untuk mengizinkan konektivitas SSH ke VM dengan 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. Buat aturan fw-allow-health-check untuk mengizinkan health check Google Cloud.

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

API

Buat aturan firewall fw-allow-lb-access 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",
 "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
 "priority": 1000,
 "sourceRanges": [
   "10.1.2.0/24", "10.3.4.0/24"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp"
   },
   {
     "IPProtocol": "udp"
   },
   {
     "IPProtocol": "icmp"
   }
 ],
 "direction": "INGRESS",
 "logConfig": {
   "enable": false
 },
 "disabled": false
}

Buat aturan firewall fw-allow-ssh dengan membuat permintaan POST ke metode firewalls.insert.

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

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

Buat aturan firewall fw-allow-health-check dengan membuat permintaan POST ke metode firewalls.insert.

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

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

Membuat VM backend dan grup instance

Contoh ini menggunakan dua grup instance tidak terkelola yang masing-masing memiliki dua VM backend (server). Untuk mendemonstrasikan sifat regional Load Balancer Jaringan passthrough internal, kedua grup instance ditempatkan di zona terpisah, us-west1-a dan us-west1-c.

  • Grup instance ig-a berisi dua VM berikut:
    • vm-a1
    • vm-a2
  • Grup instance ig-c berisi dua VM berikut:
    • vm-c1
    • vm-c2

Traffic ke keempat VM backend di-load balancing.

Untuk mendukung contoh ini dan opsi konfigurasi tambahan, setiap VM menjalankan server web Apache yang memproses port TCP berikut: 80, 8008, 8080, 8088, 443, dan 8443.

Setiap VM diberi alamat IP internal di lb-subnet dan alamat IP eksternal (publik) sementara. Anda dapat menghapus alamat IP eksternal nanti.

Alamat IP eksternal untuk VM backend tidak diperlukan; tetapi, alamat IP tersebut berguna untuk contoh ini karena mengizinkan VM backend mendownload Apache dari internet, dan dapat terhubung menggunakan SSH.

Secara default, Apache dikonfigurasi untuk mengikat ke alamat IP apa pun. Load Balancer Jaringan passthrough internal mengirimkan paket dengan mempertahankan IP tujuan. Pastikan software server yang berjalan di VM backend Anda memproses alamat IP aturan penerusan internal load balancer. Jika Anda mengonfigurasi beberapa aturan penerusan internal, pastikan software Anda memproses alamat IP internal yang terkait dengan setiap aturan. Alamat IP tujuan paket yang dikirim ke VM backend oleh Load Balancer Jaringan passthrough internal adalah alamat IP internal aturan penerusan.

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

Konsol

Membuat VM backend

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

    Buka instance VM

  2. Ulangi langkah 3 hingga 8 untuk setiap VM, menggunakan kombinasi nama dan zona berikut.

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

  4. Tetapkan Name seperti yang ditunjukkan pada langkah 2.

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

  6. Di bagian Boot disk, pastikan Debian GNU/Linux 12 (bookworm) dipilih untuk opsi boot disk. Jika perlu, klik Ganti untuk mengubah gambar.

  7. Klik Advanced options.

  8. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh dan allow-health-check.
    2. Untuk Network interfaces, pilih dari daftar berikut:
      • Jaringan: lb-network
      • Subnet: lb-subnet
      • Jenis stack IP: IPv4 (single-stack)
      • Primary internal IPv4 address: Ephemeral (automatic)
      • External IPv4 address: Ephemeral
  9. Klik Management, lalu di kolom Startup script, masukkan skrip berikut. Konten skrip identik untuk keempat VM.

    
    #! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed
    
  10. Klik Create.

Membuat grup instance

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

    Buka Instance groups

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

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

  4. Klik New unmanaged instance group.

  5. Tetapkan Name seperti yang ditunjukkan pada langkah 2.

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

  7. Untuk Network, pilih lb-network.

  8. Untuk Subnetwork, pilih lb-subnet.

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

  10. Klik Create.

gcloud

  1. Buat empat VM dengan menjalankan perintah berikut empat kali, menggunakan empat kombinasi ini untuk [VM-NAME] dan [ZONE]. Konten skrip sama untuk keempat VM.

    • VM-NAME: vm-a1, ZONE: us-west1-a
    • VM-NAME: vm-a2, ZONE: us-west1-a
    • VM-NAME: vm-c1, ZONE: us-west1-c
    • VM-NAME: vm-c2, ZONE: us-west1-c
    gcloud compute instances create VM-NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --metadata=startup-script='#! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed'
    
  2. Buat dua grup instance tidak terkelola di setiap zona:

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

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

API

Untuk empat VM, gunakan nama dan zona VM berikut:

  • VM-NAME: vm-a1, ZONE: us-west1-a
  • VM-NAME: vm-a2, ZONE: us-west1-a
  • VM-NAME: vm-c1, ZONE: us-west1-c
  • VM-NAME: vm-c2, ZONE: us-west1-c

Anda bisa mendapatkan DEBIAN_IMAGE_NAME saat ini dengan menjalankan perintah gcloud berikut:

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

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

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

{
 "name": "VM-NAME",
 "tags": {
   "items": [
     "allow-health-check",
     "allow-ssh"
   ]
 },
 "machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/[ZONE]/machineTypes/e2-standard-2",
 "canIpForward": false,
 "networkInterfaces": [
   {
     "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "VM-NAME",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/debian-image-name",
       "diskType": "projects/PROJECT_ID/zones/zone/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "metadata": {
   "items": [
     {
       "key": "startup-script",
       "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nfile_ports=\"/etc/apache2/ports.conf\"\nfile_http_site=\"/etc/apache2/sites-available/000-default.conf\"\nfile_https_site=\"/etc/apache2/sites-available/default-ssl.conf\"\nhttp_listen_prts=\"Listen 80\\nListen 8008\\nListen 8080\\nListen 8088\"\nhttp_vh_prts=\"*:80 *:8008 *:8080 *:8088\"\nhttps_listen_prts=\"Listen 443\\nListen 8443\"\nhttps_vh_prts=\"*:443 *:8443\"\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\nprt_conf=\"$(cat \"$file_ports\")\"\nprt_conf_2=\"$(echo \"$prt_conf\" | sed \"s|Listen 80|${http_listen_prts}|\")\"\nprt_conf=\"$(echo \"$prt_conf_2\" | sed \"s|Listen 443|${https_listen_prts}|\")\"\necho \"$prt_conf\" | tee \"$file_ports\"\nhttp_site_conf=\"$(cat \"$file_http_site\")\"\nhttp_site_conf_2=\"$(echo \"$http_site_conf\" | sed \"s|*:80|${http_vh_prts}|\")\"\necho \"$http_site_conf_2\" | tee \"$file_http_site\"\nhttps_site_conf=\"$(cat \"$file_https_site\")\"\nhttps_site_conf_2=\"$(echo \"$https_site_conf\" | sed \"s|_default_:443|${https_vh_prts}|\")\"\necho \"$https_site_conf_2\" | tee \"$file_https_site\"\nsystemctl restart apache2"
     }
   ]
 },
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Buat dua 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"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups

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

Tambahkan instance ke setiap grup instance dengan membuat permintaan POST ke metode instanceGroups.addInstances.

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

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

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

Mengonfigurasi komponen load balancer

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

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

  • Layanan backend: Karena Anda perlu meneruskan traffic HTTP melalui load balancer internal, Anda harus menggunakan TCP, bukan UDP.

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

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

Konsol

Memulai konfigurasi

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

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
  4. Untuk Proxy or passthrough, pilih Passthrough load balancer, lalu klik Next.
  5. Untuk Public facing or internal, pilih Internal, lalu klik Next.
  6. Klik Konfigurasikan.

Konfigurasi dasar

Di halaman Membuat Load Balancer Jaringan passthrough internal, masukkan informasi berikut:

  • Nama load balancer: be-ilb
  • Region: us-west1
  • Jaringan: lb-network

Mengonfigurasi backend

  1. Klik Backend configuration.
  2. Untuk hanya menangani traffic IPv4, di bagian New Backend pada Backends, pilih IP stack type sebagai IPv4 (single-stack).
  3. Di Instance group, pilih grup instance ig-c, lalu klik Done.
  4. Klik Add a backend, lalu ulangi langkah untuk menambahkan ig-a.
  5. Dari daftar Health check, pilih Create a health check, masukkan informasi berikut, lalu klik Save.

    • Nama: hc-http-80
    • Protocol: HTTP
    • Port: 80
    • Protokol proxy: NONE
    • Jalur permintaan: /

    Perhatikan bahwa saat Anda menggunakan konsol Google Cloud untuk membuat load balancer, health check bersifat global. Jika Anda ingin membuat health check regional, gunakan gcloud atau API.

  6. Pastikan ada tanda centang biru di samping Backend configuration sebelum melanjutkan.

Mengonfigurasi frontend

  1. Klik Frontend configuration.
  2. Di bagian New Frontend IP and port, lakukan hal berikut:
    1. Untuk Name, masukkan fr-ilb.
    2. Untuk Subnetwork, pilih lb-subnet.
    3. Di bagian Internal IP purpose, dalam daftar IP address, pilih Create IP address, masukkan informasi berikut, lalu klik Reserve.
      • Nama: ip-ilb
      • Versi IP: IPv4
      • Static IP address: Let me choose
      • Alamat IP kustom: 10.1.2.99
    4. Untuk Ports, pilih Multiple, lalu di Port numbers, masukkan 80,8008,8080, dan 8088.
    5. Pastikan ada tanda centang biru di samping Frontend configuration sebelum melanjutkan.

Meninjau konfigurasi

  1. Klik Review and finalize.
  2. Tinjau setelan konfigurasi load balancer Anda.
  3. Opsional: Klik Equivalent code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
  4. Klik Create.

gcloud

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

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

    gcloud compute backend-services create be-ilb \
        --load-balancing-scheme=internal \
        --protocol=tcp \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --health-checks-region=us-west1
    
  3. Tambahkan dua 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
    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c
    
  4. Buat aturan penerusan untuk layanan backend. Saat Anda membuat aturan penerusan, tentukan 10.1.2.99 untuk alamat IP internal di subnet.

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

API

Buat health check dengan membuat permintaan POST ke metode regionHealthChecks.insert.

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

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

Buat layanan backend regional dengan membuat permintaan POST ke metode regionBackendServices.insert.

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

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

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": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
  "80", "8008", "8080", "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

Menguji load balancer

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

Membuat VM klien

Contoh ini membuat VM klien (vm-client) 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.

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 Region, pilih us-west1.

  5. Untuk Zone, pilih us-west1-a.

  6. Klik Advanced options.

  7. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih dari daftar berikut:
      • Jaringan: lb-network
      • Subnet: lb-subnet
  8. Klik Create.

gcloud

VM klien dapat berada di zona mana pun di region yang sama dengan load balancer, dan dapat menggunakan subnet mana 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.

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
}

Menguji koneksi dari VM klien

Pengujian ini menghubungi load balancer dari VM klien terpisah; yaitu, bukan dari VM backend load balancer. Perilaku yang diharapkan adalah traffic didistribusikan di antara empat VM backend karena tidak ada afinitas sesi yang telah dikonfigurasi.

  1. Hubungkan ke instance VM klien.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Buat permintaan web ke load balancer menggunakan curl untuk menghubungi alamat IP-nya. Ulangi permintaan sehingga Anda dapat melihat bahwa respons berasal dari VM backend yang berbeda. Nama VM yang menghasilkan respons ditampilkan dalam teks dalam respons HTML, berdasarkan konten /var/www/html/index.html di setiap VM backend. Misalnya, respons yang diharapkan akan terlihat seperti Page served from: vm-a1 dan Page served from: vm-a2.

    curl http://10.1.2.99
    

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

    curl http://10.1.2.99:8008
    

    Jika menambahkan label layanan ke aturan penerusan internal, Anda dapat menggunakan DNS internal untuk menghubungi load balancer menggunakan nama layanannya.

      curl http://web-test.fr-ilb.il4.us-west1.lb.PROJECT_ID.internal
      

Melakukan ping ke alamat IP load balancer

Pengujian ini menunjukkan perilaku yang diharapkan: Anda tidak dapat melakukan ping ke alamat IP load balancer. Hal ini karena Load Balancer Jaringan passthrough internal diterapkan dalam pemrograman jaringan virtual — bukan perangkat terpisah.

  1. Hubungkan ke instance VM klien.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Coba ping alamat IP load balancer. Perhatikan bahwa Anda tidak mendapatkan respons dan waktu tunggu perintah ping habis setelah 10 detik dalam contoh ini.

    timeout 10 ping 10.1.2.99
    

Mengirim permintaan dari VM yang di-load balanced

Pengujian ini menunjukkan bahwa saat VM backend mengirim paket ke alamat IP aturan penerusan load balancer-nya, permintaan tersebut akan dialihkan kembali ke dirinya sendiri. Hal ini berlaku terlepas dari status health check VM backend.

Load Balancer Jaringan passthrough internal diterapkan menggunakan konfigurasi VM dan pemrograman jaringan virtual di OS tamu. Di VM Linux, Lingkungan tamu membuat rute untuk alamat IP load balancer di tabel perutean lokal sistem operasi.

Karena rute lokal ini berada dalam VM itu sendiri (bukan rute di jaringan VPC), paket yang dikirim ke alamat IP load balancer tidak diproses oleh jaringan VPC. Sebagai gantinya, paket yang dikirim ke alamat IP load balancer tetap berada dalam sistem operasi VM.

  1. Hubungkan ke VM backend, seperti vm-a1:

    gcloud compute ssh vm-a1 --zone=us-west1-a
    
  2. Buat permintaan web ke load balancer (menurut alamat IP atau nama layanan) menggunakan curl. Respons berasal dari VM backend yang sama dengan yang membuat permintaan. Permintaan berulang dijawab dengan cara yang sama. Respons yang diharapkan saat pengujian dari vm-a1 selalu Page served from: vm-a1.

    curl http://10.1.2.99
    
  3. Periksa tabel perutean lokal, cari tujuan yang cocok dengan alamat IP load balancer itu sendiri, 10.1.2.99. Rute ini adalah bagian yang diperlukan dari Load Balancer Jaringan passthrough internal, tetapi juga menunjukkan alasan permintaan dari VM di balik load balancer selalu direspons oleh VM yang sama.

    ip route show table local | grep 10.1.2.99
    

Saat VM backend untuk Load Balancer Jaringan passthrough internal mengirim paket ke alamat IP aturan penerusan load balancer, paket selalu dirutekan kembali ke VM yang membuat permintaan. Hal ini karena Load Balancer Jaringan passthrough internal adalah load balancer pass-through dan diimplementasikan dengan membuat rute lokal untuk alamat IP load balancer dalam OS tamu VM, seperti yang ditunjukkan di bagian ini. Jika Anda memiliki kasus penggunaan saat backend dengan load balancing perlu mengirim traffic TCP ke alamat IP load balancer, dan Anda perlu mendistribusikan traffic seolah-olah berasal dari backend tanpa load balancing, pertimbangkan untuk menggunakan Load Balancer Jaringan proxy internal regional.

Untuk mengetahui informasi selengkapnya, lihat Load Balancer Jaringan passthrough internal sebagai next hop.

Menyiapkan load balancer dengan subnet stack ganda

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

  1. Contoh di halaman ini menggunakan jaringan VPC mode kustom bernama lb-network-dual-stack. Traffic IPv6 memerlukan subnet mode kustom.
  2. Subnet dual-stack (stack-type ditetapkan ke IPv4_IPv6), yang diperlukan untuk traffic IPv6. Saat membuat subnet stack ganda 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. Untuk mengetahui petunjuknya, lihat dokumentasi VPC tentang Menambahkan subnet stack ganda.
  3. Aturan firewall yang mengizinkan koneksi masuk ke VM backend.
  4. Grup instance backend, yang terletak di region dan subnet berikut untuk contoh ini:
    • Region: us-west1
    • Subnet: lb-subnet, dengan rentang alamat IPv4 utama 10.1.2.0/24. Meskipun Anda memilih rentang alamat IPv4 yang akan dikonfigurasi di subnet, rentang alamat IPv6 ditetapkan secara otomatis. Google menyediakan blok CIDR IPv6 berukuran tetap (/64).
  5. Empat VM dual-stack backend: dua VM dalam grup instance yang tidak dikelola di zona us-west1-a dan dua VM dalam grup instance yang tidak dikelola di zona us-west1-c. Untuk menunjukkan akses global, contoh ini membuat VM klien pengujian kedua di region dan subnet yang berbeda:
    • Region: europe-west1
    • Subnet: europe-subnet, dengan rentang alamat IP utama 10.3.4.0/24
  6. Satu VM klien untuk menguji koneksi.
  7. Komponen Load Balancer Jaringan passthrough internal berikut:
    • Health check untuk layanan backend.
    • Layanan backend internal di region us-west1 untuk mengelola distribusi koneksi ke dua grup instance zona.
    • Dua aturan penerusan internal untuk frontend load balancer.

Diagram berikut menunjukkan arsitektur untuk contoh ini:

Jaringan VPC stack ganda dengan layanan backend untuk mengelola distribusi koneksi ke dua grup instance zonal.
Contoh konfigurasi Load Balancer Jaringan passthrough internal (klik untuk memperbesar).

Mengonfigurasi jaringan, region, dan subnet

Contoh Load Balancer Jaringan passthrough internal yang dijelaskan di halaman ini dibuat di jaringan VPC mode kustom bernama lb-network-dual-stack.

Untuk mengonfigurasi subnet dengan rentang IPv6 internal, aktifkan rentang IPv6 internal ULA jaringan VPC. Rentang subnet IPv6 internal dialokasikan dari rentang ini.

Konsol

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Untuk Name, masukkan lb-network-dual-stack.

  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:

    • Nama: lb-subnet
    • Region: us-west1
    • IP stack type: IPv4 and IPv6 (dual-stack)
    • Rentang IPv4: 10.1.2.0/24.
    • Jenis akses IPv6: Internal
  7. Klik Done.

  8. Klik Tambahkan subnet, lalu masukkan informasi berikut:

    • Nama: europe-subnet
    • Region: europe-west1
    • Jenis stack IP: IPv4 (single-stack)
    • Rentang alamat IP: 10.3.4.0/24
  9. Klik Done.

  10. Klik Create.

gcloud

  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. Jika Anda ingin memilih rentang IPv6 /48 yang ditetapkan, gunakan flag --internal-ipv6-range untuk menentukan rentang.

    gcloud compute networks create lb-network-dual-stack \
     --subnet-mode=custom \
     --enable-ula-internal-ipv6 \
     --internal-ipv6-range=ULA_IPV6_RANGE \
     --bgp-routing-mode=regional
    

    Ganti ULA_IPV6_RANGE dengan awalan /48 dari dalam rentang fd20::/20 yang digunakan oleh Google untuk rentang subnet IPv6 internal. Jika Anda tidak menggunakan flag --internal-ipv6-range, Google akan memilih awalan /48 untuk jaringan tersebut, seperti fd20:bc7:9a1c::/48.

  2. Dalam jaringan NETWORK, buat subnet untuk backend di region us-west1 dan subnet lain untuk menguji akses global di region europe-west1.

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

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

API

Buat jaringan VPC mode kustom baru.

Untuk mengonfigurasi rentang IPv6 internal pada subnet apa pun di jaringan ini, tetapkan enableUlaInternalIpv6 ke benar. Opsi ini menetapkan rentang /48 dari dalam rentang fd20::/20 yang digunakan oleh Google untuk rentang subnet IPv6 internal. Jika Anda ingin memilih rentang IPv6 /48 yang ditetapkan, gunakan juga kolom internalIpv6Range untuk menentukan rentang.

 POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks
 {
   "autoCreateSubnetworks": false,
   "name": "lb-network-dual-stack",
   "mtu": MTU,
   "enableUlaInternalIpv6": true,
   "internalIpv6Range": "ULA_IPV6_RANGE",
   "routingConfig": {
   "routingMode": "DYNAMIC_ROUTING_MODE"
  }
 }
 

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.
  • ULA_IPV6_RANGE: awalan /48 dari dalam rentang fd20::/20 yang digunakan oleh Google untuk rentang subnet IPv6 internal. Jika Anda tidak memberikan nilai untuk internalIpv6Range, Google akan memilih awalan /48 untuk jaringan tersebut.
  • DYNAMIC_ROUTING_MODE: global atau regional untuk mengontrol perilaku iklan rute Cloud Router di jaringan. Untuk informasi selengkapnya, lihat mode pemilihan rute dinamis.

    Untuk mengetahui informasi selengkapnya, lihat metode networks.insert.

Buat dua 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-dual-stack",
   "name": "lb-subnet"
   "stackType": IPV4_IPV6,
   "ipv6AccessType": Internal
 }
 

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

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 dan 10.3.4.0/24. Aturan ini mengizinkan traffic masuk dari klien mana pun yang terletak di salah satu dari dua subnet. Kemudian, Anda dapat mengonfigurasi dan menguji akses global.

  • 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 berada di salah satu dari dua subnet. Kemudian, Anda dapat mengonfigurasi dan menguji akses global.

  • 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 membuat aturan yang mengizinkan traffic subnet, klik Create firewall rule dan masukkan informasi berikut:

    • Nama: fw-allow-lb-access
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Direction of traffic: ingress
    • Tindakan jika ada kecocokan: izinkan
    • Targets: All instances in the network
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 10.1.2.0/24 dan 10.3.4.0/24
    • Protocols and ports: Allow all
  3. Klik Create.

  4. Untuk mengizinkan traffic subnet IPv6, klik Create firewall rule lagi dan masukkan informasi berikut:

    • Nama: fw-allow-lb-access-ipv6
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Direction of traffic: ingress
    • Tindakan jika ada kecocokan: izinkan
    • Targets: All instances in the network
    • Filter sumber: Rentang IPv6
    • Rentang IPv6 sumber: IPV6_ADDRESS ditetapkan di lb-subnet
    • Protocols and ports: Allow all
  5. Klik Create.

  6. Untuk mengizinkan koneksi SSH yang masuk, klik Create firewall rule lagi dan masukkan informasi berikut:

    • Nama: fw-allow-ssh
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Direction of traffic: ingress
    • Tindakan terhadap kecocokan: izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-ssh
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 0.0.0.0/0
    • Protocols and ports: Pilih Specified protocols and ports, pilih kotak centang TCP, lalu masukkan 22 di Ports.
  7. Klik Create.

  8. Untuk mengizinkan health check IPv6 Google Cloud, klik Create firewall rule lagi dan masukkan informasi berikut:

    • Nama: fw-allow-health-check-ipv6
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Direction of traffic: ingress
    • Tindakan terhadap kecocokan: 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 Google Cloud, klik Create firewall rule lagi dan masukkan informasi berikut:

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

gcloud

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

    gcloud compute firewall-rules create fw-allow-lb-access \
        --network=lb-network-dual-stack \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.1.2.0/24,10.3.4.0/24 \
        --rules=all
    
  2. Buat aturan firewall fw-allow-lb-access-ipv6 untuk mengizinkan komunikasi dengan subnet:

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

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

  3. Buat aturan firewall fw-allow-ssh untuk mengizinkan konektivitas SSH ke VM dengan 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-dual-stack \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  4. 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-dual-stack \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check-ipv6 \
        --source-ranges=2600:2d00:1:b029::/64 \
        --rules=tcp,udp
    
  5. Buat aturan fw-allow-health-check untuk mengizinkan health check Google Cloud.

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

API

  1. Buat aturan firewall fw-allow-lb-access 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",
    "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
    "priority": 1000,
    "sourceRanges": [
      "10.1.2.0/24", "10.3.4.0/24"
    ],
    "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-dual-stack",
     "priority": 1000,
     "sourceRanges": [
       "IPV6_ADDRESS"
     ],
     "allowed": [
       {
          "IPProtocol": "tcp"
        },
        {
          "IPProtocol": "udp"
        },
        {
          "IPProtocol": "icmp"
        }
     ],
     "direction": "INGRESS",
     "logConfig": {
        "enable": false
     },
     "disabled": false
    }
    

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

  3. Buat aturan firewall fw-allow-ssh dengan membuat 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-dual-stack",
    "priority": 1000,
    "sourceRanges": [
      "0.0.0.0/0"
    ],
    "targetTags": [
      "allow-ssh"
    ],
    "allowed": [
     {
       "IPProtocol": "tcp",
       "ports": [
         "22"
       ]
     }
    ],
    "direction": "INGRESS",
    "logConfig": {
     "enable": false
    },
    "disabled": false
    }
    
  4. 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-dual-stack",
    "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
    }
    
  5. Buat aturan firewall fw-allow-health-check 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",
    "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/lb-network-dual-stack",
    "priority": 1000,
    "sourceRanges": [
      "130.211.0.0/22",
      "35.191.0.0/16"
    ],
    "targetTags": [
      "allow-health-check"
    ],
    "allowed": [
      {
        "IPProtocol": "tcp"
      },
      {
        "IPProtocol": "udp"
      },
      {
        "IPProtocol": "icmp"
      }
    ],
    "direction": "INGRESS",
    "logConfig": {
      "enable": false
    },
    "disabled": false
    }
    

Membuat VM backend dan grup instance

Contoh ini menggunakan dua grup instance tidak terkelola yang masing-masing memiliki dua VM backend (server). Untuk mendemonstrasikan sifat regional Load Balancer Jaringan passthrough internal, kedua grup instance ditempatkan di zona terpisah, us-west1-a dan us-west1-c.

  • Grup instance ig-a berisi dua VM berikut:
    • vm-a1
    • vm-a2
  • Grup instance ig-c berisi dua VM berikut:
    • vm-c1
    • vm-c2

Traffic ke keempat VM backend di-load balancing.

Untuk mendukung contoh ini dan opsi konfigurasi tambahan, setiap VM menjalankan server web Apache yang memproses port TCP berikut: 80,8008, 8080, 8088, 443, dan 8443.

Setiap VM diberi alamat IP internal di lb-subnet dan alamat IP eksternal (publik) sementara. Anda dapat menghapus alamat IP eksternal nanti.

Alamat IP eksternal untuk VM backend tidak diperlukan; tetapi, alamat tersebut berguna untuk contoh ini karena mengizinkan VM backend mendownload Apache dari internet, dan dapat terhubung menggunakan SSH.

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

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

Pastikan jenis stack subjaringan cocok dengan jenis stack template instance yang digunakan oleh grup instance terkelola. Subjaringan harus berupa dual-stack jika grup instance terkelola menggunakan template instance dual-stack.

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

Konsol

Membuat VM backend

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

    Buka instance VM

  2. Ulangi langkah 3 hingga 8 untuk setiap VM, menggunakan kombinasi nama dan zona berikut.

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

  4. Tetapkan Name seperti yang ditunjukkan pada langkah 2.

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

  6. Di bagian Boot disk, pastikan Debian GNU/Linux 12 (bookworm) dipilih untuk opsi boot disk. Jika perlu, klik Ganti untuk mengubah gambar.

  7. Klik Advanced options.

  8. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh dan allow-health-check-ipv6.
    2. Untuk Network interfaces, pilih dari daftar berikut:
      • Jaringan: lb-network-dual-stack
      • Subnet: lb-subnet
      • IP stack type: IPv4 and IPv6 (dual-stack)
      • Primary internal IPv4 address: Ephemeral (automatic)
      • External IPv4 address: Ephemeral
    3. Klik Management, lalu di kolom Startup script, masukkan skrip berikut. Konten skrip identik untuk keempat VM.

      #! /bin/bash
      if [ -f /etc/startup_script_completed ]; then
      exit 0
      fi
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      file_ports="/etc/apache2/ports.conf"
      file_http_site="/etc/apache2/sites-available/000-default.conf"
      file_https_site="/etc/apache2/sites-available/default-ssl.conf"
      http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
      http_vh_prts="*:80 *:8008 *:8080 *:8088"
      https_listen_prts="Listen 443\nListen 8443"
      https_vh_prts="*:443 *:8443"
      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
      prt_conf="$(cat "$file_ports")"
      prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
      prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
      echo "$prt_conf" | tee "$file_ports"
      http_site_conf="$(cat "$file_http_site")"
      http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
      echo "$http_site_conf_2" | tee "$file_http_site"
      https_site_conf="$(cat "$file_https_site")"
      https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
      echo "$https_site_conf_2" | tee "$file_https_site"
      systemctl restart apache2
      touch /etc/startup_script_completed
      
  9. Klik Create.

Membuat grup instance

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

    Buka Instance groups

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

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

  4. Klik New unmanaged instance group.

  5. Tetapkan Name seperti yang ditunjukkan pada langkah 2.

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

  7. Untuk Network, pilih lb-network-dual-stack.

  8. Untuk Subnetwork, pilih lb-subnet.

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

  10. Klik Create.

gcloud

  1. Untuk membuat empat VM, jalankan perintah gcloud compute instances create empat kali, menggunakan empat kombinasi ini untuk [VM-NAME] dan [ZONE]. Konten skrip sama untuk keempat VM.

    • VM-NAME: vm-a1, ZONE: us-west1-a
    • VM-NAME: vm-a2, ZONE: us-west1-a
    • VM-NAME: vm-c1, ZONE: us-west1-c
    • VM-NAME: vm-c2, ZONE: us-west1-c

      gcloud compute instances create VM-NAME \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check-ipv6 \
        --subnet=lb-subnet \
        --stack-type=IPV4_IPV6 \
        --metadata=startup-script='#! /bin/bash
      if [ -f /etc/startup_script_completed ]; then
      exit 0
      fi
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      file_ports="/etc/apache2/ports.conf"
      file_http_site="/etc/apache2/sites-available/000-default.conf"
      file_https_site="/etc/apache2/sites-available/default-ssl.conf"
      http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
      http_vh_prts="*:80 *:8008 *:8080 *:8088"
      https_listen_prts="Listen 443\nListen 8443"
      https_vh_prts="*:443 *:8443"
      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
      prt_conf="$(cat "$file_ports")"
      prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
      prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
      echo "$prt_conf" | tee "$file_ports"
      http_site_conf="$(cat "$file_http_site")"
      http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
      echo "$http_site_conf_2" | tee "$file_http_site"
      https_site_conf="$(cat "$file_https_site")"
      https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
      echo "$https_site_conf_2" | tee "$file_https_site"
      systemctl restart apache2
      touch /etc/startup_script_completed'
      
  2. Buat dua grup instance tidak terkelola di setiap zona:

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

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

api

Untuk empat VM, gunakan nama dan zona VM berikut:

  • VM-NAME: vm-a1, ZONE: us-west1-a
  • VM-NAME: vm-a2, ZONE: us-west1-a
  • VM-NAME: vm-c1, ZONE: us-west1-c
  • VM-NAME: vm-c2, ZONE: us-west1-c

Anda bisa mendapatkan DEBIAN_IMAGE_NAME saat ini dengan menjalankan perintah gcloud berikut:

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

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

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

{
 "name": "VM-NAME",
 "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-dual-stack",
     "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
     "accessConfigs": [
       {
         "type": "ONE_TO_ONE_NAT",
         "name": "external-nat",
         "networkTier": "PREMIUM"
       }
     ]
   }
 ],
 "disks": [
   {
     "type": "PERSISTENT",
     "boot": true,
     "mode": "READ_WRITE",
     "autoDelete": true,
     "deviceName": "VM-NAME",
     "initializeParams": {
       "sourceImage": "projects/debian-cloud/global/images/debian-image-name",
       "diskType": "projects/PROJECT_ID/zones/zone/diskTypes/pd-standard",
       "diskSizeGb": "10"
     }
   }
 ],
 "metadata": {
   "items": [
     {
       "key": "startup-script",
       "value": "#! /bin/bash\napt-get update\napt-get install apache2 -y\na2ensite default-ssl\na2enmod ssl\nfile_ports=\"/etc/apache2/ports.conf\"\nfile_http_site=\"/etc/apache2/sites-available/000-default.conf\"\nfile_https_site=\"/etc/apache2/sites-available/default-ssl.conf\"\nhttp_listen_prts=\"Listen 80\\nListen 8008\\nListen 8080\\nListen 8088\"\nhttp_vh_prts=\"*:80 *:8008 *:8080 *:8088\"\nhttps_listen_prts=\"Listen 443\\nListen 8443\"\nhttps_vh_prts=\"*:443 *:8443\"\nvm_hostname=\"$(curl -H \"Metadata-Flavor:Google\" \\\nhttp://169.254.169.254/computeMetadata/v1/instance/name)\"\necho \"Page served from: $vm_hostname\" | \\\ntee /var/www/html/index.html\nprt_conf=\"$(cat \"$file_ports\")\"\nprt_conf_2=\"$(echo \"$prt_conf\" | sed \"s|Listen 80|${http_listen_prts}|\")\"\nprt_conf=\"$(echo \"$prt_conf_2\" | sed \"s|Listen 443|${https_listen_prts}|\")\"\necho \"$prt_conf\" | tee \"$file_ports\"\nhttp_site_conf=\"$(cat \"$file_http_site\")\"\nhttp_site_conf_2=\"$(echo \"$http_site_conf\" | sed \"s|*:80|${http_vh_prts}|\")\"\necho \"$http_site_conf_2\" | tee \"$file_http_site\"\nhttps_site_conf=\"$(cat \"$file_https_site\")\"\nhttps_site_conf_2=\"$(echo \"$https_site_conf\" | sed \"s|_default_:443|${https_vh_prts}|\")\"\necho \"$https_site_conf_2\" | tee \"$file_https_site\"\nsystemctl restart apache2"
     }
   ]
 },
 "scheduling": {
   "preemptible": false
 },
 "deletionProtection": false
}

Buat dua 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-dual-stack",
 "subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-c/instanceGroups

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

Tambahkan instance ke setiap grup instance dengan membuat permintaan POST ke metode instanceGroups.addInstances.

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

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

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

Mengonfigurasi komponen load balancer

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

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

  • Layanan backend: Karena Anda perlu meneruskan traffic HTTP melalui load balancer internal, Anda harus menggunakan TCP, bukan UDP.

  • Aturan penerusan: Contoh ini membuat dua aturan penerusan internal untuk traffic IPv4 dan IPv6.

  • Alamat IP internal: Dalam contoh ini, Anda menentukan alamat IP internal, 10.1.2.99, saat membuat aturan penerusan IPv4. Untuk mengetahui informasi selengkapnya, lihat Alamat IP internal. Meskipun Anda memilih alamat IPv4 yang dikonfigurasi, alamat IPv6 akan ditetapkan secara otomatis.

Konsol

Memulai konfigurasi

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

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
  4. Untuk Proxy or passthrough, pilih Passthrough load balancer, lalu klik Next.
  5. Untuk Public facing or internal, pilih Internal, lalu klik Next.
  6. Klik Konfigurasikan.

Konfigurasi dasar

Di halaman Membuat Load Balancer Jaringan passthrough internal, masukkan informasi berikut:

  • Nama load balancer: be-ilb
  • Region: us-west1
  • Jaringan: lb-network-dual-stack

Konfigurasi backend

  1. Klik Backend configuration.
  2. Di bagian Backend Baru pada Backend, pilih IP stack type sebagai IPv4 and IPv6 (dual-stack).
  3. Di Instance group, pilih grup instance ig-a, lalu klik Done.
  4. Klik Add a backend, lalu ulangi langkah untuk menambahkan ig-c.
  5. Dari daftar Health check, pilih Create a health check, masukkan informasi berikut, lalu klik Save:
    • Name: hc-http-80.
    • Cakupan: Regional.
    • Protokol: HTTP.
    • Port: 80.
    • Protokol proxy: NONE.
    • Jalur permintaan: /.
  6. Pastikan tanda centang biru muncul di samping Backend configuration.

Konfigurasi frontend

  1. Klik Frontend configuration. Di bagian New Frontend IP and port, lakukan hal berikut:
    1. Untuk Name, masukkan fr-ilb-ipv6.
    2. Untuk menangani traffic IPv6, lakukan hal berikut:
      1. Untuk IP version, pilih IPv6.
      2. Untuk Subnetwork, pilihlb-subnet. Rentang alamat IPv6 dalam aturan penerusan selalu bersifat sementara.
      3. Untuk Ports, pilih Multiple, lalu di kolom Port number, masukkan 80,8008,8080,8088.
      4. Klik Done.
    3. Untuk menangani traffic IPv4, lakukan hal berikut:
      1. Klik Add frontend IP and port.
      2. Untuk Name, masukkan fr-ilb.
      3. Untuk Subnetwork, pilih lb-subnet.
      4. Di bagian Internal IP purpose, dari daftar IP address, pilih Create IP address, masukkan informasi berikut, lalu klik Reserve.
        • Nama: ip-ilb
        • Versi IP: IPv4
        • Static IP address: Let me choose
        • Alamat IP kustom: 10.1.2.99
      5. Untuk Ports, pilih Multiple, lalu di Port numbers, masukkan 80,8008,8080, dan 8088.
      6. Klik Done.
      7. Pastikan ada tanda centang biru di samping Frontend configuration sebelum melanjutkan.

Meninjau konfigurasi

  1. Klik Review and finalize. Periksa semua setelan Anda.
  2. Jika setelan sudah benar, klik Create. Perlu waktu beberapa menit untuk membuat Load Balancer Jaringan passthrough internal.

gcloud

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

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

    gcloud compute backend-services create be-ilb \
        --load-balancing-scheme=internal \
        --protocol=tcp \
        --region=us-west1 \
        --health-checks=hc-http-80 \
        --health-checks-region=us-west1
    
  3. Tambahkan dua 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
    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c
    
  4. Buat dua aturan penerusan untuk layanan backend. Saat Anda membuat aturan penerusan IPv4, tentukan 10.1.2.99 untuk alamat IP internal di subnet untuk alamat IPv4.

    gcloud compute forwarding-rules create fr-ilb \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80,8008,8080,8088 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    
    gcloud compute forwarding-rules create fr-ilb-ipv6 \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --subnet=lb-subnet \
        --ip-protocol=TCP \
        --ports=80,8008,8080,8088 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1 \
        --ip-version=IPV6
    

api

Buat health check dengan membuat permintaan POST ke metode regionHealthChecks.insert.

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

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

Buat layanan backend regional dengan membuat permintaan POST ke metode regionBackendServices.insert.

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

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

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": "TCP",
"ports": [
  "80", "8008", "8080", "8088"
],
"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",
"ipVersion": "IPV6",
"networkTier": "PREMIUM"
}

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": "10.1.2.99",
"IPProtocol": "TCP",
"ports": [
  "80", "8008", "8080", "8088"
],
"loadBalancingScheme": "INTERNAL",
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet",
"backendService": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb",
"networkTier": "PREMIUM"
}

Menguji load balancer

Untuk menguji load balancer, buat VM klien di region yang sama dengan load balancer, lalu kirim traffic dari klien ke load balancer.

Membuat VM klien

Contoh ini membuat VM klien (vm-client) 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.

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 Region, pilih us-west1.

  5. Untuk Zone, pilih us-west1-a.

  6. Klik Advanced options.

  7. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih dari daftar berikut:
      • Jaringan: lb-network-dual-stack
      • Subnet: lb-subnet
      • IP stack type: IPv4 and IPv6 (dual-stack)
      • IP internal utama: Sementara (otomatis)
      • External IP: Ephemeral
    3. Klik Done.
  8. Klik Create.

gcloud

VM klien dapat berada di zona mana pun di region yang sama dengan load balancer, dan dapat menggunakan subnet mana 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 \
    --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",
 "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-dual-stack",
     "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
}

Menguji koneksi

Pengujian ini menghubungi load balancer dari VM klien terpisah; yaitu, bukan dari VM backend load balancer. Perilaku yang diharapkan adalah traffic didistribusikan di antara empat VM backend.

  1. Hubungkan ke instance VM klien.

    gcloud compute ssh vm-client --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. Deskripsikan aturan penerusan IPv4 fr-ilb.

    gcloud compute forwarding-rules describe fr-ilb --region=us-west1
    
  4. Dari klien dengan konektivitas IPv6, jalankan perintah berikut:

    $ 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
    
  5. Dari klien dengan konektivitas IPv4, jalankan perintah berikut:

    $ curl -m 10 -s http://10.1.2.99:80
    

    Ganti placeholder dengan nilai yang valid:

    • IPV6_ADDRESS adalah alamat IPv6 sementara dalam aturan penerusan fr-ilb-ipv6.

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.

Mengaktifkan akses global

Anda dapat mengaktifkan akses global untuk contoh Load Balancer Jaringan passthrough internal agar dapat diakses oleh klien di semua region. Backend contoh load balancer Anda masih harus berada di satu region (us-west1).

Load Balancer Jaringan passthrough internal dengan akses global.
Load Balancer Jaringan passthrough internal dengan akses global (klik untuk memperbesar).

Untuk mengonfigurasi akses global, lakukan perubahan konfigurasi berikut.

Konsol

Mengedit aturan penerusan load balancer

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

    Buka Load balancing

  2. Di kolom Nama, klik Load Balancer Jaringan passthrough internal Anda. Contoh load balancer diberi nama be-ilb.

  3. Klik Frontend configuration.

  4. Klik Edit .

  5. Di bagian Global access, pilih Enable.

  6. Klik Done.

  7. Klik Perbarui.

Di halaman Load balancer details, pastikan konfigurasi frontend menampilkan Regional (REGION) with global access.

gcloud

  1. Perbarui contoh aturan penerusan load balancer, fr-ilb untuk menyertakan flag --allow-global-access.

    gcloud compute forwarding-rules update fr-ilb \
       --region=us-west1 \
       --allow-global-access
    
  2. Anda dapat menggunakan perintah forwarding-rules describe untuk menentukan apakah aturan penerusan mengaktifkan akses global. Contoh:

    gcloud compute forwarding-rules describe fr-ilb \
       --region=us-west1 \
       --format="get(name,region,allowGlobalAccess)"
    

    Kata True muncul dalam output, setelah nama dan wilayah aturan penerusan, saat akses global diaktifkan.

API

Buat permintaan PATCH ke metode forwardingRules/patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr-ilb

{
"allowGlobalAccess": true
}

Membuat klien VM untuk menguji akses global

Konsol

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

    Buka instance VM

  2. Klik Create instance.

  3. Tetapkan Name ke vm-client2.

  4. Tetapkan Wilayah ke europe-west1.

  5. Tetapkan Zona ke europe-west1-b.

  6. Klik Advanced options.

  7. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih dari daftar berikut:
      • Jaringan: lb-network
      • Subnet: europe-subnet
  8. Klik Create.

gcloud

VM klien dapat berada di zona mana pun di region yang sama dengan load balancer, dan dapat menggunakan subnet mana pun di region tersebut. Dalam contoh ini, klien berada di zona europe-west1-b, dan menggunakan subnet yang sama dengan VM backend.

gcloud compute instances create vm-client2 \
    --zone=europe-west1-b \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=europe-subnet

API

Buat permintaan POST ke metode instances.insert.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/europe-west1-b/instances

{
"name": "vm-client2",
"tags": {
  "items": [
    "allow-ssh"
  ]
},
"machineType": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/europe-west1-b/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/europe-west1/subnetworks/europe-subnet",
    "accessConfigs": [
      {
        "type": "ONE_TO_ONE_NAT",
        "name": "external-nat",
        "networkTier": "PREMIUM"
      }
    ]
  }
],
"disks": [
  {
    "type": "PERSISTENT",
    "boot": true,
    "mode": "READ_WRITE",
    "autoDelete": true,
    "deviceName": "vm-client2",
    "initializeParams": {
      "sourceImage": "projects/debian-cloud/global/images/debian-image-name",
      "diskType": "projects/PROJECT_ID/zones/europe-west1-b/diskTypes/pd-standard",
      "diskSizeGb": "10"
    }
  }
],
"scheduling": {
  "preemptible": false
},
"deletionProtection": false
}

Menghubungkan ke klien VM dan menguji konektivitas

Untuk menguji konektivitas, jalankan perintah berikut:

  gcloud compute ssh vm-client2 --zone=europe-west1-b
  

Uji koneksi ke load balancer di semua port yang dikonfigurasi, seperti yang Anda lakukan dari vm-client di region us-west1. Uji konektivitas HTTP di empat port yang dikonfigurasi pada aturan penerusan:

  curl http://10.1.2.99
  curl http://10.1.2.99:8008
  curl http://10.1.2.99:8080
  curl http://10.1.2.99:8088
  

Mengonfigurasi grup instance terkelola

Contoh konfigurasi membuat dua grup instance tidak terkelola. Sebagai gantinya, Anda dapat menggunakan grup instance terkelola, termasuk grup instance terkelola zonal dan regional, sebagai backend untuk Load Balancer Jaringan passthrough internal.

Grup instance terkelola mengharuskan Anda membuat template instance. Prosedur ini menunjukkan cara mengganti dua grup instance tidak terkelola zona dari contoh dengan satu grup instance terkelola regional. Grup instance terkelola regional secara otomatis membuat VM di beberapa zona dalam region, sehingga mempermudah distribusi traffic produksi di antara zona.

Grup instance terkelola juga mendukung penskalaan otomatis dan autohealing. Jika menggunakan penskalaan otomatis dengan Load Balancer Jaringan passthrough internal, Anda tidak dapat menskalakan berdasarkan load balancing.

Prosedur ini menunjukkan cara mengubah layanan backend untuk contoh Load Balancer Jaringan passthrough internal sehingga menggunakan grup instance terkelola regional.

Konsol

Template instance

  1. Di konsol Google Cloud, buka halaman Template instance VM.

    Buka template instance VM

  2. Klik Create instance template.

  3. Tetapkan Name ke template-vm-ilb.

  4. Pilih jenis mesin.

  5. Di bagian Boot disk, pastikan Debian GNU/Linux 12 (bookworm) dipilih untuk opsi boot disk. Jika perlu, klik Ganti untuk mengubah gambar.

  6. Klik Advanced options.

  7. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh dan allow-health-check.
    2. Untuk Network interfaces, pilih dari daftar berikut:
      • Jaringan: lb-network
      • Subnet: lb-subnet
  8. Klik Management, lalu di kolom Startup script, masukkan skrip berikut:

    #! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed
    
  9. Klik Create.

Grup instance terkelola

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

    Buka Instance groups

  2. Klik Create grup instance.

  3. Tetapkan Name ke ig-ilb.

  4. Untuk Location, pilih Multi-zone, dan tetapkan Region ke us-west1.

  5. Tetapkan Instance template ke template-vm-ilb.

  6. Opsional: Konfigurasikan penskalaan otomatis. Anda tidak dapat menskalakan grup instance secara otomatis berdasarkan penggunaan load balancing HTTP karena grup instance adalah backend untuk Load Balancer Jaringan passthrough internal.

  7. Tetapkan Minimum number of instances ke 1 dan Maximum number of instances ke 6.

  8. Opsional: Konfigurasikan autohealing. Jika Anda mengonfigurasi autohealing, gunakan health check yang sama dengan yang digunakan oleh layanan backend untuk Load Balancer Jaringan passthrough internal. Dalam contoh ini, gunakan hc-http-80.

  9. Klik Create.

gcloud

  1. Buat template instance. Secara opsional, Anda dapat menetapkan parameter lain, seperti jenis mesin, untuk template image yang akan digunakan.

    gcloud compute instance-templates create template-vm-ilb \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-health-check \
        --subnet=lb-subnet \
        --region=us-west1 \
        --network=lb-network \
        --metadata=startup-script='#! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed'
    
  2. Buat satu grup instance terkelola regional menggunakan template:

    gcloud compute instance-groups managed create ig-ilb \
        --template=template-vm-ilb \
        --region=us-west1 \
        --size=6
    
  3. Tambahkan grup instance terkelola regional sebagai backend ke layanan backend yang telah Anda buat:

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-ilb \
        --instance-group-region=us-west1
    
  4. Putuskan sambungan dua grup instance tidak terkelola (zonal) dari layanan backend:

    gcloud compute backend-services remove-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-a \
        --instance-group-zone=us-west1-a
    gcloud compute backend-services remove-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-c \
        --instance-group-zone=us-west1-c
    

Menghapus alamat IP eksternal dari VM backend

Saat Anda membuat VM backend, setiap VM diberi alamat IP eksternal sementara agar dapat mendownload Apache menggunakan skrip startup. Karena VM backend hanya digunakan oleh Network Load Balancer passthrough internal, Anda dapat menghapus alamat IP eksternalnya. Menghapus alamat IP eksternal akan mencegah VM backend mengakses internet secara langsung.

Konsol

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

    Buka instance VM

  2. Ulangi langkah-langkah berikut untuk setiap VM backend.

  3. Klik nama VM backend, misalnya, vm-a1.

  4. Klik Edit.

  5. Di bagian Network interfaces, klik jaringan.

  6. Dari daftar External IP, pilih None, lalu klik Done.

  7. Klik Simpan.

gcloud

  1. Untuk mencari zona instance – misalnya, jika Anda menggunakan grup instance terkelola regional – jalankan perintah berikut untuk setiap instance guna menentukan zonanya. Ganti [SERVER-VM] dengan nama VM yang akan dicari.

    gcloud compute instances list --filter="name=[SERVER-VM]"
    
  2. Ulangi langkah berikut untuk setiap VM backend. Ganti [SERVER-VM] dengan nama VM, dan ganti [ZONE] dengan zona VM.

    gcloud compute instances delete-access-config [SERVER-VM] \
        --zone=[ZONE] \
        --access-config-name=external-nat
    

API

Buat permintaan POST ke metode instances.deleteAccessConfig untuk setiap VM backend, gantivm-a1 dengan nama VM, dan ganti us-west1-a dengan zona VM.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/us-west1-a/instances/vm-a1/deleteAccessConfig?accessConfig=external-nat&networkInterface=None

Menggunakan alamat IP internal yang dicadangkan

Saat Anda membuat VM backend dan grup instance, instance VM menggunakan alamat IPv4 atau IPv6 internal sementara.

Langkah-langkah berikut menunjukkan cara mempromosikan alamat IPv4 atau IPv6 internal menjadi alamat IPv4 atau IPv6 internal statis, lalu memperbarui instance VM untuk menggunakan alamat IP internal statis:

  1. Mempromosikan alamat IPv4 atau IPv6 internal sementara yang sedang digunakan menjadi alamat statis.
  2. Mengubah atau menetapkan alamat IPv6 internal ke instance yang ada.

Atau, langkah-langkah berikut menunjukkan cara mencadangkan alamat IPv4 atau IPv6 internal statis yang baru, lalu mengupdate instance VM untuk menggunakan alamat IP internal statis:

  1. Cadangkan alamat IPv4 atau IPv6 internal statis yang baru.

    Tidak seperti pencadangan IPv4 internal, pencadangan IPv6 internal tidak mendukung pencadangan alamat IP tertentu dari subnetwork. Sebagai gantinya, rentang alamat IPv6 internal /96 akan otomatis dialokasikan dari rentang alamat IPv6 internal /64 subnet.

  2. Mengubah atau menetapkan alamat IPv6 internal ke instance yang ada.

Untuk informasi selengkapnya, lihat Cara mencadangkan alamat IP internal statis.

Menerima traffic di semua port

Aturan penerusan load balancer, bukan layanan backend-nya, menentukan port tempat load balancer menerima traffic. Untuk mengetahui informasi tentang tujuan setiap komponen, lihat Komponen.

Saat membuat contoh aturan penerusan load balancer ini, Anda telah mengonfigurasi port 80, 8008, 8080, dan 8088. Skrip startup yang menginstal Apache juga mengonfigurasinya untuk menerima koneksi HTTPS di port 443 dan 8443.

Untuk mendukung enam port ini, Anda dapat mengonfigurasi aturan penerusan untuk menerima traffic di semua port. Dengan strategi ini, Anda juga dapat mengonfigurasi aturan firewall yang mengizinkan koneksi masuk ke VM backend sehingga hanya mengizinkan port tertentu.

Prosedur ini menunjukkan cara menghapus aturan penerusan load balancer saat ini dan membuat aturan baru yang menerima traffic di semua port.

Untuk mengetahui informasi selengkapnya tentang kapan harus menggunakan penyiapan ini, lihat Load Balancer Jaringan passthrough internal dan aturan penerusan dengan alamat IP umum.

Konsol

Menghapus aturan penerusan dan membuat aturan baru

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

    Buka Load balancing

  2. Klik load balancer be-ilb, lalu klik Edit.

  3. Klik Frontend configuration.

  4. Tahan kursor di atas aturan penerusan 10.1.2.9, lalu klik Hapus.

  5. Klik Add frontend IP and port.

  6. Di bagian New Frontend IP and port, masukkan informasi berikut, lalu klik Done:

    • Nama: fr-ilb
    • Subnetwork: lb-subnet
    • Internal IP: ip-ilb
    • Port: Semua.
  7. Pastikan ada tanda centang biru di samping Frontend configuration sebelum melanjutkan.

  8. Klik Review and finalize, lalu tinjau setelan konfigurasi load balancer Anda.

  9. Klik Create.

gcloud

  1. Hapus aturan penerusan yang ada, fr-ilb.

    gcloud compute forwarding-rules delete fr-ilb \
        --region=us-west1
    
  2. Buat aturan penerusan pengganti, dengan nama yang sama, yang konfigurasi portnya menggunakan kata kunci ALL. Parameter lainnya untuk aturan penerusan tetap sama.

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

API

Hapus aturan penerusan dengan membuat permintaan DELETE ke metode forwardingRules.delete.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr-ilb

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": "10.1.2.99",
"IPProtocol": "TCP",
"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",
"networkTier": "PREMIUM"
}

Menguji traffic di semua penyiapan port

Hubungkan ke instance VM klien dan uji koneksi HTTP dan HTTPS.

  • Hubungkan ke VM klien:

    gcloud compute ssh vm-client --zone=us-west1-a
    
  • Uji konektivitas HTTP di keempat port:

    curl http://10.1.2.99
    curl http://10.1.2.99:8008
    curl http://10.1.2.99:8080
    curl http://10.1.2.99:8088
    
  • Uji konektivitas HTTPS di port 443 dan 8443. Flag --insecure diperlukan karena setiap server Apache dalam contoh penyiapan menggunakan sertifikat yang ditandatangani sendiri.

    curl https://10.1.2.99 --insecure
    curl https://10.1.2.99:8443 --insecure
    

  • Perhatikan bahwa permintaan HTTP (di keempat port) dan permintaan HTTPS (di kedua port) didistribusikan di antara semua VM backend.

Menerima traffic di beberapa port menggunakan dua aturan penerusan

Saat membuat contoh aturan penerusan load balancer ini, Anda telah mengonfigurasi port 80, 8008, 8080, dan 8088. Skrip startup yang menginstal Apache juga mengonfigurasinya untuk menerima koneksi HTTPS di port 443 dan 8443.

Strategi alternatif untuk mengonfigurasi satu aturan penerusan guna menerima traffic di semua port adalah dengan membuat beberapa aturan penerusan, yang masing-masing mendukung lima port atau kurang.

Prosedur ini menunjukkan cara mengganti contoh aturan penerusan load balancer dengan dua aturan penerusan, satu menangani traffic di port 80, 8008, 8080, dan 8088, dan yang lainnya menangani traffic di port 443 dan 8443.

Untuk mengetahui informasi selengkapnya tentang kapan harus menggunakan penyiapan ini, lihat Load Balancer Jaringan passthrough internal dan aturan penerusan dengan alamat IP umum.

Konsol

  1. Di konsol Google Cloud, buka halaman Forwarding rules.

    Buka Forwarding rules

  2. Di kolom Nama, klik fr-ilb, lalu klik Hapus.

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

    Buka Load balancing

  4. Di kolom Nama, klik be-ilb.

  5. Klik Edit.

  6. Klik Frontend configuration.

  7. Klik Add frontend IP and port.

  8. Di bagian New Frontend IP and port, lakukan hal berikut:

    1. Untuk Name, masukkan fr-ilb-http.
    2. Untuk Subnetwork, pilih lb-subnet.
    3. Untuk Internal IP purpose, pilih Shared.
    4. Dari daftar IP address, pilih Create IP address, masukkan informasi berikut, lalu klik Reserve:
      • Nama: internal-10-1-2-99
      • Static IP address: Let me choose
      • Alamat IP kustom: 10.1.2.99
    5. Untuk Ports, pilih Multiple, lalu di Port numbers, masukkan 80,8008,8080, dan 8088.
    6. Klik Done.
  9. Klik Add frontend IP and port.

  10. Di bagian New Frontend IP and port, lakukan hal berikut:

    1. Untuk Name, masukkan fr-ilb-https.
    2. Untuk Subnetwork, pilih lb-subnet.
    3. Untuk Internal IP purpose, pilih Shared.
    4. Dari daftar IP address, pilih internal-10-1-2-99.
    5. Untuk Ports, pilih Multiple, lalu di Port numbers, masukkan 443 dan 8443.
    6. Klik Done.
  11. Klik Review and finalize, lalu tinjau setelan konfigurasi load balancer Anda.

  12. Klik Perbarui.

gcloud

  1. Hapus aturan penerusan yang ada, fr-ilb.

    gcloud compute forwarding-rules delete fr-ilb \
        --region=us-west1
    
  2. Buat alamat IP internal statis (dicadangkan) untuk 10.1.2.99 dan tetapkan flag --purpose-nya ke SHARED_LOADBALANCER_VIP. Flag --purpose diperlukan agar dua aturan penerusan internal dapat menggunakan alamat IP internal yang sama.

    gcloud compute addresses create internal-10-1-2-99 \
        --region=us-west1 \
        --subnet=lb-subnet \
        --addresses=10.1.2.99 \
        --purpose=SHARED_LOADBALANCER_VIP
    
    1. Buat dua aturan penerusan pengganti dengan parameter berikut:
    gcloud compute forwarding-rules create fr-ilb-http \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=80,8008,8080,8088 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    
    gcloud compute forwarding-rules create fr-ilb-https \
        --region=us-west1 \
        --load-balancing-scheme=internal \
        --network=lb-network \
        --subnet=lb-subnet \
        --address=10.1.2.99 \
        --ip-protocol=TCP \
        --ports=443,8443 \
        --backend-service=be-ilb \
        --backend-service-region=us-west1
    

API

Hapus aturan penerusan dengan membuat permintaan DELETE ke metode forwardingRules.delete.

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules/fr-ilb

Buat alamat IP internal statis (dicadangkan) untuk 10.1.2.99 dan tetapkan tujuannya ke SHARED_LOADBALANCER_VIP dengan membuat permintaan POST ke metode addresses.insert.

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

{
"name": "internal-10-1-2-99",
"address": "10.1.2.99",
"prefixLength": 32,
"addressType": INTERNAL,
"purpose": SHARED_LOADBALANCER_VIP,
"subnetwork": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/subnetworks/lb-subnet"
}

Buat dua aturan penerusan dengan membuat dua permintaan POST ke metode forwardingRules.insert.

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

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

Menguji traffic pada penyiapan beberapa port

Hubungkan ke instance VM klien dan uji koneksi HTTP dan HTTPS.

  • Hubungkan ke VM klien:

    gcloud compute ssh vm-client --zone=us-west1-a
    
  • Uji konektivitas HTTP di keempat port:

    curl http://10.1.2.99
    curl http://10.1.2.99:8008
    curl http://10.1.2.99:8080
    curl http://10.1.2.99:8088
    
  • Uji konektivitas HTTPS di port 443 dan 8443. Flag --insecure diperlukan karena setiap server Apache dalam contoh penyiapan menggunakan sertifikat yang ditandatangani sendiri.

    curl https://10.1.2.99 --insecure
    curl https://10.1.2.99:8443 --insecure
    
  • Perhatikan bahwa permintaan HTTP (di keempat port) dan permintaan HTTPS (di kedua port) didistribusikan di antara semua VM backend.

Menggunakan afinitas sesi

Contoh konfigurasi membuat layanan backend tanpa afinitas sesi.

Prosedur ini menunjukkan cara mengupdate layanan backend untuk contoh Network Load Balancer passthrough internal sehingga menggunakan afinitas sesi berdasarkan hash yang dibuat dari alamat IP klien dan alamat IP aturan penerusan internal load balancer.

Untuk jenis afinitas sesi yang didukung, lihat Opsi afinitas sesi.

Konsol

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

    Buka Load balancing

  2. Klik be-ilb (nama layanan backend yang Anda buat untuk contoh ini) dan klik Edit.

  3. Di halaman Edit internal passthrough Network Load Balancer, klik Backend configuration.

  4. Dari daftar Session affinity, pilih Client IP.

  5. Klik Perbarui.

gcloud

Gunakan perintah gcloud berikut untuk mengupdate layanan backend be-ilb, yang menentukan afinitas sesi IP klien:

gcloud compute backend-services update be-ilb \
    --region=us-west1 \
    --session-affinity CLIENT_IP

API

Buat permintaan PATCH ke metode regionBackendServices/patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb

{
"sessionAffinity": "CLIENT_IP"
}

Mengonfigurasi kebijakan pelacakan koneksi

Bagian ini menunjukkan cara mengupdate layanan backend untuk mengubah kebijakan pelacakan koneksi default load balancer.

Kebijakan pelacakan koneksi mencakup setelan berikut:

gcloud

Gunakan perintah gcloud compute backend-services berikut untuk memperbarui kebijakan pelacakan koneksi untuk layanan backend:

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --tracking-mode=TRACKING_MODE \
    --connection-persistence-on-unhealthy-backends=CONNECTION_PERSISTENCE_BEHAVIOR \
    --idle-timeout-sec=IDLE_TIMEOUT_VALUE

Ganti placeholder dengan nilai yang valid:

  • BACKEND_SERVICE: layanan backend yang Anda perbarui
  • REGION: region layanan backend yang Anda perbarui
  • TRACKING_MODE: mode pelacakan koneksi yang akan digunakan untuk paket masuk; untuk daftar nilai yang didukung, lihat Mode pelacakan
  • CONNECTION_PERSISTENCE_BEHAVIOR: perilaku persistensi koneksi saat backend tidak sehat; untuk daftar nilai yang didukung, lihat Persistensi koneksi pada backend yang tidak sehat
  • IDLE_TIMEOUT_VALUE: jumlah detik yang diperlukan untuk mempertahankan entri tabel pelacakan koneksi setelah load balancer memproses paket terakhir yang cocok dengan entri

    Anda hanya dapat mengubah properti ini jika pelacakan koneksi kurang dari 5-tuple (yaitu, saat afinitas sesi dikonfigurasi menjadi CLIENT_IP atau CLIENT_IP_PROTO, dan mode pelacakan adalah PER_SESSION).

    Nilai default-nya adalah 600 detik (10 menit). Nilai waktu tunggu tidak ada aktivitas maksimum yang dapat dikonfigurasi adalah 57.600 detik (16 jam).

Membuat aturan penerusan di subnet lain

Prosedur ini membuat alamat IP kedua dan aturan penerusan di subnet yang berbeda untuk menunjukkan bahwa Anda dapat membuat beberapa aturan penerusan untuk satu Load Balancer Jaringan passthrough internal. Region untuk aturan penerusan harus cocok dengan region layanan backend.

Tunduk pada aturan firewall, klien di subnet mana pun di region dapat menghubungi alamat IP Load Balancer Jaringan passthrough internal.

Konsol

Menambahkan subnet kedua

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Klik lb-network.

  4. Di bagian Subnets, lakukan hal berikut:

    1. Klik Tambahkan subnet.
    2. Di bagian New subnet, masukkan informasi berikut:
      • Nama: second-subnet
      • Region: us-west1
      • Rentang alamat IP: 10.5.6.0/24
    3. Klik Tambahkan.

Menambahkan aturan penerusan kedua

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

    Buka Load balancing

  2. Klik load balancer be-ilb, lalu klik Edit.

  3. Klik Frontend configuration.

  4. Klik Add frontend IP and port.

  5. Di bagian New Frontend IP and port, tetapkan kolom berikut, lalu klik Done:

    • Nama: fr-ilb-2
    • IP version: IPv4
    • Subnetwork: second-subnet
    • Internal IP: ip-ilb
    • Port: 80 dan 443
  6. Pastikan ada tanda centang biru di samping Frontend configuration sebelum melanjutkan.

  7. Klik Review and finalize, lalu tinjau setelan konfigurasi load balancer Anda.

  8. Klik Create.

gcloud

  1. Buat subnet kedua di jaringan lb-network di region us-west1:

    gcloud compute networks subnets create second-subnet \
       --network=lb-network \
       --range=10.5.6.0/24 \
       --region=us-west1
    
  2. Buat aturan penerusan kedua untuk port 80 dan 443. Parameter lainnya untuk aturan ini, termasuk alamat IP dan layanan backend, sama dengan aturan penerusan utama, fr-ilb.

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

API

Buat permintaan POST ke metode subnetworks.insert.

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

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

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-2",
"IPAddress": "10.5.6.99",
"IPProtocol": "TCP",
"ports": [
  "80", "443"
],
"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"
}

Menguji aturan penerusan baru

Hubungkan ke instance VM klien dan uji koneksi HTTP dan HTTPS ke alamat IP.

  1. Hubungkan ke VM klien:

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Uji konektivitas HTTP ke alamat IP:

    curl http://10.1.2.99
    curl http://10.5.6.99
    
  3. Menguji konektivitas HTTPS. Penggunaan --insecure diperlukan karena konfigurasi server Apache dalam contoh penyiapan menggunakan sertifikat yang ditandatangani sendiri.

    curl https://10.1.2.99 --insecure
    curl https://10.5.6.99 --insecure
    
  4. Perhatikan bahwa permintaan ditangani oleh semua VM backend, terlepas dari protokol (HTTP atau HTTPS) atau alamat IP yang digunakan.

Menggunakan subkumpulan backend

Contoh konfigurasi membuat layanan backend tanpa subkumpulan.

Prosedur ini menunjukkan cara mengaktifkan subkumpulan di layanan backend untuk contoh Load Balancer Jaringan passthrough internal sehingga deployment dapat diskalakan ke sejumlah instance backend yang lebih besar.

Anda hanya boleh mengaktifkan subsetting jika perlu mendukung lebih dari 250 VM backend di satu load balancer.

Untuk informasi selengkapnya tentang kasus penggunaan ini, lihat subset backend.

gcloud

Gunakan perintah gcloud berikut untuk mengupdate layanan backend be-ilb, yang menentukan kebijakan subkumpulan:

gcloud compute backend-services update be-ilb \
    --subsetting-policy=CONSISTENT_HASH_SUBSETTING

API

Buat permintaan PATCH ke metode regionBackendServices/patch.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/backendServices/be-ilb

{
"subsetting":
  {
    "policy": CONSISTENT_HASH_SUBSETTING
  }
}

Membuat load balancer untuk Duplikasi Paket

Duplikasi Paket memungkinkan Anda menyalin dan mengumpulkan data paket dari instance tertentu di VPC. Data yang dikumpulkan dapat membantu Anda mendeteksi ancaman keamanan dan memantau performa aplikasi.

Duplikasi Paket memerlukan Load Balancer Jaringan passthrough internal untuk menyeimbangkan traffic ke grup instance tujuan kolektor. Untuk membuat Load Balancer Jaringan passthrough internal untuk Duplikasi Paket, ikuti langkah-langkah berikut.

Konsol

Memulai konfigurasi

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

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
  4. Untuk Proxy or passthrough, pilih Passthrough load balancer, lalu klik Next.
  5. Untuk Public facing or internal, pilih Internal, lalu klik Next.
  6. Klik Konfigurasikan.

Konfigurasi dasar

  1. Untuk Load balancer name, masukkan nama.
  2. Untuk Region, pilih region instance VM tempat Anda ingin mencerminkan paket.
  3. Untuk Network, pilih jaringan tempat Anda ingin mencerminkan paket.
  4. Klik Backend configuration.
  5. Di bagian New Backend, untuk Instance group, pilih grup instance tujuan penerusan paket.
  6. Dari daftar Health check, pilih Create a health check, masukkan informasi berikut, lalu klik Save:
    1. Untuk Name, masukkan nama untuk health check.
    2. Untuk Protocol, pilih HTTP.
    3. Untuk Port, masukkan 80.
  7. Klik Frontend configuration.
  8. Di bagian New Frontend IP and port, lakukan hal berikut:
    1. Untuk Name, masukkan nama.
    2. Untuk Subnetwork, pilih subnetwork di region yang sama dengan instance yang akan dicerminkan.
    3. Untuk Port, pilih All.
    4. Klik Advanced configurations dan centang kotak Enable this load balancer for packet mirroring.
    5. Klik Done.
  9. Klik Create.

gcloud

  1. Buat health check HTTP regional baru untuk menguji konektivitas HTTP ke grup instance di port 80:

    gcloud compute health-checks create http HEALTH_CHECK_NAME \
        --region=REGION \
        --port=80
    

    Ganti kode berikut:

    • HEALTH_CHECK_NAME: nama health check.
    • REGION: region instance VM yang ingin Anda cerminkan paketnya.
  2. Buat layanan backend untuk traffic HTTP:

    gcloud compute backend-services create COLLECTOR_BACKEND_SERVICE \
        --region=REGION \
        --health-checks-region=REGION \
        --health-checks=HEALTH_CHECK_NAME \
        --load-balancing-scheme=internal \
        --protocol=tcp
    

    Ganti kode berikut:

    • COLLECTOR_BACKEND_SERVICE: nama layanan backend.
    • REGION: region instance VM tempat Anda ingin mencerminkan paket.
    • HEALTH_CHECK_NAME: nama health check.
  3. Tambahkan grup instance ke layanan backend:

    gcloud compute backend-services add-backend COLLECTOR_BACKEND_SERVICE \
        --region=REGION \
        --instance-group=INSTANCE_GROUP \
        --instance-group-zone=ZONE
    

    Ganti kode berikut:

    • COLLECTOR_BACKEND_SERVICE: nama layanan backend.
    • REGION: region grup instance.
    • INSTANCE_GROUP: nama grup instance.
    • ZONE: zona grup instance.
  4. Buat aturan penerusan untuk layanan backend:

    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
        --region=REGION \
        --network=NETWORK \
        --subnet=SUBNET \
        --backend-service=COLLECTOR_BACKEND_SERVICE \
        --load-balancing-scheme=internal \
        --ip-protocol=TCP \
        --ports=all \
        --is-mirroring-collector
    

    Ganti kode berikut:

    • FORWARDING_RULE_NAME: nama aturan penerusan.
    • REGION: region untuk aturan penerusan.
    • NETWORK: jaringan untuk aturan penerusan.
    • SUBNET: subnetwork di region VM tempat Anda ingin mencerminkan paket.
    • COLLECTOR_BACKEND_SERVICE: layanan backend untuk load balancer ini.

Langkah selanjutnya