Sesi lengket untuk Application Load Balancer Anda - Elastic Load Balancing

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Sesi lengket untuk Application Load Balancer Anda

Secara default, Application Load Balancer merutekan setiap permintaan secara independen ke target terdaftar berdasarkan algoritma load-balancing yang dipilih. Namun, Anda dapat menggunakan fitur sesi lekat (juga dikenal sebagai sesi afinitas atau sesi gabungan) untuk mengaktifkan penyeimbang beban untuk mengikat sesi pengguna ke target tertentu. Hal ini memastikan bahwa semua permintaan dari pengguna selama sesi dikirim ke target yang sama. Fitur ini berguna untuk server yang mempertahankan informasi negara untuk memberikan pengalaman terus-menerus untuk klien. Untuk menggunakan sesi lekat, klien harus mendukung cookie.

Application Load Balancer mendukung cookie berbasis durasi dan cookie berbasis aplikasi. Sesi lekat diaktifkan pada tingkat kelompok target. Anda dapat menggunakan kombinasi kekakuan berbasis durasi, kelengketan berbasis aplikasi, dan tidak lengket di seluruh grup target Anda.

Kunci untuk mengelola sesi lekat adalah menentukan berapa lama penyeimbang beban Anda harus secara konsisten mengarahkan permintaan pengguna ke target yang sama. Jika aplikasi Anda memiliki cookie sesi sendiri, maka Anda dapat menggunakan kekakuan berbasis aplikasi dan cookie sesi penyeimbang beban mengikuti durasi yang ditentukan oleh cookie sesi aplikasi. Jika aplikasi Anda tidak memiliki cookie sesi sendiri, maka Anda dapat menggunakan lengket berbasis durasi untuk menghasilkan cookie sesi penyeimbang beban dengan durasi yang Anda tentukan.

Isi cookie yang dihasilkan penyeimbang beban dienkripsi menggunakan tombol berputar. Anda tidak dapat mendekripsi atau memodifikasi load balancer yang dihasilkan cookie.

Untuk kedua jenis lengket, Application Load Balancer mengatur ulang berakhirnya cookie yang dihasilkannya setelah setiap permintaan. Jika cookie berakhir, sesi tidak lagi lekat dan klien harus menghapus cookie dari toko cookie.

Persyaratan
  • Penyeimbang beban HTTP/HTTPS.

  • Setidaknya satu contoh sehat di setiap Availability Zone.

Pertimbangan
  • Sesi lengket tidak didukung jika penyeimbangan beban lintas zona dinonaktifkan. Mencoba mengaktifkan sesi lengket saat penyeimbangan beban lintas zona dinonaktifkan akan gagal.

  • Untuk cookie berbasis aplikasi, nama cookie harus ditentukan secara individual untuk setiap kelompok target. Namun, untuk cookie berbasis durasi,AWSALBadalah satu-satunya nama yang digunakan di semua kelompok target.

  • Jika Anda menggunakan beberapa lapisan Balancers Beban Aplikasi, Anda dapat mengaktifkan sesi yang lekat di semua lapisan dengan cookie berbasis aplikasi. Namun, dengan cookie berbasis durasi, Anda dapat mengaktifkan sesi lengket hanya pada satu lapisan, karenaAWSALBadalah satu-satunya nama yang tersedia.

  • Jika Application Load Balancer menerima cookie lengket AWSALB berbasis AWSALBCORS dan durasi, nilai dalam akan diutamakan. AWSALBCORS

  • Stickiness berbasis aplikasi tidak bekerja dengan kelompok target tertimbang.

  • Jika Anda memilikiTindakan ke depandengan beberapa kelompok target, dan sesi lengket diaktifkan untuk satu atau lebih kelompok target, Anda harus mengaktifkan kelekatan di tingkat grup target.

  • WebSocket koneksi secara inheren lengket. Jika klien meminta upgrade koneksi ke WebSockets, target yang mengembalikan kode status HTTP 101 untuk menerima upgrade koneksi adalah target yang digunakan dalam WebSockets koneksi. Setelah WebSockets upgrade selesai, kekakuan berbasis cookie tidak digunakan.

  • Application Load Balancers menggunakanExpiresatribut dalam header cookie bukanMax-Ageatribut.

  • Application Load Balancers tidak mendukung nilai-nilai cookie yang URL dikodekan.

Kelekatan berbasis durasi

Rute lekat berbasis durasi meminta target yang sama di grup target menggunakan cookie yang dihasilkan load balancer (AWSALB). Cookie ini digunakan untuk memetakan sesi ke target. Jika aplikasi Anda tidak memiliki cookie sesi sendiri, Anda dapat menentukan durasi lekat Anda sendiri dan mengelola berapa lama load balancer Anda harus secara konsisten mengarahkan permintaan pengguna ke target yang sama.

Ketika load balancer pertama kali menerima permintaan dari klien, load balancer merutekan permintaan ke target (berdasarkan algoritma yang dipilih), dan menghasilkan cookie bernamaAWSALB. Ini mengkodekan informasi tentang target yang dipilih, mengenkripsi cookie, dan melibatkan cookie dalam menanggapi klien. Load balancer yang dihasilkan cookie memiliki kadaluwarsa sendiri 7 hari yang tidak dapat dikonfigurasi.

Dalam permintaan berikutnya, klien harus mencakup cookieAWSALB. Ketika load balancer menerima permintaan dari klien yang berisi cookie, mendeteksi dan rute permintaan ke target yang sama. Jika cookie hadir tetapi tidak dapat diterjemahkan, atau jika mengacu pada target yang deregistered atau tidak sehat, penyeimbang beban memilih target baru dan memperbarui cookie dengan informasi tentang target baru.

Untuk permintaan berbagi sumber daya lintas asal (CORS), beberapa browser SameSite=None; Secure perlu mengaktifkan kekakuan. Untuk mendukung browser ini, penyeimbang beban selalu menghasilkan cookie lengket keduaAWSALBCORS, yang mencakup informasi yang sama dengan cookie lengket asli, serta atributnya. SameSite Klien menerima kedua cookie, termasuk permintaan non-CORS.

Cara mengaktifkan kelekatan berbasis durasi menggunakan konsol
  1. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/.

  2. Pada panel navigasi, di bawah Penyeimbangan Beban, pilih Grup Target.

  3. Pilih nama grup target untuk menampilkan detailnya.

  4. Pada tabDetail kelompok, di bagianatribut, pilihEdit.

  5. Di laman Edit Perilaku , lakukan hal berikut:

    1. PilihKelekatan.

    2. UntukJenis kelekatanPilihCookies yang dihasilkan load balancer.

    3. UntukDurasi kelekatan, tentukan nilai antara 1 detik dan 7 hari.

    4. Pilih Simpan perubahan.

Untuk mengaktifkan kelengketan berbasis durasi menggunakan AWS CLI

Gunakan modify-target-group-attributesperintah dengan stickiness.lb_cookie.duration_seconds atribut stickiness.enabled dan.

Gunakan perintah berikut untuk mengaktifkan kelekatan berbasis durasi.

aws elbv2 modify-target-group-attributes --target-group-arn ARN --attributes Key=stickiness.enabled,Value=true Key=stickiness.lb_cookie.duration_seconds,Value=time-in-seconds

Output Anda harus serupa dengan berikut ini.

{ "Attributes": [ ... { "Key": "stickiness.enabled", "Value": "true" }, { "Key": "stickiness.lb_cookie.duration_seconds", "Value": "86500" }, ... ] }

Kelekatan berbasis aplikasi

Stickiness berbasis aplikasi memberi Anda fleksibilitas untuk menetapkan kriteria Anda sendiri untuk kelekatan target klien. Bila Anda mengaktifkan kelekatan berbasis aplikasi, penyeimbang beban akan mengarahkan permintaan pertama ke target dalam grup target berdasarkan algoritme yang dipilih. Target diharapkan untuk menetapkan cookie aplikasi kustom yang cocok dengan cookie yang dikonfigurasi pada penyeimbang beban untuk mengaktifkan kelekatan. Cookie kustom ini dapat mencakup salah satu atribut cookie yang diperlukan oleh aplikasi.

Ketika Application Load Balancer menerima cookie aplikasi kustom dari target, maka secara otomatis menghasilkan cookie aplikasi terenkripsi baru untuk menangkap informasi sesi kelekatan. Cookie aplikasi yang dihasilkan load balancer ini menangkap informasi lekat untuk setiap grup target yang mengaktifkan kelekatan berbasis aplikasi.

Cookie aplikasi yang dihasilkan load balancer tidak menyalin atribut cookie kustom yang ditetapkan oleh target. Cookie aplikasi ini akan berakhir dengan sendirinya dalam 7 hari yang tidak dapat dikonfigurasi. Dalam menanggapi klien, Application Load Balancer hanya memvalidasi nama yang dikonfigurasi cookie kustom pada tingkat kelompok target dan bukan nilai atau atribut kadaluwarsa cookie kustom. Selama nama cocok, load balancer mengirimkan kedua cookie, cookie kustom yang ditetapkan oleh target, dan cookie aplikasi yang dihasilkan oleh load balancer, dalam menanggapi klien.

Dalam permintaan berikutnya, klien harus mengirim kembali kedua cookie untuk mempertahankan kelekatan atau sesi afinitas. Load balancer mendekripsi cookie aplikasi, dan memeriksa apakah durasi lekat yang dikonfigurasi masih berlaku. Kemudian informasi dalam cookie digunakan untuk mengirim permintaan ke target yang sama dalam kelompok target untuk mempertahankan kelekatan. Load balancer juga proxy cookie aplikasi kustom ke target tanpa memeriksa atau memodifikasinya. Dalam tanggapan berikutnya, berakhirnya load balancer yang dihasilkan cookie aplikasi dan durasi kelekatan yang dikonfigurasi pada load balancer diatur ulang. Untuk menjaga kelekatan antara klien dan target, kedaluwarsanya cookie, dan durasi kelekatan seharusnya tidak terlewat.

Jika target gagal atau menjadi tidak sehat, load balancer akan berhenti merutekan permintaan ke target tersebut, dan memilih target baru yang sehat berdasarkan algoritma load balancing yang dipilih. Load balancer memperlakukan sesi tersebut seakan “terjebak” ke target baru yang sehat, dan terus merutekan permintaan ke target sehat yang baru bahkan jika target yang gagal kembali.

Dengan permintaan cross-origin resource sharing (CORS), untuk mengaktifkan kelekatan, load balancer menambahkanSameSite=None; Secureatribut ke cookie aplikasi yang dihasilkannya hanya jika versi agen pengguna adalah Chromium80 ke atas.

Karena sebagian besar browser membatasi cookie dengan ukuran 4K, load balancer memecah cookie aplikasi yang lebih besar dari 4K ke dalam beberapa cookie. Application Load Balancer mendukung cookie hingga 16K dalam ukuran dan karena itu dapat membuat hingga 4 pecahan yang dikirimkan ke klien. Nama cookie aplikasi yang dilihat klien dimulai dengan “AWSALBAPP-” dan termasuk nomor fragmen. Misalnya, jika ukuran cookie 0-4K, klien melihat AWSALBAPP -0. Jika ukuran cookie 4-8k, klien melihat AWSALBAPP -0 dan AWSALBAPP -1, dan seterusnya.

Cara mengaktifkan kelekatan berbasis aplikasi menggunakan konsol
  1. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/.

  2. Pada panel navigasi, di bawah Penyeimbangan Beban, pilih Grup Target.

  3. Pilih nama grup target untuk menampilkan detailnya.

  4. Pada tabDetail kelompok, di bagianatribut, pilihEdit.

  5. Di laman Edit Perilaku , lakukan hal berikut:

    1. PilihKelekatan.

    2. UntukJenis kelekatanPilihCookie berbasis aplikasi.

    3. UntukDurasi lengket, tentukan nilai antara 1 detik dan 7 hari.

    4. UntukNama cookie aplikasi, masukkan nama untuk cookie berbasis aplikasi Anda.

      Jangan gunakanAWSALB,AWSALBAPP, atauAWSALBTGuntuk nama cookie; karena sudah dicadangkan untuk digunakan oleh load balancer.

    5. Pilih Simpan perubahan.

Untuk mengaktifkan kelengketan berbasis aplikasi menggunakan AWS CLI

Gunakan modify-target-group-attributesperintah dengan atribut berikut:

  • stickiness.enabled

  • stickiness.type

  • stickiness.app_cookie.cookie_name

  • stickiness.app_cookie.duration_seconds

Gunakan perintah berikut untuk mengaktifkan kelekatan berbasis aplikasi.

aws elbv2 modify-target-group-attributes --target-group-arn ARN --attributes Key=stickiness.enabled,Value=true Key=stickiness.type,Value=app_cookie Key=stickiness.app_cookie.cookie_name,Value=my-cookie-name Key=stickiness.app_cookie.duration_seconds,Value=time-in-seconds

Output Anda harus serupa dengan berikut ini.

{ "Attributes": [ ... { "Key": "stickiness.enabled", "Value": "true" }, { "Key": "stickiness.app_cookie.cookie_name", "Value": "MyCookie" }, { "Key": "stickiness.type", "Value": "app_cookie" }, { "Key": "stickiness.app_cookie.duration_seconds", "Value": "86500" }, ... ] }
Penyeimbangan ulang manual

Saat meningkatkan skala, jika jumlah target meningkat secara signifikan, ada potensi distribusi beban yang tidak merata karena afinitas. Dalam skenario ini, Anda dapat menyeimbangkan beban pada target Anda menggunakan dua pilihan berikut:

  • Mengatur kadaluwarsa pada cookie yang dihasilkan oleh aplikasi sebelum tanggal dan waktunya. Ini akan mencegah klien mengirim cookie ke Application Load Balancer, yang akan memulai ulang proses pembentukan kelekatan.

  • Tetapkan durasi yang sangat singkat pada konfigurasi kelekatan berbasis aplikasi load balancer, misalnya, 1 detik. Ini memaksa Application Load Balancer untuk membangun kembali kelekatan meskipun cookie yang ditetapkan oleh target belum kedaluwarsa.