Untuk menampilkan respons yang lebih cepat kepada pengguna Anda di seluruh dunia, Anda perlu men-deploy layanan di beberapa region dan merutekan pengguna Anda ke region terdekat.
Karena layanan Cloud Run di-deploy ke masing-masing region, Anda perlu mengonfigurasi Load Balancer Aplikasi eksternal untuk merutekan pengguna Anda ke berbagai region layanan Anda.
Panduan ini menunjukkan cara mengonfigurasi Load Balancer Aplikasi eksternal dengan domain yang diamankan dengan sertifikat TLS yang terkelola yang mengarah ke alamat IP anycast global, yang merutekan pengguna ke pusat data Google terdekat tempat layanan Anda di-deploy.
Arsitektur yang dijelaskan dalam panduan ini tidak secara otomatis merutekan permintaan ke region yang berbeda saat layanan Cloud Run regional menjadi tidak responsif atau mulai menampilkan error. Untuk meningkatkan ketersediaan layanan multi-region Anda, Anda dapat mengonfigurasi pendeteksi pencilan untuk mengidentifikasi layanan Cloud Run yang tidak responsif berdasarkan tingkat error HTTP-nya dan membagi beberapa permintaan ke region yang lain.
Membuat load balancer
Pembuatan load balancer eksternal melibatkan pembuatan berbagai resource jaringan dan menghubungkannya bersama-sama:
Command line
- Cadangkan alamat IP statis sehingga Anda tidak perlu memperbarui Data DNS
saat Anda membuat ulang load balancer Anda.
Pada perintah di atas, ganti SERVICE_IP dengan nama untuk IP resource alamat (misalnya,gcloud compute addresses create --global SERVICE_IP
myservice-ip
).Alamat IP ini adalah alamat IPv4 anycast global yang merutekan ke pusat data Google atau titik kehadiran yang terdekat dengan pengunjung Anda.
-
Buat layanan backend.
gcloud compute backend-services create --global BACKEND_NAME
Pada perintah di atas, ganti BACKEND_NAME dengan nama yang ingin Anda berikan kepada layanan backend (contohnya
myservice-backend
). - Membuat peta URL.
gcloud compute url-maps create URLMAP_NAME --default-service=BACKEND_NAME
Ganti URLMAP_NAME dengan nama yang ingin Anda berikan ke peta URL (contohnya
myservice-urlmap
). - Buat sertifikat TLS yang terkelola untuk domain Anda guna
menyalurkan traffic HTTPS. (Ganti example.com dengan nama domain Anda.)
gcloud compute ssl-certificates create CERT_NAME \ --domains=example.com
Ganti CERT_NAME dengan nama yang Anda inginkan untuk sertifikat SSL yang terkelola (contohnya
myservice-cert
). - Buat proxy HTTPS target.
gcloud compute target-https-proxies create HTTPS_PROXY_NAME \ --ssl-certificates=CERT_NAME \ --url-map=URLMAP_NAME
Ganti HTTPS_PROXY_NAME dengan nama yang ingin Anda berikan ke proxy HTTPS target (contohnya
myservice-https
). - Buat aturan penerusan yang menghubungkan resource jaringan yang Anda buat
ke alamat IP.
gcloud compute forwarding-rules create --global FORWARDING_RULE_NAME \ --target-https-proxy=HTTPS_PROXY_NAME \ --address=SERVICE_IP \ --ports=443
Ganti FORWARDING_RULE_NAME dengan nama resource aturan penerusan yang ingin Anda buat (contohnya
myservice-lb
).
Terraform
Selain langkah-langkah yang dijelaskan di bagian ini, Anda dapat menggunakan Modul Terraform Load Balancer HTTP Global.
Tambahkan kode berikut ke file terraform Anda (contohnya main.tf
):
-
Konfigurasikan alamat IP:
Konfigurasikan nama resource alamat IP Anda menjadi
myservice-service-ip
. Anda dapat mengubahnya ke nilai Anda sendiri. Alamat IP ini adalah alamat IPv4 anycast global yang dirutekan ke pusat data Google atau titik kehadiran yang terdekat dengan pengunjung Anda. -
Buat dan konfigurasikan layanan backend:
Resource ini mengonfigurasi layanan backend agar diberi nama
myservice-backend
. Anda dapat mengubahnya ke nilai Anda sendiri. -
Konfigurasikan peta URL:
Hubungkan resource layanan backend (
myservice-backend
) ke resource peta URL baru (myservice-lb-urlmap
). Anda dapat mengubahnya ke nilai Anda sendiri. -
Buat sertifikat TLS yang terkelola untuk domain Anda guna menyalurkan traffic HTTPS. Ganti
example.com
dengan nama domain Anda di resourcegoogle_compute_managed_ssl_certificate
: -
Konfigurasikan proxy HTTPS:
Buat resource
google_compute_target_https_proxy
dengan nama targetmyservice-https-proxy
dan hubungkan sertifikat TLS (myservice-ssl-cert
) dan resource pemetaan URL (myservice-lb-urlmap
) yang dibuat sebelumnya. Anda dapat mengubahnya ke nilai Anda sendiri. -
Konfigurasikan aturan penerusan:
Buat resource
google_compute_global_forwarding_rule
dengan nama targetmyservice-https-proxy
dan hubungkan target proxy HTTPS (myservice-https-proxy
) dan resource Alamat IP (myservice-service-ip
) yang dibuat sebelumnya. Anda dapat mengubahnya ke nilai Anda sendiri. -
Terapkan konfigurasi ini:
Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.
Menyiapkan Cloud Shell
- Luncurkan Cloud Shell.
-
Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.
Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.
Menyiapkan direktori
Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).
-
Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki
ekstensi
.tf
—misalnyamain.tf
. Dalam tutorial ini, file ini disebut sebagaimain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.
Salin kode contoh ke dalam
main.tf
yang baru dibuat.Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.
- Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
- Simpan perubahan Anda.
-
Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
terraform init
Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi
-upgrade
:terraform init -upgrade
Menerapkan perubahan
-
Tinjau konfigurasi dan pastikan resource yang akan dibuat atau
diupdate oleh Terraform sesuai yang Anda inginkan:
terraform plan
Koreksi konfigurasi jika diperlukan.
-
Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan
yes
pada prompt:terraform apply
Tunggu hingga Terraform menampilkan pesan "Apply complete!".
- Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.
Men-deploy ke beberapa region
Deploy Layanan Anda ke region Cloud Run yang tersedia. Untuk memudahkan pengelolaan, Anda dapat menggunakan nama layanan yang sama di beberapa region.
Command line
- Pilih region tempat Anda ingin menyediakan layanan.
- Deploy layanan Cloud Run Anda ke setiap region.
-
gcloud run deploy SERVICE_NAME \ --allow-unauthenticated \ --image=IMAGE_URL \ --region=REGION
Ganti variabel berikut:
- REGION dengan salah satu region tempat Anda ingin men-deploy.
- SERVICE_NAME dengan nama layanan Anda. Menggunakan nama layanan yang sama di beberapa region akan mempermudah pelacakan deployment multi-region Anda.
- IMAGE_URL dengan referensi ke image container,
contohnya,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL berbentukLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
- Ulangi langkah sebelumnya untuk setiap wilayah.
Terraform
Konfigurasikan layanan untuk setiap region yang ditentukan dalam variabel run_regions
.
Melakukan loop pada semua region yang ditentukan dalam variabel run_regions
dan memberi nama setiap layanan baru seperti berikut:
myservice-run-app-${var.run_regions[count.index]}
. Penetapan lokasi layanan juga diterapkan.
Ganti image default us-docker.pkg.dev/cloudrun/container/hello"
dengan image Anda sendiri.
Lokasi Cloud Run
Cloud Run bersifat regional, berarti infrastruktur yang
menjalankan layanan Cloud Run Anda terletak di region tertentu dan
dikelola oleh Google agar tersedia secara redundan di
semua zona dalam region tersebut.
Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama
untuk memilih region tempat layanan Cloud Run dijalankan.
Pada umumnya, Anda dapat memilih region yang paling dekat dengan pengguna Anda, tetapi Anda harus mempertimbangkan
lokasi dari produk Google Cloud
lain yang digunakan oleh layanan Cloud Run Anda.
Menggunakan produk Google Cloud secara bersamaan di beberapa lokasi dapat memengaruhi
latensi serta biaya layanan Anda.
Cloud Run tersedia di region berikut:
Tergantung harga Tingkat 1
asia-east1
(Taiwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)europe-north1
(Finlandia) Rendah CO2europe-southwest1
(Madrid) Rendah CO2europe-west1
(Belgia) Rendah CO2europe-west4
(Belanda) Rendah CO2europe-west8
(Milan)europe-west9
(Paris) Rendah CO2me-west1
(Tel Aviv)us-central1
(Iowa) Rendah CO2us-east1
(South Carolina)us-east4
(North Virginia)us-east5
(Columbus)us-south1
(Dallas) Rendah CO2us-west1
(Oregon) Rendah CO2
Tergantung harga Tingkat 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Seoul, Korea Selatan)asia-southeast1
(Singapura)asia-southeast2
(Jakarta)asia-south1
(Mumbai, India)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warsawa, Polandia)europe-west10
(Berlin) Rendah CO2europe-west12
(Turin)europe-west2
(London, Inggris) Rendah CO2europe-west3
(Frankfurt, Jerman) Rendah CO2europe-west6
(Zurich, Swiss) Rendah CO2me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) Rendah CO2northamerica-northeast2
(Toronto) Rendah CO2southamerica-east1
(Sao Paulo, Brasil) Rendah CO2southamerica-west1
(Santiago, Cile) Rendah CO2us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Jika sudah membuat layanan Cloud Run, Anda dapat melihat region di dasbor Cloud Run di Konsol Google Cloud.
Mengonfigurasi grup endpoint jaringan regional
Untuk setiap region tempat Anda men-deploy di langkah sebelumnya, Anda harus membuat grup endpoint jaringan tanpa server (NEG) dan menambahkannya ke layanan backend, menggunakan petunjuk berikut:
Command line
-
Buat grup endpoint jaringan untuk layanan Cloud Run di
REGION
:gcloud compute network-endpoint-groups create NEG_NAME \ --region=REGION \ --network-endpoint-type=SERVERLESS \ --cloud-run-service=SERVICE_NAME
Pada perintah di atas, ganti:
- NEG_NAME dengan nama resource grup endpoint jaringan. (contohnya `myservice-neg-uscentral1`)
- REGION dengan [region][loc] tempat layanan Anda di-deploy.
- SERVICE_NAME dengan nama layanan Anda.
-
Tambahkan grup endpoint jaringan ke layanan backend:
gcloud compute backend-services add-backend --global BACKEND_NAME \ --network-endpoint-group-region=REGION \ --network-endpoint-group=NEG_NAME
Tentukan NEG_NAME yang telah Anda buat di langkah sebelumnya untuk region.
-
Ulangi langkah-langkah di atas untuk setiap region.
Terraform
-
Konfigurasikan grup endpoint jaringan dengan nama
myservice-neg
untuk layanan Cloud Run bagi setiap region yang ditentukan dalam variabelrun_regions
: -
Konfigurasikan layanan backend untuk menyertakan grup endpoint jaringan (
myservice-neg
):
Mengonfigurasi data DNS di domain Anda
Untuk mengarahkan nama domain Anda ke aturan penerusan yang Anda buat, Anda harus memperbarui data DNS-nya dengan alamat IP yang Anda buat.
Temukan alamat IP yang dicadangkan dari load balancer dengan menjalankan:
gcloud compute addresses describe --global SERVICE_IP --format='value(address)'
Ganti SERVICE_IP dengan nama alamat IP yang Anda buat sebelumnya. Perintah ini akan mencetak alamat IP ke output.
Update data DNS domain Anda dengan menambahkan kumpulan data
A
menggunakan alamat IP ini.
Mengonfigurasi audiens kustom jika menggunakan layanan terautentikasi
Layanan terautentikasi dilindungi oleh IAM. Layanan Cloud Run tersebut memerlukan autentikasi klien yang mendeklarasikan penerima permintaan yang dituju pada waktu pembuatan kredensial (audiens).
Audiens biasanya merupakan URL lengkap layanan target, yang secara default bagi layanan Cloud Run
adalah URL yang dihasilkan dengan akhiran run.app
. Namun, dalam deployment multi-region,
klien tidak dapat mengetahui terlebih dahulu ke layanan regional mana permintaan akan dirutekan.
Jadi, untuk deployment multi-region, konfigurasikan layanan Anda untuk menggunakan
audiens kustom.
Menunggu load balancer tersedia
Setelah mengonfigurasi domain dengan alamat IP load balancer, Anda harus menunggu beberapa saat agar data DNS diterapkan. Demikian pula, Anda perlu menunggu beberapa saat hingga sertifikat TLS yang terkelola diterbitkan untuk domain Anda dan siap untuk mulai menyalurkan traffic HTTPS secara global.
Mungkin perlu waktu hingga 30 menit agar load balancer mulai menyalurkan traffic.
Setelah siap, buka URL situs Anda dengan awalan https://
untuk mencobanya.
Verifikasi status
Untuk memeriksa status penerapan data DNS, menggunakan aplikasi utilitas command line
dig
:dig A +short example.com
Output akan menampilkan alamat IP yang Anda konfigurasikan di data DNS Anda.
Periksa status penerbitan sertifikat Anda yang terkelola, jalankan:
gcloud compute ssl-certificates describe CERT_NAME
Ganti CERT_NAME dengan nama yang telah Anda pilih sebelumnya untuk resource sertifikat SSL.
Output akan menampilkan baris yang berisi
status: ACTIVE
.
Menyiapkan pengalihan HTTP-ke-HTTPS
Secara default, aturan penerusan hanya menangani satu protokol, sehingga
permintaan ke endpoint http://
Anda akan merespons dengan pesan 404 Not Found. Jika Anda
memerlukan permintaan ke URL http://
Anda agar dialihkan ke protokol https://
,
Anda harus membuat peta URL tambahan dan aturan penerusan dengan menggunakan
petunjuk berikut:
Command line
-
Buat peta URL dengan aturan pengalihan.
gcloud compute url-maps import HTTP_URLMAP_NAME \ --global \ --source /dev/stdin <<EOF name: HTTP_URLMAP_NAME defaultUrlRedirect: redirectResponseCode: MOVED_PERMANENTLY_DEFAULT httpsRedirect: True EOF
Ganti HTTP_URLMAP_NAME dengan nama resource peta URL yang akan Anda buat (contohnya
myservice-httpredirect
). -
Buat proxy HTTP target dengan peta URL.
gcloud compute target-http-proxies create HTTP_PROXY_NAME \ --url-map=HTTP_URLMAP_NAME
Ganti HTTP_PROXY_NAME dengan nama proxy HTTP target yang akan Anda buat (contohnya
myservice-http
). -
Buat aturan penerusan di port
80
dengan alamat IP yang dicadangkan yang sama.gcloud compute forwarding-rules create --global HTTP_FORWARDING_RULE_NAME \ --target-http-proxy=HTTP_PROXY_NAME \ --address=SERVICE_IP \ --ports=80 \
Ganti HTTP_FORWARDING_RULE_NAME dengan nama aturan penerusan baru yang akan Anda buat (contohnya
myservice-httplb
).
Terraform
-
Buat resource peta URL dengan aturan pengalihan:
-
Buaa proxy HTTP target dengan resource peta URL yang baru dibuat (
myservice-https-urlmap
): -
Buat aturan penerusan di port
80
dengan resource alamat IP yang dicadangkan yang sama (myservice-http-proxy
):
Menggunakan langganan push Pub/Sub terautentikasi dengan deployment multi-region
Layanan Pub/Sub secara default mengirimkan pesan ke endpoint push di region Google Cloud yang sama tempat layanan Pub/Sub menyimpan pesan. Untuk solusi atas perilaku ini, lihat Menggunakan langganan push Pub/Sub yang terautentikasi dengan deployment Cloud Run multi-region.