Dokumen ini menunjukkan cara membuat Load Balancer Jaringan passthrough eksternal global untuk menyeimbangkan traffic TCP, UDP, ESP, GRE, ICMP, dan ICMPv6.
Anda dapat menggunakan konfigurasi tersebut untuk:
Menyeimbangkan beban traffic yang menggunakan protokol IP selain TCP atau UDP.
Menayangkan beberapa protokol dengan satu load balancer. Misalnya, layanan IPsec biasanya menangani beberapa kombinasi traffic IKE dan NAT-T berbasis UDP dan ESP.
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:
-
Buat jaringan VPC, subnet, dan komponen load balancing:
Peran Compute Network Admin (
roles/compute.networkAdmin) -
Membuat aturan firewall:
Peran Compute Security Admin (
roles/compute.securityAdmin) -
Membuat instance VM:
Peran Compute Instance Admin (
roles/compute.instanceAdmin)
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 dua Load Balancer Jaringan passthrough eksternal global untuk pasangan alamat IP yang sama, yang masing-masing melayani serangkaian protokol dan port IP yang berbeda. Untuk memahami cara kerja Load Balancer Jaringan passthrough eksternal global, lihat bagian Arsitektur dalam panduan ringkasan.
Load balancer
TCPdi port 80Aturan penerusan load balancer ini dikonfigurasi untuk merekam hanya traffic
TCPyang tiba secara khusus di port80.- Saat paket tiba di alamat IP aturan penerusan,Google Cloud pertama-tama periksa
apakah paket tersebut adalah paket
TCPdan apakah port tujuannya persis80. - Jika kondisi tersebut terpenuhi, paket ini akan diambil oleh aturan penerusan
TCPtertentu ini dan dirutekan ke backend berdasarkan layanan backend yang dirujuk.
- Saat paket tiba di alamat IP aturan penerusan,Google Cloud pertama-tama periksa
apakah paket tersebut adalah paket
Load balancer
L3_DEFAULTuntuk trafficTCP:8080danUDPAturan penerusan load balancer ini menggunakan protokol
L3_DEFAULTdan dikonfigurasi untuk menerima traffic di semua port. Dalam penyiapan ini, aturan ini bertindak sebagai aturan catch-all yang menangani traffic yang tidak ditangani oleh aturan pengalihan pertama (seperti UDP, ICMP, dan semua traffic TCP selain port 80).- Jika paket tiba di alamat IP aturan penerusan yang tidak cocok dengan
traffic TCP tertentu yang tiba di aturan port 80 (misalnya, jika berupa traffic
UDP, ping ICMP, atau traffic TCP di port 8080 atau 443), paket ini
akan diambil oleh aturan penerusan
L3_DEFAULT. - Tambahkan aturan firewall untuk mengizinkan hanya traffic
TCP:8080danUDPuntuk menjangkau instance VM backend. Jadi, meskipun aturan penerusanL3_DEFAULTmencakup semua traffic protokol IP di semua port, aturan firewall membatasi traffic yang di-load balance ke trafficTCP:8080danUDP. - Paket kemudian dirutekan ke backend berdasarkan layanan backend yang dirujuk.
Google Cloud memrioritaskan aturan
TCPyang lebih spesifik di port80sebelum mengizinkan traffic yang tersisa mengalir melalui aturanL3_DEFAULTdi alamat IP yang sama.- Jika paket tiba di alamat IP aturan penerusan yang tidak cocok dengan
traffic TCP tertentu yang tiba di aturan port 80 (misalnya, jika berupa traffic
UDP, ping ICMP, atau traffic TCP di port 8080 atau 443), paket ini
akan diambil oleh aturan penerusan
Menyiapkan jaringan dan subnet
Contoh ini menggunakan jaringan VPC mode kustom bernama lb-network
dengan subnet di dua region yang berbeda.
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 |
Backend yang digunakan dalam contoh ini berada di region dan subnet berikut. Meskipun Anda dapat memilih rentang alamat IPv4 yang dikonfigurasi di subnet, Google Cloud secara otomatis menetapkan rentang alamat IPv6 /64 ke seluruh subnet.
Region:
us-west1- Subnet:
lb-subnet-us, dengan rentang alamat IPv4 utama 10.1.2.0/24.
- Subnet:
Region:
europe-west2- Subnet:
lb-subnet-eu, dengan rentang alamat IPv4 utama 10.1.3.0/24.
- Subnet:
gcloud
Buat jaringan VPC. Dalam contoh ini, jaringan VPC diberi nama
lb-network.gcloud compute networks create lb-network --subnet-mode=custom
Dalam jaringan VPC (
lb-network), buat subnet di dua region.Buat subnet bernama
lb-subnet-usuntuk backend di regionus-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-west1Untuk 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-west1Untuk membuat subnet khusus IPv6, gunakan perintah berikut:
gcloud compute networks subnets create lb-subnet-us \ --stack-type=IPV6_ONLY \ --ipv6-access-type=EXTERNAL \ --network=lb-network \ --region=us-west1Buat subnet bernama
lb-subnet-euuntuk backend di regioneurope-west2.Untuk membuat subnet khusus IPv4, gunakan perintah berikut:
gcloud compute networks subnets create lb-subnet-eu \ --stack-type=IPV4_ONLY \ --network=lb-network \ --range=10.1.3.0/24 \ --region=europe-west2Untuk membuat subnet stack ganda, gunakan perintah berikut:
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-west2Untuk membuat subnet khusus IPv6, gunakan perintah berikut:
gcloud compute networks subnets create lb-subnet-eu \ --stack-type=IPV6_ONLY \ --ipv6-access-type=EXTERNAL \ --network=lb-network \ --range=10.1.3.0/24 \ --region=europe-west2
Mencadangkan alamat IP eksternal global
Cadangkan dua alamat IP eksternal global, satu dari setiap grup ketersediaan. Seperti yang ditunjukkan dalam Ringkasan penyiapan, dua Load Balancer Jaringan passthrough eksternal global berbagi pasangan alamat IP yang sama.
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:
Cadangkan alamat IP eksternal global pertama bernama
lb-ipv4-ag0dalam grup ketersediaan 0.gcloud beta compute addresses create lb-ipv4-ag0 \ --global \ --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP0 \ --ip-version=IPV4Cadangkan alamat IP eksternal global kedua
lb-ipv4-ag1dalam grup ketersediaan 1.gcloud beta compute addresses create lb-ipv4-ag1 \ --global \ --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP1 \ --ip-version=IPV4
Untuk traffic IPv6:
Cadangkan alamat IP eksternal global pertama bernama
lb-ipv6-ag0dalam grup ketersediaan 0.gcloud beta compute addresses create lb-ipv6-ag0 \ --global \ --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP0 \ --ip-version=IPV6Cadangkan alamat IP eksternal global kedua
lb-ipv6-ag1dalam grup ketersediaan 1.gcloud beta compute addresses create lb-ipv6-ag1 \ --global \ --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP1 \ --ip-version=IPV6
Mengonfigurasi load balancer untuk traffic TCP di port 80
Ikuti langkah-langkah di bagian ini untuk mengonfigurasi Load Balancer Jaringan passthrough eksternal global yang menangkap traffic TCP di port 80.
Buat aturan firewall untuk hanya mengizinkan traffic TCP:80
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:
- Rentang IP health check Google, dan
- protokol dan port IP yang dikonfigurasi dalam health check Anda
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/0untuk traffic IPv4 dan::/0untuk 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 allow-traffic-tcp-80-ipv4 \ --network=lb-network \ --target-tags=allow-traffic-tcp-80 \ --allow=tcp:80 \ --source-ranges=0.0.0.0/0Untuk mengizinkan semua traffic IPv6, jalankan perintah berikut:
gcloud compute firewall-rules create allow-traffic-tcp-80-ipv6 \ --network=lb-network \ --target-tags=allow-traffic-tcp-80 \ --allow=tcp:80 \ --source-ranges=::/0
Membuat instance VM backend
Untuk contoh load balancing ini, buat grup instance terkelola di zona
us-west1-a dan europe-west2-a. Grup instance terkelola terdiri dari instance VM yang menghosting server backend load balancer. Untuk
tujuan demonstrasi, backend menjalankan server Apache di port 80.
Sebagai respons terhadap permintaan klien, backend menyediakan nama host-nya sendiri.
Grup instance mereferensikan template instance, yang digunakan untuk membuat VM backend.
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 |
Membuat template instance
Dalam contoh ini, Anda membuat template instance regional
di region us-west1 dan europe-west2.
gcloud
Buat template instance di region
us-west1.Untuk membuat VM backend dengan antarmuka jaringan khusus IPv4, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-us-tcp-80 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet-us \ --stack-type=IPV4_ONLY \ --tags=allow-traffic-tcp-80 \ --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'Untuk membuat VM backend dengan antarmuka jaringan stack ganda, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-us-tcp-80 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet-us \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV4_IPV6 \ --tags=allow-traffic-tcp-80 \ --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'Untuk membuat VM backend dengan antarmuka jaringan khusus IPv6, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-us-tcp-80 \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet-us \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV6_ONLY \ --tags=allow-traffic-tcp-80 \ --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'Buat template instance di region
europe-west2.Untuk membuat VM backend dengan antarmuka jaringan khusus IPv4, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-eu-tcp-80 \ --region=europe-west2 \ --network=lb-network \ --subnet=lb-subnet-eu \ --stack-type=IPV4_ONLY \ --tags=allow-traffic-tcp-80 \ --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'Untuk membuat VM backend dengan antarmuka jaringan stack ganda, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-eu-tcp-80 \ --region=europe-west2 \ --network=lb-network \ --subnet=lb-subnet-eu \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV4_IPV6 \ --tags=allow-traffic-tcp-80 \ --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'Untuk membuat VM backend dengan antarmuka jaringan khusus IPv6, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-eu-tcp-80 \ --region=europe-west2 \ --network=lb-network \ --subnet=lb-subnet-eu \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV6_ONLY \ --tags=allow-traffic-tcp-80 \ --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'
Membuat grup instance terkelola menurut zona
Dalam contoh ini, Anda akan membuat dua grup instance terkelola zonal—satu di zona
us-west1-a dan yang lainnya di zona europe-west2-a.
gcloud
Buat grup instance terkelola di zona
us-west1-a.gcloud compute instance-groups managed create ig-us-tcp-80 \ --template=ig-template-us-tcp-80 \ --size=2 \ --zone=us-west1-a
Buat grup instance terkelola di zona
europe-west2-a.gcloud compute instance-groups managed create ig-eu-tcp-80 \ --template=ig-template-eu-tcp-80 \ --size=2 \ --zone=europe-west2-a
Membuat komponen Cloud Load Balancing
Untuk membuat komponen Cloud Load Balancing dari Load Balancer Jaringan passthrough eksternal global, lakukan hal berikut.
gcloud
Buat health check TCP yang dikonfigurasi untuk menghasilkan pemeriksaan
TCP:80.gcloud compute health-checks create tcp hc-tcp-80 \ --global \ --port=80
Buat layanan backend global dengan skema load balancing
EXTERNAL_PASSTHROUGH.gcloud beta compute backend-services create lb-backend-service-tcp-80 \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --health-checks=hc-tcp-80 \ --global
Tambahkan grup instance sebagai backend ke layanan backend.
Tambahkan grup instance di zona
us-west1-ake layanan backend.gcloud beta compute backend-services add-backend lb-backend-service-tcp-80 \ --instance-group=ig-us-tcp-80 \ --instance-group-zone=us-west1-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.7 \ --globalTambahkan grup instance di zona
europe-west2-ake layanan backend.gcloud beta compute backend-services add-backend lb-backend-service-tcp-80 \ --instance-group=ig-eu-tcp-80 \ --instance-group-zone=europe-west2-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.7 \ --globalBuat aturan penerusan global untuk menayangkan traffic
TCP:80.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-tcp-80-ipv4 \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --ip-protocol=TCP \ --ports=80 \ --backend-service=lb-backend-service-tcp-80 \ --global \ --ip-addresses=lb-ipv4-ag0,lb-ipv4-ag1
Untuk traffic IPv6:
gcloud beta compute forwarding-rules create lb-forwarding-rule-tcp-80-ipv6 \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --ip-protocol=TCP \ --ports=80 \ --backend-service=lb-backend-service-tcp-80 \ --global \ --ip-addresses=lb-ipv6-ag0,lb-ipv6-ag1
Mengonfigurasi load balancer untuk traffic TCP:8080 dan UDP
Ikuti langkah-langkah di bagian ini untuk mengonfigurasi Load Balancer Jaringan passthrough eksternal global
untuk melayani traffic TCP:8080 dan UDP.
Buat aturan firewall yang hanya mengizinkan traffic TCP:8080 dan UDP
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:
- Rentang IP health check Google, dan
- protokol dan port IP yang dikonfigurasi dalam health check Anda
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/0untuk traffic IPv4 dan::/0untuk 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:8080 dan UDP
dari semua rentang sumber untuk mencapai instance VM backend Anda.
Protokol ini digunakan untuk load balancing, sementara port TCP 8080 juga
digunakan untuk health check.
Untuk mengizinkan traffic IPv4 menjangkau backend di grup instance
ig-us-l3-defaultdanig-eu-l3-default, buat aturan firewall berikut.gcloud compute firewall-rules create allow-traffic-l3-default-ipv4 \ --network=lb-network \ --target-tags=allow-traffic-l3-default \ --allow=tcp:8080,udp \ --source-ranges=0.0.0.0/0Untuk mengizinkan traffic IPv6 menjangkau backend di grup instance
ig-us-l3-defaultdanig-eu-l3-default, buat aturan firewall berikut.gcloud compute firewall-rules create allow-traffic-l3-default-ipv6 \ --network=lb-network \ --target-tags=allow-traffic-l3-default \ --allow=tcp:8080,udp \ --source-ranges=::/0
Membuat instance VM backend
Untuk contoh load balancing ini, buat grup instance terkelola di zona
us-west1-a dan europe-west2-a. Grup instance terkelola terdiri dari instance VM yang menghosting server backend load balancer. Untuk tujuan demonstrasi, backend akan menyajikan nama host-nya sendiri. Skrip startup juga mengonfigurasi server Apache untuk memproses port 8080, bukan port 80.
Grup instance mereferensikan template instance, yang digunakan untuk membuat VM backend.
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 |
Membuat template instance
Dalam contoh ini, Anda membuat template instance regional
di region us-west1 dan europe-west2.
gcloud
Buat template instance di region
us-west1.Untuk membuat VM backend dengan antarmuka jaringan khusus IPv4, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-us-l3-default \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet-us \ --stack-type=IPV4_ONLY \ --tags=allow-traffic-l3-default \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'Untuk membuat VM backend dengan antarmuka jaringan stack ganda, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-us-l3-default \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet-us \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV4_IPV6 \ --tags=allow-traffic-l3-default \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'Untuk membuat VM backend dengan antarmuka jaringan khusus IPv6, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-us-l3-default \ --region=us-west1 \ --network=lb-network \ --subnet=lb-subnet-us \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV6_ONLY \ --tags=allow-traffic-l3-default \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'Buat template instance di region
europe-west2.Untuk membuat VM backend dengan antarmuka jaringan khusus IPv4, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-eu-l3-default \ --region=europe-west2 \ --network=lb-network \ --subnet=lb-subnet-eu \ --stack-type=IPV4_ONLY \ --tags=allow-traffic-l3-default \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'Untuk membuat VM backend dengan antarmuka jaringan stack ganda, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-eu-l3-default \ --region=europe-west2 \ --network=lb-network \ --subnet=lb-subnet-eu \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV4_IPV6 \ --tags=allow-traffic-l3-default \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'Untuk membuat VM backend dengan antarmuka jaringan khusus IPv6, gunakan perintah berikut.
gcloud compute instance-templates create ig-template-eu-l3-default \ --region=europe-west2 \ --network=lb-network \ --subnet=lb-subnet-eu \ --ipv6-network-tier=PREMIUM \ --stack-type=IPV6_ONLY \ --tags=allow-traffic-l3-default \ --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 sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf systemctl restart apache2'
Membuat grup instance terkelola menurut zona
Dalam contoh ini, Anda akan membuat dua grup instance terkelola zonal—satu di zona
us-west1-a dan yang lainnya di zona europe-west2-a.
gcloud
Buat grup instance terkelola di zona
us-west1-a.gcloud compute instance-groups managed create ig-us-l3-default \ --template=ig-template-us-l3-default \ --size=2 \ --zone=us-west1-a
Buat grup instance terkelola di zona
europe-west2-a.gcloud compute instance-groups managed create ig-eu-l3-default \ --template=ig-template-eu-l3-default \ --size=2 \ --zone=europe-west2-a
Membuat komponen Cloud Load Balancing
Untuk membuat komponen Cloud Load Balancing dari Load Balancer Jaringan passthrough eksternal global, lakukan hal berikut.
gcloud
Buat health check TCP yang dikonfigurasi untuk menghasilkan pemeriksaan
TCP:8080.gcloud compute health-checks create tcp hc-tcp-8080 \ --global \ --port=8080
Buat layanan backend global dengan skema load balancing
EXTERNAL_PASSTHROUGH.gcloud beta compute backend-services create lb-backend-service-l3-default \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --health-checks=hc-tcp-8080 \ --global
Tambahkan grup instance sebagai backend ke layanan backend.
Tambahkan grup instance di zona
us-west1-ake layanan backend.gcloud beta compute backend-services add-backend lb-backend-service-l3-default \ --instance-group=ig-us-l3-default \ --instance-group-zone=us-west1-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.7 \ --globalTambahkan grup instance di zona
europe-west2-ake layanan backend.gcloud beta compute backend-services add-backend lb-backend-service-l3-default \ --instance-group=ig-eu-l3-default \ --instance-group-zone=europe-west2-a \ --balancing-mode=UTILIZATION \ --max-utilization=0.7 \ --globalBuat aturan penerusan global dengan kolom
ip-protocolyang ditetapkan keL3_DEFAULTuntuk menangani semua traffic protokol IP (traffic TCP selain port 80, UDP, ESP, dan ICMP). 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-l3-default-ipv4 \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --ip-protocol=L3_DEFAULT \ --ports=all \ --backend-service=lb-backend-service-l3-default \ --global \ --ip-addresses=lb-ipv4-ag0,lb-ipv4-ag1
Untuk traffic IPv6:
gcloud beta compute forwarding-rules create lb-forwarding-rule-l3-default-ipv6 \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --ip-protocol=L3_DEFAULT \ --ports=all \ --backend-service=lb-backend-service-l3-default \ --global \ --ip-addresses=lb-ipv6-ag0,lb-ipv6-ag1
Menguji load balancer
Setelah layanan load balancing dikonfigurasi, Anda dapat mulai mengirimkan traffic ke alamat IP eksternal load balancer dan melihat traffic didistribusikan ke instance backend.
Dapatkan alamat IP eksternal load balancer
Dapatkan alamat IP yang dicadangkan yang dilampirkan ke aturan penerusan. Aturan penerusan untuk kedua load balancer menggunakan pasangan alamat IP yang sama, sehingga Anda dapat menggunakan
lb-forwarding-rule-tcp-80-ipv4ataulb-forwarding-rule-l3-default-ipv4untuk melihat alamat IP eksternal.gcloud compute forwarding-rules describe lb-forwarding-rule-tcp-80-ipv4 \ --globalTindakan ini akan menampilkan dua alamat IP, satu untuk setiap grup ketersediaan. Alamat IP ini disebut sebagai
IP_ADDRESS_AVAILABILITY_GROUP_0danIP_ADDRESS_AVAILABILITY_GROUP_1dalam langkah-langkah berikut.
Mengirim traffic ke load balancer
Prosedur ini mengirimkan traffic eksternal ke load balancer. Jalankan pengujian berikut untuk memeriksa apakah traffic TCP di port 80 di-load balance oleh grup instance ig-us-tcp-80 atau ig-eu-tcp-80, sementara semua traffic lainnya (TCP:8080 dan UDP) di-load balance oleh grup instance ig-us-l3-default atau ig-eu-l3-default.
Memverifikasi perilaku dengan permintaan TCP di port 80
Buat permintaan web (melalui TCP di port 80) ke load balancer menggunakan
curluntuk menghubungi alamat IP-nya.Dari klien dengan konektivitas IPv4, jalankan perintah berikut:
while true; do curl -m1 IP_ADDRESS_AVAILABILITY_GROUP_0; done
Perhatikan teks yang ditampilkan oleh perintah
curl. Teks menampilkan nama VM backend yang menghasilkan respons, misalnya,Page served from: VM_NAME. Respons hanya berasal dari instance dalam grup instanceig-us-tcp-80atauig-eu-tcp-80.Hal ini menunjukkan bahwa traffic TCP yang dikirim ke alamat IP load balancer di port 80 ditangani oleh aturan penerusan
TCP.
Memverifikasi perilaku dengan permintaan TCP di port 8080
Buat permintaan web (melalui TCP di port 8080) ke load balancer menggunakan curl
untuk menghubungi alamat IP-nya.
Dari klien dengan konektivitas IPv4, jalankan perintah berikut:
while true; do curl -m1 IP_ADDRESS_AVAILABILITY_GROUP_0:8080; done
Perhatikan teks yang ditampilkan oleh perintah
curl. Respons hanya berasal dari instance dalam grup instanceig-us-l3-defaultatauig-eu-l3-default.Hal ini menunjukkan bahwa traffic TCP yang dikirim ke alamat IP load balancer di port 8080 ditangani oleh aturan penerusan
L3_DEFAULT.
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. Google Cloud 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