Load Balancer Aplikasi Eksternal dengan Identity-Aware Proxy (IAP) didukung dengan jenis backend berikut:
- Grup instance
- Grup endpoint jaringan zona (NEG)
- NEG serverless: Satu atau beberapa layanan Cloud Run
- NEG internet, untuk endpoint yang berada di luar Google Cloud (juga dikenal sebagai origin kustom)
- NEG Konektivitas Hybrid, untuk endpoint yang meluas di luar Google Cloud, seperti pusat data lokal dan cloud publik lainnya yang dapat Anda gunakan untuk menjangkau konektivitas hybrid.
- NEG Private Service Connect,
endpoint yang me-resolve ke salah satu dari hal berikut:
- Endpoint API regional yang dikelola Google
- Layanan terkelola yang dipublikasikan menggunakan Private Service Connect
Untuk konsep umum, lihat Ringkasan Load Balancer Aplikasi Eksternal.
Jika Anda adalah pengguna Load Balancer Aplikasi klasik yang sudah ada, pastikan Anda meninjau Ringkasan migrasi saat merencanakan deployment baru dengan Load Balancer Aplikasi eksternal global.
Topologi load balancer
Untuk load balancer HTTPS, Anda membuat konfigurasi yang ditampilkan dalam diagram berikut.
Untuk load balancer HTTP, Anda membuat konfigurasi yang ditampilkan dalam diagram berikut.
Urutan peristiwa dalam diagram adalah sebagai berikut:
- Klien mengirimkan permintaan konten ke alamat IPv4 eksternal yang ditentukan dalam aturan penerusan.
Untuk load balancer HTTPS, aturan penerusan mengarahkan permintaan ke proxy HTTPS target.
Untuk load balancer HTTP, aturan penerusan mengarahkan permintaan ke proxy HTTP target.
Proxy target menggunakan aturan dalam peta URL untuk menentukan bahwa satu layanan backend menerima semua permintaan.
Load balancer menentukan bahwa layanan backend hanya memiliki satu grup instance dan mengarahkan permintaan ke instance virtual machine (VM) dalam grup tersebut.
VM menayangkan konten yang diminta oleh pengguna.
Sebelum memulai
Selesaikan langkah-langkah berikut sebelum membuat load balancer.
Menyiapkan resource sertifikat SSL
Untuk load balancer HTTPS, buat resource sertifikat SSL seperti yang dijelaskan di berikut:
Sebaiknya gunakan sertifikat yang dikelola Google.
Contoh ini mengasumsikan bahwa Anda sudah memiliki resource sertifikat SSL bernama
www-ssl-cert
.
Siapkan izin
Untuk menyelesaikan langkah-langkah dalam panduan ini, Anda harus memiliki izin untuk membuat instance Compute Engine, aturan firewall, dan alamat IP yang dicadangkan dalam project. Anda harus memiliki peran pemilik atau editor project, atau Anda harus memiliki peran IAM Compute Engine berikut.
Tugas | Peran yang diperlukan |
---|---|
Membuat instance | Instance Admin |
Menambahkan dan menghapus aturan firewall | Security Admin |
Membuat komponen load balancer | Admin Jaringan |
Membuat project (opsional) | Project Creator |
Untuk informasi selengkapnya, lihat panduan berikut:
Mengonfigurasi jaringan dan subnet
Untuk membuat contoh jaringan dan subnet, ikuti langkah-langkah berikut.
Konsol
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Masukkan Name untuk jaringan.
Untuk Subnet creation mode, pilih Custom.
Di bagian New subnet, konfigurasikan kolom berikut:
- Berikan Name untuk subnet.
- Pilih Region.
- Untuk Jenis stack IP, pilih IPv4 (single-stack).
- Masukkan rentang alamat IP. Ini adalah rentang IPv4 utama untuk subnet.
Klik Done.
Untuk menambahkan subnet di region yang berbeda, klik Add subnet dan ulangi langkah-langkah sebelumnya.
Klik Create.
gcloud
Buat jaringan VPC mode kustom:
gcloud compute networks create NETWORK \ --subnet-mode=custom
Dalam jaringan, buat subnet untuk backend:
gcloud compute networks subnets create SUBNET \ --network=NETWORK \ --stack-type=IPV4_ONLY \ --range=10.1.2.0/24 \ --region=REGION
Ganti kode berikut:
NETWORK
: nama untuk jaringan VPC.SUBNET
: nama untuk subnet.REGION
: nama region.
Membuat grup instance terkelola
Untuk menyiapkan load balancer dengan backend Compute Engine, VM Anda harus berada dalam grup instance. Panduan ini menjelaskan cara membuat grup instance terkelola dengan VM Linux yang menjalankan Apache, lalu menyiapkan load balancing. Grup instance terkelola membuat setiap instance terkelolanya berdasarkan template instance yang Anda tentukan.
Grup instance terkelola menyediakan VM yang menjalankan server backend load balancer HTTP(S) eksternal. Untuk tujuan demonstrasi, backend menayangkan nama host-nya sendiri.
Sebelum membuat grup instance terkelola, buat template instance.
Konsol
Untuk mendukung traffic IPv4, gunakan langkah-langkah berikut:
Di konsol Google Cloud, buka halaman Instance templates.
Klik Create instance template.
Untuk Name, masukkan
lb-backend-template
.Pastikan Disk booting disetel ke image Debian, seperti Debian GNU/Linux 10 (buster). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti
apt-get
.Buka Opsi lanjutan.
Luaskan Networking dan konfigurasikan kolom berikut:
- Untuk Network tags, masukkan
allow-health-check
. - Di bagian Network interfaces, klik
- Jaringan:
NETWORK
- Subnet:
SUBNET
- Traffic IPv4: IPv4 (single-stack)
Edit dan buat
perubahan berikut:
- Jaringan:
- Klik Done.
- Untuk Network tags, masukkan
Luaskan Pengelolaan. Di kolom Startup script, masukkan skrip berikut:
#! /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
Klik Create.
gcloud
Untuk mendukung traffic IPv4, jalankan perintah berikut:
gcloud compute instance-templates create TEMPLATE_NAME \ --region=REGION \ --network=NETWORK \ --subnet=SUBNET \ --stack-type=IPV4_ONLY \ --tags=allow-health-check \ --image-family=debian-10 \ --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'
Terraform
Untuk membuat template instance, gunakan resource
google_compute_instance_template
.
Buat grup instance terkelola dan pilih template instance.
Konsol
Di Konsol Google Cloud, buka halaman Instance groups.
Klik Create instance group.
Di sebelah kiri, pilih New managed instance group (stateless).
Untuk Name, masukkan
lb-backend-example
.Di bagian Lokasi, pilih Zona tunggal.
Untuk Region, pilih wilayah yang diinginkan.
Untuk Zone, pilih zona.
Di bagian Instance template, pilih template instance
lb-backend-template
.Untuk Mode penskalaan otomatis, pilih Aktif: tambahkan dan hapus instance ke grup.
Tetapkan Minimum number of instances ke
2
, dan tetapkan Maximum number of instances ke2
atau lebih.Untuk membuat grup instance baru, klik Buat.
gcloud
Buat grup instance terkelola berdasarkan template.
gcloud compute instance-groups managed create lb-backend-example \ --template=TEMPLATE_NAME --size=2 --zone=ZONE_A
Terraform
Untuk membuat grup instance terkelola, gunakan resource
google_compute_instance_group_manager
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Menambahkan port bernama ke grup instance
Untuk grup instance Anda, tentukan layanan HTTP dan petakan nama port ke port yang relevan. Layanan load balancing meneruskan traffic ke port bernama. Untuk informasi selengkapnya, lihat Port bernama.
Konsol
Di Konsol Google Cloud, buka halaman Instance groups.
Klik lb-backend-example.
Di halaman Ringkasan grup instance, klik
Edit.Di bagian Port mapping, klik Add port.
- Untuk nama port, masukkan
http
. Untuk nomor port, masukkan80
.
- Untuk nama port, masukkan
Klik Simpan.
gcloud
Gunakan perintah
gcloud compute instance-groups
set-named-ports
.
gcloud compute instance-groups set-named-ports lb-backend-example \ --named-ports http:80 \ --zone ZONE_A
Terraform
Atribut named_port
disertakan dalam
contoh grup instance terkelola.
Mengonfigurasi aturan firewall
Dalam contoh ini, Anda akan membuat aturan firewall fw-allow-health-check
.
Ini adalah aturan masuk yang mengizinkan traffic dari sistem health check Google Cloud (130.211.0.0/22
dan 35.191.0.0/16
). Contoh ini menggunakan tag target allow-health-check
untuk mengidentifikasi VM.
Konsol
Di Konsol Google Cloud, buka halaman Firewall policies.
Klik Create firewall rule untuk membuat aturan firewall.
Untuk Name, masukkan
fw-allow-health-check
.Pilih Network.
Di bagian Target, pilih Tag target yang ditentukan.
Isi kolom Target tags dengan
allow-health-check
.Tetapkan Source filter ke IPv4 ranges.
Tetapkan Source IPv4 ranges ke
130.211.0.0/22
dan35.191.0.0/16
.Di bagian Protocols and ports, pilih Specified protocols and ports.
Pilih kotak centang TCP, lalu ketik
80
untuk nomor port.Klik Create.
gcloud
gcloud compute firewall-rules create fw-allow-health-check \ --network=NETWORK \ --action=allow \ --direction=ingress \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=allow-health-check \ --rules=tcp:80
Terraform
Untuk membuat aturan firewall, gunakan resource
google_compute_firewall
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Mencadangkan alamat IP eksternal
Setelah instance aktif dan berjalan, siapkan alamat IP eksternal statis global yang akan digunakan pelanggan untuk menjangkau load balancer Anda.
Konsol
Di konsol Google Cloud, buka halaman External IP addresses.
Untuk mereservasi alamat IPv4, klik Reserve external static IP address.
Untuk Name, masukkan
lb-ipv4-1
.Tetapkan Network Service Tier ke Premium.
Setel IP version ke IPv4.
Setel Type ke Global.
Klik Reserve.
gcloud
gcloud compute addresses create lb-ipv4-1 \ --ip-version=IPV4 \ --network-tier=PREMIUM \ --global
Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Terraform
Untuk mencadangkan alamat IP, gunakan resource
google_compute_global_address
.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Menyiapkan load balancer
Dalam contoh ini, Anda menggunakan HTTPS (frontend) antara klien dan load balancer. Untuk HTTPS, Anda memerlukan satu atau beberapa resource sertifikat SSL untuk mengonfigurasi proxy. Sebaiknya gunakan sertifikat yang dikelola Google.
Meskipun menggunakan HTTPS di frontend, Anda dapat menggunakan HTTP di backend. Google otomatis mengenkripsi traffic antara Google Front End (GFE) dan backend Anda yang berada dalam jaringan VPC Google Cloud.
Konsol
Memulai konfigurasi
Di konsol Google Cloud, buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS), lalu klik Next.
- Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
- Untuk Global or single region deployment, pilih Best for global workloads, lalu klik Next.
- Untuk Load balancer generation, pilih Classic Application Load Balancer, lalu klik Next.
- Klik Konfigurasikan.
Konfigurasi dasar
Untuk Name load balancer, masukkan nama seperti
web-map-https
atau web-map-http
.
Konfigurasi frontend
- Klik Frontend configuration.
- Tetapkan Protocol ke HTTPS.
- Pilih
IPv4
untuk traffic IPv4. Tetapkan IP address kelb-ipv4-1
, yang Anda buat sebelumnya. - Tetapkan Port ke 443.
- Klik Certificate, lalu pilih sertifikat SSL utama Anda.
- Opsional: Buat kebijakan SSL:
- Di daftar SSL policy, pilih Create a policy.
- Tetapkan nama kebijakan SSL ke
my-ssl-policy
. - Untuk Minimum TLS Version, pilih TLS 1.0.
- Untuk Profil, pilih Modern. Fitur yang diaktifkan dan Fitur yang dinonaktifkan akan ditampilkan.
- Klik Simpan.
-
Opsional: Centang kotak Enable HTTP to HTTPS Redirect untuk mengaktifkan pengalihan.
Mengaktifkan kotak centang ini akan membuat load balancer HTTP parsial tambahan yang menggunakan alamat IP yang sama dengan load balancer HTTPS Anda dan mengalihkan permintaan HTTP yang masuk ke frontend HTTPS load balancer Anda.
Kotak centang ini hanya dapat dipilih jika protokol HTTPS dipilih dan alamat IP yang dicadangkan digunakan.
- Klik Done.
Konfigurasi backend
- Klik Backend configuration.
- Di bagian Create or select backend services & backend buckets, pilih Backend services > Create a backend service.
- Tambahkan nama untuk layanan backend Anda, seperti
web-backend-service
. - Di bagian Protocol, pilih HTTP.
- Untuk Named Port, masukkan
http
. - Di Backends > New backend >
Instance group, pilih grup instance Anda,
lb-backend-example
. - Untuk Port numbers, masukkan
80
. - Pertahankan setelan default lainnya.
- Di bagian Health check, pilih Create a health check, lalu tambahkan nama untuk health check Anda, seperti
http-basic-check
. - Tetapkan protokol ke HTTP, lalu klik Simpan.
-
Opsional: Konfigurasikan kebijakan keamanan backend default. Kebijakan keamanan default membatasi traffic di atas nilai minimum yang dikonfigurasi pengguna. Untuk informasi selengkapnya tentang kebijakan keamanan default, lihat Ringkasan pembatasan kapasitas.
- Untuk memilih tidak menggunakan kebijakan keamanan default Google Cloud Armor, pilih
None
di menu daftar kebijakan keamanan backend. - Di bagian Security, pilih Default security policy.
- Di kolom Policy name, terima nama yang dibuat secara otomatis atau masukkan nama untuk kebijakan keamanan Anda.
- Di kolom Request count, terima jumlah permintaan
default atau masukkan bilangan bulat antara
1
dan10,000
. - Di kolom Interval, pilih interval.
- Di kolom Enforce on key, pilih salah satu nilai berikut: All, IP address, atau X-Forwarded-For IP address. Untuk informasi selengkapnya tentang opsi ini, lihat Mengidentifikasi klien untuk pembatasan kapasitas.
- Untuk memilih tidak menggunakan kebijakan keamanan default Google Cloud Armor, pilih
- Pertahankan setelan default lainnya.
- Klik Create.
Aturan host dan jalur
Untuk Aturan host dan jalur, pertahankan setelan default.
Tinjau dan selesaikan
- Klik Review and finalize.
- Tinjau setelan konfigurasi load balancer Anda.
- Opsional: Klik Equivalent code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
- Klik Create.
Tunggu load balancer dibuat.
Jika membuat load balancer HTTPS dan mencentang kotak Enable HTTP to HTTPS Redirect, Anda juga akan melihat load balancer HTTP yang dibuat dengan akhiran -redirect.
- Klik nama load balancer.
- Di layar Detail load balancer, catat IP:Port untuk load balancer Anda.
gcloud
- Membuat health check.
gcloud compute health-checks create http http-basic-check \ --port 80
- Buat layanan backend.
gcloud compute backend-services create web-backend-service \ --load-balancing-scheme=EXTERNAL \ --protocol=HTTP \ --port-name=http \ --health-checks=http-basic-check \ --global
- Tambahkan grup instance sebagai backend ke layanan backend.
gcloud beta compute backend-services add-backend web-backend-service \ --instance-group=lb-backend-example \ --instance-group-zone=ZONE_A \ --global
- Untuk HTTP, buat peta URL untuk merutekan permintaan masuk ke layanan backend default.
gcloud beta compute url-maps create web-map-http \ --default-service web-backend-service
- Untuk HTTPS, buat peta URL untuk merutekan permintaan masuk ke layanan backend default.
gcloud beta compute url-maps create web-map-https \ --default-service web-backend-service
Menyiapkan frontend HTTPS
Lewati bagian ini untuk load balancer HTTP.
- Untuk HTTPS, jika Anda belum melakukannya, buat resource sertifikat SSL global, seperti yang ditunjukkan di bagian berikut:
- Membuat resource sertifikat SSL yang dikelola Google
- Membuat resource sertifikat SSL yang dikelola sendiri
Untuk HTTPS, buat proxy HTTPS target untuk merutekan permintaan ke peta URL Anda. Proxy ini merupakan bagian dari load balancer yang menampung sertifikat SSL untuk load balancer HTTPS, sehingga Anda juga memuat sertifikat pada langkah ini.
gcloud compute target-https-proxies create https-lb-proxy \ --url-map=web-map-https \ --ssl-certificates=www-ssl-cert
- Untuk HTTPS, buat aturan penerusan global untuk mengarahkan permintaan masuk ke
proxy.
gcloud compute forwarding-rules create https-content-rule \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --address=lb-ipv4-1 \ --global \ --target-https-proxy=https-lb-proxy \ --ports=443
- Opsional: Untuk HTTPS, buat kebijakan SSL global dan lampirkan ke proxy HTTPS.
Untuk membuat kebijakan SSL global: Untuk melampirkan kebijakan SSL ke proxy HTTPS target global:gcloud compute ssl-policies create my-ssl-policy \ --profile MODERN \ --min-tls-version 1.0
gcloud compute target-https-proxies update https-lb-proxy \ --ssl-policy my-ssl-policy
Menyiapkan frontend HTTP
Lewati bagian ini untuk load balancer HTTPS.
- Untuk HTTP, buat proxy HTTP target untuk merutekan permintaan ke peta URL Anda.
gcloud compute target-http-proxies create http-lb-proxy \ --url-map=web-map-http
- Untuk HTTP, buat aturan penerusan global untuk merutekan permintaan masuk ke proxy.
gcloud compute forwarding-rules create http-content-rule \ --load-balancing-scheme=EXTERNAL \ --address=lb-ipv4-1 \ --global \ --target-http-proxy=http-lb-proxy \ --ports=80
Terraform
-
Untuk membuat health check, gunakan resource
google_compute_health_check
. -
Untuk membuat layanan backend, gunakan resource
google_compute_backend_service
.Contoh ini menggunakan
load_balancing_scheme="EXTERNAL_MANAGED"
, yang menyiapkan Load Balancer Aplikasi eksternal global dengan kemampuan pengelolaan traffic lanjutan. Untuk membuat Load Balancer Aplikasi klasik, pastikan Anda mengubahload_balancing_scheme
menjadiEXTERNAL
sebelum menjalankan skrip. -
Untuk membuat peta URL, gunakan resource
google_compute_url_map
. -
Untuk membuat proxy HTTP target, gunakan resource
google_compute_target_http_proxy
. -
Untuk membuat aturan penerusan, gunakan resource
google_compute_global_forwarding_rule
.Contoh ini menggunakan
load_balancing_scheme="EXTERNAL_MANAGED"
, yang menyiapkan Load Balancer Aplikasi eksternal global dengan kemampuan pengelolaan traffic lanjutan. Untuk membuat Load Balancer Aplikasi klasik, pastikan Anda mengubahload_balancing_scheme
menjadiEXTERNAL
sebelum menjalankan skrip.
Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.
Mengaktifkan IAP di Load Balancer Aplikasi eksternal
Catatan: IAP tidak kompatibel dengan Cloud CDN.Anda dapat mengonfigurasi IAP agar
diaktifkan atau dinonaktifkan (default). Jika diaktifkan, Anda harus memberikan nilai untuk
oauth2-client-id
dan oauth2-client-secret
.
Untuk mengaktifkan IAP, perbarui layanan backend
agar menyertakan flag --iap=enabled
dengan oauth2-client-id
dan
oauth2-client-secret
.
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \ --global
Secara opsional, Anda dapat mengaktifkan IAP untuk resource Compute Engine menggunakan konsol Google Cloud, gcloud CLI, atau API.
Menghubungkan domain ke load balancer
Setelah load balancer dibuat, catat alamat IP yang terkait dengan load balancer, misalnya, 30.90.80.100
. Untuk mengarahkan domain ke load balancer, buat data A
menggunakan layanan pendaftaran domain. Jika
Anda menambahkan beberapa domain ke sertifikat SSL, Anda harus menambahkan data A
untuk setiap domain, yang semuanya mengarah ke alamat IP load balancer. Misalnya, untuk
membuat data A
bagi www.example.com
dan example.com
, gunakan string berikut:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Jika Anda menggunakan Cloud DNS sebagai penyedia DNS, lihat Menambahkan, mengubah, dan menghapus data.
Menguji traffic yang dikirim ke instance
Setelah layanan load balancing berjalan, Anda dapat mengirim traffic ke aturan penerusan dan melihat traffic tersebut disebar ke berbagai instance.
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
- Klik load balancer yang baru saja Anda buat.
Di bagian Backend, konfirmasi bahwa VM responsif. Kolom Healthy harus diisi, yang menunjukkan bahwa kedua VM berfungsi dengan baik (
2/2
). Jika Anda melihat sebaliknya, coba muat ulang halaman terlebih dahulu. Diperlukan waktu beberapa saat hingga konsol Google Cloud menunjukkan bahwa VM tersebut responsif. Jika backend tidak responsif setelah beberapa menit, tinjau konfigurasi firewall dan tag jaringan yang ditetapkan ke VM backend Anda.- Untuk HTTPS, jika Anda menggunakan sertifikat yang dikelola Google, pastikan status resource sertifikat Anda AKTIF. Untuk mengetahui informasi selengkapnya, lihat Status resource sertifikat SSL yang dikelola Google.
- Setelah Konsol Google Cloud menunjukkan bahwa instance backend berfungsi dengan baik, Anda dapat menguji load balancer menggunakan browser web dengan membuka
https://IP_ADDRESS
(atauhttp://IP_ADDRESS
). GantiIP_ADDRESS
dengan alamat IP load balancer. - Jika Anda menggunakan sertifikat yang ditandatangani sendiri untuk menguji HTTPS, browser akan menampilkan peringatan. Anda harus secara eksplisit memerintahkan browser untuk menerima sertifikat yang ditandatangani sendiri.
- Browser akan merender halaman berisi konten yang menampilkan nama instance yang menampilkan halaman tersebut, bersama dengan zonanya (misalnya,
Page served from: lb-backend-example-xxxx
). Jika browser Anda tidak merender halaman ini, tinjau setelan konfigurasi dalam panduan ini.
gcloud
gcloud compute addresses describe lb-ipv4-1 \ --format="get(address)" \ --global
Setelah beberapa menit berlalu, Anda dapat menguji penyiapan dengan menjalankan perintah curl
berikut.
curl http://IP_ADDRESS
-ATAU-
curl https://HOSTNAME
Langkah selanjutnya
- Baca tentang mengaktifkan Cloud Load Balancing untuk GKE
- Pelajari grup instance lebih lanjut.
- Baca tentang load balancing dan penskalaan.