Menyiapkan Load Balancer Jaringan passthrough eksternal global dengan backend NEG zona

Dokumen ini menunjukkan cara membuat Load Balancer Jaringan passthrough eksternal global untuk menyeimbangkan traffic di antara backend NEG zonal yang di-deploy di beberapa region.

Sebelum memulai

Pastikan penyiapan Anda memenuhi prasyarat berikut.

Menginstal Google Cloud CLI

Petunjuk dalam panduan ini menggunakan Google Cloud CLI untuk mengonfigurasi Network Load Balancer passthrough eksternal global. Untuk menginstalnya, lihat Menginstal gcloud CLI.

Peran yang diperlukan

Jika Anda adalah project creator, Anda diberi peran Pemilik (roles/owner). Secara default, peran Pemilik (roles/owner) atau peran Editor (roles/editor) mencakup izin yang diperlukan untuk mengikuti dokumen ini.

Jika Anda bukan project creator, izin yang diperlukan harus diberikan pada project kepada akun utama yang sesuai. Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan.

Agar mendapatkan izin yang diperlukan untuk mengonfigurasi Network Load Balancer passthrough eksternal global dengan backend grup instance VM, minta administrator untuk memberi Anda peran IAM berikut di project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Untuk mengetahui informasi selengkapnya tentang peran dan izin untuk Cloud Load Balancing, lihat Peran dan izin. Untuk mengetahui informasi selengkapnya tentang cara menentukan kebijakan IAM dengan pemberian bersyarat untuk aturan penerusan, lihat Kondisi IAM untuk aturan penerusan.

Ringkasan penyiapan

Diagram berikut menunjukkan Load Balancer Jaringan passthrough eksternal global dengan backend NEG zonal yang di-deploy di region us-west1 dan europe-west2. Untuk memahami cara kerja Load Balancer Jaringan passthrough eksternal global, lihat bagian Arsitektur dalam panduan ringkasan.

Dalam contoh ini, komponen berikut dikonfigurasi:

  • Empat VM backend:

    • vm-us-1 dan vm-us-2 di zona us-west1-a
    • vm-eu-1 dan vm-eu-2 di zona europe-west2-a
  • Dua NEG zona dengan GCE_VM_IP endpoint:

    • Lampirkan nic0 dari vm-us-1 dan vm-us-2 ke NEG di zona us-west1-a
    • Lampirkan nic0 dari vm-eu-1 dan vm-eu-2 ke NEG di zona europe-west2-a
  • Satu Load Balancer Jaringan passthrough eksternal global untuk menyeimbangkan traffic TCP:80 di antara empat endpoint jaringan.

Load Balancer Jaringan passthrough eksternal global mengirimkan traffic ke backend NEG zonal yang di-deploy di region `us-west1` dan `europe-west2`.
Mendistribusikan traffic ke backend NEG zona menggunakan Load Balancer Jaringan passthrough eksternal global (klik untuk memperbesar).

Menyiapkan jaringan dan subnet

Contoh ini menggunakan jaringan VPC mode kustom bernama lb-network dengan subnet di dua region yang berbeda.

Anda dapat mengonfigurasi Load Balancer Jaringan passthrough eksternal global agar memiliki GCE_VM_IPendpoint jaringan yang dapat mereferensikan antarmuka jaringan VM yang jenis stack-nya dapat berupa hanya IPv4 atau dual-stack.

Tabel berikut merangkum kompatibilitas antara jenis traffic load balancer, antarmuka jaringan VM backend, dan jenis stack subnet VPC. Pastikan Anda memahami persyaratan kompatibilitas antarmuka jaringan VM backend dengan subnet VPC yang diuraikan dalam panduan arsitektur Network Load Balancer passthrough eksternal global.

Jenis traffic load balancer Jenis stack antarmuka jaringan VM backend Jenis stack subnet VPC
Hanya traffic IPv4 IPV4_ONLY IPV4_ONLY atau IPV4_IPV6
IPV4_IPV6 IPV4_IPV6
Hanya traffic IPv6 IPV6_ONLY IPV6_ONLY atau IPV4_IPV6
IPV4_IPV6 IPV4_IPV6
Traffic IPv4 dan IPv6 IPV4_IPV6 IPV4_IPV6

gcloud

  1. Buat jaringan VPC. Dalam contoh ini, jaringan VPC diberi nama lb-network.

    gcloud compute networks create lb-network --subnet-mode=custom
    
  2. Dalam jaringan VPC (lb-network), buat subnet di dua region.

    Buat subnet bernama lb-subnet-us untuk endpoint jaringan di region us-west1.

    Untuk membuat subnet khusus IPv4, gunakan perintah berikut:

    gcloud compute networks subnets create lb-subnet-us \
        --stack-type=IPV4_ONLY \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

    Untuk membuat subnet stack ganda, gunakan perintah berikut:

    gcloud compute networks subnets create lb-subnet-us \
        --stack-type=IPV4_IPV6 \
        --ipv6-access-type=EXTERNAL \
        --network=lb-network \
        --range=10.1.2.0/24 \
        --region=us-west1
    

    Buat subnet bernama lb-subnet-eu untuk endpoint jaringan di region europe-west2.

    Untuk traffic IPv4 saja, gunakan perintah berikut untuk membuat subnet khusus IPv4:

    gcloud compute networks subnets create lb-subnet-eu \
        --stack-type=IPV4_ONLY \
        --network=lb-network \
        --range=10.1.3.0/24 \
        --region=europe-west2
    

    Untuk traffic IPv4 dan IPv6, gunakan perintah berikut untuk membuat subnet dual-stack:

    gcloud compute networks subnets create lb-subnet-eu \
        --stack-type=IPV4_IPV6 \
        --ipv6-access-type=EXTERNAL \
        --network=lb-network \
        --range=10.1.3.0/24 \
        --region=europe-west2
    

Membuat aturan firewall

Untuk mengonfigurasi lingkungan produksi Anda secara aman, Anda harus membuat dua aturan firewall terpisah:

  • Aturan firewall health check, yang dikonfigurasi untuk mengizinkan traffic masuk dari:

  • Aturan firewall traffic pengguna, yang dikonfigurasi untuk mengizinkan traffic masuk dari:

    • rentang IP sumber klien tertentu yang perlu mengakses load balancer Anda, dan
    • protokol IP dan port yang dikonfigurasi dalam aturan penerusan Anda

Perhatikan hal berikut:

  • Jika aplikasi Anda melayani semua pengguna internet tanpa batasan apa pun, konfigurasi rentang IP sumber 0.0.0.0/0 untuk traffic IPv4 dan ::/0 untuk traffic IPv6.

  • Jika Anda mengonfigurasi health check untuk menyelidiki protokol dan port IP load balancing, Anda dapat mengonfigurasi satu aturan firewall dengan menggabungkan aturan firewall health check dan traffic pengguna.

gcloud

  • Buat aturan firewall yang mengizinkan traffic TCP dari semua rentang sumber untuk menjangkau instance VM backend Anda di port 80. Port dan protokol ini digunakan untuk load balancing dan health check.

    • Untuk mengizinkan semua traffic IPv4, jalankan perintah berikut:

      gcloud compute firewall-rules create firewall-allow-traffic-ipv4 \
          --network=lb-network \
          --target-tags=allow-traffic \
          --allow=tcp:80 \
          --source-ranges=0.0.0.0/0
      
    • Untuk mengizinkan semua traffic IPv6, jalankan perintah berikut:

      gcloud compute firewall-rules create firewall-allow-traffic-ipv6 \
          --network=lb-network \
          --target-tags=allow-traffic \
          --allow=tcp:80 \
          --source-ranges=::/0
      

Membuat VM backend

Untuk contoh load balancing ini, Anda akan membuat empat VM seperti yang ditunjukkan di bagian Ringkasan penyiapan.

Dalam contoh ini, antarmuka nic0 VM dikaitkan dengan jaringan VPC lb-network dan salah satu subnet—lb-subnet-us atau lb-subnet-eu. Antarmuka jaringan yang dirujuk oleh endpoint GCE_VM_IP harus berada di subnet VPC yang sama yang terkait dengan NEG zonal.

Tabel berikut merangkum kompatibilitas antara jenis traffic load balancer, antarmuka jaringan VM backend, dan jenis stack subnet VPC. Pastikan Anda memahami persyaratan kompatibilitas antarmuka jaringan VM backend dengan subnet VPC yang diuraikan dalam panduan arsitektur Network Load Balancer passthrough eksternal global.

Jenis traffic load balancer Jenis stack antarmuka jaringan VM backend Jenis stack subnet VPC
Hanya traffic IPv4 IPV4_ONLY IPV4_ONLY atau IPV4_IPV6
IPV4_IPV6 IPV4_IPV6
Hanya traffic IPv6 IPV6_ONLY IPV6_ONLY atau IPV4_IPV6
IPV4_IPV6 IPV4_IPV6
Traffic IPv4 dan IPv6 IPV4_IPV6 IPV4_IPV6

gcloud

Buat empat VM dengan menjalankan perintah gcloud compute instances create empat kali, menggunakan empat kombinasi berikut untuk VM_NAME, REGION, ZONE, dan SUBNET. Skrip Bash sama untuk keempat VM.

VM_NAME REGION ZONE SUBNET
vm-us-1 us-west1 us-west1-a lb-subnet-us
vm-us-2 us-west1 us-west1-a lb-subnet-us
vm-eu-1 europe-west2 europe-west2-a lb-subnet-eu
vm-eu-2 europe-west2 europe-west2-a lb-subnet-eu

Untuk membuat VM backend dengan antarmuka jaringan khusus IPv4, gunakan perintah berikut.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-traffic \
    --network-interface=network=lb-network,subnet=SUBNET,stack-type=IPV4_ONLY \
    --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'

Untuk membuat VM backend dengan antarmuka jaringan stack ganda, gunakan perintah berikut.

gcloud compute instances create VM_NAME \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-traffic \
    --network-interface=network=lb-network,subnet=SUBNET,stack-type=IPV4_IPV6,ipv6-network-tier=PREMIUM \
    --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 dengan endpoint GCE_VM_IP

Untuk contoh load balancing ini, Anda akan membuat dua NEG zona dengan GCE_VM_IP endpoint.

  • NEG zona neg-us di zona us-west1-a. NEG zona terdiri dari dua endpoint jaringan:
    • Lampirkan nic0 dari vm-us-1 dan vm-us-2 ke NEG zona neg-us
  • NEG zona neg-eu di europe-west2-a. NEG zona terdiri dari dua endpoint jaringan:
    • Lampirkan nic0 dari vm-eu-1 dan vm-eu-2 ke NEG zona neg-eu

Saat membuat NEG zonal baru dengan endpoint GCE_VM_IP, Anda harus secara eksplisit mengaitkan NEG dengan subnet VPC sebelum dapat menambahkan endpoint ke NEG. Load balancer mengirimkan paket ke antarmuka jaringan yang berada di subnet VPC yang terkait dengan NEG. Dalam contoh ini, endpoint NEG zonal akan mengarah ke nic0 VM.

gcloud

  1. Buat NEG zona GCE_VM_IP bernama neg-us di zona us-west1-a.

    gcloud compute network-endpoint-groups create neg-us \
        --network-endpoint-type=gce-vm-ip \
        --zone=us-west1-a \
        --network=lb-network \
        --subnet=lb-subnet-us
    
  2. Tambahkan endpoint ke NEG zona neg-us.

    gcloud compute network-endpoint-groups update neg-us \
        --zone=us-west1-a \
        --add-endpoint='instance=vm-us-1' \
        --add-endpoint='instance=vm-us-2'
    
  3. Buat NEG zona GCE_VM_IP bernama neg-eu di zona europe-west2-a.

    gcloud compute network-endpoint-groups create neg-eu \
        --network-endpoint-type=gce-vm-ip \
        --zone=europe-west2-a \
        --network=lb-network \
        --subnet=lb-subnet-eu
    
  4. Tambahkan endpoint ke NEG zona neg-eu.

    gcloud compute network-endpoint-groups update neg-eu \
        --zone=europe-west2-a \
        --add-endpoint='instance=vm-eu-1' \
        --add-endpoint='instance=vm-eu-2'
    

Mencadangkan alamat IP eksternal global

Load Balancer Jaringan passthrough eksternal global memerlukan dua alamat IP eksternal global, satu dari setiap grup ketersediaan. Kemudian, kedua alamat IP ini dilampirkan ke aturan penerusan load balancer.

Untuk Load Balancer Jaringan passthrough eksternal global, alamat IP aturan penerusan sepenuhnya terpisah dari subnet VPC. Alamat IP tersebut termasuk dalam kumpulan alamat IP eksternal global milik Google atau awalan yang didelegasikan publik IPv4 eksternal global BYOIP dari grup ketersediaan yang berbeda dan tidak terkait dengan subnet VPC mana pun.

Saat Anda mengonfigurasi aturan penerusan IPv6, alamat IP aturan penerusan dialokasikan sebagai awalan /96.

gcloud

Untuk traffic IPv4:

  1. Cadangkan alamat IP eksternal global pertama bernama lb-ipv4-ag0 dalam grup ketersediaan 0.

    gcloud beta compute addresses create lb-ipv4-ag0 \
        --global \
        --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP0 \
        --ip-version=IPV4
    
  2. Cadangkan alamat IP eksternal global kedua lb-ipv4-ag1 dalam grup ketersediaan 1.

    gcloud beta compute addresses create lb-ipv4-ag1 \
        --global \
        --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP1 \
        --ip-version=IPV4
    

Untuk traffic IPv6:

  1. Cadangkan alamat IP eksternal global pertama bernama lb-ipv6-ag0 dalam grup ketersediaan 0.

    gcloud beta compute addresses create lb-ipv6-ag0 \
        --global \
        --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP0 \
        --ip-version=IPV6
    
  2. Cadangkan alamat IP eksternal global kedua lb-ipv6-ag1 dalam grup ketersediaan 1.

    gcloud beta compute addresses create lb-ipv6-ag1 \
        --global \
        --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP1 \
        --ip-version=IPV6
    

Mengonfigurasi load balancer

Penyiapan Load Balancer Jaringan passthrough eksternal global melibatkan pembuatan health check, layanan backend, dan aturan penerusan.

gcloud

  1. Buat health check TCP yang dikonfigurasi untuk menghasilkan pemeriksaan TCP:80

    gcloud compute health-checks create tcp hc-tcp-80 \
      --global \
      --port=80
    
  2. Buat layanan backend global dengan skema load balancing EXTERNAL_PASSTHROUGH.

    gcloud beta compute backend-services create lb-backend-service \
      --load-balancing-scheme=EXTERNAL_PASSTHROUGH \
      --health-checks=hc-tcp-80 \
      --global
    
  3. Tambahkan NEG zona sebagai backend ke layanan backend.

    Tambahkan NEG zona di zona us-west1-a ke layanan backend.

    gcloud beta compute backend-services add-backend lb-backend-service \
        --network-endpoint-group=neg-us \
        --network-endpoint-group-zone=us-west1-a \
        --balancing-mode=RATE \
        --max-rate-per-endpoint=100000 \
        --global
    

    Tambahkan NEG zona di zona europe-west2-a ke layanan backend.

    gcloud beta compute backend-services add-backend lb-backend-service \
        --network-endpoint-group=neg-eu \
        --network-endpoint-group-zone=europe-west2-a \
        --balancing-mode=RATE \
        --max-rate-per-endpoint=100000 \
        --global
    
  4. Buat aturan penerusan global untuk menayangkan traffic TCP:80. Anda harus membuat dua aturan penerusan untuk menangani traffic IPv4 dan IPv6.

    Pastikan versi IP aturan penerusan Anda cocok dengan jenis stack antarmuka jaringan VM backend Anda.

    Aturan penerusan mereferensikan alamat IP dari setiap grup ketersediaan.

    Untuk traffic IPv4:

    gcloud beta compute forwarding-rules create lb-forwarding-rule-ipv4 \
      --load-balancing-scheme=EXTERNAL_PASSTHROUGH \
      --ip-protocol=TCP \
      --ports=80 \
      --backend-service=lb-backend-service \
      --global \
      --ip-addresses=lb-ipv4-ag0,lb-ipv4-ag1
    

    Untuk traffic IPv6:

    gcloud beta compute forwarding-rules create lb-forwarding-rule-ipv6 \
      --load-balancing-scheme=EXTERNAL_PASSTHROUGH \
      --ip-protocol=TCP \
      --ports=80 \
      --backend-service=lb-backend-service \
      --global \
      --ip-addresses=lb-ipv6-ag0,lb-ipv6-ag1
    

Menguji load balancer

  1. Dapatkan alamat IP yang dicadangkan yang dilampirkan ke aturan penerusan.

      gcloud beta compute forwarding-rules describe lb-forwarding-rule-ipv4 \
          --global
    

    Tindakan ini akan menampilkan dua alamat IP, satu untuk setiap grup ketersediaan. Alamat IP ini disebut sebagai IP_ADDRESS_AVAILABILITY_GROUP_0 dan IP_ADDRESS_AVAILABILITY_GROUP_1.

  2. Kirim traffic ke salah satu alamat IP.

      curl http://IP_ADDRESS_AVAILABILITY_GROUP_0
    
      curl http://IP_ADDRESS_AVAILABILITY_GROUP_1
    

Anda akan melihat respons dari VM backend di berbagai region, bergantung pada lokasi dan kondisi backend Anda.

Periksa tabel pemilihan rute lokal untuk alamat IP load balancer

Tabel perutean lokal VM backend berisi alamat IP Load Balancer Jaringan passthrough eksternal global.

Untuk memeriksa rute lokal di VM backend, hubungkan ke VM backend menggunakan SSH dan jalankan perintah berikut:

  ip route list table local

Outputnya adalah sebagai berikut:

local 10.1.2.5 dev ens4 proto kernel scope host src 10.1.2.5
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
local 136.124.69.214 dev ens4 proto 66 scope host
local 136.124.83.205 dev ens4 proto 66 scope host

Dalam contoh sebelumnya, 136.124.69.214 dan 136.124.83.205 adalah alamat IP yang ditetapkan ke aturan penerusan load balancer. Entri baris local 136.124.69.214 dev ens4 proto 66 scope host dan local 136.124.83.205 dev ens4 proto 66 scope host di tabel perutean lokal VM memungkinkan paket yang ditujukan ke alamat IP load balancer diterima oleh backend. Cloud de Confiance Lingkungan tamu bertanggung jawab untuk menambahkan entri ini.

Entri tabel perutean lokal di VM backend menerima paket untuk pengiriman host lokal, tempat stack jaringan mengirimkannya ke aplikasi yang memproses. Paket respons dari aplikasi kemudian dikirim langsung ke klien.

Perhatikan bahwa alamat IP load balancer sebenarnya tidak dikonfigurasi pada antarmuka jaringan VM. Untuk memverifikasi hal ini, jalankan perintah berikut:

  ip addr list

Outputnya adalah sebagai berikut. Alamat IP (136.124.69.214 dan 136.124.83.205) muncul di tabel perutean lokal, tetapi tidak dikonfigurasi di antarmuka jaringan.

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute
       valid_lft forever preferred_lft forever
2: ens4:  mtu 1460 qdisc fq_codel state UP group default qlen 1000
    link/ether 42:01:0a:01:02:0d brd ff:ff:ff:ff:ff:ff
    altname enp0s4
    inet 10.1.2.13/32 metric 100 scope global dynamic ens4
       valid_lft 84283sec preferred_lft 84283sec
    inet6 fe80::4001:aff:fe01:20d/64 scope link
       valid_lft forever preferred_lft forever

Langkah berikutnya