Menyiapkan Load Balancer Jaringan proxy eksternal regional dengan backend NEG zona

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 endpoint jaringan zona (NEG).

Sebelum memulai, tinjau dokumen berikut:

Dalam contoh ini, kita akan menggunakan load balancer untuk mendistribusikan traffic TCP di seluruh VM backend di dua NEG zona di region us-west1. Untuk tujuan contohnya, layanan ini adalah serangkaian server Apache yang dikonfigurasi untuk merespons port 80.

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

Contoh konfigurasi Load Balancer Jaringan proxy eksternal regional dengan backend NEG zona.
Contoh konfigurasi Load Balancer Jaringan proxy eksternal regional dengan backend NEG zona.

Ini 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. Ini adalah load balancer 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 untuk backend

Konsol

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Untuk Name, masukkan lb-network.

  4. Di bagian Subnet, lakukan hal berikut:

    1. Setel Subnet creation mode ke Custom.
    2. Di bagian Subnet baru, masukkan informasi berikut:
      • Name: backend-subnet
      • Region: us-west1
      • Rentang alamat IP: 10.1.2.0/24
    3. Klik Done.
  5. 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 dalam 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 Bersama: 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-health-check. Aturan masuk, berlaku untuk instance Google Cloud yang sedang di-load balanced, yang memungkinkan traffic dari load balancer dan sistem health check Google Cloud (130.211.0.0/22 dan 35.191.0.0/16). Contoh ini menggunakan tag target allow-health-check untuk mengidentifikasi VM backend yang harus diterapkan.
  • fw-allow-ssh. Aturan masuk yang mengizinkan konektivitas SSH yang masuk pada port TCP 22 dari alamat mana 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 untuk mengidentifikasi VM yang harus diterapkan.
  • fw-allow-proxy-only-subnet. Aturan firewall allow masuk untuk subnet khusus proxy yang memungkinkan load balancer berkomunikasi dengan instance backend pada port TCP 80. Contoh ini menggunakan tag target allow-proxy-only-subnet untuk mengidentifikasi VM backend yang harus diterapkan.

Konsol

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

    Buka Kebijakan firewall

  2. Klik Create firewall rule, lalu isi kolom berikut:

    • Name: fw-allow-health-check
    • Jaringan: lb-network
    • 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.
  3. Klik Create.

  4. Klik Create firewall rule untuk kedua kalinya guna membuat aturan guna mengizinkan koneksi SSH yang masuk:

    • Name: fw-allow-ssh
    • Jaringan: lb-network
    • Prioritas: 1000
    • 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.
  5. Klik Create.

  6. Klik Create firewall rule untuk ketiga kalinya guna membuat aturan guna mengizinkan koneksi masuk dari subnet khusus proxy ke backend Google Cloud:

    • Name: fw-allow-proxy-only-subnet
    • Jaringan: lb-network
    • Prioritas: 1000
    • 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 fw-allow-health-check untuk memungkinkan health check Google Cloud mencapai instance backend pada port TCP 80:

    gcloud compute firewall-rules create fw-allow-health-check \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-health-check \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp:80
    
  2. Buat aturan firewall fw-allow-ssh untuk mengizinkan konektivitas SSH ke VM dengan tag jaringan allow-ssh. Saat Anda menghapus source-ranges, Google Cloud akan menafsirkan aturan sebagai sumber apa pun.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-ssh \
        --rules=tcp:22
    
  3. Buat aturan firewall izinkan masuk untuk subnet khusus proxy agar load balancer dapat berkomunikasi dengan instance backend pada port TCP 80:

    gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
        --network=lb-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-proxy-only-subnet \
        --source-ranges=10.129.0.0/23 \
        --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
    

Menyiapkan NEG zona

Siapkan NEG zona dengan endpoint jenis GCE_VM_IP_PORT di region us-west1. Pertama-tama, buat VM, lalu buat NEG zona dan tambahkan endpoint jaringan VM ke NEG.

Membuat VM

Konsol

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

    Buka instance VM

  2. Klik Create instance.

  3. Tetapkan Nama ke vm-a1.

  4. Untuk Region, pilih us-west1.

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

  6. Di bagian Boot disk, pastikan sistem operasi Debian dan versi 10 (buster) dipilih untuk opsi boot disk. Klik Choose untuk mengubah gambar jika perlu.

  7. Klik Advanced options.

  8. Klik Networking, lalu 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
  9. 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
    
  10. Klik Create.

  11. Ulangi langkah sebelumnya untuk membuat tiga VM lagi. Gunakan kombinasi nama dan zona berikut:

    • Nama: vm-a2 | Zona: us-west1-a
    • Nama: vm-c1 | Zona: us-west1-c
    • Nama: vm-c2 | Zona: us-west1-c

gcloud

Untuk membuat VM, gunakan perintah gcloud compute instances create dua kali. Gunakan kombinasi berikut untuk VM_NAME dan ZONE. Konten skrip identik untuk kedua VM:

  • VM_NAME: vm-a1 dan ZONE: us-west1-a
  • VM_NAME: vm-a2 dan ZONE: us-west1-a
  • VM_NAME: vm-c1 dan ZONE: us-west1-c
  • VM_NAME: vm-c2 dan ZONE: us-west1-c
 gcloud compute instances create VM_NAME \
     --zone=ZONE \
     --image-family=debian-10 \
     --image-project=debian-cloud \
     --tags=allow-ssh,allow-health-check,allow-proxy-only-subnet \
     --subnet=backend-subnet \
     --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'

Membuat NEG zona

Konsol

Membuat grup endpoint jaringan zona

  1. Di Konsol Google Cloud, buka halaman Network endpoint groups.

    Buka Network endpoint groups

  2. Klik Create network endpoint group.

  3. Untuk Name, masukkan zonal-neg-a.

  4. Untuk Network endpoint group type, pilih Network endpoint group (Zonal).

  5. Untuk Network, pilih lb-network.

  6. Untuk Subnet, pilih backend-subnet.

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

  8. Untuk Default port, masukkan 80.

  9. Klik Create.

  10. Ulangi semua langkah di bagian ini untuk membuat NEG zona kedua dengan perubahan berikut di setelan:

    • Name: zonal-neg-c
    • Zona: us-west1-c

Menambahkan endpoint ke NEG zona

  1. Di Konsol Google Cloud, buka halaman Network endpoint groups.

    Buka Network endpoint groups

  2. Klik nama grup endpoint jaringan yang Anda buat di langkah sebelumnya (misalnya, zonal-neg-a).

  3. Di halaman Network endpoint group details, di bagian Network endpoint in this group, klik Add network endpoint.

  4. Pilih instance VM (misalnya, vm-a1).

  5. Di bagian Network interface, nama VM, zona, dan subnet akan ditampilkan.

    1. Untuk Alamat IP, masukkan alamat IP endpoint jaringan baru. Untuk mendapatkan alamat IP, klik Periksa alamat IP utama dan rentang IP alias di nic0.
    2. Untuk Jenis port, pilih Default. Endpoint menggunakan port default 80 untuk semua endpoint dalam grup endpoint jaringan. Hal ini cukup untuk contoh kita karena server Apache melayani permintaan pada port 80.
    3. Klik Create.
  6. Klik Tambahkan endpoint jaringan. Pilih instance VM kedua, vm-a2, dan ulangi langkah sebelumnya untuk menambahkan endpoint-nya ke zonal-neg-a.

  7. Ulangi semua langkah di bagian ini untuk menambahkan endpoint dari vm-c1 dan vm-c2 ke zonal-neg-c.

gcloud

  1. Buat NEG zona di zona us-west1-a dengan endpoint GCE_VM_IP_PORT:

    gcloud compute network-endpoint-groups create zonal-neg-a \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=us-west1-a \
        --network=lb-network \
        --subnet=backend-subnet
    

    Anda dapat menentukan --default-port saat membuat NEG, atau menentukan nomor port untuk setiap endpoint seperti yang ditunjukkan pada langkah berikutnya.

  2. Tambahkan endpoint ke NEG zona:

    gcloud compute network-endpoint-groups update zonal-neg-a \
        --zone=us-west1-a \
        --add-endpoint='instance=vm-a1,port=80' \
        --add-endpoint='instance=vm-a2,port=80'
    
  3. Buat NEG zona di zona us-west1-c dengan endpoint GCE_VM_IP_PORT:

    gcloud compute network-endpoint-groups create zonal-neg-c \
        --network-endpoint-type=GCE_VM_IP_PORT \
        --zone=us-west1-c \
        --network=lb-network \
        --subnet=backend-subnet
    

    Anda dapat menentukan --default-port saat membuat NEG, atau menentukan nomor port untuk setiap endpoint seperti yang ditunjukkan pada langkah berikutnya.

  4. Tambahkan endpoint ke NEG zona:

    gcloud compute network-endpoint-groups update zonal-neg-c \
        --zone=us-west1-c \
        --add-endpoint='instance=vm-c1,port=80' \
        --add-endpoint='instance=vm-c2,port=80'
    

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 Zonal network endpoint group.
  3. Untuk Protocol, pilih TCP.
  4. Konfigurasi backend pertama:
    1. Untuk New backend, pilih NEG zona zonal-neg-a.
    2. Pertahankan nilai default yang tersisa, lalu klik Done.
  5. Konfigurasi backend kedua:
    1. Klik Add backend.
    2. Untuk New backend, pilih grup instance zonal-neg-c.
    3. Pertahankan nilai default yang tersisa, lalu klik Done.
  6. 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. Untuk Port, masukkan 80.
  7. Pertahankan nilai default yang tersisa, lalu klik Save.
  8. 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-tcp-forwarding-rule.
  3. Untuk Subnetwork, pilih backend-subnet.
  4. Untuk Alamat IP, pilih ext-tcp-ip-address.
  5. Untuk Nomor port, masukkan 9090. 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.

Melakukan peninjauan dan penyelesaian

  1. Klik Review and finalize.
  2. Periksa kembali setelan Anda.
  3. Klik Create.

gcloud

  1. Buat health check regional untuk backend:

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

    gcloud compute backend-services create external-tcp-proxy-bs \
       --load-balancing-scheme=EXTERNAL_MANAGED \
       --protocol=TCP \
       --region=us-west1 \
       --health-checks=tcp-health-check \
       --health-checks-region=us-west1
    
  3. Tambahkan NEG zona di zona us-west1-a ke layanan backend:

    gcloud compute backend-services add-backend external-tcp-proxy-bs \
       --network-endpoint-group=zonal-neg-a \
       --network-endpoint-group-zone=us-west1-a \
       --balancing-mode=CONNECTION \
       --max-connections-per-endpoint=50 \
       --region=us-west1
    
  4. Tambahkan NEG zona di zona us-west1-c ke layanan backend:

    gcloud compute backend-services add-backend external-tcp-proxy-bs \
       --network-endpoint-group=zonal-neg-c \
       --network-endpoint-group-zone=us-west1-c \
       --balancing-mode=CONNECTION \
       --max-connections-per-endpoint=50 \
       --region=us-west1
    
  5. Buat proxy TCP target:

    gcloud compute target-tcp-proxies create ext-tcp-target-proxy \
       --backend-service=external-tcp-proxy-bs \
       --region=us-west1
    
  6. Membuat aturan penerusan. Untuk --ports, tentukan satu nomor port dari 1-65535. Contoh ini menggunakan port 9090. Aturan penerusan hanya meneruskan paket dengan port tujuan yang cocok.

    gcloud compute forwarding-rules create ext-tcp-forwarding-rule \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network=lb-network \
      --subnet=backend-subnet \
      --address=ext-tcp-ip-address \
      --ports=9090 \
      --region=us-west1 \
      --target-tcp-proxy=ext-tcp-target-proxy \
      --target-tcp-proxy-region=us-west1
    

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
    

Langkah selanjutnya