Menyiapkan Load Balancer Jaringan 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, Anda perlu memahami 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 sebuah project. Anda harus menjadi pemilik atau editor project, atau harus memiliki semua peran IAM Compute Engine berikut:

Tugas Peran yang Diperlukan
Membuat jaringan, subnet, dan komponen 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 stack tunggal

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 yang ditetapkan ke IPv4), yang diperlukan untuk traffic IPv4. Saat membuat satu subnet stack pada jaringan VPC mode kustom, Anda memilih rentang subnet IPv4 untuk subnet tersebut.
  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 di grup instance tidak terkelola di zona us-west1-a dan dua VM dalam grup instance tidak terkelola di zona us-west1-c. Untuk mendemonstrasikan akses global, contoh ini akan 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:

Konfigurasi contoh 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 Subnet, lakukan hal berikut:

    1. Setel Subnet creation mode ke Custom.
    2. Di bagian Subnet baru, masukkan informasi berikut:
      • Name: lb-subnet
      • Region: us-west1
      • Jenis stack IP: IPv4 (stack tunggal)
      • Rentang alamat IP: 10.1.2.0/24
    3. Klik Done.
    4. Klik Tambahkan subnet, lalu masukkan informasi berikut:
      • Name: europe-subnet
      • Region: europe-west1
      • Jenis stack IP: IPv4 (stack tunggal)
      • 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 masuk, berlaku untuk semua target dalam 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. Nantinya, 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 di sistem tempat Anda akan memulai sesi SSH. Contoh ini menggunakan tag target allow-ssh untuk mengidentifikasi VM yang harus diberi tag tersebut.

  • fw-allow-health-check: Aturan masuk, yang berlaku untuk instance yang mengalami load balancing, yang memungkinkan traffic dari sistem health check Google Cloud (130.211.0.0/22 dan 35.191.0.0/16). Contoh ini menggunakan tag target allow-health-check untuk mengidentifikasi instance yang harus diterapkan.

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, lalu masukkan informasi berikut:

    • Name: fw-allow-lb-access
    • Jaringan: lb-network
    • Prioritas: 1000
    • Arah traffic: ingress
    • Tindakan pada kecocokan: allow
    • Target: Semua instance dalam jaringan
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 10.1.2.0/24
    • Protokol dan port: Izinkan semua
  3. Klik Create.

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

    • Name: fw-allow-ssh
    • Jaringan: lb-network
    • Prioritas: 1000
    • Arah traffic: ingress
    • Tindakan pada kecocokan: allow
    • 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, centang kotak 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:

    • Name: fw-allow-health-check
    • Jaringan: lb-network
    • Prioritas: 1000
    • Arah traffic: ingress
    • Tindakan pada kecocokan: allow
    • Targets: Tag target yang ditentukan
    • Tag target: allow-health-check
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 130.211.0.0/22 dan 35.191.0.0/16
    • Protokol dan port: Izinkan semua
  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 unmanaged yang masing-masing memiliki dua VM backend (server). Untuk menunjukkan 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 ini:
    • vm-a1
    • vm-a2
  • Grup instance ig-c berisi dua VM ini:
    • vm-c1
    • vm-c2

Traffic ke keempat VM backend mengalami load balancing.

Untuk mendukung contoh ini dan opsi konfigurasi tambahan, masing-masing dari keempat VM menjalankan server web Apache yang memantau port TCP berikut: 80, 8008, 8080, 8088, 443, dan 8443.

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

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

Secara {i>default<i}, 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 tersebut. Alamat IP tujuan paket yang dikirim ke VM backend oleh Load Balancer Jaringan passthrough internal adalah alamat IP internal dari aturan penerusan.

Demi kemudahan instruksi, 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, dengan 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 sistem operasi Debian dan versi 10 (buster) dipilih untuk opsi boot disk. Jika perlu, klik Change untuk mengubah gambar.

  7. Klik Advanced options.

  8. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Tag jaringan, masukkan allow-ssh dan allow-health-check.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Jaringan: lb-network
      • Subnet: lb-subnet
      • Jenis stack IP: IPv4 (stack tunggal)
      • Alamat IPv4 internal utama: Ephemeral (otomatis)
      • Alamat IPv4 eksternal: Efemeral
  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, masing-masing dengan dua 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 grup instance.

  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 keempat kombinasi ini untuk [VM-NAME] dan [ZONE]. Konten skrip identik 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-10 \
        --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 yang tidak dikelola 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 keempat VM, gunakan zona dan nama 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-10"

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 HTTP 200 (OK). Untuk mengetahui informasi selengkapnya, baca bagian health check pada 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.

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

Konsol

Memulai konfigurasi Anda

  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 Hubung publik atau internal, pilih Internal lalu klik Berikutnya.
  6. Klik Konfigurasikan.

Konfigurasi dasar

Di halaman Create internal passthrough Network Load Balancer, masukkan informasi berikut:

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

Mengonfigurasi backend

  1. Klik Backend configuration.
  2. Untuk menangani traffic IPv4 saja, 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 dan ulangi langkah ini untuk menambahkan ig-a.
  5. Dari daftar Health check, pilih Create a health check, masukkan informasi berikut, lalu klik Save.

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

    Perlu diperhatikan bahwa saat Anda menggunakan konsol Google Cloud untuk membuat load balancer, health check akan 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 tindakan berikut:
    1. Untuk Name, masukkan fr-ilb.
    2. Untuk Subnetwork, pilih lb-subnet.
    3. Di bagian Internal IP destination, dalam daftar IP address, pilih Create IP address, masukkan informasi berikut, lalu klik Reserve.
      • Name: ip-ilb
      • Versi IP: IPv4
      • Alamat IP statis: Pilihan saya adalah
      • Alamat IP kustom: 10.1.2.99
    4. Untuk Ports, pilih Multiple, lalu di Port numbers, masukkan 80,8008,8080, dan 8088.
    5. Pastikan terdapat 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. Membuat 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 akan 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 Tag jaringan, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Jaringan: lb-network
      • Subnet: lb-subnet
  8. Klik Create.

gcloud

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

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

API

Buat permintaan POST ke metode instances.insert.

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 akan didistribusikan di antara empat VM backend karena tidak ada afinitas sesi yang telah dikonfigurasi.

  1. Menghubungkan 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 tersebut sehingga Anda dapat melihat bahwa respons berasal dari VM backend yang berbeda. Nama VM yang menghasilkan respons ditampilkan dalam teks di respons HTML, berdasarkan konten /var/www/html/index.html di setiap VM backend. Misalnya, respons yang diharapkan terlihat seperti Page served from: vm-a1 dan Page served from: vm-a2.

    curl http://10.1.2.99
    

    Aturan penerusan dikonfigurasi untuk melayani 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 mem-ping alamat IP load balancer. Hal ini karena Load Balancer Jaringan passthrough internal diimplementasikan dalam pemrograman jaringan virtual, bukan perangkat yang terpisah.

  1. Menghubungkan ke instance VM klien.

    gcloud compute ssh vm-client --zone=us-west1-a
    
  2. Mencoba melakukan ping ke alamat IP load balancer. Perhatikan bahwa Anda tidak mendapatkan respons dan perintah ping akan berakhir 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 mengirimkan paket ke alamat IP aturan penerusan load balancer-nya, permintaan tersebut akan dirutekan kembali ke dirinya sendiri. Hal ini berlaku terlepas dari status health check VM backend.

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

Karena rute lokal ini berada di dalam VM itu sendiri (bukan rute di jaringan VPC), paket yang dikirim ke alamat IP load balancer tidak akan 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 (berdasarkan alamat IP atau nama layanan) menggunakan curl. Respons berasal dari VM backend yang sama dengan yang membuat permintaan. Permintaan berulang akan 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, dengan mencari 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 belakang 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 mengirimkan paket ke alamat IP aturan penerusan load balancer, paket tersebut selalu diarahkan 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 ketika backend yang di-load balanced saat perlu mengirim traffic TCP ke alamat IP load balancer, dan Anda ingin traffic didistribusikan seolah-olah berasal dari backend yang tidak mengalami load balancing, pertimbangkan untuk menggunakan Load Balancer Jaringan proxy internal regional.

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

Menyiapkan load balancer dengan subnet dual 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 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 yang ditetapkan ke IPv4_IPv6), yang diperlukan untuk traffic IPv6. Saat membuat subnet stack ganda pada jaringan VPC mode kustom, Anda memilih jenis akses IPv6 untuk subnet tersebut. Untuk contoh ini, kita menetapkan parameter ipv6-access-type subnet ke INTERNAL. Artinya, VM baru di subnet ini dapat diberi alamat IPv4 internal dan alamat IPv6 internal. Untuk mengetahui petunjuknya, lihat dokumentasi VPC tentang Menambahkan subnet dua stack.
  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 akan ditetapkan secara otomatis. Google memberikan blok CIDR IPv6 (/64) dengan ukuran tetap.
  5. Empat VM dual-stack backend: dua VM dalam grup instance tidak terkelola di zona us-west1-a dan dua VM dalam grup instance yang tidak dikelola di zona us-west1-c. Untuk mendemonstrasikan akses global, contoh ini akan 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 dual stack dengan layanan backend untuk mengelola distribusi
    koneksi ke dua grup instance zona.
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 dalam 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:

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

  8. Klik Add subnet dan masukkan informasi berikut:

    • Name: europe-subnet
    • Region: europe-west1
    • Jenis stack IP: IPv4 (stack tunggal)
    • 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 tanda --enable-ula-internal-ipv6. Opsi ini menetapkan awalan ULA /48 dari dalam rentang fd20::/20 yang digunakan oleh Google Cloud untuk rentang subnet IPv6 internal. 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 tanda --internal-ipv6-range, Google akan memilih awalan /48 untuk jaringan, 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

Membuat jaringan VPC mode kustom baru.

Untuk mengonfigurasi rentang IPv6 internal pada subnet apa pun di jaringan ini, tetapkan enableUlaInternalIpv6 ke true. Opsi ini menetapkan rentang /48 dari dalam rentang fd20::/20 yang digunakan oleh Google untuk rentang subnet IPv6 internal. 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 masuk, yang berlaku untuk semua target dalam jaringan VPC, yang memungkinkan 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 masuk, berlaku untuk semua target dalam jaringan VPC, yang memungkinkan traffic dari sumber dalam rentang IPv6 yang dikonfigurasi di subnet. Aturan ini mengizinkan lalu lintas IPv6 yang masuk dari klien mana pun yang terletak di 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 yang harus diberi tag tersebut.

  • fw-allow-health-check: Aturan masuk, yang berlaku untuk instance yang mengalami load balancing, yang memungkinkan traffic dari sistem health check Google Cloud (130.211.0.0/22 dan 35.191.0.0/16). Contoh ini menggunakan tag target allow-health-check untuk mengidentifikasi instance yang harus diterapkan.

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

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

Konsol

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

    Buka Kebijakan firewall

  2. Untuk membuat aturan guna mengizinkan traffic subnet, klik Create firewall rule dan masukkan informasi berikut:

    • Name: fw-allow-lb-access
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Arah traffic: ingress
    • Tindakan pada kecocokan: allow
    • Target: Semua instance dalam jaringan
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 10.1.2.0/24 dan 10.3.4.0/24
    • Protokol dan port: Izinkan semua
  3. Klik Create.

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

    • Name: fw-allow-lb-access-ipv6
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Arah traffic: ingress
    • Tindakan pada kecocokan: allow
    • Target: Semua instance dalam jaringan
    • Filter sumber: Rentang IPv6
    • Rentang IPv6 sumber: IPV6_ADDRESS ditetapkan di lb-subnet
    • Protokol dan port: Izinkan semua
  5. Klik Create.

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

    • Name: fw-allow-ssh
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Arah traffic: ingress
    • Tindakan pada kecocokan: allow
    • 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, centang kotak TCP, lalu masukkan 22 di Ports.
  7. Klik Create.

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

    • Name: fw-allow-health-check-ipv6
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Arah traffic: ingress
    • Tindakan pada kecocokan: allow
    • Targets: Tag target yang ditentukan
    • Tag target: allow-health-check-ipv6
    • Filter sumber: Rentang IPv6
    • Rentang IPv6 sumber: 2600:2d00:1:b029::/64
    • Protokol dan port: Izinkan semua
  9. Klik Create.

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

    • Name: fw-allow-health-check
    • Jaringan: lb-network-dual-stack
    • Prioritas: 1000
    • Arah traffic: ingress
    • Tindakan pada kecocokan: allow
    • Targets: Tag target yang ditentukan
    • Tag target: allow-health-check
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 130.211.0.0/22 dan 35.191.0.0/16
    • Protokol dan port: Izinkan semua
  11. Klik Create.

gcloud

  1. 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 Google Cloud IPv6.

    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 unmanaged yang masing-masing memiliki dua VM backend (server). Untuk menunjukkan 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 ini:
    • vm-a1
    • vm-a2
  • Grup instance ig-c berisi dua VM ini:
    • vm-c1
    • vm-c2

Traffic ke keempat VM backend mengalami load balancing.

Untuk mendukung contoh ini dan opsi konfigurasi tambahan, masing-masing dari keempat VM menjalankan server web Apache yang memantau port TCP berikut: 80,8008, 8080, 8088, 443, dan 8443.

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

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

Secara {i>default<i}, 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 tersebut. Alamat IP tujuan paket yang dikirim ke VM backend oleh Load Balancer Jaringan passthrough internal adalah alamat IP internal dari aturan penerusan.

Pastikan jenis tumpukan subnetwork cocok dengan jenis tumpukan template instance yang digunakan oleh grup instance terkelola. Subnetwork harus berupa dual-stack jika grup instance terkelola menggunakan template instance dual-stack.

Demi kemudahan instruksi, 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, dengan 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 sistem operasi Debian dan versi 10 (buster) dipilih untuk opsi boot disk. Jika perlu, klik Change untuk mengubah gambar.

  7. Klik Advanced options.

  8. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Tag jaringan, masukkan allow-ssh dan allow-health-check-ipv6.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Jaringan: lb-network-dual-stack
      • Subnet: lb-subnet
      • Jenis stack IP: IPv4 dan IPv6 (dual-stack)
      • Alamat IPv4 internal utama: Ephemeral (otomatis)
      • Alamat IPv4 eksternal: Efemeral
    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, masing-masing dengan dua 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 grup instance.

  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 ini, jalankan perintah gcloud compute instances create empat kali, menggunakan keempat kombinasi ini untuk [VM-NAME] dan [ZONE]. Konten skrip identik 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-10 \
        --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 yang tidak dikelola 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 keempat VM, gunakan zona dan nama 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-10"

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 HTTP (OK). Untuk mengetahui informasi selengkapnya, baca bagian health check di 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.

  • Internal IP address: 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 akan dikonfigurasi, namun alamat IPv6 akan ditetapkan secara otomatis.

Konsol

Memulai konfigurasi Anda

  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 Hubung publik atau internal, pilih Internal lalu klik Berikutnya.
  6. Klik Konfigurasikan.

Konfigurasi dasar

Di halaman Create internal passthrough Network Load Balancer, masukkan informasi berikut:

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

Konfigurasi backend

  1. Klik Backend configuration.
  2. Di bagian New Backend pada Backends, 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 dan ulangi langkah ini 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 tindakan 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 efemeral.
      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 destination, dari daftar IP address, pilih Create IP address, masukkan informasi berikut, lalu klik Reserve.
        • Name: ip-ilb
        • Versi IP: IPv4
        • Alamat IP statis: Pilihan saya adalah
        • 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 terdapat 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 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 akan 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 Tag jaringan, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Jaringan: lb-network-dual-stack
      • Subnet: lb-subnet
      • Jenis stack IP: IPv4 dan IPv6 (dual-stack)
      • IP internal utama: Efemeral (otomatis)
      • IP Eksternal: Efemeral
    3. Klik Done.
  8. Klik Create.

gcloud

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

gcloud compute instances create vm-client \
    --zone=us-west1-a \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --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 akan didistribusikan di antara empat VM backend.

  1. Menghubungkan ke instance VM klien.

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

    gcloud compute forwarding-rules describe fr-ilb-ipv6 --region=us-west1
    
  3. Jelaskan fr-ilb aturan penerusan IPv4.

    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 ini:

    $  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 efemeral dalam aturan penerusan fr-ilb-ipv6.

Opsi konfigurasi tambahan

Bagian ini memperluas contoh konfigurasi untuk memberikan opsi konfigurasi tambahan dan alternatif. Semua tugas bersifat opsional. Anda dapat melakukannya dalam urutan apa pun.

Aktifkan akses global

Anda dapat mengaktifkan akses global untuk contoh Load Balancer Jaringan passthrough internal Anda agar dapat diakses oleh klien di semua region. Backend load balancer contoh Anda harus tetap 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, buat perubahan konfigurasi berikut.

Konsol

Mengedit aturan penerusan load balancer

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

    Buka Load balancing

  2. Di kolom Name, klik Network Load Balancer internal Anda. Contoh load balancer diberi nama be-ilb.

  3. Klik Frontend configuration.

  4. Klik Edit .

  5. Di bagian Akses global, pilih Aktifkan.

  6. Klik Done.

  7. Klik Perbarui.

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

gcloud

  1. Perbarui contoh aturan penerusan load balancer, fr-ilb untuk menyertakan tanda --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 telah mengaktifkan akses global atau tidak. Contoh:

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

    Kata True muncul di output, setelah nama dan region 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
}

Buat 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 Region ke europe-west1.

  5. Tetapkan Zone ke europe-west1-b.

  6. Klik Advanced options.

  7. Klik Networking dan konfigurasikan kolom berikut:

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

gcloud

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

gcloud compute instances create vm-client2 \
    --zone=europe-west1-b \
    --image-family=debian-10 \
    --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 pada 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 yang tidak dikelola. Sebagai gantinya, Anda dapat menggunakan grup instance terkelola, termasuk grup instance terkelola zona 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 menurut zona dari contoh dengan satu grup instance terkelola regional. Grup instance yang dikelola regional secara otomatis membuat VM di beberapa zona region, sehingga lebih mudah untuk mendistribusikan 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 melakukan penskalaan berdasarkan load balancing.

Prosedur ini menunjukkan cara memodifikasi 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 VM instance templates.

    Buka VM instance templates

  2. Klik Create instance template.

  3. Tetapkan Name ke template-vm-ilb.

  4. Pilih jenis mesin.

  5. Di bagian Boot disk, pastikan sistem operasi Debian dan versi 10 (buster) dipilih untuk opsi boot disk. Jika perlu, klik Change untuk mengubah gambar.

  6. Klik Advanced options.

  7. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Tag jaringan, masukkan allow-ssh dan allow-health-check.
    2. Untuk Network interfaces, pilih opsi 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. Setel Instance template ke template-vm-ilb.

  6. Opsional: Konfigurasi penskalaan otomatis. Anda tidak dapat menskalakan grup instance secara otomatis berdasarkan penggunaan load balancing HTTP karena grup instance tersebut 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: Konfigurasi 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. Membuat template instance. Jika ingin, Anda dapat menetapkan parameter lain, seperti jenis mesin, untuk digunakan oleh template gambar.

    gcloud compute instance-templates create template-vm-ilb \
        --image-family=debian-10 \
        --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 sudah Anda buat:

    gcloud compute backend-services add-backend be-ilb \
        --region=us-west1 \
        --instance-group=ig-ilb \
        --instance-group-region=us-west1
    
  4. Putuskan hubungan dua grup instance yang tidak dikelola (sesuai zona) 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, masing-masing diberi alamat IP eksternal sementara agar dapat mendownload Apache menggunakan skrip startup. Karena VM backend hanya digunakan oleh Load Balancer Jaringan 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 Save.

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, lalu ganti dan [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, lalu ganti dan 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 efemeral.

Langkah berikut menunjukkan cara mempromosikan alamat IPv4 atau IPv6 internal ke alamat IPv4 atau IPv6 internal statis, lalu mengupdate instance VM untuk menggunakan alamat IP internal statis:

  1. Terapkan alamat IPv4 atau IPv6 internal efemeral yang sedang digunakan ke alamat statis.
  2. Ubah atau tetapkan alamat IPv6 internal ke instance yang ada.

Selain itu, langkah-langkah berikut ini menunjukkan cara mencadangkan alamat IPv4 atau IPv6 internal statis yang baru, kemudian mengupdate instance VM agar 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 pada subnet.

  2. Ubah atau tetapkan alamat IPv6 internal ke instance yang ada.

Untuk mengetahui informasi selengkapnya, lihat Cara mereservasi 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 informasi tentang tujuan setiap komponen, lihat Komponen.

Saat membuat contoh aturan penerusan load balancer ini, Anda 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 keenam port ini, Anda dapat mengonfigurasi aturan penerusan untuk menerima traffic di semua port. Dengan strategi ini, Anda juga dapat mengonfigurasi aturan firewall atau aturan yang mengizinkan koneksi masuk ke VM backend sehingga hanya mengizinkan port tertentu.

Prosedur ini menunjukkan cara mengganti contoh aturan penerusan load balancer dengan aturan yang menerima traffic di semua port.

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

Konsol

Menghapus aturan penerusan dan membuat yang 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 ke 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:

    • Name: fr-ilb
    • Subnetwork: lb-subnet
    • IP Internal: 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 port-nya menggunakan kata kunci ALL. Parameter lain 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 pada 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 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 aturan penerusan tunggal untuk 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, yang satu menangani traffic di port 80, 8008, 8080, dan 8088, serta yang satunya lagi menangani traffic di port 443 dan 8443.

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

Konsol

  1. Di konsol Google Cloud, buka halaman Aturan penerusan.

    Buka Aturan penerusan

  2. Di kolom Name, klik fr-ilb, lalu klik Delete.

  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 langkah berikut:

    1. Untuk Name, masukkan fr-ilb-http.
    2. Untuk Subnetwork, pilih lb-subnet.
    3. Untuk Tujuan IP Internal, pilih Dibagikan.
    4. Dari daftar IP address, pilih Create IP address, masukkan informasi berikut, lalu klik Reserve:
      • Name: internal-10-1-2-99
      • Alamat IP statis: Pilihan saya adalah
      • 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 langkah berikut:

    1. Untuk Name, masukkan fr-ilb-https.
    2. Untuk Subnetwork, pilih lb-subnet.
    3. Untuk Tujuan IP Internal, pilih Dibagikan.
    4. Dari daftar Alamat IP, 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 tanda --purpose 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 di 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 pada 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.

Gunakan afinitas sesi

Contoh konfigurasi membuat layanan backend tanpa afinitas sesi.

Prosedur ini menunjukkan cara memperbarui layanan backend untuk contoh Load Balancer Jaringan passthrough internal, sehingga layanan tersebut 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), lalu klik Edit.

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

  4. Dari daftar Afinitas sesi, pilih IP Klien.

  5. Klik Perbarui.

gcloud

Gunakan perintah gcloud berikut untuk memperbarui layanan backend be-ilb, dengan 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 guna 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 sedang Anda update
  • REGION: region layanan backend yang akan diupdate
  • TRACKING_MODE: mode pelacakan koneksi yang akan digunakan untuk paket masuk; untuk mengetahui daftar nilai yang didukung, lihat Mode pelacakan
  • CONNECTION_PERSISTENCE_BEHAVIOR: perilaku persistensi koneksi saat backend tidak responsif; untuk daftar nilai yang didukung, lihat Persistensi koneksi di backend yang tidak responsif
  • IDLE_TIMEOUT_VALUE: jumlah detik saat entri tabel pelacakan koneksi harus dipertahankan setelah load balancer memproses paket terakhir yang cocok dengan entri tersebut

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

    Nilai defaultnya 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.

Sesuai dengan aturan firewall, klien di subnet mana pun di region tersebut 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 Subnet, lakukan hal berikut:

    1. Klik Tambahkan subnet.
    2. Di bagian Subnet baru, masukkan informasi berikut:
      • Name: 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 dan klik Done:

    • Name: fr-ilb-2
    • Versi IP: IPv4
    • Subnetwork: second-subnet
    • IP Internal: 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 lain untuk aturan ini, termasuk alamat IP dan layanan backend, sama dengan parameter untuk 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 diwajibkan 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.

Gunakan subsetelan backend

Contoh konfigurasi akan membuat layanan backend tanpa subset.

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

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

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

gcloud

Gunakan perintah gcloud berikut untuk memperbarui layanan backend be-ilb, dengan menentukan kebijakan subset:

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 dapat Anda gunakan untuk 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 Anda

  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 Hubung publik atau internal, pilih Internal lalu klik Berikutnya.
  6. Klik Konfigurasikan.

Konfigurasi dasar

  1. Untuk Nama load balancer, masukkan nama.
  2. Untuk Region, pilih region instance VM tempat Anda ingin mencerminkan paket.
  3. Untuk Jaringan, pilih jaringan tempat Anda ingin mencerminkan paket.
  4. Klik Backend configuration.
  5. Di bagian New Backend, untuk Instance group, pilih grup instance yang menjadi tujuan penerusan paket.
  6. Dari daftar Health check, pilih Create a health check, masukkan informasi berikut, lalu klik Save:
    1. Untuk Nama, 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 tindakan berikut:
    1. Untuk Name, masukkan nama.
    2. Untuk Subnetwork, pilih subnetwork di region yang sama dengan instance yang akan dicerminkan.
    3. Untuk Ports, pilih All.
    4. Klik Advanced configurations dan pilih kotak centang Enable this load balancer for package 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 duplikasi 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