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:
-
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 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-1danvm-us-2di zonaus-west1-avm-eu-1danvm-eu-2di zonaeurope-west2-a
Dua NEG zona dengan
GCE_VM_IPendpoint:- Lampirkan
nic0darivm-us-1danvm-us-2ke NEG di zonaus-west1-a - Lampirkan
nic0darivm-eu-1danvm-eu-2ke NEG di zonaeurope-west2-a
- Lampirkan
Satu Load Balancer Jaringan passthrough eksternal global untuk menyeimbangkan traffic
TCP:80di antara empat endpoint jaringan.
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
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 endpoint jaringan 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-west1Buat subnet bernama
lb-subnet-euuntuk endpoint jaringan di regioneurope-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-west2Untuk 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:
- 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 firewall-allow-traffic-ipv4 \ --network=lb-network \ --target-tags=allow-traffic \ --allow=tcp:80 \ --source-ranges=0.0.0.0/0Untuk 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-usdi zonaus-west1-a. NEG zona terdiri dari dua endpoint jaringan:- Lampirkan
nic0darivm-us-1danvm-us-2ke NEG zonaneg-us
- Lampirkan
- NEG zona
neg-eudieurope-west2-a. NEG zona terdiri dari dua endpoint jaringan:- Lampirkan
nic0darivm-eu-1danvm-eu-2ke NEG zonaneg-eu
- Lampirkan
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
Buat NEG zona
GCE_VM_IPbernamaneg-usdi zonaus-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-usTambahkan 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'Buat NEG zona
GCE_VM_IPbernamaneg-eudi zonaeurope-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-euTambahkan 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:
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
Penyiapan Load Balancer Jaringan passthrough eksternal global melibatkan pembuatan health check, layanan backend, dan aturan penerusan.
gcloud
Buat health check TCP yang dikonfigurasi untuk menghasilkan pemeriksaan
TCP:80gcloud 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 \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --health-checks=hc-tcp-80 \ --global
Tambahkan NEG zona sebagai backend ke layanan backend.
Tambahkan NEG zona di zona
us-west1-ake 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 \ --globalTambahkan NEG zona di zona
europe-west2-ake 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 \ --globalBuat 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
Dapatkan alamat IP yang dicadangkan yang dilampirkan ke aturan penerusan.
gcloud beta compute forwarding-rules describe lb-forwarding-rule-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_1.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