Mengotomatiskan failover lintas regional dengan Service Health

Panduan ini menunjukkan cara men-deploy layanan Cloud Run multi-region yang sangat tersedia dengan failover dan failback otomatis untuk traffic eksternal. Anda dapat mengonfigurasi layanan Cloud Run dengan fitur ini dengan menyiapkan NEG Serverless, Load Balancer Aplikasi eksternal global, dan pemeriksaan kesiapan. Untuk informasi selengkapnya, lihat Menyajikan traffic dari beberapa region.

Tujuan

Dalam tutorial ini, Anda akan:

  1. Menyiapkan aplikasi contoh
  2. Men-deploy layanan Cloud Run di dua region dengan pemeriksaan kesiapan
  3. Menyiapkan Load Balancer Aplikasi eksternal global
  4. Menambahkan layanan Anda melalui NEG serverless
  5. Menguji failover

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. In the Google Cloud console, on 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. Aktifkan Artifact Registry API, Cloud Build API, Cloud Run Admin API, Network Services API, dan Compute Engine API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (roles/serviceusage.serviceUsageAdmin), yang berisi izin serviceusage.services.enable. Pelajari cara memberikan peran.

    Aktifkan API

  7. Instal dan lakukan inisialisasi gcloud CLI.
  8. Perbarui komponen:
    gcloud components update
  9. Tetapkan variabel konfigurasi yang digunakan dalam tutorial ini:
    PROJECT_ID= gcloud config set core/project PROJECT_ID
    PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
    SERVICE=health-example
    REGION_A=us-west1
    REGION_B=europe-west1
    Ganti PROJECT_ID dengan project ID Google Cloud Anda.

Menetapkan peran yang diperlukan

Untuk men-deploy dari sumber dengan build, Anda atau administrator Anda harus memberikan peran IAM berikut kepada akun layanan Cloud Build.

Klik untuk melihat peran yang diperlukan untuk akun layanan Cloud Build

Cloud Build secara otomatis menggunakan akun layanan default Compute Engine sebagai akun layanan Cloud Build default untuk membangun kode sumber dan resource Cloud Run Anda, kecuali jika Anda mengganti perilaku ini. Agar Cloud Build dapat membangun sumber Anda, minta administrator Anda untuk memberikan peran Cloud Run Builder (roles/run.builder) ke akun layanan default Compute Engine di project Anda:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Ganti PROJECT_NUMBER dengan nomor project Google Cloud Anda, dan PROJECT_ID dengan ID project Google Cloud Anda. Untuk mengetahui petunjuk mendetail tentang cara menemukan project ID dan nomor project Anda, lihat Membuat dan mengelola project.

Pemberian peran builder Cloud Run ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk berlaku.

Untuk mendapatkan izin yang diperlukan identitas layanan Anda untuk mengakses file dan bucket Cloud Storage, minta administrator Anda untuk memberi peran Storage Admin (roles/storage.admin) kepada identitas layanan. Untuk mengetahui detail selengkapnya tentang peran dan izin Cloud Storage, lihat IAM untuk Cloud Storage.

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika layanan Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.

Menyiapkan aplikasi contoh

Untuk mengambil contoh kode agar dapat digunakan:

  1. Clone repositori contoh ke komputer lokal Anda:

    git clone https://github.com/GoogleCloudPlatform/golang-samples
    
  2. Ubah ke direktori yang memuat kode contoh Cloud Run:

    cd golang-samples/run/service-health
    

Men-deploy layanan Cloud Run di dua region dengan pemeriksaan kesiapan

Pengalihan memerlukan setidaknya dua layanan dari region yang berbeda. Untuk men-deploy layanan dari sumber di dua region berbeda dengan pemeriksaan kesiapan, jalankan perintah berikut:

  1. Deploy layanan health-example di us-west1 dan europe-west1 dari direktori sumber. Anda memerlukan setidaknya satu instance minimum untuk mengonfigurasi kesehatan layanan dengan pemeriksaan kesiapan:

    gcloud beta run deploy $SERVICE \
    --source=. \
    --regions=$REGION_A,$REGION_B \
    --min=10 \
    --readiness-probe httpGet.path="/are_you_ready"
    
  2. Merespon setiap permintaan untuk menginstal API yang diperlukan dengan merespons y ketika diminta. Anda hanya perlu melakukan ini sekali untuk sebuah project. Respons permintaan lainnya dengan menyediakan platform dan region, jika Anda belum menetapkan setelan default untuk permintaan tersebut seperti yang dijelaskan di bagian Sebelum memulai.

Menyiapkan Load Balancer Aplikasi eksternal global

Untuk menyiapkan Load Balancer Aplikasi eksternal global guna merutekan traffic antara us-west1 dan europe-west1, ikuti langkah-langkah berikut:

  1. Buat layanan backend:

    gcloud compute backend-services create $SERVICE-bs \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --global
    
  2. Siapkan alamat IP eksternal statis global untuk menjangkau load balancer Anda:

    gcloud compute addresses create $SERVICE-ip \
      --network-tier=PREMIUM \
      --ip-version=IPV4 \
      --global
    
  3. Buat peta URL untuk mengarahkan permintaan masuk ke layanan backend:

    gcloud compute url-maps create $SERVICE-lb \
      --default-service $SERVICE-bs
    
  4. Buat proxy HTTP target untuk mengarahkan permintaan ke peta URL:

    gcloud compute target-http-proxies create $SERVICE-hp \
    --url-map=$SERVICE-lb
    
  5. Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy:

    gcloud compute forwarding-rules create $SERVICE-fr \
      --load-balancing-scheme=EXTERNAL_MANAGED \
      --network-tier=PREMIUM \
      --address=$SERVICE-ip \
      --target-http-proxy=$SERVICE-hp \
      --global \
      --ports=80
    

Menambahkan layanan Anda melalui NEG serverless

Untuk menambahkan layanan yang Anda deploy di us-west1 dan europe-west1 menggunakan NEG Serverless, ikuti langkah-langkah berikut:

  1. Buat grup endpoint jaringan serverless (NEG) untuk layanan Cloud Run Anda di us-west1 dan europe-west1:

    gcloud compute network-endpoint-groups create $SERVICE-neg-$REGION_A \
        --region $REGION_A \
        --network-endpoint-type=serverless \
        --cloud-run-service=$SERVICE
    
    gcloud compute network-endpoint-groups create $SERVICE-neg-$REGION_B \
        --region $REGION_B \
        --network-endpoint-type=serverless \
        --cloud-run-service=$SERVICE
    
  2. Tambahkan NEG serverless sebagai backend ke layanan backend di us-west1 dan europe-west1:

    gcloud compute backend-services add-backend $SERVICE-bs \
        --global \
        --network-endpoint-group=$SERVICE-neg-$REGION_A \
        --network-endpoint-group-region=$REGION_A
    
    gcloud compute backend-services add-backend $SERVICE-bs \
        --global \
        --network-endpoint-group=$SERVICE-neg-$REGION_B \
        --network-endpoint-group-region=$REGION_B
    

Untuk opsi konfigurasi tambahan, lihat Menyiapkan Load Balancer Aplikasi eksternal global dengan Cloud Run.

Menguji failover

Untuk menguji failover guna memastikan keandalan dan ketahanan layanan Cloud Run Anda, ikuti langkah-langkah berikut:

  1. Jalankan perintah berikut untuk mendapatkan alamat IP load balancer Anda:

    LBIP=$(gcloud compute addresses describe $SERVICE-ip --global --format='value(address)')
    
  2. Opsional: Kirim permintaan ke load balancer jika layanan Anda memerlukan autentikasi:

    curl  -H "Authorization: Bearer $(gcloud auth print-identity-token)" $LBIP
    
  3. Dapatkan nilai variabel LBIP dengan menjalankan perintah echo $LBIP. Perintah ini akan menampilkan alamat IP load balancer. Misalnya, 11.22.33.44

  4. Untuk menguji failover, buka URL http://LOAD_BALANCER_IP dengan LOAD_BALANCER_IP adalah nilai yang Anda dapatkan pada langkah sebelumnya. Klik tombol aktif/nonaktif untuk wilayah Anda di bagian Wilayah Penayangan. Tindakan ini menetapkan wilayah yang berfungsi dengan baik dan instance yang menyalurkan traffic:

    Mengotomatiskan failover lintas regional dengan kesehatan layanan Cloud Run

Pembersihan

Agar tidak menimbulkan biaya tambahan pada akun Google Cloud Anda, hapus semua resource yang Anda deploy dengan tutorial ini.

Menghapus project

Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan perlu mempertahankannya tanpa perubahan yang Anda tambahkan dalam tutorial ini, hapus resource yang Anda buat untuk tutorial.

Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.

Untuk menghapus project:

  1. Di Konsol Google Cloud , buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource tutorial

  1. Hapus layanan Cloud Run yang Anda deploy dalam tutorial ini. Layanan Cloud Run tidak menimbulkan biaya hingga menerima permintaan.

    Untuk menghapus layanan Cloud Run, jalankan perintah berikut:

    gcloud run services delete SERVICE-NAME

    Ganti SERVICE-NAME dengan nama layanan Anda.

    Anda juga dapat menghapus layanan Cloud Run dari konsolGoogle Cloud .

  2. Hapus konfigurasi region default gcloud yang Anda tambahkan selama penyiapan tutorial:

     gcloud config unset run/region
    
  3. Hapus konfigurasi project:

     gcloud config unset project
    

Langkah berikutnya