Menyiapkan Load Balancer Aplikasi internal regional dengan backend grup instance VM

Dokumen ini berisi petunjuk cara mengonfigurasi Load Balancer Aplikasi internal regional untuk layanan Anda yang dijalankan di VM Compute Engine.

Untuk mengonfigurasi load balancing bagi layanan Anda yang berjalan di Pod Google Kubernetes Engine (GKE), lihat Load balancing berbasis container dengan NEG mandiri dan bagian Melampirkan Load Balancer Aplikasi internal regional ke NEG mandiri.

Untuk mengonfigurasi load balancing agar dapat mengakses Google API dan layanan Google menggunakan Private Service Connect, lihat Mengonfigurasi Private Service Connect dengan kontrol layanan HTTP(S) konsumen.

Penyiapan untuk Load Balancer Aplikasi internal memiliki dua bagian:

  • Melakukan tugas prasyarat, seperti memastikan bahwa akun yang diperlukan memiliki izin yang benar dan menyiapkan jaringan Virtual Private Cloud (VPC).
  • Menyiapkan resource load balancer.

Sebelum mengikuti panduan ini, biasakan diri Anda dengan hal-hal berikut:

Izin

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

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

Untuk informasi selengkapnya, lihat panduan berikut:

Ringkasan penyiapan

Anda dapat mengonfigurasi Load Balancer Aplikasi internal seperti yang dijelaskan dalam alur konfigurasi tingkat tinggi berikut. Langkah-langkah yang diberi nomor mengacu pada angka-angka dalam diagram.

Komponen bernomor Load Balancer Aplikasi Internal.
Komponen bernomor Load Balancer Aplikasi Internal (klik untuk memperbesar).

Seperti yang ditunjukkan pada diagram, contoh ini membuat Load Balancer Aplikasi internal di jaringan VPC di region us-west1, dengan satu layanan backend dan dua grup backend.

Diagram menampilkan hal berikut:

  1. Jaringan VPC dengan dua subnet:

    1. Satu subnet digunakan untuk backend (grup instance) dan aturan penerusan. Rentang alamat IP utamanya adalah 10.1.2.0/24.

    2. Satu subnet adalah subnet khusus proxy di region us-west1. Anda harus membuat satu subnet khusus proxy di setiap region jaringan VPC tempat Anda menggunakan Load Balancer Aplikasi internal. Subnet khusus proxy region dibagikan ke semua Load Balancer Aplikasi internal di region tersebut. Alamat sumber paket yang dikirim dari Load Balancer Aplikasi internal ke backend layanan Anda dialokasikan dari subnet khusus proxy. Dalam contoh ini, subnet khusus proxy untuk region memiliki rentang alamat IP utama 10.129.0.0/23, yang merupakan ukuran subnet yang direkomendasikan. Untuk mengetahui informasi selengkapnya, lihat Subnet khusus proxy.

  2. Aturan firewall yang mengizinkan aliran traffic subnet khusus proxy di jaringan Anda. Ini berarti menambahkan satu aturan yang mengizinkan traffic port TCP 80, 443, dan 8080 dari 10.129.0.0/23 (rentang subnet khusus proxy dalam contoh ini). Aturan firewall lain untuk pemeriksaan health check.

  3. Instance VM Compute Engine Backend.

  4. Grup instance terkelola atau tidak terkelola untuk deployment VM Compute Engine.

    Di setiap zona, Anda dapat memiliki kombinasi jenis grup backend berdasarkan persyaratan deployment Anda.

  5. Health check regional yang melaporkan kesiapan backend Anda.

  6. Layanan backend regional yang memantau penggunaan dan kondisi backend.

  7. Peta URL regional yang mengurai URL permintaan dan meneruskan permintaan ke layanan backend tertentu berdasarkan host dan jalur URL permintaan.

  8. Proxy HTTP atau HTTPS target regional, yang menerima permintaan dari pengguna dan meneruskannya ke peta URL. Untuk HTTPS, konfigurasikan resource sertifikat SSL regional. Proxy target menggunakan sertifikat SSL untuk mendekripsi traffic SSL jika Anda mengonfigurasi load balancing HTTPS. Proxy target dapat meneruskan traffic ke instance menggunakan HTTP atau HTTPS.

  9. Aturan penerusan, yang memiliki alamat IP internal load balancer Anda, untuk meneruskan setiap permintaan yang masuk ke proxy target.

    Alamat IP internal yang terkait dengan aturan penerusan dapat berasal dari subnet mana pun di jaringan dan region yang sama. Perhatikan kondisi berikut:

    • Alamat IP dapat (tetapi tidak harus) berasal dari subnet yang sama dengan grup instance backend.
    • Alamat IP tidak boleh berasal dari subnet khusus proxy yang dicadangkan dan menetapkan flag --purpose-nya ke REGIONAL_MANAGED_PROXY.
    • Jika Anda ingin berbagi alamat IP internal dengan beberapa aturan penerusan, tetapkan flag --purpose alamat IP ke SHARED_LOADBALANCER_VIP.

    Contoh di halaman ini menggunakan alamat IP internal yang dicadangkan untuk aturan penerusan Load Balancer Aplikasi internal regional, bukan mengizinkan alokasi alamat IP internal sementara. Sebagai praktik terbaik, sebaiknya Anda melakukan reservasi alamat IP untuk aturan penerusan.

Mengonfigurasi jaringan dan subnet

Anda memerlukan jaringan VPC dengan dua subnet: satu untuk backend load balancer dan satu lagi untuk proxy load balancer. Load Balancer Aplikasi internal bersifat regional. Traffic dalam jaringan VPC akan dirutekan ke load balancer jika sumber traffic berada di subnet di region yang sama dengan load balancer.

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

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

  • Subnet untuk backend. Subnet bernama backend-subnet di region us-west1 menggunakan 10.1.2.0/24 untuk rentang IP utamanya.

  • Subnet untuk proxy. Subnet bernama proxy-only-subnet di region us-west1 menggunakan 10.129.0.0/23 untuk rentang IP utamanya.

Untuk mendemonstrasikan akses global, contoh ini juga 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

Mengonfigurasi jaringan dan subnet

Konsol

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Untuk Name, masukkan lb-network.

  4. Di bagian Subnets, tetapkan Subnet creation mode ke Custom.

  5. Buat subnet untuk backend load balancer. Di bagian Subnet baru, masukkan informasi berikut:

    • Name: backend-subnet
    • Region: us-west1
    • Rentang alamat IP: 10.1.2.0/24
  6. Klik Done.

  7. Klik Tambahkan subnet.

  8. Buat subnet untuk mendemonstrasikan akses global. Di bagian New subnet, masukkan informasi berikut:

    • Name: europe-subnet
    • Region: europe-west1
    • Rentang alamat IP: 10.3.4.0/24
  9. Klik Done.

  10. Klik Create.

gcloud

  1. Buat jaringan VPC kustom dengan perintah gcloud compute networks create:

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

    gcloud compute networks subnets create backend-subnet \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    
  3. Buat subnet di jaringan lb-network di region europe-west1 dengan perintah gcloud compute networks subnets create:

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

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

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

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

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

{
 "name": "backend-subnet",
 "network": "projects/PROJECT_ID/global/networks/lb-network",
 "ipCidrRange": "10.1.2.0/24",
 "region": "projects/PROJECT_ID/regions/us-west1",
}

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

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

{
 "name": "europe-subnet",
 "network": "projects/PROJECT_ID/global/networks/lb-network",
 "ipCidrRange": "10.3.4.0/24",
 "region": "projects/PROJECT_ID/regions/europe-west1",
}

Mengonfigurasi subnet khusus proxy

Subnet khusus proxy ini ditujukan untuk semua load balancer berbasis Envoy regional di region us-west1 dari lb-network.

Konsol

Jika menggunakan konsol Google Cloud, Anda dapat menunggu dan membuat subnet khusus proxy nanti di halaman Load balancing.

Jika Anda ingin membuat subnet khusus proxy sekarang, gunakan langkah-langkah berikut:

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

    Buka VPC networks

  2. Klik nama jaringan VPC: lb-network.

  3. Klik Tambahkan subnet.

  4. Untuk Name, masukkan proxy-only-subnet.

  5. Untuk Region, pilih us-west1.

  6. Tetapkan Destination ke Regional Managed Proxy.

  7. Untuk Rentang alamat IP, masukkan 10.129.0.0/23.

  8. Klik Tambahkan.

gcloud

Buat subnet khusus proxy dengan perintah gcloud compute networks subnets create.

gcloud compute networks subnets create proxy-only-subnet \
  --purpose=REGIONAL_MANAGED_PROXY \
  --role=ACTIVE \
  --region=us-west1 \
  --network=lb-network \
  --range=10.129.0.0/23

API

Buat subnet khusus proxy dengan metode subnetworks.insert, yang menggantikan PROJECT_ID dengan project ID Anda.

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

{
  "name": "proxy-only-subnet",
  "ipCidrRange": "10.129.0.0/23",
  "network": "projects/PROJECT_ID/global/networks/lb-network",
  "region": "projects/PROJECT_ID/regions/us-west1",
  "purpose": "REGIONAL_MANAGED_PROXY",
  "role": "ACTIVE"
}

Mengonfigurasi aturan firewall

Contoh ini menggunakan aturan firewall berikut:

  • fw-allow-ssh. Aturan masuk, berlaku untuk instance yang sedang di-load balanced, yang memungkinkan konektivitas SSH yang masuk di port TCP 22 dari alamat apa 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 menerapkan aturan firewall.

  • fw-allow-health-check. Aturan ingress, berlaku untuk instance yang di-load balanced, yang memungkinkan semua traffic TCP dari sistem health check Google Cloud (di 130.211.0.0/22 dan 35.191.0.0/16). Contoh ini menggunakan tag target load-balanced-backend untuk mengidentifikasi VM yang menjadi tempat penerapan aturan firewall.

  • fw-allow-proxies. Aturan ingress, yang berlaku untuk instance yang mengalami load balancing, yang memungkinkan traffic TCP pada port 80, 443, dan 8080 dari proxy terkelola Load Balancer Aplikasi internal. Contoh ini menggunakan tag target load-balanced-backend untuk mengidentifikasi VM yang menerapkan aturan firewall.

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

Tag target menentukan instance backend. Tanpa tag target, aturan firewall akan berlaku untuk semua backend instance Anda di jaringan VPC. Saat membuat VM backend, pastikan untuk menyertakan tag target yang ditentukan, seperti yang ditunjukkan dalam Membuat grup instance terkelola.

Konsol

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

    Buka Kebijakan firewall

  2. Klik Create firewall rule untuk membuat aturan yang akan mengizinkan koneksi SSH yang masuk:

    • Name: fw-allow-ssh
    • Jaringan: lb-network
    • Arah traffic: Ingress
    • Tindakan jika kecocokan: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-ssh
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 0.0.0.0/0
    • Protokol dan port:
      • Pilih Specified protocols and ports.
      • Pilih kotak centang TCP, lalu masukkan 22 untuk nomor port.
  3. Klik Create.

  4. Klik Create firewall rule untuk kedua kalinya guna membuat aturan guna mengizinkan health check Google Cloud:

    • Name: fw-allow-health-check
    • Jaringan: lb-network
    • Arah traffic: Ingress
    • Tindakan jika kecocokan: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: load-balanced-backend
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 130.211.0.0/22 dan 35.191.0.0/16
    • Protokol dan port:
      • Pilih Specified protocols and ports.
      • Pilih kotak centang TCP, lalu masukkan 80 untuk nomor port.
        Sebagai praktik terbaik, batasi aturan ini hanya untuk protokol dan port yang cocok dengan yang digunakan oleh health check Anda. Jika Anda menggunakan tcp:80 untuk protokol dan port, Google Cloud dapat menggunakan HTTP pada port 80 untuk menghubungi VM Anda, tetapi tidak dapat menggunakan HTTPS pada port 443 untuk menghubungi VM.
  5. Klik Create.

  6. Klik Create firewall rule untuk ketiga kalinya guna membuat aturan agar server proxy load balancer dapat menghubungkan backend:

    • Name: fw-allow-proxies
    • Jaringan: lb-network
    • Arah traffic: Ingress
    • Tindakan jika kecocokan: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: load-balanced-backend
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 10.129.0.0/23
    • Protokol dan port:
      • Pilih Specified protocols and ports.
      • Centang kotak TCP, lalu masukkan 80, 443, 8080 untuk nomor port.
  7. Klik Create.

gcloud

  1. 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
    
  2. Buat aturan fw-allow-health-check untuk mengizinkan health check Google Cloud. Contoh ini mengizinkan semua traffic TCP dari penguji health check; namun, Anda juga dapat mengonfigurasi kumpulan port yang lebih sempit untuk memenuhi kebutuhan Anda.

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --target-tags=load-balanced-backend \
        --rules=tcp
    
  3. Buat aturan fw-allow-proxies untuk mengizinkan proxy Load Balancer Aplikasi internal terhubung ke backend Anda. Tetapkan source-ranges ke rentang yang dialokasikan di subnet khusus proxy, misalnya 10.129.0.0/23.

    gcloud compute firewall-rules create fw-allow-proxies \
      --network=lb-network \
      --action=allow \
      --direction=ingress \
      --source-ranges=source-range \
      --target-tags=load-balanced-backend \
      --rules=tcp:80,tcp:443,tcp:8080
    

API

Buat aturan firewall fw-allow-ssh dengan membuat permintaan POST ke metode firewalls.insert, yang mengganti PROJECT_ID dengan project ID Anda.

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

{
 "name": "fw-allow-ssh",
 "network": "projects/PROJECT_ID/global/networks/lb-network",
 "sourceRanges": [
   "0.0.0.0/0"
 ],
 "targetTags": [
   "allow-ssh"
 ],
 "allowed": [
  {
    "IPProtocol": "tcp",
    "ports": [
      "22"
    ]
  }
 ],
"direction": "INGRESS"
}

Buat aturan firewall fw-allow-health-check dengan membuat permintaan POST ke metode firewalls.insert, yang mengganti PROJECT_ID dengan project ID Anda.

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

{
 "name": "fw-allow-health-check",
 "network": "projects/PROJECT_ID/global/networks/lb-network",
 "sourceRanges": [
   "130.211.0.0/22",
   "35.191.0.0/16"
 ],
 "targetTags": [
   "load-balanced-backend"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp"
   }
 ],
 "direction": "INGRESS"
}

Buat aturan firewall fw-allow-proxies untuk mengizinkan traffic TCP dalam subnet proxy untuk metode firewalls.insert, yang menggantikan PROJECT_ID dengan project ID Anda.

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

{
 "name": "fw-allow-proxies",
 "network": "projects/PROJECT_ID/global/networks/lb-network",
 "sourceRanges": [
   "10.129.0.0/23"
 ],
 "targetTags": [
   "load-balanced-backend"
 ],
 "allowed": [
   {
     "IPProtocol": "tcp",
     "ports": [
       "80"
     ]
   },
 {
     "IPProtocol": "tcp",
     "ports": [
       "443"
     ]
   },
   {
     "IPProtocol": "tcp",
     "ports": [
       "8080"
     ]
   }
 ],
 "direction": "INGRESS"
}

Mencadangkan alamat IP load balancer

Secara default, satu alamat IP digunakan untuk setiap aturan penerusan. Anda dapat mencadangkan alamat IP bersama, yang memungkinkan Anda menggunakan alamat IP yang sama dengan beberapa aturan penerusan. Namun, jika Anda ingin memublikasikan load balancer dengan menggunakan Private Service Connect, jangan gunakan alamat IP bersama untuk aturan penerusan.

Untuk alamat IP aturan penerusan, gunakan backend-subnet. Jika Anda mencoba menggunakan subnet khusus proxy, pembuatan aturan penerusan akan gagal.

Konsol

Anda dapat mereservasi alamat IP internal mandiri menggunakan Google Cloud Console.

  1. Buka halaman VPC networks.

    Buka VPC networks

  2. Klik jaringan yang digunakan untuk mengonfigurasi konektivitas hybrid antar-lingkungan.
  3. Klik Static internal IP addresses, lalu klik Reserve static address.
  4. Untuk Name, masukkan l7-ilb-ip-address.
  5. Untuk Subnet, pilih backend-subnet.
  6. Jika Anda ingin menentukan alamat IP yang akan dicadangkan, di bagian Static IP address, pilih Let me choose, lalu isi Custom IP address. Jika tidak, sistem akan secara otomatis menetapkan alamat IP di subnet untuk Anda.
  7. Jika Anda ingin menggunakan alamat IP ini dengan beberapa aturan penerusan, di bagian Tujuan, pilih Dibagikan.
  8. Klik Reserve untuk menyelesaikan prosesnya.

gcloud

  1. Menggunakan gcloud CLI, jalankan perintah compute addresses create:

    gcloud compute addresses create l7-ilb-ip-address \
      --region=us-west1 \
      --subnet=backend-subnet
    

    Jika Anda ingin menggunakan alamat IP yang sama dengan beberapa aturan penerusan, tentukan --purpose=SHARED_LOADBALANCER_VIP.

  2. Gunakan perintah compute addresses describe untuk melihat alamat IP yang dialokasikan:

    gcloud compute addresses describe l7-ilb-ip-address \
      --region=us-west1
    

Membuat backend grup instance VM terkelola

Bagian ini menunjukkan cara membuat template grup instance dan grup instance terkelola. Grup instance terkelola menyediakan instance VM yang menjalankan server backend dari contoh Load Balancer Aplikasi internal regional. Untuk grup instance, Anda dapat menentukan layanan HTTP dan memetakan nama port ke port yang relevan. Layanan backend load balancer meneruskan traffic ke port bernama. Traffic dari klien akan di-load balanced ke server backend. Untuk tujuan demonstrasi, backend menayangkan nama host-nya sendiri.

Konsol

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

    Buka Instance templates

    1. Klik Create instance template.
    2. Untuk Name, masukkan l7-ilb-backend-template.
    3. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 10 (buster). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Klik Advanced options.
    5. Klik Networking dan konfigurasikan kolom berikut:
      1. Untuk Tag jaringan, masukkan allow-ssh dan load-balanced-backend.
      2. Untuk Network interfaces, pilih opsi berikut:
        • Jaringan: lb-network
        • Subnet: backend-subnet
    6. Klik Management. Masukkan skrip berikut ke kolom Skrip startup.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
    7. Klik Create.

  2. Membuat grup instance terkelola. Di Konsol Google Cloud, buka halaman Instance groups.

    Buka Instance groups

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

      Untuk contoh ini, tentukan opsi berikut di bagian Autoscaling:

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

      Secara opsional, di bagian Autoscaling pada UI, Anda dapat mengonfigurasi grup instance untuk secara otomatis menambahkan atau menghapus instance berdasarkan penggunaan CPU instance.

    9. Klik Create.

gcloud

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

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

    gcloud compute instance-templates create l7-ilb-backend-template \
    --region=us-west1 \
    --network=lb-network \
    --subnet=backend-subnet \
    --tags=allow-ssh,load-balanced-backend \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2'
    
  2. Buat grup instance terkelola di zona tersebut dengan perintah gcloud compute instance-groups managed create.

    gcloud compute instance-groups managed create l7-ilb-backend-example \
        --zone=us-west1-a \
        --size=2 \
        --template=l7-ilb-backend-template
    

API

Buat template instance dengan metode instanceTemplates.insert, dan ganti PROJECT_ID dengan project ID Anda.


POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates
{
  "name":"l7-ilb-backend-template",
  "properties":{
     "machineType":"e2-standard-2",
     "tags":{
       "items":[
         "allow-ssh",
         "load-balanced-backend"
       ]
     },
     "metadata":{
        "kind":"compute#metadata",
        "items":[
          {
            "key":"startup-script",
            "value":"#! /bin/bash\napt-get update\napt-get install
            apache2 -y\na2ensite default-ssl\na2enmod ssl\n
            vm_hostname=\"$(curl -H \"Metadata-Flavor:Google\"
            \\\nhttp://metadata.google.internal/computeMetadata/v1/instance/name)\"\n
            echo \"Page served from: $vm_hostname\" | \\\ntee
            /var/www/html/index.html\nsystemctl restart apache2"
          }
        ]
     },
     "networkInterfaces":[
       {
         "network":"projects/PROJECT_ID/global/networks/lb-network",
         "subnetwork":"regions/us-west1/subnetworks/backend-subnet",
         "accessConfigs":[
           {
             "type":"ONE_TO_ONE_NAT"
           }
         ]
       }
     ],
     "disks":[
       {
         "index":0,
         "boot":true,
         "initializeParams":{
           "sourceImage":"projects/debian-cloud/global/images/family/debian-10"
         },
         "autoDelete":true
       }
     ]
  }
}

Buat grup instance terkelola di setiap zona dengan metode instanceGroupManagers.insert, dan ganti PROJECT_ID dengan project ID Anda.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/{zone}/instanceGroupManagers
{
  "name": "l7-ilb-backend-example",
  "zone": "projects/PROJECT_ID/zones/us-west1-a",
  "instanceTemplate": "projects/PROJECT_ID/global/instanceTemplates/l7-ilb-backend-template",
  "baseInstanceName": "l7-ilb-backend-example",
  "targetSize": 2
}

Mengonfigurasi load balancer

Contoh ini menunjukkan cara membuat resource Load Balancer Aplikasi internal regional berikut:

  • Health check HTTP
  • Layanan backend dengan grup instance terkelola sebagai backend
  • Peta URL
    • Pastikan untuk merujuk ke peta URL regional jika suatu wilayah ditentukan untuk proxy HTTP(S) target. Peta URL regional merutekan permintaan ke layanan backend regional berdasarkan aturan yang Anda tentukan untuk host dan jalur URL masuk. Peta URL regional dapat direferensikan oleh aturan proxy target regional hanya di region yang sama.
  • Sertifikat SSL (untuk HTTPS)
  • Proxy target
  • Aturan penerusan

Ketersediaan proxy

Terkadang region Google Cloud tidak memiliki kapasitas proxy yang cukup untuk load balancer baru. Jika hal ini terjadi, Google Cloud Console akan memberikan pesan peringatan ketersediaan proxy saat Anda membuat load balancer. Untuk mengatasi masalah ini, Anda dapat melakukan salah satu tindakan berikut:

  • Pilih region lain untuk load balancer Anda. Ini bisa menjadi opsi praktis jika Anda memiliki backend di region lain.
  • Pilih jaringan VPC yang sudah memiliki alokasi subnet khusus proxy.
  • Tunggu hingga masalah kapasitas selesai.

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 Application Load Balancer (HTTP/HTTPS) lalu klik Next.
  4. Untuk Terhadap publik atau internal, pilih Internal, lalu klik Berikutnya.
  5. Untuk Cross-region or single region deployment, pilih Best for regional working, lalu klik Next.
  6. Klik Konfigurasikan.

Konfigurasi dasar

  1. Untuk Name load balancer, masukkan l7-ilb-map.
  2. Untuk Region, pilih us-west1.
  3. Untuk Network, pilih lb-network.

Mereservasi subnet khusus proxy

Mereservasi subnet khusus proxy:

  1. Klik Reserve a Subnet.
  2. Untuk Name, masukkan proxy-only-subnet.
  3. Untuk Rentang alamat IP, masukkan 10.129.0.0/23.
  4. Klik Tambahkan.

Mengonfigurasi layanan backend

  1. Klik Backend configuration.
  2. Dari menu Create or select backend services, pilih Create a backend service.
  3. Tetapkan nama layanan backend ke l7-ilb-backend-service.
  4. Setel Backend type ke Instance group.
  5. Di bagian New backend:
    1. Setel Instance group ke l7-ilb-backend-example.
    2. Setel Transfer nomor ke 80.
    3. Setel Mode penyeimbangan ke Pemanfaatan.
    4. Klik Done.
  6. Dari daftar Health check, klik Create a health check dengan parameter berikut:
    1. Name: l7-ilb-basic-check
    2. Protokol: HTTP
    3. Port: 80
    4. Klik Save.
  7. Klik Create.

Mengonfigurasi peta URL

  1. Klik Host and path rules.

  2. Untuk Mode, pilih Simple host and path rule.

  3. Pastikan l7-ilb-backend-service adalah satu-satunya layanan backend untuk host yang tidak cocok dan jalur yang tidak cocok.

Untuk informasi tentang pengelolaan traffic, lihat Menyiapkan pengelolaan traffic.

Mengonfigurasi frontend

Untuk HTTP:

  1. Klik Frontend configuration.
  2. Tetapkan nama aturan penerusan ke l7-ilb-forwarding-rule.
  3. Setel Protocol ke HTTP.
  4. Tetapkan Subnetwork ke backend-subnet.
  5. Tetapkan Port ke 80.
  6. Dari daftar Alamat IP, pilih l7-ilb-ip-address.
  7. Klik Done.

Untuk HTTPS:

  1. Klik Frontend configuration.
  2. Tetapkan nama aturan penerusan ke l7-ilb-forwarding-rule.
  3. Setel Protocol ke HTTPS (includes HTTP/2).
  4. Tetapkan Subnetwork ke backend-subnet.
  5. Pastikan Port ditetapkan ke 443 untuk mengizinkan traffic HTTPS.
  6. Dari daftar Alamat IP, pilih l7-ilb-ip-address.
  7. Klik menu drop-down Certificate.
    1. Jika Anda sudah memiliki resource sertifikat SSL yang dikelola sendiri yang ingin digunakan sebagai sertifikat SSL utama, pilih resource tersebut dari daftar.
    2. Jika tidak, pilih Create a new certificate.
      1. Tetapkan nama sertifikat ke l7-ilb-cert.
      2. Di kolom yang sesuai, upload file berformat PEM:
        • Sertifikat kunci publik
        • Rantai sertifikat
        • Kunci pribadi
      3. Klik Create.
  8. Untuk menambahkan resource sertifikat selain resource sertifikat SSL utama:
    1. Klik Add certificate.
    2. Pilih sertifikat dari daftar Sertifikat, atau klik Buat sertifikat baru dan ikuti petunjuknya.
  9. Pilih kebijakan SSL dari daftar Kebijakan SSL. Jika Anda belum membuat kebijakan SSL, kebijakan SSL default akan diterapkan.
  10. Klik Done.

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. Tentukan health check HTTP dengan perintah gcloud compute health-checks create http.

    gcloud compute health-checks create http l7-ilb-basic-check \
       --region=us-west1 \
       --use-serving-port
    
  2. Tentukan layanan backend dengan perintah gcloud compute backend-services create.

    gcloud compute backend-services create l7-ilb-backend-service \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --protocol=HTTP \
      --health-checks=l7-ilb-basic-check \
      --health-checks-region=us-west1 \
      --region=us-west1
    
  3. Tambahkan backend ke layanan backend dengan perintah gcloud compute backend-services add-backend.

    gcloud compute backend-services add-backend l7-ilb-backend-service \
      --balancing-mode=UTILIZATION \
      --instance-group=l7-ilb-backend-example \
      --instance-group-zone=us-west1-a \
      --region=us-west1
    
  4. Buat peta URL dengan perintah gcloud compute url-maps create.

    gcloud compute url-maps create l7-ilb-map \
      --default-service=l7-ilb-backend-service \
      --region=us-west1
    
  5. Buat proxy target.

    Untuk HTTP:

    Untuk load balancer HTTP internal, buat proxy target dengan perintah gcloud compute target-http-proxies create.

    gcloud compute target-http-proxies create l7-ilb-proxy \
      --url-map=l7-ilb-map \
      --url-map-region=us-west1 \
      --region=us-west1
    

    Untuk HTTPS:

    Anda dapat membuat sertifikat Compute Engine atau Certificate Manager. Gunakan salah satu metode berikut untuk membuat sertifikat menggunakan Certificate Manager:

    • Sertifikat regional yang dikelola sendiri. Untuk mengetahui informasi tentang cara membuat dan menggunakan sertifikat yang dikelola sendiri secara regional, lihat men-deploy sertifikat yang dikelola sendiri secara regional. Peta sertifikat tidak didukung.

    • Sertifikat regional yang dikelola Google. Peta sertifikat tidak didukung.

      Jenis sertifikat regional yang dikelola Google berikut didukung oleh Certificate Manager:

    • Setelah Anda membuat sertifikat, lampirkan sertifikat tersebut langsung ke proxy target.

      Menetapkan jalur file ke nama variabel.

      export LB_CERT=path to PEM-formatted file
      
      export LB_PRIVATE_KEY=path to PEM-formatted file
      

      Buat sertifikat SSL regional menggunakan perintah gcloud compute ssl-certificates create.

      gcloud compute ssl-certificates create l7-ilb-cert \
        --certificate=$LB_CERT \
        --private-key=$LB_PRIVATE_KEY \
        --region=us-west1
      

      Gunakan sertifikat SSL regional untuk membuat proxy target dengan perintah gcloud compute target-https-proxies create.

      gcloud compute target-https-proxies create l7-ilb-proxy \
        --url-map=l7-ilb-map \
        --region=us-west1 \
        --ssl-certificates=l7-ilb-cert
      
    • Membuat aturan penerusan.

      Untuk jaringan kustom, Anda harus mereferensikan subnet dalam aturan penerusan. Perhatikan bahwa ini adalah subnet VM, bukan subnet proxy.

      Untuk HTTP:

      Gunakan perintah gcloud compute forwarding-rules create dengan flag yang benar.

      gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=backend-subnet \
        --address=l7-ilb-ip-address \
        --ports=80 \
        --region=us-west1 \
        --target-http-proxy=l7-ilb-proxy \
        --target-http-proxy-region=us-west1
      

      Untuk HTTPS:

      Buat aturan penerusan dengan perintah gcloud compute forwarding-rules create dengan flag yang benar.

      gcloud compute forwarding-rules create l7-ilb-forwarding-rule \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=lb-network \
        --subnet=backend-subnet \
        --address=l7-ilb-ip-address \
        --ports=443 \
        --region=us-west1 \
        --target-https-proxy=l7-ilb-proxy \
        --target-https-proxy-region=us-west1
      

API

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

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/{region}/healthChecks

{
"name": "l7-ilb-basic-check",
"type": "HTTP",
"httpHealthCheck": {
  "portSpecification": "USE_SERVING_PORT"
}
}

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

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

{
"name": "l7-ilb-backend-service",
"backends": [
  {
    "group": "projects/PROJECT_ID/zones/us-west1-a/instanceGroups/l7-ilb-backend-example",
    "balancingMode": "UTILIZATION"
  }
],
"healthChecks": [
  "projects/PROJECT_ID/regions/us-west1/healthChecks/l7-ilb-basic-check"
],
"loadBalancingScheme": "INTERNAL_MANAGED"
}

Buat peta URL dengan membuat permintaan POST ke metode regionUrlMaps.insert, lalu ganti PROJECT_ID dengan project ID Anda.

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

{
"name": "l7-ilb-map",
"defaultService": "projects/PROJECT_ID/regions/us-west1/backendServices/l7-ilb-backend-service"
}

Untuk HTTP:

Buat proxy HTTP target dengan membuat permintaan POST ke metode regionTargetHttpProxies.insert, yang menggantikan PROJECT_ID dengan project ID Anda.

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

{
"name": "l7-ilb-proxy",
"urlMap": "projects/PROJECT_ID/global/urlMaps/l7-ilb-map",
"region": "us-west1"
}

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

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

{
"name": "l7-ilb-forwarding-rule",
"IPAddress": "IP_ADDRESS",
"IPProtocol": "TCP",
"portRange": "80-80",
"target": "projects/PROJECT_ID/regions/us-west1/targetHttpProxies/l7-ilb-proxy",
"loadBalancingScheme": "INTERNAL_MANAGED",
"subnetwork": "projects/PROJECT_ID/regions/us-west1/subnetworks/backend-subnet",
"network": "projects/PROJECT_ID/global/networks/lb-network",
"networkTier": "PREMIUM"
}

Untuk HTTPS:

Anda dapat membuat sertifikat Compute Engine atau Certificate Manager. Gunakan salah satu metode berikut untuk membuat sertifikat menggunakan Certificate Manager:

  • Sertifikat regional yang dikelola sendiri. Untuk mengetahui informasi tentang cara membuat dan menggunakan sertifikat yang dikelola sendiri secara regional, lihat men-deploy sertifikat yang dikelola sendiri secara regional. Peta sertifikat tidak didukung.

  • Sertifikat regional yang dikelola Google. Peta sertifikat tidak didukung.

    Jenis sertifikat regional yang dikelola Google berikut didukung oleh Certificate Manager:

  • Setelah Anda membuat sertifikat, lampirkan sertifikat tersebut langsung ke proxy target.

    Baca file sertifikat dan kunci pribadi, lalu buat sertifikat SSL. Contoh berikut menunjukkan cara melakukannya dengan Python.

    from pathlib import Path
    from pprint import pprint
    from typing import Union
    
    from googleapiclient import discovery
    
    def create_regional_certificate(
        project_id: str,
        region: str,
        certificate_file: Union[str, Path],
        private_key_file: Union[str, Path],
        certificate_name: str,
        description: str = "Certificate created from a code sample.",
    ) -> dict:
        """
        Create a regional SSL self-signed certificate within your Google Cloud project.
    
        Args:
            project_id: project ID or project number of the Cloud project you want to use.
            region: name of the region you want to use.
            certificate_file: path to the file with the certificate you want to create in your project.
            private_key_file: path to the private key you used to sign the certificate with.
            certificate_name: name for the certificate once it's created in your project.
            description: description of the certificate.
    
            Returns:
            Dictionary with information about the new regional SSL self-signed certificate.
        """
        service = discovery.build("compute", "v1")
    
        # Read the cert into memory
        with open(certificate_file) as f:
            _temp_cert = f.read()
    
        # Read the private_key into memory
        with open(private_key_file) as f:
            _temp_key = f.read()
    
        # Now that the certificate and private key are in memory, you can create the
        # certificate resource
        ssl_certificate_body = {
            "name": certificate_name,
            "description": description,
            "certificate": _temp_cert,
            "privateKey": _temp_key,
        }
        request = service.regionSslCertificates().insert(
            project=project_id, region=region, body=ssl_certificate_body
        )
        response = request.execute()
        pprint(response)
    
        return response
    
    

    Buat proxy HTTPS target dengan membuat permintaan POST ke metode regionTargetHttpsProxies.insert, yang menggantikan PROJECT_ID dengan project ID Anda.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/regionTargetHttpsProxy
    
    {
    "name": "l7-ilb-proxy",
    "urlMap": "projects/PROJECT_ID/regions/us-west1/urlMaps/l7-ilb-map",
    "sslCertificates": /projects/PROJECT_ID/regions/us-west1/sslCertificates/SSL_CERT_NAME
    }
    

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

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/us-west1/forwardingRules
    
    {
    "name": "l7-ilb-forwarding-rule",
    "IPAddress": "IP_ADDRESS",
    "IPProtocol": "TCP",
    "portRange": "80-80",
    "target": "projects/PROJECT_ID/regions/us-west1/targetHttpsProxies/l7-ilb-proxy",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "subnetwork": "projects/PROJECT_ID/regions/us-west1/subnetworks/backend-subnet",
    "network": "projects/PROJECT_ID/global/networks/lb-network",
    "networkTier": "PREMIUM",
    }
    

Menguji load balancer

Untuk menguji load balancer, buat VM klien. Kemudian, buat sesi SSH dengan VM dan kirim traffic dari VM ke load balancer.

Buat instance VM untuk menguji konektivitas

Konsol

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

    Buka instance VM

  2. Klik Create instance.

  3. Tetapkan Nama ke l7-ilb-client-us-west1-a.

  4. Setel Zona ke us-west1-a.

  5. Klik Advanced options.

  6. Klik Networking dan konfigurasikan kolom berikut:

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

gcloud

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

Mengirim traffic ke load balancer

Login ke instance yang baru saja Anda buat dan uji apakah layanan HTTP(S) di backend dapat dijangkau menggunakan alamat IP aturan penerusan Load Balancer Aplikasi internal regional, dan traffic sedang melakukan load balancing di seluruh instance backend.

Menghubungkan menggunakan SSH ke setiap instance klien

gcloud compute ssh l7-ilb-client-us-west1-a \
    --zone=us-west1-a

Mendapatkan alamat IP load balancer

Gunakan perintah gcloud compute addresses describe untuk melihat alamat IP yang dialokasikan:

gcloud compute addresses describe l7-ilb-ip-address \
    --region=us-west1

Memverifikasi bahwa alamat IP menampilkan nama host

Ganti IP_ADDRESS dengan alamat IP load balancer.

curl IP_ADDRESS

Untuk pengujian HTTPS, ganti curl dengan:

curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS:443

Flag -k menyebabkan curl melewati validasi sertifikat.

Jalankan 100 permintaan dan konfirmasi bahwa permintaan tersebut mengalami load balancing

Ganti IP_ADDRESS dengan alamat IP load balancer.

Untuk HTTP:

{
  RESULTS=
  for i in {1..100}
  do
      RESULTS="$RESULTS:$(curl --silent IP_ADDRESS)"
  done
  echo "***"
  echo "*** Results of load-balancing: "
  echo "***"
  echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
  echo
}

Untuk HTTPS:

{
  RESULTS=
  for i in {1..100}
  do
      RESULTS="$RESULTS:$(curl -k -s 'https://test.example.com:443' --connect-to test.example.com:443:IP_ADDRESS:443)"
  done
  echo "***"
  echo "*** Results of load-balancing: "
  echo "***"
  echo "$RESULTS" | tr ':' '\n' | grep -Ev "^$" | sort | uniq -c
  echo
}

Opsi konfigurasi tambahan

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

Aktifkan akses global

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

Load Balancer Aplikasi internal regional dengan akses global.
Load Balancer Aplikasi internal regional dengan akses global (klik untuk memperbesar).

Anda tidak dapat mengubah aturan penerusan regional yang ada untuk mengaktifkan akses global. Anda harus membuat aturan penerusan baru untuk tujuan ini dan menghapus aturan penerusan sebelumnya. Selain itu, setelah dibuat dengan akses global yang diaktifkan, aturan penerusan tidak dapat diubah. Untuk menonaktifkan akses global, Anda harus membuat aturan penerusan akses regional baru dan menghapus aturan penerusan akses global sebelumnya.

Untuk mengonfigurasi akses global, buat perubahan konfigurasi berikut.

Konsol

Buat aturan penerusan baru untuk load balancer:

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

    Buka Load balancing

  2. Di kolom Name, klik load balancer.

  3. Klik Frontend configuration.

  4. Klik Add frontend IP and port.

  5. Masukkan detail nama dan subnet untuk aturan penerusan baru.

  6. Untuk Subnetwork, pilih backend-subnet.

  7. Untuk alamat IP, Anda dapat memilih alamat IP yang sama dengan aturan penerusan yang ada, mencadangkan alamat IP baru, atau menggunakan alamat IP efemeral. Berbagi alamat IP yang sama di beberapa aturan penerusan hanya dapat dilakukan jika Anda menetapkan tanda alamat IP --purpose ke SHARED_LOADBALANCER_VIP saat membuat alamat IP.

  8. Untuk Nomor port, masukkan 110.

  9. Untuk Akses global, pilih Aktifkan.

  10. Klik Done.

  11. Klik Perbarui.

gcloud

  1. Buat aturan penerusan baru untuk load balancer dengan tanda --allow-global-access.

    Untuk HTTP:

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule-global-access \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=lb-network \
      --subnet=backend-subnet \
      --address=10.1.2.99 \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-ilb-proxy \
      --target-http-proxy-region=us-west1 \
      --allow-global-access
    

    Untuk HTTPS:

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule-global-access \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=lb-network \
      --subnet=backend-subnet \
      --address=10.1.2.99 \
      --ports=443 \
      --region=us-west1 \
      --target-https-proxy=l7-ilb-proxy \
      --target-https-proxy-region=us-west1 \
      --allow-global-access
    
  2. Anda dapat menggunakan perintah gcloud compute forwarding-rules describe untuk menentukan apakah aturan penerusan telah mengaktifkan akses global atau tidak. Misalnya:

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

    Saat akses global diaktifkan, kata True akan muncul di output setelah nama dan region aturan penerusan.

Buat VM klien untuk menguji akses global

Konsol

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

    Buka instance VM

  2. Klik Create instance.

  3. Tetapkan Nama ke europe-client-vm.

  4. Setel Zona ke europe-west1-b.

  5. Klik Advanced options.

  6. Klik Networking dan konfigurasikan kolom berikut:

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

gcloud

Buat VM klien di zona europe-west1-b.

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

Menghubungkan ke klien VM dan menguji konektivitas

  1. Gunakan ssh untuk terhubung ke instance klien.

    gcloud compute ssh europe-client-vm \
        --zone=europe-west1-b
    
  2. Uji koneksi ke load balancer seperti yang Anda lakukan dari vm-client di region us-west1.

    curl http://10.1.2.99
    

Mengaktifkan afinitas sesi

Prosedur ini menunjukkan cara mengupdate layanan backend untuk contoh Load Balancer Aplikasi internal regional atau Load Balancer Aplikasi internal lintas region, sehingga layanan backend menggunakan afinitas cookie yang dihasilkan, afinitas kolom header, atau afinitas cookie HTTP.

Saat afinitas cookie yang dihasilkan diaktifkan, load balancer akan mengeluarkan cookie pada permintaan pertama. Untuk setiap permintaan berikutnya dengan cookie yang sama, load balancer akan mengarahkan permintaan ke endpoint atau instance virtual machine (VM) backend yang sama. Dalam contoh ini, cookie diberi nama GCILB.

Jika afinitas kolom header diaktifkan, load balancer akan merutekan permintaan ke VM backend atau endpoint di grup endpoint jaringan (NEG) berdasarkan nilai header HTTP yang disebutkan dalam flag --custom-request-header. Afinitas kolom header hanya valid jika kebijakan lokalitas load balancing adalah RING_HASH atau MAGLEV dan hash konsisten layanan backend menentukan nama header HTTP.

Saat afinitas cookie HTTP diaktifkan, load balancer akan merutekan permintaan ke VM backend atau endpoint di NEG, berdasarkan cookie HTTP yang dinamai dalam flag HTTP_COOKIE dengan flag --affinity-cookie-ttl opsional. Jika klien tidak menyediakan cookie dalam permintaan HTTP-nya, proxy akan menghasilkan cookie dan menampilkannya ke klien dalam header Set-Cookie. Afinitas cookie HTTP hanya valid jika kebijakan lokalitas load balancing adalah RING_HASH atau MAGLEV dan hash konsisten dari layanan backend menentukan cookie HTTP tersebut.

Konsol

Untuk mengaktifkan atau mengubah afinitas sesi untuk layanan backend:

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

    Buka Load balancing

  2. Click Backends.
  3. Klik l7-ilb-backend-service (nama layanan backend yang Anda buat untuk contoh ini), lalu klik Edit.
  4. Di halaman Backend service details, klik Advanced configuration.
  5. Di bagian Afinitas sesi, pilih jenis afinitas sesi yang Anda inginkan.
  6. Klik Perbarui.

gcloud

Gunakan perintah Google Cloud CLI berikut untuk memperbarui layanan backend ke berbagai jenis afinitas sesi:

    gcloud compute backend-services update l7-ilb-backend-service \
        --session-affinity=[GENERATED_COOKIE | HEADER_FIELD | HTTP_COOKIE | CLIENT_IP] \
        --region=us-west1
    

API

Untuk menetapkan afinitas sesi, buat permintaan `PATCH` ke metode backendServices/patch.

    PATCH https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/regions/us-west1/regionBackendServices/l7-ilb-backend-service
    {
      "sessionAffinity": ["GENERATED_COOKIE" | "HEADER_FIELD" | "HTTP_COOKIE" | "CLIENT_IP" ]
    }
    

Membatasi klien mana yang dapat mengirim traffic ke load balancer

Anda dapat membatasi klien agar tidak terhubung ke VIP aturan penerusan Load Balancer Aplikasi internal dengan mengonfigurasi aturan firewall keluar pada klien ini. Tetapkan aturan firewall ini di VM klien tertentu berdasarkan akun layanan atau tag.

Anda tidak dapat menggunakan aturan firewall untuk membatasi traffic masuk ke VIP aturan penerusan Load Balancer Aplikasi internal tertentu. Setiap klien di jaringan VPC yang sama dan di region yang sama dengan aturan penerusan VIP umumnya dapat mengirim traffic ke VIP aturan penerusan.

Selain itu, semua permintaan ke backend berasal dari proxy yang menggunakan alamat IP dalam rentang subnet khusus proxy. Aturan firewall yang mengizinkan atau menolak traffic masuk pada backend ini tidak dapat dibuat berdasarkan VIP aturan penerusan yang digunakan oleh klien.

Berikut ini beberapa contoh cara menggunakan aturan firewall keluar untuk membatasi traffic ke VIP aturan penerusan load balancer.

Konsol

Untuk mengidentifikasi VM klien, beri tag pada VM tertentu yang ingin Anda batasi. Tag ini digunakan untuk mengaitkan aturan firewall dengan VM klien yang diberi tag. Kemudian, tambahkan tag ke kolom TARGET_TAG pada langkah-langkah berikut.

Gunakan satu aturan firewall atau beberapa aturan untuk menyiapkannya.

Aturan firewall keluar tunggal

Anda dapat mengonfigurasi satu aturan traffic keluar firewall untuk menolak semua traffic keluar yang berasal dari VM klien yang diberi tag ke VIP load balancer.

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

    Buka Aturan firewall

  2. Klik Create firewall rule untuk membuat aturan guna menolak traffic keluar dari VM klien yang diberi tag ke VIP load balancer.

    • Name: fr-deny-access
    • Jaringan: lb-network
    • Prioritas: 100
    • Arah traffic: Traffic keluar
    • Tindakan pada kecocokan: Tolak
    • Targets: Tag target yang ditentukan
    • Tag target: TARGET_TAG
    • Filter tujuan: Rentang IP
    • Rentang IP tujuan: 10.1.2.99
    • Protokol dan port:
      • Pilih Specified protocols and ports.
      • Centang kotak tcp, lalu masukkan 80 untuk nomor port.
  3. Klik Create.

Beberapa aturan firewall keluar

Pendekatan yang lebih skalabel mencakup penetapan dua aturan. Aturan default berprioritas rendah yang membatasi semua klien agar tidak mengakses VIP load balancer. Aturan kedua dengan prioritas lebih tinggi yang memungkinkan subset klien yang diberi tag mengakses VIP load balancer. Hanya VM yang diberi tag yang dapat mengakses VIP.

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

    Buka Aturan firewall

  2. Klik Create firewall rule untuk membuat aturan prioritas yang lebih rendah guna menolak akses secara default:

    • Name: fr-deny-all-access-low-priority
    • Jaringan: lb-network
    • Prioritas: 200
    • Arah traffic: Traffic keluar
    • Tindakan pada kecocokan: Tolak
    • Targets: Tag target yang ditentukan
    • Tag target: TARGET_TAG
    • Filter tujuan: Rentang IP
    • Rentang IP tujuan: 10.1.2.99
    • Protokol dan port:
      • Pilih Specified protocols and ports.
      • Pilih kotak centang TCP, lalu masukkan 80 untuk nomor port.
  3. Klik Create.

  4. Klik Create firewall rule untuk membuat aturan prioritas yang lebih tinggi guna mengizinkan traffic dari instance tertentu yang diberi tag.

    • Name: fr-allow-some-access-high-priority
    • Jaringan: lb-network
    • Prioritas: 100
    • Arah traffic: Traffic keluar
    • Tindakan jika kecocokan: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: TARGET_TAG
    • Filter tujuan: Rentang IP
    • Rentang IP tujuan: 10.1.2.99
    • Protokol dan port:
      • Pilih Specified protocols and ports.
      • Pilih kotak centang TCP, lalu masukkan 80 untuk nomor port.
  5. Klik Create.

gcloud

Untuk mengidentifikasi VM klien, beri tag pada VM tertentu yang ingin Anda batasi. Kemudian, tambahkan tag ke kolom TARGET_TAG pada langkah-langkah ini.

Gunakan satu aturan firewall atau beberapa aturan untuk menyiapkannya.

Aturan firewall keluar tunggal

Anda dapat mengonfigurasi satu aturan traffic keluar firewall untuk menolak semua traffic keluar yang berasal dari VM klien yang diberi tag ke VIP load balancer.

gcloud compute firewall-rules create fr-deny-access \
  --network=lb-network \
  --action=deny \
  --direction=egress \
  --rules=tcp \
  --priority=100 \
  --destination-ranges=10.1.2.99 \
  --target-tags=TARGET_TAG

Beberapa aturan firewall keluar

Pendekatan yang lebih skalabel melibatkan penetapan dua aturan: aturan default berprioritas rendah yang membatasi semua klien agar tidak mengakses VIP load balancer, dan aturan kedua dengan prioritas lebih tinggi yang memungkinkan subset klien yang diberi tag mengakses VIP load balancer. Hanya VM yang diberi tag yang dapat mengakses VIP.

  1. Buat aturan dengan prioritas lebih rendah:

    gcloud compute firewall-rules create fr-deny-all-access-low-priority \
      --network=lb-network \
      --action=deny \
      --direction=egress \
      --rules=tcp \
      --priority=200 \
      --destination-ranges=10.1.2.99
    
  2. Buat aturan dengan prioritas yang lebih tinggi:

    gcloud compute firewall-rules create fr-allow-some-access-high-priority \
      --network=lb-network \
      --action=allow \
      --direction=egress \
      --rules=tcp \
      --priority=100 \
      --destination-ranges=10.1.2.99 \
      --target-tags=TARGET_TAG
    

Untuk menggunakan akun layanan, bukan tag, untuk mengontrol akses, gunakan opsi --target-service-accounts, bukan flag --target-tags saat membuat aturan firewall.

Menskalakan akses terbatas ke backend Load Balancer Aplikasi internal berdasarkan subnet

Mempertahankan aturan firewall terpisah atau menambahkan alamat IP baru yang di-load balanced ke aturan yang ada seperti yang dijelaskan di bagian sebelumnya menjadi merepotkan seiring meningkatnya jumlah aturan penerusan. Salah satu cara untuk mencegah hal ini adalah dengan mengalokasikan alamat IP aturan penerusan dari subnet yang dicadangkan. Kemudian, traffic dari instance yang diberi tag atau akun layanan dapat diizinkan atau diblokir menggunakan subnet yang dicadangkan sebagai rentang tujuan untuk aturan firewall. Dengan demikian, Anda dapat mengontrol akses secara efektif ke grup VIP aturan penerusan tanpa harus mengelola aturan traffic keluar firewall per VIP.

Berikut langkah-langkah tingkat tinggi untuk menyiapkannya, dengan asumsi bahwa Anda akan membuat semua resource load balancer lain yang diperlukan secara terpisah.

gcloud

  1. Buat subnet regional yang akan digunakan untuk mengalokasikan alamat IP yang di-load balanced untuk aturan penerusan:

    gcloud compute networks subnets create l7-ilb-restricted-subnet \
      --network=lb-network \
      --region=us-west1 \
      --range=10.127.0.0/24
    
  2. Buat aturan penerusan yang mengambil alamat dari {i>subnet<i}. Contoh berikut menggunakan alamat 10.127.0.1 dari subnet yang dibuat pada langkah sebelumnya.

    gcloud compute forwarding-rules create l7-ilb-forwarding-rule-restricted \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=lb-network \
      --subnet=l7-ilb-restricted-subnet \
      --address=10.127.0.1 \
      --ports=80 \
      --region=us-west1 \
      --target-http-proxy=l7-ilb-proxy \
      --target-http-proxy-region=us-west1
    

  3. Buat aturan firewall untuk membatasi traffic yang ditujukan untuk rentang alamat IP di subnet aturan penerusan (l7-ilb-restricted-subnet):

    gcloud compute firewall-rules create restrict-traffic-to-subnet \
      --network=lb-network \
      --action=deny \
      --direction=egress \
      --rules=tcp:80 \
      --priority=100 \
      --destination-ranges=10.127.0.0/24 \
      --target-tags=TARGET_TAG
    

Mengonfigurasi subset backend

Subsetelan backend meningkatkan performa dan skalabilitas dengan menetapkan subset backend ke setiap instance proxy. Saat diaktifkan untuk layanan backend, subsetelan backend akan menyesuaikan jumlah backend yang digunakan oleh setiap instance proxy seperti berikut:

  • Seiring dengan bertambahnya jumlah instance proxy yang berpartisipasi dalam load balancer, ukuran subset akan berkurang.

  • Jika jumlah total backend di jaringan melebihi kapasitas instance proxy tunggal, ukuran subset akan otomatis dikurangi untuk setiap layanan yang mengaktifkan subset backend.

Contoh ini menunjukkan cara membuat resource Load Balancer Aplikasi internal regional dan mengaktifkan subsetelan backend:

  1. Gunakan contoh konfigurasi untuk membuat layanan backend regional l7-ilb-backend-service.
  2. Aktifkan subset backend dengan menentukan flag --subsetting-policy sebagai CONSISTENT_HASH_SUBSETTING. Tetapkan skema load balancing ke INTERNAL_MANAGED.

    gcloud

    Gunakan perintah gcloud berikut untuk memperbarui l7-ilb-backend-service dengan subset backend:

    gcloud beta compute backend-services update l7-ilb-backend-service \
       --region=us-west1 \
       --subsetting-policy=CONSISTENT_HASH_SUBSETTING
    

    API

    Buat permintaan PATCH ke metode regionBackendServices/patch.

    PATCH https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/us-west1/backendServices/l7-ilb-backend-service
    
    {
     "subsetting":
    {
     "policy": CONSISTENT_HASH_SUBSETTING
    }
    }
    

Anda juga dapat meningkatkan kualitas load balancing backend dengan menyetel kebijakan localityLbPolicy. Untuk informasi selengkapnya, lihat Kebijakan traffic.

Gunakan alamat IP yang sama di antara beberapa aturan penerusan internal

Agar beberapa aturan penerusan internal dapat menggunakan alamat IP internal yang sama, Anda harus mencadangkan alamat IP dan menetapkan flag --purpose ke SHARED_LOADBALANCER_VIP.

gcloud

gcloud compute addresses create SHARED_IP_ADDRESS_NAME \
    --region=REGION \
    --subnet=SUBNET_NAME \
    --purpose=SHARED_LOADBALANCER_VIP
Jika perlu mengalihkan traffic HTTP ke HTTPS, Anda dapat membuat dua aturan penerusan yang menggunakan alamat IP yang sama. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan pengalihan HTTP-ke-HTTPS untuk Load Balancer Aplikasi internal.

Langkah selanjutnya