Menyiapkan Load Balancer Jaringan proxy internal regional dengan backend grup instance VM

Load Balancer Jaringan proxy internal regional adalah load balancer Lapisan 4 regional berbasis proxy yang memungkinkan Anda menjalankan dan menskalakan traffic layanan TCP di balik alamat IP internal yang hanya dapat diakses oleh klien di jaringan VPC yang sama atau klien yang terhubung ke jaringan VPC Anda.

Sebelum memulai, baca Ringkasan Load Balancer Jaringan proxy internal regional.

Panduan ini berisi petunjuk untuk menyiapkan Load Balancer Jaringan proxy internal regional dengan backend grup instance terkelola (MIG). Untuk contoh ini, Anda mengonfigurasi deployment berikut:

Contoh konfigurasi Load Balancer Jaringan proxy internal regional dengan backend grup instance.
Contoh konfigurasi Load Balancer Jaringan proxy internal regional dengan backend grup instance

Dalam contoh ini, kita akan menggunakan load balancer untuk mendistribusikan traffic TCP di seluruh VM backend dalam dua grup instance terkelola zonal di region REGION_A. Untuk tujuan contoh, layanan ini adalah sekumpulan server Apache yang dikonfigurasi untuk merespons di port 110. Banyak browser tidak mengizinkan port 110, sehingga bagian pengujian menggunakan curl.

Load Balancer Jaringan proxy internal regional adalah load balancer regional. Semua komponen load balancer harus berada di region yang sama dengan load balancer.

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 Network Admin
Menambahkan dan menghapus aturan firewall Security Admin
Membuat instance Compute Instance Admin

Untuk mendapatkan informasi selengkapnya, lihat panduan berikut:

Mengonfigurasi jaringan dan subnet

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

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

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

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

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

Untuk mendemonstrasikan akses global, contoh ini juga membuat VM klien pengujian kedua di region yang berbeda (REGION_B) dan subnet dengan rentang alamat IP utama 10.3.4.0/24.

Buat jaringan dan subnet

Konsol

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Untuk Name, masukkan lb-network.

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

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

    • Nama: backend-subnet
    • Region: REGION_A
    • 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:

    • Nama: test-global-access-subnet
    • Region: REGION_B
    • 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 REGION_A dengan perintah gcloud compute networks subnets create:

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

    Ganti REGION_A dengan nama region Google Cloud target.

  3. Buat subnet di jaringan lb-network di region REGION_B dengan perintah gcloud compute networks subnets create:

    gcloud compute networks subnets create test-global-access-subnet \
       --network=lb-network \
       --range=10.3.4.0/24 \
       --region=REGION_B
    

    Ganti REGION_B dengan nama Google Cloud region tempat Anda ingin membuat subnet kedua untuk menguji akses global.

Buat subnet khusus proxy

Subnet khusus proxy menyediakan serangkaian alamat IP yang digunakan Google untuk menjalankan proxy Envoy atas nama Anda. Proxy menghentikan koneksi dari klien dan membuat koneksi baru ke backend.

Subnet khusus proxy ini digunakan oleh semua load balancer berbasis Envoy di region REGION_A jaringan VPC 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, ikuti langkah-langkah berikut:

  1. Di konsol Google Cloud , buka halaman VPC networks.
    Buka jaringan VPC
  2. Klik nama jaringan VPC Bersama: lb-network.
  3. Klik Tambahkan subnet.
  4. Untuk Name, masukkan proxy-only-subnet.
  5. Untuk Region, pilih REGION_A.
  6. Tetapkan Purpose 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=REGION_A \
    --network=lb-network \
    --range=10.129.0.0/23

Membuat aturan firewall

Contoh ini memerlukan aturan firewall berikut:

  • fw-allow-ssh. Aturan ingress, yang berlaku untuk instance yang di-load balance, 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.

  • fw-allow-health-check. Aturan ingress, yang berlaku untuk instance yang di-load balance, yang mengizinkan semua traffic TCP dari Google Cloud rentang pemeriksaan kondisi. Contoh ini menggunakan tag target allow-health-check.

  • fw-allow-proxy-only-subnet. Aturan ingress yang mengizinkan koneksi dari subnet khusus proxy untuk menjangkau backend.

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 berlaku untuk semua instance backend 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 Firewall policies
  2. Klik Create firewall rule untuk membuat aturan yang mengizinkan koneksi SSH yang masuk:
    • Nama: fw-allow-ssh
    • Network: lb-network
    • Direction of traffic: Ingress
    • Tindakan terhadap kecocokan: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-ssh
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 0.0.0.0/0
    • 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 yang mengizinkan Google Cloud health check:
    • Nama: fw-allow-health-check
    • Network: lb-network
    • Direction of traffic: Ingress
    • Tindakan terhadap kecocokan: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-health-check
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 35.191.0.0/16,130.211.0.0/22
    • 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 pada 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 di port 80 untuk menghubungi VM Anda, tetapi tidak dapat menggunakan HTTPS di port 443 untuk menghubungi VM.
  5. Klik Create.
  6. Klik Create firewall rule untuk ketiga kalinya guna membuat aturan yang mengizinkan server proxy load balancer terhubung ke backend:
    • Nama: fw-allow-proxy-only-subnet
    • Network: lb-network
    • Direction of traffic: Ingress
    • Tindakan terhadap kecocokan: Izinkan
    • Targets: Tag target yang ditentukan
    • Tag target: allow-proxy-only-subnet
    • Filter sumber: Rentang IPv4
    • Rentang IPv4 sumber: 10.129.0.0/23
    • Protokol dan port:
      • Pilih Specified protocols and ports.
      • Pilih kotak centang TCP, lalu masukkan 80 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. Jika 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=35.191.0.0/16,130.211.0.0/22 \
       --target-tags=allow-health-check \
       --rules=tcp:80
    
  3. Buat aturan fw-allow-proxy-only-subnet untuk mengizinkan proxy Envoy di region terhubung ke backend Anda. Tetapkan --source-ranges ke rentang yang dialokasikan dari subnet khusus proxy Anda, dalam contoh ini, 10.129.0.0/23.

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
       --network=lb-network \
       --action=allow \
       --direction=ingress \
       --source-ranges=10.129.0.0/23 \
       --target-tags=allow-proxy-only-subnet \
       --rules=tcp:80
    

Mencadangkan alamat IP load balancer

Untuk mencadangkan alamat IP internal statis untuk load balancer, lihat Mencadangkan alamat IPv4 atau IPv6 internal statis baru.

Membuat grup instance terkelola

Bagian ini menunjukkan cara membuat dua backend grup instance terkelola (MIG) di region REGION_A untuk load balancer. MIG menyediakan instance VM yang menjalankan server Apache backend untuk contoh Load Balancer Jaringan proxy internal regional ini. Biasanya, Load Balancer Jaringan proxy internal regional tidak digunakan untuk traffic HTTP, tetapi software Apache umumnya digunakan untuk pengujian.

Konsol

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

    Buka Instance templates

    1. Klik Buat template instance .
    2. Untuk Name, masukkan int-tcp-proxy-backend-template.
    3. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 12 (bookworm). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Klik Advanced options.
    5. Klik Networking dan konfigurasi kolom berikut:
      1. Untuk Network tags, masukkan allow-ssh, allow-health-check dan allow-proxy-only-subnet.
      2. Untuk Network interfaces, pilih opsi berikut:
        • Network: lb-network
        • Subnet: backend-subnet
    6. Klik Management. Masukkan skrip berikut ke kolom 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
      
    7. Klik Create.

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

    Buka Instance groups

    1. Klik Create instance group.
    2. Pilih New managed instance group (stateless). Untuk mengetahui informasi selengkapnya, lihat MIG stateless atau stateful.
    3. Untuk Name, masukkan mig-a.
    4. Di bagian Location, pilih Single zone.
    5. Untuk Region, pilih REGION_A.
    6. Untuk Zone, pilih ZONE_A1.
    7. Di bagian Instance template, pilih int-tcp-proxy-backend-template.
    8. Tentukan jumlah instance yang ingin Anda buat dalam grup.

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

      • Untuk Autoscaling mode, pilih Off:do not autoscale.
      • Untuk Maximum number of instances, masukkan 2.
    9. Untuk Port mapping, klik Add port.

      • Untuk Port name, masukkan tcp80.
      • Untuk Port number, masukkan 80.
    10. Klik Create.

  3. Ulangi Langkah 2 untuk membuat grup instance terkelola kedua dengan setelan berikut:

    1. Nama: mig-c
    2. Zona: ZONE_A2 Pertahankan semua setelan lainnya.

gcloud

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

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

    gcloud compute instance-templates create int-tcp-proxy-backend-template \
       --region=REGION_A \
       --network=lb-network \
       --subnet=backend-subnet \
       --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
       --image-family=debian-12 \
       --image-project=debian-cloud \
       --metadata=startup-script='#! /bin/bash
         apt-get update
         apt-get install apache2 -y
         a2ensite default-ssl
         a2enmod ssl
         vm_hostname="$(curl -H "Metadata-Flavor:Google" \
         http://metadata.google.internal/computeMetadata/v1/instance/name)"
         echo "Page served from: $vm_hostname" | \
         tee /var/www/html/index.html
         systemctl restart apache2'
    
  2. Buat grup instance terkelola di zona ZONE_A1.

    gcloud compute instance-groups managed create mig-a \
       --zone=ZONE_A1 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Ganti ZONE_A1 dengan nama zona di region Google Cloud target.

  3. Buat grup instance terkelola di zona ZONE_A2.

    gcloud compute instance-groups managed create mig-c \
       --zone=ZONE_A2 \
       --size=2 \
       --template=int-tcp-proxy-backend-template
    

    Ganti ZONE_A2 dengan nama zona lain di region Google Cloud target.

Mengonfigurasi load balancer

Konsol

Mulai konfigurasi

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

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
  4. Untuk Proxy or passthrough, pilih Proxy load balancer, lalu klik Next.
  5. Untuk Public facing or internal, pilih Internal, lalu klik Next.
  6. Untuk Cross-region or single region deployment, pilih Best for regional workloads, lalu klik Next.
  7. Klik Configure.

Konfigurasi dasar

  1. Untuk Name, masukkan my-int-tcp-lb.
  2. Untuk Region, pilih REGION_A.
  3. Untuk Network, pilih lb-network.

Mereservasi subnet khusus proxy

Untuk mereservasi subnet khusus proxy:

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

Konfigurasi backend

  1. Klik Backend configuration.
  2. Untuk Backend type, pilih Instance group.
  3. Untuk Protocol, pilih TCP.
  4. Untuk Named port, masukkan tcp80.
  5. Di daftar Health check, klik Create a health check, lalu masukkan informasi berikut:
    • Nama: tcp-health-check
    • Protokol: TCP
    • Port: 80
  6. Klik Create.
  7. Konfigurasi backend pertama:
    1. Di bagian New backend, pilih grup instance mig-a.
    2. Untuk Port numbers, masukkan 80.
    3. Pertahankan nilai default yang tersisa, lalu klik Selesai.
  8. Konfigurasi backend kedua:
    1. Klik Add backend.
    2. Di bagian New backend, pilih grup instance mig-c.
    3. Untuk Port numbers, masukkan 80.
    4. Pertahankan nilai default yang tersisa, lalu klik Selesai.
  9. Di konsol Google Cloud , pastikan ada tanda centang di samping Backend configuration. Jika belum, periksa kembali apakah Anda telah menyelesaikan semua langkah.

Konfigurasi frontend

  1. Klik Frontend configuration.
  2. Untuk Name, masukkan int-tcp-forwarding-rule.
  3. Untuk Subnetwork, pilih backend-subnet.
  4. Untuk IP address, pilih alamat IP yang dicadangkan sebelumnya: LB_IP_ADDRESS
  5. Untuk Port number, masukkan 110. Aturan penerusan hanya meneruskan paket dengan port tujuan yang cocok.
  6. Dalam contoh ini, jangan aktifkan Proxy Protocol karena tidak berfungsi dengan software Apache HTTP Server. Untuk mengetahui informasi selengkapnya, lihat Protokol proxy.
  7. Klik Done.
  8. Di konsol Google Cloud , pastikan ada tanda centang di samping Frontend configuration. Jika tidak ada, periksa kembali apakah Anda telah menyelesaikan semua langkah sebelumnya.

Meninjau dan memfinalisasi

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

    gcloud compute health-checks create tcp tcp-health-check \
       --region=REGION_A \
       --use-serving-port
    
  2. Buat layanan backend.

    gcloud compute backend-services create internal-tcp-proxy-bs \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --protocol=TCP \
       --region=REGION_A \
       --health-checks=tcp-health-check \
       --health-checks-region=REGION_A
    
  3. Tambahkan grup instance ke layanan backend Anda.

    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-a \
       --instance-group-zone=ZONE_A1 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
    gcloud compute backend-services add-backend internal-tcp-proxy-bs \
       --region=REGION_A \
       --instance-group=mig-c \
       --instance-group-zone=ZONE_A2 \
       --balancing-mode=UTILIZATION \
       --max-utilization=0.8
    
  4. Buat proxy TCP target internal.

    gcloud compute target-tcp-proxies create int-tcp-target-proxy \
       --backend-service=internal-tcp-proxy-bs \
       --proxy-header=NONE \
       --region=REGION_A
    

    Jika Anda ingin mengaktifkan header proxy, tetapkan ke PROXY_V1, bukan NONE. Dalam contoh ini, jangan aktifkan protokol Proxy karena tidak berfungsi dengan software Apache HTTP Server. Untuk mengetahui informasi selengkapnya, lihat Protokol proxy.

  5. Membuat aturan penerusan. Untuk --ports, tentukan satu nomor port dari 1-65535. Contoh ini menggunakan port 110. Aturan penerusan hanya meneruskan paket dengan port tujuan yang cocok.

    gcloud compute forwarding-rules create int-tcp-forwarding-rule \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110
    

Menguji load balancer

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

Membuat VM klien

Buat VM klien (client-vm) di region yang sama dengan load balancer.

Konsol

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

    Buka instance VM

  2. Klik Create instance.

  3. Setel Nama ke client-vm.

  4. Setel Zona ke ZONE_A1.

  5. Klik Advanced options.

  6. Klik Networking dan konfigurasi kolom berikut:

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

gcloud

VM klien harus berada di jaringan dan region VPC yang sama dengan load balancer. Instance tidak harus berada di subnet atau zona yang sama. Klien menggunakan subnet yang sama dengan VM backend.

gcloud compute instances create client-vm \
    --zone=ZONE_A1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=backend-subnet

Mengirim traffic ke load balancer

Setelah mengonfigurasi load balancer, Anda dapat menguji pengiriman traffic ke alamat IP load balancer.

  1. Gunakan SSH untuk terhubung ke instance klien.

    gcloud compute ssh client-vm \
       --zone=ZONE_A1
    
  2. Verifikasi bahwa load balancer menyalurkan nama host backend seperti yang diharapkan.

    1. Gunakan perintah compute addresses describe untuk melihat alamat IP load balancer:

      gcloud compute addresses describe int-tcp-ip-address \
       --region=REGION_A
      

      Catat alamat IP-nya.

    2. Mengirim traffic ke load balancer. Ganti IP_ADDRESS dengan alamat IP load balancer.

      curl IP_ADDRESS:110
      

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.

Membuat load balancer dengan rute TLS

Bagian ini menunjukkan cara membuat load balancer yang dapat menggunakan perutean berbasis SNI. Perutean berbasis SNI memungkinkan Load Balancer Jaringan proxy Anda merutekan traffic ke layanan backend tertentu berdasarkan nama host Server Name Indication (SNI) yang diberikan selama handshake TLS.

Untuk membuat load balancer ini, kita menggunakan jaringan, subnet, dan aturan firewall yang sama yang dibuat sebelumnya di halaman ini. Anda mengonfigurasi deployment yang ditunjukkan dalam diagram berikut:

Konfigurasi Load Balancer Jaringan proxy internal regional dengan rute TLS.
Konfigurasi Load Balancer Jaringan proxy internal regional dengan rute TLS.

Membuat backend grup instance terkelola

Bagian ini menunjukkan cara membuat backend grup instance terkelola (MIG) untuk load balancer. MIG menyediakan instance VM yang menjalankan server backend untuk contoh ini.

Petunjuk Google Cloud CLI dalam panduan ini mengasumsikan bahwa Anda menggunakan Cloud Shell atau lingkungan lain dengan bash terinstal.

  1. Buat template instance dengan layanan HTTPS "echo" yang diekspos di port 443.

    gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --region=REGION_A \
    --network=NETWORK \
    --subnet=SUBNET_A \
    --stack-type=IPv4_ONLY \
    --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    sudo sed -i "s/^#DNS=.*/DNS=8.8.8.8 8.8.4.4/" /etc/systemd/resolved.conf
    sudo systemctl restart systemd-resolved
    sudo rm -rf /var/lib/apt/lists/*
    sudo apt-get -y clean
    sudo apt-get -y update
    sudo apt-get -y install ca-certificates curl gnupg software-properties-common
    sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
    sudo add-apt-repository -y "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
    sudo apt-get -y update
    sudo apt-get -y install docker-ce
    sudo which docker
    echo "{ \"registry-mirrors\": [\"https://mirror.gcr.io\"] }" | sudo tee -a /etc/docker/daemon.json
    sudo service docker restart
    sudo docker run -e HTTPS_PORT=9999 -p 443:9999 --rm -dt mendhak/http-https-echo:22'
    

    Ganti kode berikut:

    • INSTANCE_TEMPLATE_NAME: nama untuk template instance.
    • REGION_A: region untuk template instance.
    • NETWORK: nama jaringan.
    • SUBNET_A: nama subnetwork.
  2. Buat grup instance terkelola berdasarkan template instance:

    gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
      --zone=ZONE_A \
      --size=2 \
      --template=INSTANCE_TEMPLATE_NAME
    

    Ganti ZONE_A dengan zona untuk grup instance.

  3. Tetapkan nama port penayangan untuk grup instance terkelola:

    gcloud compute instance-groups managed set-named-ports INSTANCE_GROUP_NAME \
      --named-ports=PORT_NAME:PORT_NUMBER \
      --zone=ZONE_A
    

    Ganti kode berikut:

    • PORT_NAME: nama untuk port penayangan—misalnya, tcp443.
    • PORT_NUMBER: nomor port untuk port penayangan—misalnya, 443.

Mengonfigurasi firewall

Konfigurasi aturan firewall untuk mengizinkan traffic dari load balancer dan dari probe health check ke instance backend.

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --network=NETWORK \
    --action=allow \
    --direction=ingress \
    --source-ranges=35.191.0.0/16,130.211.0.0/22 \
    --target-tags=allow-health-check \
    --rules=tcp:443

Ganti FIREWALL_RULE_NAME dengan nama untuk aturan firewall.

Mengonfigurasi load balancer

  1. Buat health check HTTPS:

    gcloud compute health-checks create http HTTPS_HEALTH_CHECK_NAME \
        --region=REGION_A \
        --port=HC_PORT
    

    Ganti kode berikut:

    • HTTPS_HEALTH_CHECK_NAME: nama untuk health check.
    • HC_PORT: port untuk health check—misalnya, 443.
    • REGION_A: region untuk health check.
  2. Buat layanan backend:

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=TCP \
        --port-name=PORT_NAME \
        --region=REGION_A \
        --health-checks=tcp-health-check \
        --health-checks-region=REGION_A
    

    Ganti kode berikut:

    • BACKEND_SERVICE_NAME: nama untuk layanan backend.
    • PORT_NAME: nama port untuk layanan backend. Gunakan port bernama yang sama yang dikonfigurasi di grup instance—misalnya, tcp443.
    • HTTPS_HEALTH_CHECK_NAME: nama health check HTTPS.
  3. Tambahkan grup instance backend ke layanan backend Anda:

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
        --instance-group=INSTANCE_GROUP_NAME \
        --instance-group-zone=ZONE_A \
        --region=REGION_A
      

    Ganti kode berikut:

    • INSTANCE_GROUP_NAME: nama grup instance backend.
    • ZONE_A: zona grup instance.
  4. Buat proxy TCP target.

    gcloud beta compute target-tcp-proxies create TARGET_TCP_PROXY_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --proxy-header=NONE \
        --region=REGION_A
    

    Ganti TARGET_TCP_PROXY_NAME dengan nama proxy TCP target.

  5. Buat spesifikasi rute TLS dan simpan ke file YAML.

    cat <<EOF | tee YAML_FILE_NAME
    name: TLS_ROUTE_NAME
    targetProxies:
    - projects/PROJECT_NUMBER/locations/REGION_A/targetTcpProxies/TARGET_TCP_PROXY
    rules:
    - matches:
      - sniHost:
        - example.com
      action:
      destinations:
      - serviceName: projects/PROJECT_NUMBER/locations/REGION_A/backendServices/BACKEND_SERVICE_NAME
    EOF
    

    Ganti kode berikut:

    • YAML_FILE_NAME: nama untuk file YAML—misalnya, tls-route.yaml.
    • TLS_ROUTE_NAME: nama untuk rute TLS.
    • PROJECT_NUMBER: nomor project.
  6. Gunakan file spesifikasi YAML untuk membuat resource rute TLS.

    gcloud network-services tls-routes import TLS_ROUTE_NAME \
      --source=YAML_FILE_NAME \
      --location=REGION_A
    
  7. Membuat aturan penerusan.

    gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
      --load-balancing-scheme=INTERNAL_MANAGED \
      --network=NETWORK \
      --subnet=SUBNET_A \
      --region=REGION_A \
      --target-tcp-proxy=TARGET_TCP_PROXY_NAME \
      --target-tcp-proxy-region=REGION_A \
      --address=IP_ADDRESS \
      --ports=PORT_NUMBER
    

    Ganti kode berikut:

    • FORWARDING_RULE_NAME: nama untuk aturan penerusan.
    • NETWORK: nama jaringan.
    • SUBNET_A: nama subnetwork di region yang sama dengan load balancer.
    • IP_ADDRESS: alamat IP load balancer.
    • PORT_NUMBER: port yang digunakan oleh aturan penerusan—misalnya, 443.

Menguji load balancer

Setelah mengonfigurasi load balancer, Anda dapat menguji pengiriman traffic ke alamat IP load balancer.

  1. Pastikan Anda dapat mengakses layanan HTTPS melalui load balancer.

    curl https://example.com --resolve example.com:443:IP_ADDRESS -k
    

    Anda akan melihat perintah yang menampilkan respons dari salah satu VM di grup instance terkelola dengan output berikut yang dicetak ke konsol.

    "path": "/",
    "headers": {
      "host": "example.com",
      "user-agent": "curl/7.81.0",
      "accept": "*/*"
    },
    "method": "GET",
    "body": "",
    "fresh": false,
    "hostname": "example.com",
    "ip": "::ffff:10.142.0.2",
    "ips": [],
    "protocol": "https",
    "query": {},
    "subdomains": [],
    "xhr": false,
    "os": {
      "hostname": "0cd3aec9b351"
    },
    "connection": {
      "servername": "example.com"
    }
    

    Anda dapat memverifikasi lebih lanjut bahwa jika Anda memberikan nama host SNI yang berbeda yang tidak cocok dengan rute TLS, atau jika Anda tidak memberikan nama host SNI sama sekali, permintaan akan dibatalkan.

    • Jalankan pengujian dengan nama host SNI yang tidak cocok dengan example.com, untuk memastikan bahwa koneksi ditolak.
    curl https://unknown.com --resolve unknown.com:443:IP_ADDRESS -k
    
    • Jalankan pengujian dengan koneksi teks biasa tanpa TLS, untuk memastikan bahwa koneksi ditolak.
    curl example.com:443 --resolve example.com:443:IP_ADDRESS -k
    

    Perintah ini menampilkan error berikut.

    curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection
    

    Anda akan melihat kode error connection_refused di logproxyStatus saat load balancer menolak koneksi tidak valid tersebut.

Mengaktifkan akses global

Anda dapat mengaktifkan akses global untuk load balancer agar dapat diakses oleh klien di semua region. Backend load balancer contoh Anda harus tetap berada di satu region (REGION_A).

Load Balancer Jaringan proxy internal regional dengan akses global
Load Balancer Jaringan proxy 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. Selain itu, setelah aturan penerusan dibuat dengan akses global diaktifkan, aturan tersebut tidak dapat dimodifikasi. Untuk menonaktifkan akses global, Anda harus membuat aturan penerusan akses regional baru dan menghapus aturan penerusan akses global sebelumnya.

Untuk mengonfigurasi akses global, lakukan 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 Anda.

  3. Klik Frontend configuration.

  4. Klik Add frontend IP and port.

  5. Masukkan nama dan detail 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 sementara. Berbagi alamat IP yang sama di beberapa aturan penerusan hanya dapat dilakukan jika Anda menetapkan tanda --purpose alamat IP ke SHARED_LOADBALANCER_VIP saat membuat alamat IP.

  8. Untuk Port number, masukkan 110.

  9. Untuk Global access, pilih Enable.

  10. Klik Done.

  11. Klik Update.

gcloud

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

    gcloud compute forwarding-rules create int-tcp-forwarding-rule-global-access \
       --load-balancing-scheme=INTERNAL_MANAGED \
       --network=lb-network \
       --subnet=backend-subnet \
       --region=REGION_A \
       --target-tcp-proxy=int-tcp-target-proxy \
       --target-tcp-proxy-region=REGION_A \
       --address=int-tcp-ip-address \
       --ports=110 \
       --allow-global-access
    
  2. Anda dapat menggunakan perintah gcloud compute forwarding-rules describe untuk menentukan apakah akses global diaktifkan untuk aturan penerusan. Misalnya:

    gcloud compute forwarding-rules describe int-tcp-forwarding-rule-global-access \
       --region=REGION_A \
       --format="get(name,region,allowGlobalAccess)"
    

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

Buat VM klien untuk menguji akses global

Konsol

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

    Buka instance VM

  2. Klik Create instance.

  3. Setel Nama ke test-global-access-vm.

  4. Setel Zona ke ZONE_B1.

  5. Klik Advanced options.

  6. Klik Networking dan konfigurasi kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Network: lb-network
      • Subnet: test-global-access-subnet
  7. Klik Create.

gcloud

Buat VM klien di zona ZONE_B1.

gcloud compute instances create test-global-access-vm \
    --zone=ZONE_B1 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=test-global-access-subnet

Ganti ZONE_B1 dengan nama zona di region REGION_B.

Hubungkan ke VM klien dan uji konektivitas

  1. Gunakan ssh untuk terhubung ke instance klien:

    gcloud compute ssh test-global-access-vm \
        --zone=ZONE_B1
    
  2. Gunakan perintah gcloud compute addresses describe untuk mendapatkan alamat IP load balancer:

    gcloud compute addresses describe int-tcp-ip-address \
        --region=REGION_A
    

    Catat alamat IP-nya.

  3. Kirim traffic ke load balancer; ganti IP_ADDRESS dengan alamat IP load balancer:

    curl IP_ADDRESS:110
    

Protokol PROXY untuk mempertahankan informasi koneksi klien

Network Load Balancer proxy mengakhiri koneksi TCP dari klien dan membuat koneksi baru ke instance. Secara default, informasi IP dan port klien asli tidak dipertahankan.

Untuk mempertahankan dan mengirim informasi koneksi asli ke instance Anda, aktifkan protokol PROXY versi 1. Protokol ini mengirim header tambahan yang berisi alamat IP sumber, alamat IP tujuan, dan nomor port ke instance sebagai bagian dari permintaan.

Pastikan instance backend Load Balancer Jaringan proxy menjalankan server yang mendukung header protokol PROXY. Jika server tidak dikonfigurasi untuk mendukung header protokol PROXY, instance backend akan menampilkan respons kosong.

Jika Anda menyetel protokol PROXY untuk traffic pengguna, Anda juga dapat menyetelnya untuk pemeriksaan kondisi. Jika Anda memeriksa kondisi dan menayangkan konten di port yang sama, tetapkan --proxy-header health check agar cocok dengan setelan load balancer Anda.

Header protokol PROXY biasanya berupa satu baris teks yang dapat dibaca pengguna dalam format berikut:

PROXY TCP4 <client IP> <load balancing IP> <source port> <dest port>\r\n

Contoh berikut menunjukkan protokol PROXY:

PROXY TCP4 192.0.2.1 198.51.100.1 15221 110\r\n

Dalam contoh sebelumnya, IP klien adalah 192.0.2.1, IP load balancing adalah 198.51.100.1, port klien adalah 15221, dan port tujuan adalah 110.

Jika IP klien tidak diketahui, load balancer akan membuat header protokol PROXY dalam format berikut:

PROXY UNKNOWN\r\n

Memperbarui header protokol PROXY untuk proxy target

Anda tidak dapat memperbarui header protokol PROXY di proxy target yang ada. Anda harus membuat proxy target baru dengan setelan yang diperlukan untuk header protokol PROXY. Gunakan langkah-langkah berikut untuk membuat frontend baru dengan setelan yang diperlukan:

Konsol

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

    Buka Load balancing

  2. Klik nama load balancer yang ingin Anda edit.
  3. Klik Edit untuk load balancer Anda.
  4. Klik Frontend configuration.
  5. Hapus IP dan port frontend lama.
  6. Klik Add frontend IP and port.
    1. Untuk Name, masukkan int-tcp-forwarding-rule.
    2. Untuk Subnetwork, pilih backend-subnet.
    3. Untuk IP address, pilih alamat IP yang dicadangkan sebelumnya: LB_IP_ADDRESS
    4. Untuk Port number, masukkan 110. Aturan penerusan hanya meneruskan paket dengan port tujuan yang cocok.
    5. Ubah nilai kolom Proxy protocol menjadi On.
    6. Klik Done.
  7. Klik Update untuk menyimpan perubahan.

gcloud

  1. Pada perintah berikut, edit kolom --proxy-header dan tetapkan ke NONE atau PROXY_V1, bergantung pada kebutuhan Anda.

       gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \
           --backend-service=BACKEND_SERVICE \
           --proxy-header=[NONE | PROXY_V1] \
           --region=REGION
       
  2. Hapus aturan penerusan yang ada.

       gcloud compute forwarding-rules delete int-tcp-forwarding-rule \
           --region=REGION
       
  3. Buat aturan penerusan baru dan kaitkan dengan proxy target.

       gcloud compute forwarding-rules create int-tcp-forwarding-rule \
           --load-balancing-scheme=INTERNAL_MANAGED \
           --network=lb-network \
           --subnet=backend-subnet \
           --region=REGION \
           --target-tcp-proxy=TARGET_PROXY_NAME \
           --target-tcp-proxy-region=REGION \
           --address=LB_IP_ADDRESS \
           --ports=110
       

Mengaktifkan afinitas sesi

Contoh konfigurasi membuat layanan backend tanpa afinitas sesi.

Prosedur ini menunjukkan cara mengupdate layanan backend untuk contoh Load Balancer Jaringan proxy internal regional sehingga layanan backend menggunakan afinitas IP klien atau afinitas cookie yang dihasilkan.

Jika afinitas IP klien diaktifkan, load balancer akan mengarahkan permintaan klien tertentu ke VM backend yang sama berdasarkan hash yang dibuat dari alamat IP klien dan alamat IP load balancer (alamat IP internal aturan penerusan internal).

Konsol

Untuk mengaktifkan afinitas sesi IP klien:

  1. Di konsol Google Cloud , buka halaman Load balancing.
    Buka Load balancing
  2. Klik Backend.
  3. Klik internal-tcp-proxy-bs (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 IP Klien dari menu.
  6. Klik Update.

gcloud

Gunakan perintah Google Cloud CLI berikut untuk mengupdate layanan backend internal-tcp-proxy-bs, dengan menentukan afinitas sesi IP klien:

gcloud compute backend-services update internal-tcp-proxy-bs \
    --region=REGION_A \
    --session-affinity=CLIENT_IP

Mengaktifkan pengosongan koneksi

Anda dapat mengaktifkan pengurasan koneksi pada layanan backend untuk memastikan gangguan minimal bagi pengguna Anda saat instance yang melayani traffic dihentikan, dihapus secara manual, atau dihapus oleh penskala otomatis. Untuk mempelajari lebih lanjut penghentian koneksi, baca dokumentasi Mengaktifkan penghentian koneksi.

Langkah berikutnya