Anda menampilkan respons yang lebih cepat kepada pengguna Anda di seluruh dunia dengan men-deploy layanan di beberapa region dan merutekan pengguna Anda ke region terdekat. Men-deploy di beberapa region akan memberikan latensi rendah dan ketersediaan yang lebih tinggi jika terjadi pemadaman layanan regional.
Karena layanan Cloud Run di-deploy ke setiap region, Anda perlu men-deploy layanan ke beberapa region, lalu mengonfigurasi load balancing global untuk layanan tersebut.
Men-deploy layanan ke beberapa region
Anda dapat men-deploy layanan yang sama ke beberapa region menggunakan salah satu metode berikut:
- Ulangi langkah-langkah untuk men-deploy ke satu region.
- Men-deploy layanan multi-region.
Men-deploy layanan multi-region
Bagian ini menunjukkan cara men-deploy dan mengonfigurasi layanan multi-region dari satu perintah gcloud CLI atau file YAML.
gcloud
Untuk membuat dan men-deploy layanan multi-region, jalankan perintah
gcloud beta run deploy
menggunakan flag--regions
:gcloud beta run deploy
SERVICE_NAME
\ --image=IMAGE_URL
\ --regions=REGIONS
Ganti kode berikut:
SERVICE_NAME
: Nama layanan multi-region yang ingin Anda deploy.IMAGE_URL
: Referensi ke image container, misalnya,us-docker.pkg.dev/cloudrun/container/hello:latest
.REGIONS
: Daftar beberapa region tempat Anda ingin men-deploy. Contoh,us-central1,asia-east1
.
YAML
Buat file YAML untuk layanan Anda, menggunakan atribut
run.googleapis.com/regions
untuk menetapkan beberapa wilayah tempat Anda ingin men-deploy layanan:apiVersion: serving.knative.dev/v1 kind: Service metadata: name:
SERVICE_NAME
annotations: run.googleapis.com/launch-stage: BETA run.googleapis.com/regions:REGIONS
spec: template: spec: containers: - image:IMAGE_URL
Ganti kode berikut:
SERVICE_NAME
: Nama layanan multi-region yang ingin Anda deploy.REGIONS
: Daftar beberapa region yang ingin Anda perbarui. Contoh,us-central1,asia-east1
.IMAGE_URL
: Referensi ke image container, misalnya,us-docker.pkg.dev/cloudrun/container/hello:latest
.
Buat layanan menggunakan perintah berikut:
gcloud beta run multi-region-services replace service.yaml
Mengupdate layanan multi-region
Bagian ini menunjukkan cara menambahkan atau menghapus region dari layanan multi-region dari satu perintah gcloud CLI atau file YAML.
gcloud
Untuk menambahkan atau menghapus region dari layanan multi-region, jalankan
perintah gcloud beta run multi-region-services update
.
Untuk menambahkan layanan multi-region ke satu atau beberapa region tambahan, gunakan flag
--add-regions
:gcloud beta run multi-region-services update
SERVICE_NAME
\ --add-regions=REGIONS
Untuk menghapus layanan multi-region dari satu atau beberapa region, gunakan flag
--remove-regions
:gcloud beta run multi-region-services update
SERVICE_NAME
\ --remove-regions=REGIONS
Ganti kode berikut:
SERVICE_NAME
: Nama layanan multi-region yang ingin Anda perbarui.REGIONS
: Region tempat Anda ingin menambahkan atau menghapus layanan. Contoh,us-central1,asia-east1
.
YAML
Untuk mengupdate layanan multi-region yang ada, download konfigurasi YAML-nya:
gcloud beta run multi-region-services describe SERVICE_NAME --format export > service.yaml
Perbarui atribut
run.googleapis.com/regions
untuk menambahkan atau menghapus daftar wilayah tempat Anda ingin layanan di-deploy:apiVersion: serving.knative.dev/v1 kind: Service metadata: name:
SERVICE_NAME
annotations: run.googleapis.com/launch-stage: BETA run.googleapis.com/regions:REGIONS
Ganti kode berikut:
SERVICE_NAME
: Nama layanan multi-region yang ingin Anda deploy.REGIONS
: Daftar baru beberapa region yang ingin Anda deploy revisi layanannya.
Update layanan menggunakan perintah berikut:
gcloud beta run multi-region-services replace service.yaml
Menghapus layanan multi-region
Untuk menghapus layanan multi-region, jalankan perintah
gcloud beta run multi-region-services delete
:gcloud beta run multi-region-services delete
SERVICE_NAME
Ganti
SERVICE_NAME
dengan nama layanan multi-region yang ingin Anda hapus.
Mengonfigurasi load balancing global
Bagian 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 di bagian berikut tidak secara otomatis merutekan permintaan ke region yang berbeda saat layanan Cloud Run regional menjadi tidak responsif atau 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:
gcloud CLI
- 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 resource alamat IP (misalnyagcloud 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 (misalnya 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.
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:
gcloud CLI
-
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
Ganti kode berikut:
- 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 Anda buat di langkah sebelumnya untuk region.
-
Ulangi langkah-langkah sebelumnya 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, perbarui data DNS-nya dengan alamat IP yang Anda buat.
Temukan alamat IP yang dicadangkan dari load balancer dengan menjalankan perintah berikut:
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, tunggu data DNS diterapkan. Demikian pula, tunggu 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, gunakan 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 dengan menjalankan perintah berikut:
gcloud compute ssl-certificates describe CERT_NAME
Ganti CERT_NAME dengan nama yang sebelumnya Anda pilih untuk resource sertifikat SSL.
Output 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 merespons dengan pesan "404 Not Found". Jika Anda
memerlukan permintaan ke URL http://
Anda agar dialihkan ke protokol https://
, buat peta URL tambahan dan aturan penerusan menggunakan petunjuk berikut:
gcloud CLI
-
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 (misalnya,
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 (misalnya,
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 (misalnya,
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.