Tutorial ini menunjukkan cara Anda, sebagai produsen layanan, membuat layanan sederhana yang menggunakan Load Balancer Jaringan passthrough internal. Secara default, Load Balancer Jaringan passthrough internal hanya tersedia dari dalam jaringan VPC yang menghostingnya.
Tutorial ini ditujukan untuk arsitek cloud, arsitek jaringan, administrator jaringan, dan administrator IT.
Tujuan
- Mengonfigurasi jaringan untuk resource produsen layanan
- Buat resource VM untuk backend load balancer
- Mengonfigurasi komponen load balancer
- Menguji akses ke load balancer
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih sebagai berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.
Sebelum memulai
- Buat atau pilih project yang akan digunakan untuk resource produsen layanan.
Project ini disebut dalam tutorial selanjutnya sebagai
PRODUCER_PROJECT -
In the Google Cloud console, go to the project selector page.
-
Select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. -
Make sure that you have the following role or roles on the project: Compute Engine > Compute Network Admin, Compute Engine > Compute Security Admin, Compute Engine > Compute Instance Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
Buka IAM - Pilih project.
- Klik Grant access.
-
Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.
- Klik Pilih peran, lalu telusuri peran.
- Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan tiap peran tambahan.
- Klik Simpan.
-
Mengonfigurasi jaringan
Bagian berikut menjelaskan cara membuat jaringan, subnet, dan aturan firewall untuk layanan.
Mengonfigurasi jaringan dan subnet
Untuk membuat jaringan dan subnet layanan bagi load balancer, selesaikan langkah-langkah di bagian berikut.
Konsol
Di konsol Google Cloud , buka halaman VPC networks.
Klik Create VPC network.
Untuk Name, masukkan
service-network.Untuk Mode pembuatan subnet, klik Kustom.
Di bagian New subnet, masukkan informasi berikut.
- Untuk Name, masukkan
service-subnet. - Untuk Region, pilih region yang ingin Anda gunakan.
- Untuk IP stack type, pilih IPv4 (single-stack).
- Untuk IPv4 range, masukkan
10.10.10.0/24. - Klik Done.
- Untuk Name, masukkan
Klik Create.
gcloud
Buat jaringan VPC mode kustom:
gcloud compute networks create service-network --subnet-mode=custom
Di jaringan
service-network, buat subnet.gcloud compute networks subnets create service-subnet \ --network=service-network \ --range=10.10.10.0/24 \ --region=REGIONGanti
REGIONdengan region yang ingin Anda gunakan.
Mengonfigurasi aturan firewall
Buat aturan firewall untuk mengizinkan traffic berikut:
fw-allow-subnet: memungkinkan traffic dari10.10.10.0/24menjangkau resource lain di10.10.10.0/24.fw-allow-ssh: memungkinkan traffic SSH dari0.0.0.0/0menjangkau VM yang memiliki tag jaringanallow-ssh.fw-allow-healthcheck: memungkinkan traffic dari sistem health check Google Cloud mencapai VM yang memiliki tag jaringanallow-healthcheck.
Konsol
Di konsol Google Cloud , buka halaman Firewall policies.
Untuk mengizinkan traffic subnet, klik Create firewall rule dan gunakan setelan berikut:
- Untuk Name, masukkan
fw-allow-subnet. - Untuk Network, pilih
service-network. - Untuk Priority, masukkan
1000. - Untuk Direction of traffic, pilih Ingress.
- Untuk Action on match, pilih Allow.
- Untuk Target, klik All instances in the network.
- Untuk Source filter, pilih IPv4 ranges.
- Untuk Source IPv4 ranges, masukkan
10.10.10.0/24. - Untuk Protocols and ports, pilih Allow all.
- Untuk Name, masukkan
Klik Create.
Untuk mengizinkan koneksi SSH yang masuk, klik Create firewall rule dan gunakan setelan berikut:
- Untuk Name, masukkan
fw-allow-ssh. - Untuk Network, pilih
service-network. - Untuk Priority, masukkan
1000. - Untuk Direction of traffic, pilih Ingress.
- Untuk Action on match, pilih Allow.
- Untuk Target, pilih Tag target yang ditentukan.
- Untuk Target tags, masukkan
allow-ssh. - Untuk Source filter, pilih IPv4 ranges.
- Untuk Source IPv4 ranges, masukkan
0.0.0.0/0. - Untuk Protocols and ports, pilih Specified protocols and ports,
lalu pilih kotak centang TCP. Untuk Ports, masukkan
22.
- Untuk Name, masukkan
Klik Create.
Untuk mengizinkan Google Cloud health check, klik Create firewall rule dan gunakan setelan berikut:
- Untuk Name, masukkan
fw-allow-healthcheck. - Untuk Network, pilih
service-network. - Untuk Priority, masukkan
1000. - Untuk Direction of traffic, pilih Ingress.
- Untuk Action on match, pilih Allow.
- Untuk Target, pilih Tag target yang ditentukan.
- Untuk Target tags, masukkan
allow-healthcheck. - Untuk Source filter, pilih IPv4 ranges.
- Untuk Source IPv4 ranges, masukkan
130.211.0.0/22dan35.191.0.0/16. - Untuk Protocols and ports, pilih Allow all.
- Untuk Name, masukkan
Klik Create.
gcloud
Buat aturan firewall
fw-allow-subnetuntuk mengizinkan komunikasi dari dalam subnet:gcloud compute firewall-rules create fw-allow-subnet \ --network=service-network \ --action=allow \ --direction=ingress \ --source-ranges=10.10.10.0/24 \ --rules=tcp,udp,icmp
Buat aturan firewall
fw-allow-sshuntuk mengizinkan konektivitas SSH ke VM dengan tag jaringanallow-ssh.gcloud compute firewall-rules create fw-allow-ssh \ --network=service-network \ --action=allow \ --direction=ingress \ --source-ranges=0.0.0.0/0 \ --target-tags=allow-ssh \ --rules=tcp:22
Buat aturan
fw-allow-healthcheckuntuk mengizinkan health check Google Cloud.gcloud compute firewall-rules create fw-allow-healthcheck \ --network=service-network \ --action=allow \ --direction=ingress \ --target-tags=allow-healthcheck \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
Buat resource VM untuk backend load balancer
Buat VM dan grup instance untuk digunakan dengan load balancer.
Membuat VM backend
Layanan yang Anda buat berjalan di dua VM untuk ketersediaan yang lebih tinggi: vm-1 dan vm-2. VM berada di zona yang sama, tetapi di lingkungan produksi, sebaiknya gunakan beberapa zona.
Selain membuat VM, langkah-langkah berikut akan melakukan hal-hal berikut:
- Mengonfigurasi VM untuk menggunakan tag jaringan yang Anda konfigurasi sebagai target dalam aturan firewall dan tag jaringan tambahan (
allow-nat) yang akan digunakan nanti. Menginstal, mengonfigurasi, dan memulai layanan Apache.
Konsol
Di konsol Google Cloud , buka halaman VM instances.
Klik Create instance.
Untuk Name, masukkan
vm-1.Untuk Region dan Zone, pilih region dan zona di dalam region tersebut.
Di menu navigasi, buka OS dan penyimpanan.
Di panel Operating system and storage, pastikan Debian GNU/Linux 12 (bookworm) dipilih untuk boot disk. Jika Anda perlu memilih gambar lain, klik Ubah.
Di menu navigasi, buka Networking.
Untuk Network tags, masukkan
allow-ssh,allow-healthcheck, danallow-nat.Untuk Network interfaces, pilih berikut ini:
- Untuk Network, pilih
service-network. - Untuk Subnet, pilih
service-subnet. - Untuk IP stack type, pilih IPv4 (single-stack).
- Untuk Primary internal IPv4 address, pilih Ephemeral (automatic).
- Untuk External IPv4 address, pilih Ephemeral.
- Untuk Network, pilih
Di menu navigasi, buka Lanjutan.
Di bagian Automation, di kolom Startup script, masukkan skrip berikut.
#! /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_completedKlik Create.
Ulangi langkah-langkah ini untuk membuat VM lain bernama
vm-2di region dan zona yang sama denganvm-1.
gcloud
Buat dua VM dengan menjalankan perintah berikut:
gcloud compute instances create vm-1 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-healthcheck,allow-nat \ --subnet=service-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'gcloud compute instances create vm-2 \ --zone=ZONE \ --image-family=debian-12 \ --image-project=debian-cloud \ --tags=allow-ssh,allow-healthcheck,allow-nati \ --subnet=service-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'Ganti
ZONEdengan zona yang ingin Anda gunakan.
Membuat grup instance
Untuk menggunakan VM di backend load balancer, Anda harus menambahkan VM ke grup instance.
Konsol
Di konsol Google Cloud , buka halaman Instance groups.
Klik Create instance group.
Di panel navigasi, klik New unmanaged instance group.
Untuk Name, masukkan
ig-1.Di bagian Location, pilih region dan zona yang sama dengan VM Anda.
Untuk Network, pilih
service-network.Untuk Subnetwork, pilih
service-subnet.Di bagian VM instances, tambahkan
vm-1danvm-2ke grup instance.Klik Create.
gcloud
Buat grup instance tidak terkelola:
gcloud compute instance-groups unmanaged create ig-1 \ --zone=ZONEGanti
ZONEdengan zona yang berisi VM.Tambahkan VM ke grup instance:
gcloud compute instance-groups unmanaged add-instances ig-1 \ --zone=ZONE \ --instances=vm-1,vm-2
Mengonfigurasi komponen load balancer
Konfigurasi semua komponen Load Balancer Jaringan passthrough internal, mulai dari health check dan layanan backend, lalu komponen frontend:
Health check. Anda menggunakan health check HTTP yang memeriksa kode status HTTP
200 OK.Layanan backend. Karena Anda perlu meneruskan traffic HTTP melalui load balancer internal, Anda harus menggunakan TCP, bukan UDP.
Aturan penerusan. Anda membuat satu aturan penerusan internal,
service-rule.Alamat IP internal. Anda menentukan alamat IP internal,
10.10.10.99, saat membuat aturan penerusan.
Konsol
Mulai konfigurasi
Di konsol Google Cloud , buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
- Untuk Proxy or passthrough, pilih Passthrough load balancer, lalu klik Next.
- Untuk Public facing or internal, pilih Internal, lalu klik Next.
- Klik Configure.
Konfigurasi dasar
Di halaman Buat Load Balancer Jaringan passthrough internal, masukkan informasi berikut:
- Untuk Load balancer name, masukkan
service-lb. - Untuk Region, pilih region yang sama dengan VM Anda.
- Untuk Network, pilih
service-network.
Mengonfigurasi backend
- Klik Backend configuration.
- Di daftar Health check, klik Create a health check,
lalu masukkan informasi berikut:
- Untuk Name:, masukkan
hc-http-80. - Untuk Protocol:, pilih
HTTP. - Untuk Port:, masukkan
80. - Untuk Proxy protocol:, pilih
NONE. - Untuk Jalur permintaan:, masukkan
/.
- Untuk Name:, masukkan
- Klik Create.
- Di bagian New Backend pada Backends, pilih IPv4 (single-stack).
- Di Instance group, pilih grup instance
ig-1, lalu klik Done. - Pastikan terdapat tanda centang biru di samping Backend configuration sebelum melanjutkan.
Mengonfigurasi frontend
- Klik Frontend configuration.
- Di bagian New Frontend IP and port, lakukan langkah berikut:
- Untuk Name, masukkan
service-rule. - Untuk Subnetwork, pilih
service-subnet. - Di bagian Internal IP purpose, dalam daftar IP address,
pilih Create IP address, masukkan informasi berikut:
- Untuk Name, masukkan
service-rule-ip. - Untuk IP version, pilih IPv4.
- Untuk Static IP address, pilih Let me choose.
- Untuk Custom IP address, masukkan
10.10.10.99.
- Untuk Name, masukkan
- Klik Reserve.
- Untuk Ports, pilih Single, lalu di Port numbers, masukkan
80. - Klik Done.
- Pastikan terdapat tanda centang biru di samping Frontend configuration sebelum melanjutkan.
- Untuk Name, masukkan
Meninjau konfigurasi
- Klik Review and finalize.
- Tinjau setelan konfigurasi load balancer Anda.
- Klik Create.
gcloud
Buat health check HTTP regional baru untuk menguji konektivitas HTTP ke VM di port 80.
gcloud compute health-checks create http hc-http-80 \ --region=REGION \ --port=80Ganti
REGIONdengan region yang sama dengan VM backend.Buat layanan backend untuk traffic HTTP:
gcloud compute backend-services create service-lb \ --load-balancing-scheme=internal \ --protocol=tcp \ --region=REGION \ --health-checks=hc-http-80 \ --health-checks-region=REGIONGanti
REGIONdengan region yang sama dengan VM backend.Tambahkan grup instance ke layanan backend:
gcloud compute backend-services add-backend service-lb \ --region=REGION \ --instance-group=ig-1 \ --instance-group-zone=ZONEGanti kode berikut:
REGION: region yang sama dengan VM backend.ZONE: zona yang sama dengan VM backend.
Buat aturan penerusan untuk layanan backend:
gcloud compute forwarding-rules create service-rule \ --region=REGION \ --load-balancing-scheme=internal \ --network=service-network \ --subnet=service-subnet \ --address=10.10.10.99 \ --ip-protocol=TCP \ --ports=80 \ --backend-service=service-lb \ --backend-service-region=REGIONGanti
REGIONdengan region yang sama dengan VM backend.
Menguji akses ke load balancer
Untuk menguji apakah load balancer berfungsi, buat VM pengujian dan kirim permintaan dari VM tersebut ke load balancer.
Membuat VM klien untuk pengujian
Buat VM klien di region yang sama dengan VM backend (server).
Konsol
Di konsol Google Cloud , buka halaman VM instances.
Klik Create instance.
Untuk Name, masukkan
producer-test.Untuk Region, pilih region yang sama dengan VM backend.
Untuk Zone, pilih zona di region tersebut.
Klik Networking dan konfigurasi kolom berikut:
- Untuk Network tags, masukkan
allow-ssh. - Untuk Network interfaces, pilih opsi berikut:
- Untuk Network, pilih
service-network - Untuk Subnet, pilih
service-subnet
- Untuk Network, pilih
- Untuk Network tags, masukkan
Klik Create.
gcloud
gcloud compute instances create producer-test \
--zone=ZONE \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-ssh \
--subnet=service-subnet
Ganti ZONE dengan zona yang berada di region yang sama dengan VM backend.
Menguji konektivitas
Pengujian ini menghubungi load balancer dari VM klien. Perilaku yang diharapkan adalah traffic didistribusikan di seluruh VM backend load balancer.
- Hubungkan ke instance VM klien.
Gantigcloud compute ssh producer-test --zone=ZONE
ZONEdengan zona VM klien. - Buat permintaan web ke load balancer menggunakan
curluntuk 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 di respons HTML, karena konten/var/www/html/index.htmldi setiap VM backend. Misalnya, respons yang diharapkan terlihat sepertiPage served from: vm-1danPage served from: vm-2.curl -s http://10.10.10.99