Menetapkan afinitas sesi (layanan)

Halaman ini menunjukkan cara mengaktifkan afinitas sesi untuk revisi layanan Cloud Run Anda.

Cara kerja afinitas sesi

Secara default, afinitas sesi tidak diaktifkan, sehingga permintaan dari klien yang sama mungkin ditangani oleh instance yang berbeda, seperti yang ditunjukkan di sini: gambar

Jika Anda mengaktifkan afinitas sesi, Cloud Run akan merutekan permintaan berurutan untuk klien tertentu ke instance revisi yang sama. Cloud Run menggunakan cookie afinitas sesi dengan TTL selama 30 hari, dan memeriksa nilainya untuk mengidentifikasi beberapa permintaan oleh klien yang sama dan mengarahkan semua permintaan tersebut ke instance yang sama, seperti yang ditampilkan di sini: gambar

Tindakan utama yang harus diperhatikan

Seperti yang ditunjukkan pada diagram di atas, dengan afinitas sesi yang diaktifkan, klien akan menjangkau instance yang sama. Namun, perhatikan bahwa instance dapat menerima permintaan dari klien yang berbeda. Afinitas sesi tidak berarti bahwa instance dikhususkan untuk satu klien.

Karena tindakan penskalaan otomatis Cloud Run, afinitas sesi adalah afinitas dengan upaya terbaik. Jika instance dihentikan karena alasan apa pun, atau mencapai serentak permintaan maksimum atau penggunaan CPU maksimum, afinitas sesi akan rusak dan permintaan selanjutnya akan dirutekan ke instance yang berbeda.

Meskipun data sesi klien dapat di-cache dalam memori instance, Anda tidak dapat berasumsi bahwa klien akan selalu terhubung kembali ke instance yang sama, bahkan ketika afinitas sesi diaktifkan.

Afinitas sesi Cloud Load Balancing dan afinitas sesi Cloud Run adalah dua implementasi afinitas sesi yang terpisah dan independen. Anda dapat mengaktifkan afinitas sesi Cloud Run di layanan Cloud Run, meskipun berada di belakang load balancer. Namun, Anda tidak boleh mengaktifkan afinitas sesi Cloud Load Balancing di grup endpoint jaringan serverless, karena tidak didukung.

Afinitas sesi dan pemisahan traffic

Anda mengaktifkan atau menonaktifkan afinitas sesi di tingkat revisi. Jika Anda mengaktifkan afinitas sesi pada revisi Cloud Run dan juga menggunakan pemisahan traffic, afinitas sesi akan lebih diprioritaskan daripada pemisahan traffic. Dalam kasus yang ekstrem, jika satu klien yang menggunakan afinitas sesi bertanggung jawab atas sebagian besar semua permintaan, semua permintaan tersebut dapat dirutekan ke revisi tertentu, terlepas dari konfigurasi pemisahan traffic.

Jika Anda mengaktifkan pemisahan traffic untuk me-revisi disaat beberapa revisi mengaktifkan afinitas sesi dan beberapa tidak, hasilnya adalah permintaan secara bertahap digeser ke revisi yang mengaktifkan afinitas sesi, meskipun Anda tidak secara eksplisit mengubah konfigurasi pemisahan traffic. Alasannya adalah setiap permintaan yang tidak memiliki lampiran cookie afinitas sesi akan dialihkan pada pemisahan acak, yang pada akhirnya beberapa diantaranya akan ditetapkan ke revisi dengan afinitas sesi dan kemudian permintaan tersebut akan tetap dengan revisi tersebut.

Saat memperbarui konfigurasi pemisahan traffic untuk layanan Cloud Run, permintaan berikutnya dengan cookie afinitas sesi yang terpasang mungkin ditetapkan ke revisi yang berbeda. Cloud Run meminimalkan jumlah klien yang dialihkan ke revisi baru.

Misalnya, jika layanan membagi traffic sebesar 90%/10%, dan pembagian traffic diperbarui menjadi 80%/20%, maka 10% traffic akan dialihkan ke revisi yang saat ini melayani 20% traffic.

Mengatur afinitas sesi

Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi selanjutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.

Anda dapat menetapkan afinitas sesi menggunakan konsol Google Cloud, command line gcloud, atau file .yaml saat membuat layanan baru atau men-deploy revisi baru:

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik Deploy container dan pilih Service untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang sudah ada, klik layanan, lalu klik Edit dan deploy revisi baru.

  3. Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal, lalu klik Container, volume, networking, security untuk memperluas halaman konfigurasi layanan.

  4. Klik tab Networking.

    gambar

    • Klik kotak teks Afinitas sesi.
  5. Klik Buat atau Deploy.

gcloud

Untuk menentukan afinitas sesi, gunakan perintah berikut:

gcloud run services update SERVICE --session-affinity

Ganti

  • SERVICE dengan nama layanan yang sedang Anda update.

Untuk menghapus afinitas sesi, gunakan perintah

gcloud run services update SERVICE --no-session-affinity

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Tambahkan anotasi run.googleapis.com/sessionAffinity::

    spec:
     template:
       metadata:
         annotations:
           run.googleapis.com/sessionAffinity: 'BOOL'

    Ganti

    • 'BOOL' dengan nilai 'true' untuk menetapkan afinitas sesi, atau 'false' untuk menghapus afinitas sesi.
  3. Buat atau perbarui layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

Lihat setelan afinitas sesi

Untuk melihat setelan afinitas sesi saat ini untuk layanan Cloud Run Anda:

Konsol

  1. Di konsol Google Cloud, buka Cloud Run:

    Buka Cloud Run

  2. Klik layanan yang Anda minati untuk membuka halaman Detail layanan.

  3. Klik tab Revisi.

  4. Di panel detail di sebelah kanan, setelan afinitas sesi tercantum di bagian tab Networking.

gcloud

  1. Gunakan perintah berikut:

    gcloud run services describe SERVICE
  2. Temukan setelan afinitas sesi dalam konfigurasi yang ditampilkan.