Dokumen ini menunjukkan cara membuat Load Balancer Aplikasi internal lintas region untuk merutekan permintaan konten statis ke bucket Cloud Storage.
Sebelum memulai
Pastikan penyiapan Anda memenuhi prasyarat berikut.
Menginstal Google Cloud CLI.
Untuk Pratinjau, beberapa petunjuk dalam panduan ini hanya dapat dilakukan menggunakan Google Cloud CLI. Untuk menginstalnya, lihat dokumen Menginstal gcloud CLI.
Anda dapat menemukan perintah yang terkait dengan load balancing dalam dokumen referensi API dan gcloud CLI.
Izin
Untuk mengikuti panduan ini, Anda perlu membuat bucket Cloud Storage dan resource jaringan di project Anda. Anda harus menjadi pemilik atau editor project, atau memiliki peran IAM Compute Engine berikut:
Tugas | Peran yang diperlukan |
---|---|
Membuat komponen jaringan, subnet, dan load balancer | Peran Compute Network Admin (roles/compute.networkAdmin )
|
Menambahkan dan menghapus aturan firewall | Peran Compute Security Admin (roles/compute.securityAdmin )
|
Membuat bucket Cloud Storage | Peran Storage Object Admin (roles/storage.objectAdmin )
|
Untuk informasi selengkapnya, lihat panduan berikut:
Menyiapkan resource sertifikat SSL
Untuk Load Balancer Aplikasi internal lintas wilayah yang menggunakan HTTPS sebagai protokol permintaan dan respons, buat resource sertifikat SSL menggunakan Pengelola Sertifikat seperti yang dijelaskan dalam salah satu dokumen berikut:
- Membuat sertifikat yang dikelola Google yang dikeluarkan oleh instance Layanan CA Anda
- Men-deploy sertifikat global yang dikelola Google dengan otorisasi DNS
- Men-deploy sertifikat global yang dikelola sendiri
Setelah membuat sertifikat, Anda dapat melampirkan sertifikat ke proxy target HTTPS.
Sebaiknya gunakan sertifikat yang dikelola Google.
Batasan
Batasan berikut berlaku untuk bucket Cloud Storage saat ditayangkan sebagai backend ke Load Balancer Aplikasi internal lintas region:
Akses bucket pribadi tidak didukung, sehingga bucket backend harus dapat diakses secara publik melalui internet.
URL Bertanda Tangan tidak didukung.
Integrasi Cloud CDN tidak tersedia saat membuat bucket backend untuk Load Balancer Aplikasi internal lintas wilayah.
Saat menggunakan Load Balancer Aplikasi internal lintas region untuk mengakses bucket backend, hanya metode
GET
HTTP yang didukung. Anda dapat mendownload konten dari bucket, tetapi mengupload konten ke bucket melalui Load Balancer Aplikasi internal lintas-region tidak tersedia.
Ringkasan penyiapan
Anda dapat mengonfigurasi Load Balancer Aplikasi internal lintas region di beberapa region seperti yang ditunjukkan dalam diagram berikut:
Seperti yang ditunjukkan pada diagram arsitektur, contoh ini membuat
Load Balancer Aplikasi internal lintas region di jaringan Virtual Private Cloud (VPC) dengan dua bucket backend, dengan setiap bucket backend
mereferensikan bucket Cloud Storage. Bucket Cloud Storage terletak di region us-east1
dan asia-east1
.
Arsitektur deployment ini menawarkan ketersediaan tinggi. Jika Load Balancer Aplikasi internal lintas region di suatu region gagal, kebijakan pemilihan rute DNS akan merutekan traffic ke Load Balancer Aplikasi internal lintas region di region lain.
Mengonfigurasi jaringan dan subnet
Dalam jaringan VPC, konfigurasikan subnet di setiap region tempat
aturan penerusan load balancer Anda akan dikonfigurasi. Selain itu, konfigurasikan proxy-only-subnet
di setiap region tempat Anda ingin mengonfigurasi load balancer.
Contoh ini menggunakan jaringan, region, dan subnet VPC berikut:
Jaringan. Jaringan ini adalah jaringan VPC mode kustom bernama
lb-network
.Subnet untuk load balancer. Subnet bernama
subnet-us
di wilayahus-east1
menggunakan10.1.2.0/24
untuk rentang IP utamanya. Subnet bernamasubnet-asia
di wilayahasia-east1
menggunakan10.1.3.0/24
untuk rentang IP utamanya.Subnet untuk proxy Envoy. Subnet bernama
proxy-only-subnet-us-east1
di regionus-east1
menggunakan10.129.0.0/23
untuk rentang IP utamanya. Subnet bernamaproxy-only-subnet-asia-east1
di regionasia-east1
menggunakan10.130.0.0/23
untuk rentang IP utamanya.
Load Balancer Aplikasi internal lintas region dapat diakses dari region mana pun dalam VPC. Jadi, klien dari region mana pun dapat mengakses backend load balancer Anda secara global.
Mengonfigurasi subnet untuk aturan penerusan load balancer
Konsol
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Untuk Name, masukkan
lb-network
.Di bagian Subnet, tetapkan Subnet creation mode ke Custom.
Di bagian New subnet, masukkan informasi berikut:
- Nama:
subnet-us
- Pilih Region:
us-east1
- Rentang alamat IP:
10.1.2.0/24
- Nama:
Klik Selesai.
Klik Tambahkan subnet.
Buat subnet lain untuk aturan penerusan load balancer di region yang berbeda. Di bagian New subnet, masukkan informasi berikut:
- Nama:
subnet-asia
- Region:
asia-east1
- Rentang alamat IP:
10.1.3.0/24
- Nama:
Klik Selesai.
Klik Create.
gcloud
Buat jaringan VPC kustom, bernama
lb-network
, dengan perintahgcloud compute networks create
.gcloud compute networks create lb-network --subnet-mode=custom
Buat subnet di jaringan VPC
lb-network
di regionus-east1
dengan perintahgcloud compute networks subnets create
.gcloud compute networks subnets create subnet-us \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-east1
Buat subnet di jaringan VPC
lb-network
di regionasia-east1
dengan perintahgcloud compute networks subnets create
.gcloud compute networks subnets create subnet-asia \ --network=lb-network \ --range=10.1.3.0/24 \ --region=asia-east1
Mengonfigurasi subnet khusus proxy
Subnet khusus proxy menyediakan kumpulan alamat IP yang digunakan Google Cloud untuk menjalankan proxy Envoy atas nama Anda. Proxy menghentikan koneksi dari klien dan membuat koneksi baru ke backend.
Subnet khusus proxy ini digunakan oleh semua load balancer regional berbasis Envoy di region yang sama dengan jaringan VPC. Hanya boleh ada satu subnet khusus proxy aktif untuk tujuan tertentu, per region, per jaringan.
Konsol
Di Konsol Google Cloud, buka halaman jaringan VPC.
Klik nama jaringan VPC yang Anda buat.
Di tab Subnet, klik Tambahkan subnet.
Masukkan informasi sebagai berikut:
- Nama:
proxy-only-subnet-us
- Region:
us-east1
- Rentang alamat IP:
10.129.0.0/23
- Nama:
Klik Tambahkan.
Buat subnet lain untuk aturan penerusan load balancer di region yang berbeda. Di tab Subnet, klik Tambahkan subnet.
Masukkan informasi sebagai berikut:
- Nama:
proxy-only-subnet-asia
- Region:
asia-east1
- Rentang alamat IP:
10.130.0.0/23
- Nama:
Klik Tambahkan.
gcloud
Buat subnet khusus proxy di region
us-east1
dengan perintahgcloud compute networks subnets create
.gcloud compute networks subnets create proxy-only-subnet-us \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=us-east1 \ --network=lb-network \ --range=10.129.0.0/23
Buat subnet khusus proxy di region
asia-east1
dengan perintahgcloud compute networks subnets create
.gcloud compute networks subnets create proxy-only-subnet-asia \ --purpose=GLOBAL_MANAGED_PROXY \ --role=ACTIVE \ --region=asia-east1 \ --network=lb-network \ --range=10.130.0.0/23
Mengonfigurasi aturan firewall
Contoh ini menggunakan aturan firewall berikut:
Aturan ingress yang mengizinkan akses SSH di port
22
ke VM klien. Dalam contoh ini, aturan firewall ini diberi namafw-allow-ssh
.
Konsol
Di Konsol Google Cloud, buka halaman Firewall policies.
Klik Create firewall rule untuk membuat aturan yang mengizinkan koneksi SSH yang masuk di VM klien:
- Nama:
fw-allow-ssh
- Jaringan:
lb-network
- Direction of traffic: Ingress
- Action on match: Allow
- Targets: Tag target yang ditentukan
- Tag target:
allow-ssh
- Filter sumber: Rentang IPv4
- Rentang IPv4 sumber:
0.0.0.0/0
- Protokol dan port:
- Pilih Protokol dan port yang ditentukan.
- Pilih kotak centang TCP, lalu masukkan
22
untuk nomor port.
- Nama:
Klik Buat.
gcloud
Buat aturan firewall
fw-allow-ssh
untuk mengizinkan konektivitas SSH ke VM dengan tag jaringanallow-ssh
. Jika Anda menghapus--source-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
Mengonfigurasi bucket Cloud Storage
Proses untuk mengonfigurasi bucket Cloud Storage adalah sebagai berikut:
- Buat bucket.
- Salin konten ke bucket.
Membuat bucket Cloud Storage
Dalam contoh ini, Anda membuat dua bucket Cloud Storage, satu di region us-east1
dan satu lagi di region asia-east1
. Untuk deployment produksi, sebaiknya pilih bucket multi-region, yang secara otomatis mereplikasi objek di beberapa region Google Cloud . Hal ini dapat meningkatkan
ketersediaan konten dan meningkatkan toleransi kegagalan di seluruh
aplikasi Anda.
Konsol
- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
Klik
Create .Di kotak Beri nama bucket Anda, masukkan nama unik secara global yang mengikuti panduan penamaan.
Klik Pilih lokasi untuk menyimpan data.
Tetapkan Location type ke Region.
Dari daftar region, pilih us-east1.
Klik Buat.
Klik Buckets untuk kembali ke halaman Cloud Storage Buckets. Gunakan petunjuk ini untuk membuat bucket kedua, tetapi tetapkan Location ke asia-east1.
gcloud
Buat bucket pertama di region
us-east1
dengan perintahgcloud storage buckets create
.gcloud storage buckets create gs://BUCKET1_NAME \ --default-storage-class=standard \ --location=us-east1 \ --uniform-bucket-level-access
Buat bucket kedua di region
asia-east1
dengan perintahgcloud storage buckets create
.gcloud storage buckets create gs://BUCKET2_NAME \ --default-storage-class=standard \ --location=asia-east1 \ --uniform-bucket-level-access
Ganti variabel BUCKET1_NAME dan BUCKET2_NAME dengan nama bucket Cloud Storage Anda.
Menyalin file grafis ke bucket Cloud Storage
Agar Anda dapat menguji penyiapan, salin file grafis dari bucket Cloud Storage publik ke bucket Cloud Storage Anda sendiri.
Jalankan perintah berikut di Cloud Shell, dengan mengganti variabel nama bucket dengan nama bucket Cloud Storage unik Anda:
gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/never-fetch/
gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
Membuat bucket Cloud Storage dapat dibaca secara publik
Agar semua objek dalam bucket dapat dibaca oleh semua orang di internet publik,
berikan peran Storage Object Viewer
(roles/storage.objectViewer
) kepada akun utama allUsers
.
Konsol
Untuk memberikan akses kepada semua pengguna agar dapat melihat objek di bucket Anda, ulangi prosedur berikut untuk setiap bucket:
- Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.
Dalam daftar bucket, klik nama bucket yang ingin Anda tampilkan kepada publik.
Pilih tab Permissions di dekat bagian atas halaman.
Di bagian Permissions, klik tombol
Grant access. Dialog Berikan akses akan muncul.Di kolom New principals, masukkan
allUsers
.Di kolom Select a role, masukkan
Storage Object Viewer
di kotak filter lalu pilih Storage Object Viewer dari hasil yang difilter.Klik Simpan.
Klik Allow public access.
gcloud
Untuk memberikan akses kepada semua pengguna agar dapat melihat objek di bucket Anda, jalankan perintah buckets add-iam-policy-binding
.
gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer
Ganti variabel nama bucket dengan nama bucket Cloud Storage unik Anda.
Mengonfigurasi load balancer dengan bucket backend
Bagian ini menunjukkan cara membuat resource berikut untuk Load Balancer Aplikasi internal lintas region:
- Dua bucket backend. Bucket backend berfungsi sebagai wrapper untuk bucket Cloud Storage yang Anda buat sebelumnya.
- Peta URL
- Proxy target
- Dua aturan penerusan global dengan alamat IP regional. Aturan penerusan diberi alamat IP dari subnet yang dibuat untuk aturan penerusan load balancer. Jika Anda mencoba menetapkan alamat IP ke aturan penerusan dari subnet khusus proxy, pembuatan aturan penerusan akan gagal.
Dalam contoh ini, Anda dapat menggunakan HTTP atau HTTPS sebagai protokol permintaan dan respons antara klien dan load balancer. Untuk membuat load balancer HTTPS, Anda harus menambahkan resource sertifikat SSL ke frontend load balancer.
Untuk membuat komponen load balancing yang disebutkan di atas menggunakan gcloud CLI, ikuti langkah-langkah berikut:
Buat dua bucket backend, satu di region
us-east1
dan satu lagi di regionasia-east1
dengan perintahgcloud beta compute backend-buckets create
. Bucket backend memiliki skema load balancingINTERNAL_MANAGED
.gcloud beta compute backend-buckets create backend-bucket-cats \ --gcs-bucket-name=BUCKET1_NAME \ --load-balancing-scheme=INTERNAL_MANAGED
gcloud beta compute backend-buckets create backend-bucket-dogs \ --gcs-bucket-name=BUCKET2_NAME \ --load-balancing-scheme=INTERNAL_MANAGED
Buat peta URL untuk mengarahkan permintaan masuk ke bucket backend dengan perintah
gcloud compute url-maps create
.gcloud compute url-maps create lb-map \ --default-backend-bucket=backend-bucket-cats \ --global
Konfigurasikan aturan host dan jalur peta URL dengan perintah
gcloud compute url-maps add-path-matcher
.Dalam contoh ini, bucket backend default adalah
backend-bucket-cats
, yang menangani semua jalur yang ada di dalamnya. Namun, setiap permintaan yang menargetkanhttp://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg
akan menggunakan backendbackend-bucket-dogs
. Misalnya, jika folder/love-to-fetch/
juga ada dalam backend default Anda (backend-bucket-cats
), load balancer akan memprioritaskan backendbackend-bucket-dogs
karena ada aturan jalur tertentu untuk/love-to-fetch/*
.gcloud compute url-maps add-path-matcher lb-map \ --path-matcher-name=path-matcher-pets \ --new-hosts=* \ --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \ --default-backend-bucket=backend-bucket-cats
Buat proxy target dengan perintah
gcloud compute target-http-proxies create
.Untuk traffic HTTP, buat proxy HTTP target untuk merutekan permintaan ke peta URL:
gcloud compute target-http-proxies create http-proxy \ --url-map=lb-map \ --global
Untuk traffic HTTPS, buat proxy HTTPS target untuk merutekan permintaan ke peta URL. Proxy adalah bagian dari load balancer yang menyimpan sertifikat SSL untuk load balancer HTTPS. Setelah membuat sertifikat, Anda dapat melampirkan sertifikat ke proxy target HTTPS.
gcloud compute target-https-proxies create https-proxy \ --url-map=lb-map \ --certificate-manager-certificates=CERTIFICATE_NAME \ --global
Ganti
CERTIFICATE_NAME
dengan nama sertifikat SSL yang Anda buat menggunakan Pengelola Sertifikat.Buat dua aturan penerusan global, satu dengan alamat IP di wilayah
us-east1
dan satu lagi dengan alamat IP di wilayahasia-east1
dengan perintahgcloud compute forwarding-rules create
.Jika Anda ingin mencadangkan alamat IP internal statis untuk aturan penerusan load balancer, lihat Mencadangkan alamat IPv4 atau IPv6 internal statis yang baru. Menyimpan alamat IP bersifat opsional untuk aturan penerusan HTTP; tetapi, Anda harus menyimpan alamat IP untuk aturan penerusan HTTPS.
Dalam contoh ini, alamat IP ephemeral dikaitkan dengan aturan penerusan HTTP load balancer Anda. Alamat IP sementara tetap konstan selama aturan penerusan ada. Jika Anda perlu menghapus aturan penerusan dan membuatnya ulang, aturan penerusan mungkin akan menerima alamat IP baru.
Untuk traffic HTTP, buat aturan penerusan global untuk merutekan permintaan masuk ke proxy target HTTP:
gcloud compute forwarding-rules create http-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --ports=80 \ --target-http-proxy=http-proxy \ --global-target-http-proxy \ --global
gcloud compute forwarding-rules create http-fw-rule-2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-asia \ --subnet-region=asia-east1 \ --ports=80 \ --target-http-proxy=http-proxy \ --global-target-http-proxy \ --global
Untuk traffic HTTPS, buat aturan penerusan global untuk merutekan permintaan masuk ke proxy target HTTPS:
gcloud compute forwarding-rules create https-fw-rule-1 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-us \ --subnet-region=us-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --target-https-proxy=https-proxy \ --global-target-https-proxy \ --global
gcloud compute forwarding-rules create https-fw-rule-2 \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=lb-network \ --subnet=subnet-asia \ --subnet-region=asia-east1 \ --address=RESERVED_IP_ADDRESS \ --ports=443 \ --target-https-proxy=https-proxy \ --global-target-https-proxy \ --global
Mengirim permintaan HTTP ke load balancer
Kirim permintaan dari VM klien internal ke aturan penerusan load balancer.
Mendapatkan alamat IP aturan penerusan load balancer
Dapatkan alamat IP aturan penerusan load balancer (
http-fw-rule-1
), yang berada di regionus-east1
.gcloud compute forwarding-rules describe http-fw-rule-1 \ --global
Dapatkan alamat IP aturan penerusan load balancer (
http-fw-rule-2
), yang berada di regionasia-east1
.gcloud compute forwarding-rules describe http-fw-rule-2 \ --global
Membuat VM klien untuk menguji konektivitas
Buat VM klien di region
us-east1
.gcloud compute instances create client-a \ --image-family=debian-12 \ --image-project=debian-cloud \ --network=lb-network \ --subnet=subnet-us \ --zone=us-east1-c \ --tags=allow-ssh
Buat koneksi SSH ke VM klien.
gcloud compute ssh client-a --zone=us-east1-c
Dalam contoh ini, Load Balancer Aplikasi internal lintas region memiliki alamat IP virtual (VIP) frontend di region
us-east1
danasia-east1
di jaringan VPC. Buat permintaan HTTP ke VIP di salah satu region menggunakan curl.curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/never-fetch/three-cats.jpg --output three-cats.jpg
Menguji ketersediaan tinggi
Hapus aturan penerusan (
http-fw-rule-1
) di regionus-east1
untuk menyimulasikan pemadaman regional dan memeriksa apakah klien di regionus-east
masih dapat mengakses data dari bucket backend.gcloud compute forwarding-rules delete http-fw-rule-1 \ --global
Buat permintaan HTTP ke VIP aturan penerusan di salah satu wilayah menggunakan curl.
curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
curl http://FORWARDING_RULE_IP_ADDRESS/never-fetch/three-cats.jpg --output three-cats.jpg
Jika Anda membuat permintaan HTTP ke VIP di region
us-east1
, kebijakan pemilihan rute DNS akan mendeteksi bahwa VIP ini tidak merespons, dan menampilkan VIP berikutnya yang paling optimal kepada klien (dalam contoh ini,asia-east1
), sehingga memastikan aplikasi Anda tetap aktif bahkan selama pemadaman layanan regional.
Langkah berikutnya
- Ringkasan Load Balancer Aplikasi Internal
- Subnet khusus proxy untuk load balancer berbasis Envoy
- Mengelola sertifikat
- Membersihkan penyiapan load balancing