Panduan ini menunjukkan cara men-deploy Load Balancer Jaringan passthrough internal dengan backend grup endpoint jaringan (NEG) zonal. NEG zonal adalah resource zonal yang mewakili kumpulan alamat IP atau kombinasi alamat IP/port untuk resource Google Cloud dalam satu subnet. NEG memungkinkan Anda membuat pengelompokan alamat IP atau kombinasi alamat IP/port yang logis yang mewakili layanan software, bukan seluruh VM.
Sebelum mengikuti panduan ini, pahami hal-hal berikut:
Load Balancer Jaringan passthrough internal hanya mendukung NEG zonal dengan endpoint
GCE_VM_IP
.
Izin
Untuk mengikuti panduan ini, Anda perlu membuat instance dan mengubah jaringan dalam project. Anda harus menjadi pemilik atau editor project, atau Anda harus memiliki semua peran IAM Compute Engine berikut:
Tugas | Peran yang Diperlukan |
---|---|
Membuat komponen jaringan, subnet, dan load balancer | Admin Jaringan |
Menambahkan dan menghapus aturan firewall | Security Admin |
Membuat instance | Compute Instance Admin |
Untuk informasi selengkapnya, lihat panduan berikut:
Ringkasan penyiapan
Panduan ini menunjukkan cara mengonfigurasi dan menguji Load Balancer Jaringan passthrough internal dengan
backend NEG zonal GCE_VM_IP
. Langkah-langkah di bagian ini menjelaskan cara mengonfigurasi hal berikut:
- Contoh jaringan VPC bernama
lb-network
dengan subnet kustom - Aturan firewall yang mengizinkan koneksi masuk ke VM backend
- Empat VM:
- VM
vm-a1
danvm-a2
di zonaus-west1-a
- VM
vm-c1
danvm-c2
di zonaus-west1-c
- VM
- Dua NEG zonal backend,
neg-a
di zonaus-west1-a
, danneg-c
di zonaus-west1-c
. Setiap NEG akan memiliki endpoint berikut:neg-a
berisi dua endpoint ini:- Alamat IP internal VM
vm-a1
- Alamat IP internal VM
vm-a2
- Alamat IP internal VM
neg-c
berisi dua endpoint ini:- Alamat IP internal VM
vm-c1
- Alamat IP internal VM
vm-c2
- Alamat IP internal VM
- Satu VM klien (
vm-client
) dius-west1-a
untuk menguji koneksi - Komponen Load Balancer Jaringan passthrough internal berikut:
- Layanan backend internal di region
us-west1
untuk mengelola distribusi koneksi ke dua NEG zona - Aturan penerusan internal dan alamat IP internal untuk frontend load balancer
- Layanan backend internal di region
Arsitektur untuk contoh ini terlihat seperti ini:
Mengonfigurasi jaringan, region, dan subnet
Contoh Load Balancer Jaringan passthrough internal yang dijelaskan di halaman ini dibuat di
jaringan VPC mode kustom bernama
lb-network
.
VM backend, NEG zonal, dan komponen load balancer contoh ini berada di region dan subnet ini:
- Region:
us-west1
- Subnet:
lb-subnet
, dengan rentang alamat IP utama10.1.2.0/24
Untuk membuat contoh jaringan dan subnet, ikuti langkah-langkah berikut.
Konsol
- Buka halaman jaringan VPC di Konsol Google Cloud.
Buka halaman jaringan VPC - Klik Create VPC network.
- Masukkan Nama
lb-network
. - Di bagian Subnet:
- Setel Subnet creation mode ke Custom.
- Di bagian New subnet, masukkan informasi berikut:
- Nama:
lb-subnet
- Region:
us-west1
- Rentang alamat IP:
10.1.2.0/24
- Klik Done.
- Nama:
- Klik Create.
gcloud
Buat jaringan VPC kustom:
gcloud compute networks create lb-network --subnet-mode=custom
- Dalam jaringan
lb-network
, buat subnet untuk VM backend di regionus-west1
:
gcloud compute networks subnets create lb-subnet \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1
- Dalam jaringan
Mengonfigurasi aturan firewall
Contoh ini menggunakan aturan firewall berikut:
fw-allow-lb-access
: Aturan ingress, yang berlaku untuk semua target di jaringan VPC, yang mengizinkan traffic dari sumber dalam rentang10.1.2.0/24
. Aturan ini mengizinkan traffic masuk dari klien mana pun yang terletak dilb-subnet
.fw-allow-ssh
: Aturan ingress, yang berlaku untuk instance yang di-load balanced, yang memungkinkan konektivitas SSH yang masuk pada TCP port 22 dari alamat mana pun. Anda dapat memilih rentang IP sumber yang lebih ketat untuk aturan ini; misalnya, Anda dapat menentukan hanya rentang IP sistem tempat Anda akan memulai sesi SSH. Contoh ini menggunakan tag targetallow-ssh
untuk mengidentifikasi VM tempat tag tersebut harus diterapkan.
Tanpa aturan firewall ini, aturan tolak ingress default akan memblokir traffic masuk ke instance backend.
Konsol
- Pada konsol Google Cloud, buka halaman Kebijakan Firewall.
Buka Kebijakan firewall - Klik Create firewall rule dan masukkan informasi berikut untuk membuat aturan yang mengizinkan traffic subnet:
- Nama:
fw-allow-lb-access
- Jaringan:
lb-network
- Prioritas:
1000
- Direction of traffic: masuk
- Tindakan terhadap kecocokan: izinkan
- Targets: Semua instance dalam jaringan
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
10.1.2.0/24
- Protocols and ports: Allow all
- Nama:
- Klik Create.
- Klik Create firewall rule lagi untuk membuat aturan yang mengizinkan koneksi SSH yang masuk:
- Nama:
fw-allow-ssh
- Jaringan:
lb-network
- Prioritas:
1000
- Direction of traffic: masuk
- Tindakan terhadap kecocokan: izinkan
- Targets: Tag target yang ditentukan
- Tag target:
allow-ssh
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
0.0.0.0/0
- Protocols and ports: Pilih Specified protocols and ports, lalu
ketik:
tcp:22
- Nama:
- Klik Create.
- Klik Create firewall rule untuk ketiga kalinya guna membuat aturan yang mengizinkan
health check Google Cloud:
- Nama:
fw-allow-health-check
- Jaringan:
lb-network
- Prioritas:
1000
- Direction of traffic: masuk
- Tindakan terhadap kecocokan: izinkan
- Targets: Tag target yang ditentukan
- Tag target:
allow-health-check
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
130.211.0.0/22
dan35.191.0.0/16
- Protocols and ports: Allow all
- Nama:
- Klik Create.
gcloud
Buat aturan firewall
fw-allow-lb-access
untuk mengizinkan komunikasi dari dan dengan subnet:gcloud compute firewall-rules create fw-allow-lb-access \ --network=lb-network \ --action=allow \ --direction=ingress \ --source-ranges=10.1.2.0/24 \ --rules=tcp,udp,icmp
Buat aturan firewall
fw-allow-ssh
untuk mengizinkan konektivitas SSH ke VM dengan tag jaringanallow-ssh
. Saat Anda menghapussource-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
Buat aturan
fw-allow-health-check
untuk mengizinkan health check Google Cloud.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,udp,icmp
Membuat backend NEG
Untuk menunjukkan sifat regional Load Balancer Jaringan passthrough internal, contoh ini menggunakan dua backend NEG zonal, neg-a
dan neg-c
, di zona us-west1-a
dan us-
west1-c
. Traffic di-load balance di kedua NEG, dan di seluruh endpoint dalam setiap NEG.
Membuat VM
Untuk mendukung contoh ini, masing-masing dari empat VM menjalankan server web Apache yang memproses port TCP berikut: 80, 8008, 8080, 8088, 443, dan 8443.
Setiap VM diberi alamat IP internal di lb-subnet
dan alamat IP eksternal (publik) sementara. Anda dapat menghapus alamat IP eksternal
nanti.
Alamat IP eksternal tidak diperlukan untuk VM backend; namun, alamat IP tersebut berguna untuk contoh ini karena memungkinkan VM mendownload Apache dari internet, dan memungkinkan Anda terhubung menggunakan SSH. Secara default, Apache dikonfigurasi untuk mengikat ke alamat IP apa pun. Load Balancer Jaringan passthrough internal mengirimkan paket dengan mempertahankan IP tujuan.
Pastikan software server yang berjalan di VM Anda memproses alamat IP aturan penerusan internal load balancer.
Untuk memudahkan petunjuk, VM backend ini menjalankan Debian GNU Linux 10.
Konsol
Membuat VM
- Buka halaman VM instances di konsol Google Cloud.
Buka halaman instance VM - Ulangi langkah-langkah berikut untuk membuat empat VM, menggunakan kombinasi nama dan zona berikut.
- Nama:
vm-a1
, zona:us-west1-a
- Nama:
vm-a2
, zona:us-west1-a
- Nama:
vm-c1
, zona:us-west1-c
- Nama:
vm-c2
, zona:us-west1-c
- Nama:
- Klik Create instance.
- Tetapkan Name seperti yang ditunjukkan pada langkah 2.
- Untuk Region, pilih
us-west1
, dan pilih Zone seperti yang ditunjukkan pada langkah 2. - Di bagian Boot disk, pastikan Debian GNU/Linux 12 (bookworm) dipilih untuk opsi boot disk. Klik Pilih untuk mengubah gambar jika perlu.
Klik Advanced options, lalu buat perubahan berikut:
- Klik Networking dan tambahkan Network tags berikut:
allow-ssh
danallow-health-check
- Klik Edit
- Jaringan:
lb-network
- Subnet:
lb-subnet
- Primary internal IP: Ephemeral (otomatis)
- External IP: Sementara
di bagian
Network interfaces, lalu buat perubahan berikut, lalu klik
Done:
- Jaringan:
Klik Management. Di kolom Startup script, salin dan tempel konten skrip berikut. Isi skrip identik untuk empat VM:
#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed
- Klik Networking dan tambahkan Network tags berikut:
Klik Create.
gcloud
Buat empat VM dengan menjalankan perintah berikut empat kali, menggunakan empat kombinasi ini untuk [VM-NAME]
dan [ZONE]
. Konten skrip
sama untuk keempat VM.
[VM-NAME]
darivm-a1
dan[ZONE]
darius-west1-a
[VM-NAME]
darivm-a2
dan[ZONE]
darius-west1-a
[VM-NAME]
darivm-c1
dan[ZONE]
darius-west1-c
[VM-NAME]
darivm-c2
dan[ZONE]
darius-west1-c
gcloud compute instances create VM-NAME \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-health-check \ --subnet=lb-subnet \ --metadata=startup-script='#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" 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 prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed'
Membuat NEG zona GCE_VM_IP
NEG (neg-a
dan neg-c
) harus dibuat di zona yang sama dengan VM
yang dibuat pada langkah sebelumnya.
Konsol
Untuk membuat grup endpoint jaringan zonal:
- Buka halaman Network Endpoint Groups di konsol Google Cloud.
Buka halaman Network Endpoint Groups - Klik Create network endpoint group.
- Masukkan Nama untuk NEG zona:
neg-a
. - Pilih Network endpoint group type: Network endpoint group (Zonal).
- Pilih Network: lb-network
- Pilih Subnet: lb-subnet
- Pilih Zona: us-west1-a
- Klik Create.
- Ulangi langkah-langkah ini untuk membuat NEG zona kedua yang disebut
neg-c
, di zona us-west1-c.
Tambahkan endpoint ke NEG zona:
- Buka halaman Network Endpoint Groups di konsol Google Cloud.
Buka Network endpoint groups - Klik Name grup endpoint jaringan pertama yang dibuat di langkah sebelumnya (neg-a). Anda akan melihat halaman Detail grup endpoint jaringan.
Di bagian Endpoint jaringan dalam grup ini, klik Tambahkan endpoint jaringan. Anda akan melihat halaman Tambahkan endpoint jaringan.
- Klik VM instance, lalu pilih vm-a1 untuk menambahkan alamat IP internalnya sebagai endpoint jaringan.
- Klik Create.
- Klik lagi Add network endpoint dan di bagian VM instance, pilih vm-a2.
- Klik Create.
Klik Name grup endpoint jaringan kedua yang dibuat di langkah sebelumnya (neg-c). Anda akan melihat halaman Detail grup endpoint jaringan.
Di bagian Endpoint jaringan dalam grup ini, klik Tambahkan endpoint jaringan. Anda akan melihat halaman Tambahkan endpoint jaringan.
- Klik VM instance dan pilih vm-c1 untuk menambahkan alamat IP internalnya sebagai endpoint jaringan.
- Klik Create.
- Klik lagi Add network endpoint dan di bagian VM instance, pilih vm-c2.
- Klik Create.
gcloud
Buat NEG zonal
GCE_VM_IP
yang disebutneg-a
dius-west1-a
menggunakan perintahgcloud compute network-endpoint-groups create
:gcloud compute network-endpoint-groups create neg-a \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-a \ --network=lb-network \ --subnet=lb-subnet
Tambahkan endpoint ke
neg-a
:gcloud compute network-endpoint-groups update neg-a \ --zone=us-west1-a \ --add-endpoint='instance=vm-a1' \ --add-endpoint='instance=vm-a2'
Buat NEG zonal
GCE_VM_IP
yang disebutneg-c
dius-west1-c
menggunakan perintahgcloud compute network-endpoint-groups create
:gcloud compute network-endpoint-groups create neg-c \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-c \ --network=lb-network \ --subnet=lb-subnet
Tambahkan endpoint ke
neg-c
:gcloud compute network-endpoint-groups update neg-c \ --zone=us-west1-c \ --add-endpoint='instance=vm-c1' \ --add-endpoint='instance=vm-c2'
Mengonfigurasi komponen load balancer
Langkah-langkah ini mengonfigurasi semua komponen Load Balancer Jaringan passthrough internal:
Layanan backend: Untuk contoh ini, Anda perlu meneruskan traffic HTTP melalui load balancer. Oleh karena itu, Anda perlu menggunakan TCP, bukan UDP.
Aturan penerusan: Contoh ini membuat satu aturan penerusan internal.
Alamat IP internal: Dalam contoh ini, Anda menentukan alamat IP internal,
10.1.2.99
, saat membuat aturan penerusan.
Konsol
gcloud
Buat health check HTTP regional baru.
gcloud compute health-checks create http hc-http-80 \ --region=us-west1 \ --port=80
Buat layanan backend:
gcloud compute backend-services create bs-ilb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=us-west1 \ --health-checks=hc-http-80 \ --health-checks-region=us-west1
Tambahkan dua NEG zonal,
neg-a
danneg-c
, ke layanan backend:gcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-a \ --network-endpoint-group-zone=us-west1-a
gcloud compute backend-services add-backend bs-ilb \ --region=us-west1 \ --network-endpoint-group=neg-c \ --network-endpoint-group-zone=us-west1-c
Buat aturan penerusan untuk layanan backend. Saat Anda membuat aturan penerusan, tentukan
10.1.2.99
untuk alamat IP internal di subnet.gcloud compute forwarding-rules create fr-ilb \ --region=us-west1 \ --load-balancing-scheme=internal \ --network=lb-network \ --subnet=lb-subnet \ --address=10.1.2.99 \ --ip-protocol=TCP \ --ports=80,8008,8080,8088 \ --backend-service=bs-ilb \ --backend-service-region=us-west1
Menguji load balancer
Pengujian ini menghubungi load balancer dari VM klien terpisah; yaitu, bukan dari VM backend load balancer. Perilaku yang diharapkan adalah traffic didistribusikan di antara empat VM backend karena tidak ada afinitas sesi yang telah dikonfigurasi.
Membuat VM klien pengujian
Contoh ini membuat VM klien (vm-client
) di region yang sama dengan VM backend (server). Klien digunakan untuk memvalidasi konfigurasi load balancer
dan menunjukkan perilaku yang diharapkan seperti yang dijelaskan di
bagian pengujian.
Konsol
- Buka halaman VM instances di konsol Google Cloud.
Buka halaman instance VM - Klik Create instance.
- Tetapkan Name ke
vm-client
. - Tetapkan Zona ke
us-west1-a
. - Klik Advanced options, lalu lakukan perubahan berikut:
- Klik Networking dan tambahkan
allow-ssh
ke Network tags. - Klik tombol edit di bagian Network interfaces dan buat
perubahan berikut, lalu klik Done:
- Jaringan:
lb-network
- Subnet:
lb-subnet
- Primary internal IP: Ephemeral (otomatis)
- External IP: Sementara
- Jaringan:
- Klik Networking dan tambahkan
- Klik Create.
gcloud
VM klien dapat berada di zona mana pun di region yang sama dengan load balancer, dan dapat menggunakan subnet mana pun di region tersebut. Dalam contoh ini,
klien berada di zona us-west1-a
, dan menggunakan subnet
yang sama dengan VM backend.
gcloud compute instances create vm-client \ --zone=us-west1-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh \ --subnet=lb-subnet
Mengirim traffic ke load balancer
Lakukan langkah-langkah berikut untuk terhubung ke load balancer.
Hubungkan ke instance VM klien.
gcloud compute ssh vm-client --zone=us-west1-a
Buat permintaan web ke load balancer menggunakan
curl
untuk menghubungi alamat IP-nya. Ulangi permintaan sehingga Anda dapat melihat bahwa respons berasal dari VM backend yang berbeda. Nama VM yang menghasilkan respons ditampilkan dalam teks dalam respons HTML, berdasarkan konten/var/www/html/index.html
di setiap VM backend. Respons yang diharapkan akan terlihat seperti:Page served from: vm-a1
danPage served from: vm-a2
.curl http://10.1.2.99
Aturan penerusan dikonfigurasi untuk menayangkan port
80
,8008
,8080
, dan8088
. Untuk mengirim traffic ke port lain tersebut, tambahkan titik dua (:
) dan nomor port setelah alamat IP, seperti ini:curl http://10.1.2.99:8008
Langkah selanjutnya
- Untuk menyiapkan opsi konfigurasi tambahan, seperti mengaktifkan akses global, menerima traffic di semua port, dan menerima traffic di beberapa port menggunakan dua aturan penerusan, lihat Opsi konfigurasi tambahan untuk Network Load Balancer passthrough internal.
- Lihat Ringkasan Load Balancer Jaringan passthrough internal untuk mengetahui dasar-dasar penting.
- Lihat Konsep failover untuk Load Balancer Jaringan passthrough internal untuk mengetahui informasi penting tentang failover.
- Lihat Logging dan pemantauan Load Balancer Jaringan passthrough internal untuk mengetahui informasi tentang cara mengonfigurasi logging dan pemantauan untuk Load Balancer Jaringan passthrough internal.
- Lihat Load Balancer Jaringan passthrough internal dan jaringan yang terhubung untuk mengetahui informasi tentang cara mengakses Load Balancer Jaringan passthrough internal dari jaringan peer yang terhubung ke jaringan VPC Anda.
- Lihat Memecahkan masalah Load Balancer Jaringan passthrough internal untuk mengetahui informasi tentang cara memecahkan masalah pada Load Balancer Jaringan passthrough internal.