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

Load Balancer Jaringan proxy eksternal regional adalah load balancer Lapisan 4 regional berbasis proxy yang memungkinkan Anda menjalankan dan menskalakan traffic layanan TCP di satu region di belakang alamat IP regional eksternal. Load balancer ini mendistribusikan traffic TCP eksternal dari internet ke backend di region yang sama.

Panduan ini berisi petunjuk untuk menyiapkan Load Balancer Jaringan proxy eksternal regional dengan backend grup instance terkelola (MIG).

Sebelum memulai, baca Ringkasan Load Balancer Jaringan proxy eksternal.

Dalam contoh ini, kita akan menggunakan load balancer untuk mendistribusikan traffic TCP di seluruh VM backend dalam dua grup instance terkelola menurut zona di region us-west1. Sebagai contoh, layanan ini adalah serangkaian server Apache yang dikonfigurasi untuk merespons port 110. Banyak browser tidak mengizinkan port 110, sehingga bagian pengujian menggunakan curl.

Dalam contoh ini, Anda mengonfigurasi deployment yang ditampilkan dalam diagram berikut.

Konfigurasi contoh Load Balancer Jaringan proxy eksternal dengan backend grup instance.
Konfigurasi contoh Load Balancer Jaringan proxy eksternal dengan backend grup instance

Load Balancer Jaringan proxy eksternal regional adalah load balancer regional. Semua komponen load balancer (grup instance backend, layanan backend, proxy target, dan aturan penerusan) harus berada di region yang sama.

Izin

Untuk mengikuti panduan ini, Anda harus dapat membuat instance dan mengubah jaringan dalam sebuah project. Anda harus merupakan 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 (roles/compute.networkAdmin)
Menambahkan dan menghapus aturan firewall Admin Keamanan Compute (roles/compute.securityAdmin)
Membuat instance Admin Instance Compute (roles/compute.instanceAdmin)

Untuk informasi selengkapnya, lihat panduan berikut:

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 ini 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 VPC mode kustom bernama lb-network

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

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

Membuat 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 Create.

gcloud

  1. Untuk membuat jaringan VPC kustom, gunakan perintah gcloud compute networks create:

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Untuk membuat subnet di jaringan lb-network di region us-west1, gunakan 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
    

Membuat subnet khusus proxy

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

Subnet khusus proxy ini digunakan oleh semua load balancer berbasis Envoy di region us-west1 pada jaringan VPC lb-network.

Konsol

Jika menggunakan Google Cloud Console, 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

Untuk membuat subnet khusus proxy, gunakan 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

Membuat aturan firewall

Dalam contoh ini, Anda membuat 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 hanya dapat menentukan 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 diseimbangkan dengan beban, 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 allow-health-check.

  • fw-allow-proxy-only-subnet. Aturan ingress yang memungkinkan 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 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 masuk. Lengkapi kolom berikut:

    • 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: allow-health-check
    • 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 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 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 terhubung ke backend:

    • Name: fw-allow-proxy-only-subnet
    • Jaringan: lb-network
    • Arah traffic: Ingress
    • Tindakan jika 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. 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=allow-health-check \
        --rules=tcp:80
    
  3. Buat aturan fw-allow-proxy-only-subnet untuk mengizinkan proxy Envoy 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

Cadangkan alamat IP eksternal untuk load balancer. Prosedur ini membuat alamat IP load balancer di Paket Standar. Load Balancer Jaringan proxy eksternal regional mendukung Tingkat Layanan Jaringan Premium dan Standar. Namun, pembuatan load balancer ini di Paket Premium tidak didukung di Konsol Google Cloud. Gunakan gcloud atau REST API sebagai gantinya.

Konsol

  1. Di konsol Google Cloud, buka halaman Reserve a static address.

    Buka Cadangkan alamat statis

  2. Beri nama untuk alamat IP baru.

  3. Untuk Network Service Tier, pilih Standard.

  4. Untuk IP version, pilih IPv4. Alamat IPv6 tidak didukung.

  5. Untuk Type, pilih Regional.

  6. Untuk Region, pilih us-west1.

  7. Biarkan opsi Attached to ditetapkan ke None. Setelah Anda membuat load balancer, alamat IP ini dilampirkan ke aturan penerusan load balancer.

  8. Klik Reserve untuk mereservasi alamat IP.

gcloud

  1. Untuk mencadangkan alamat IP eksternal statis, gunakan perintah gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME  \
        --region=us-west1 \
        --network-tier=STANDARD
    

    Ganti ADDRESS_NAME dengan nama yang ingin Anda panggil ke alamat ini.

  2. Untuk melihat hasilnya, gunakan perintah gcloud compute addresses describe:

    gcloud compute addresses describe ADDRESS_NAME
    

Membuat grup instance terkelola

Bagian ini menunjukkan cara membuat dua backend grup instance terkelola (MIG) di region us-west1 untuk load balancer. Untuk contoh ini, MIG menyediakan instance VM yang menjalankan server Apache backend. Biasanya, Load Balancer Jaringan proxy eksternal regional tidak digunakan untuk traffic HTTP, tetapi Apache adalah software yang umum digunakan dan mudah disiapkan untuk pengujian.

Konsol

Membuat template instance

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

    Buka Instance templates

  2. Klik Create instance template.

  3. Untuk Name, masukkan ext-reg-tcp-proxy-backend-template.

  4. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 10 (stretch). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.

  5. Klik Advanced options.

  6. Klik Networking dan konfigurasikan kolom berikut:

    1. Untuk Tag jaringan, masukkan allow-ssh, allow-health-check, dan allow-proxy-only-subnet.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Jaringan: lb-network
      • Subnet: backend-subnet
  7. 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
     
  8. Klik Create.

Membuat grup instance terkelola

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

    Buka Instance groups

  2. Klik Create grup instance.

  3. Pilih New managed instance group (stateless). Untuk mengetahui informasi selengkapnya, lihat Membuat MIG dengan disk stateful.

  4. Untuk Name, masukkan mig-a.

  5. Untuk Location, pilih Single zone.

  6. Untuk Region, pilih us-west1.

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

  8. Untuk Instance template, pilih ext-reg-tcp-proxy-backend-template.

  9. Tentukan jumlah instance yang ingin Anda buat dalam grup.

    Untuk contoh ini, tentukan opsi berikut untuk Autoscaling:

    • Untuk Autoscaling mode, pilih Off:do not autoscale.
    • Untuk Maximum number of instances, masukkan 2.
  10. Untuk Pemetaan port, klik Tambahkan port.

    • Untuk Port name, masukkan tcp80.
    • Untuk Nomor port, masukkan 80.
  11. Klik Create.

  12. Untuk membuat grup instance terkelola kedua, ulangi langkah-langkah Membuat grup instance terkelola dan gunakan setelan berikut:

    • Name: mig-c
    • Zona: us-west1-c

    Biarkan semua setelan lainnya tetap sama.

gcloud

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

  1. Untuk membuat template instance VM dengan server HTTP, gunakan perintah gcloud compute instance-templates create:

    gcloud compute instance-templates create ext-reg-tcp-proxy-backend-template \
        --region=us-west1 \
        --network=lb-network \
        --subnet=backend-subnet \
        --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
        --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 us-west1-a:

    gcloud compute instance-groups managed create mig-a \
        --zone=us-west1-a \
        --size=2 \
        --template=ext-reg-tcp-proxy-backend-template
    
  3. Buat grup instance terkelola di zona us-west1-c:

    gcloud compute instance-groups managed create mig-c \
        --zone=us-west1-c \
        --size=2 \
        --template=ext-reg-tcp-proxy-backend-template
    

Mengonfigurasi load balancer

Konsol

Memulai konfigurasi Anda

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

    Buka Load balancing

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

Konfigurasi dasar

  1. Untuk Name, masukkan my-ext-tcp-lb.
  2. Untuk Region, pilih us-west1.
  3. Untuk Network, pilih lb-network.

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.

Mengonfigurasi backend

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

Mengonfigurasi frontend

  1. Klik Frontend configuration.
  2. Untuk Name, masukkan ext-reg-tcp-forwarding-rule.
  3. Untuk Subnetwork, pilih backend-subnet.
  4. Untuk Alamat IP, pilih alamat IP yang dicadangkan sebelumnya: LB_IP_ADDRESS
  5. Untuk Nomor port, masukkan 110. Aturan penerusan hanya meneruskan paket dengan port tujuan yang cocok.
  6. Untuk Protokol proxy, pilih Nonaktif karena protokol PROXY tidak berfungsi dengan software Server HTTP Apache. Untuk informasi lebih lanjut, lihat protokol PROXY.
  7. Klik Done.
  8. Di konsol Google Cloud, pastikan ada tanda centang di samping Frontend configuration. Jika belum, periksa kembali apakah Anda telah menyelesaikan semua langkah sebelumnya.

Tinjau dan selesaikan

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

gcloud

  1. Membuat health check regional:

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

    gcloud compute backend-services create ext-reg-tcp-proxy-bs \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --protocol=TCP \
        --port-name=tcp80 \
        --region=us-west1 \
        --health-checks=tcp-health-check \
        --health-checks-region=us-west1
    
  3. Tambahkan grup instance ke layanan backend Anda:

    gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \
        --region=us-west1 \
        --instance-group=mig-a \
        --instance-group-zone=us-west1-a \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
     
    gcloud compute backend-services add-backend ext-reg-tcp-proxy-bs \
        --region=us-west1 \
        --instance-group=mig-c \
        --instance-group-zone=us-west1-c \
        --balancing-mode=UTILIZATION \
        --max-utilization=0.8
    
  4. Buat proxy TCP target:

    gcloud compute target-tcp-proxies create ext-reg-tcp-target-proxy \
        --backend-service=ext-reg-tcp-proxy-bs \
        --proxy-header=NONE \
        --region=us-west1
    

    Jika Anda ingin mengaktifkan header proxy, tetapkan header tersebut ke PROXY_V1, bukan NONE. Dalam contoh ini, jangan aktifkan protokol PROXY karena protokol tersebut tidak berfungsi dengan software Server HTTP Apache. Untuk informasi lebih lanjut, 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 ext-reg-tcp-forwarding-rule \
        --load-balancing-scheme=EXTERNAL_MANAGED \
        --network=lb-network \
        --subnet=backend-subnet \
        --region=us-west1 \
        --target-tcp-proxy=ext-reg-tcp-target-proxy \
        --target-tcp-proxy-region=us-west1 \
        --address=ext-reg-tcp-ip-address \
        --ports=110
    

Menguji load balancer

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

  1. Mendapatkan alamat IP load balancer.

    Untuk mendapatkan alamat IPv4, jalankan perintah berikut:

    gcloud compute addresses describe ADDRESS_NAME
    
  2. Kirim traffic ke load balancer dengan menjalankan perintah berikut. Ganti LB_IP_ADDRESS dengan alamat IPv4 load balancer Anda.

    curl -m1 LB_IP_ADDRESS:9090
    

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 afinitas sesi

Contoh konfigurasi ini akan membuat layanan backend tanpa afinitas sesi.

Prosedur ini menunjukkan cara mengupdate layanan backend untuk contoh load balancer yang dibuat sebelumnya, sehingga layanan backend menggunakan afinitas IP klien atau afinitas cookie yang dihasilkan.

Saat 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 dari aturan penerusan internal).

Untuk mengaktifkan afinitas sesi IP klien, selesaikan langkah-langkah berikut.

Konsol

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

    Buka Load balancing

  2. Click Backends.

  3. Klik ext-reg-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. Untuk Afinitas sesi, pilih IP Klien.

  6. Klik Perbarui.

gcloud

Untuk mengupdate layanan backend ext-reg-tcp-proxy-bs dan menentukan afinitas sesi IP klien, gunakan perintah gcloud compute backend-services update ext-reg-tcp-proxy-bs:

gcloud compute backend-services update ext-reg-tcp-proxy-bs \
    --region=us-west1 \
    --session-affinity=CLIENT_IP

Langkah selanjutnya