- Apa kegunaan persistensi sesi?
- Bagaimana cara mengaktifkan persistensi sesi?
- Jenis persistensi sesi apa yang didukung?
- Metode apa yang dapat digunakan untuk menangani cookie?
- Bisakah CLB mempertahankan sesi berdasarkan nama domain?
- Berapa lama periode timeout sebuah cookie?
- Bagaimana cara melihat string persistensi sesi?
- Mengapa persistensi sesi terkadang gagal?
- Bagaimana cara menggunakan perintah Linux curl untuk menguji persistensi sesi SLB?
Apa kegunaan persistensi sesi?
Persistensi sesi adalah metode untuk meneruskan permintaan dari klien yang sama ke server backend yang sama.
Bagaimana cara mengaktifkan persistensi sesi?
Anda dapat mengaktifkan persistensi sesi saat mengonfigurasi Classic Load Balancer (CLB) listener. Anda dapat mengonfigurasi kebijakan persistensi sesi yang berbeda untuk setiap listener. Sebuah sesi dapat dipertahankan hingga maksimal 86.400 detik, atau setara dengan 24 jam.
Jenis persistensi sesi apa yang didukung oleh CLB?
- CLB mempertahankan sesi TCP dan UDP berdasarkan alamat IP sumber pada Lapisan 4. Sebuah sesi dapat dipertahankan hingga maksimal 3.600 detik di Lapisan 4.

- CLB mempertahankan sesi HTTP dan HTTPS berdasarkan cookie pada Lapisan 7. Sebuah sesi berbasis cookie dapat dipertahankan hingga maksimal 86.400 detik, atau setara dengan 24 jam.

Metode apa yang dapat digunakan untuk menangani cookie?
Listener HTTP dan HTTPS mendukung cookie inserts dan cookie rewrites.
- Insert a cookie: Jika Anda memilih opsi ini, Anda hanya perlu menentukan periode timeout cookie tersebut. CLB menyisipkan cookie (SERVERID) ke dalam paket respons HTTP atau HTTPS pertama yang dikirim ke klien. Permintaan berikutnya dari klien akan membawa cookie ini, dan CLB meneruskan permintaan tersebut ke instance Elastic Compute Service (ECS) yang direkam.
- Rewrite a cookie: Jika Anda memilih opsi ini, Anda dapat menentukan cookie yang akan dibawa dalam respons HTTP atau HTTPS. Anda harus mengonfigurasi periode timeout dan masa hidup cookie pada instance ECS. Ketika CLB mendeteksi cookie yang ditentukan pengguna, CLB menimpa cookie asli dengan cookie yang ditentukan pengguna. Permintaan berikutnya dari klien membawa cookie yang ditentukan pengguna, dan CLB meneruskan permintaan tersebut ke server backend yang direkam. Untuk informasi lebih lanjut tentang cara mengonfigurasi cookie pada server, lihat Konfigurasikan Persistensi Sesi.
Bisakah CLB mempertahankan sesi berdasarkan nama domain?
Ya, CLB dapat mempertahankan sesi berdasarkan nama domain.
CLB dapat menulis ulang cookie untuk mempertahankan sesi berdasarkan nama domain.
Berapa lama periode timeout sebuah cookie?
- Anda dapat menentukan periode timeout cookie (SERVERID) yang disisipkan oleh CLB antara 1 hingga 86.400 detik di Konsol.

- Untuk cookie yang ditentukan pengguna yang ingin Anda timpa dengan CLB, Anda harus mengonfigurasi periode timeout pada instance ECS.
Bagaimana cara melihat string persistensi sesi?
Anda dapat menekan F12 di browser Anda untuk memeriksa respons untuk string SERVERID atau kata kunci yang ditentukan pengguna. Anda juga dapat menjalankan curl www.example.com -c /tmp/cookie123 untuk menyimpan cookie, kemudian jalankan curl www.example.com -b /tmp/cookie123 untuk mengakses situs web.
Mengapa persistensi sesi terkadang gagal?
Persistensi sesi tidak diaktifkan: Periksa bahwa persistensi sesi telah diaktifkan dalam konfigurasi listener.
Masalah dengan listener HTTP/HTTPS: Listener HTTP atau HTTPS tidak dapat menyisipkan cookie yang diperlukan untuk persistensi sesi ke dalam pesan respons dari server backend yang memiliki kode respons 4xx.
Solusi: Gunakan listener TCP sebagai gantinya. Listener TCP melakukan persistensi sesi berdasarkan alamat IP klien sumber. Atau, Anda dapat menyisipkan cookie pada instance ECS backend dan menambahkan pemeriksaan cookie untuk jaminan tambahan.
Masalah dengan pengalihan 302: Pengalihan 302 mengubah string SERVERID dalam persistensi sesi.
Ketika SLB menyisipkan cookie, jika instance ECS backend mengembalikan pesan respons dengan pengalihan 302, string SERVERID diubah, yang menyebabkan persistensi sesi gagal.
Pemecahan masalah: Anda dapat menangkap permintaan dan respons di browser atau menggunakan alat pengambilan paket untuk memeriksa pesan respons 302. Kemudian, bandingkan string SERVERID dalam cookie sebelum dan sesudah pengalihan.
Solusi: Gunakan listener TCP sebagai gantinya. Listener TCP melakukan persistensi sesi berdasarkan alamat IP klien sumber. Atau, Anda dapat menyisipkan cookie pada instance ECS backend dan menambahkan pemeriksaan cookie untuk jaminan tambahan.
Periode timeout persistensi sesi terlalu singkat: Jika periode timeout untuk persistensi sesi terlalu singkat, itu dapat menyebabkan persistensi sesi gagal.
Bagaimana cara menggunakan perintah Linux curl untuk menguji persistensi sesi SLB?
Buat halaman uji.
Pada semua instance ECS backend dari load balancer, buat halaman uji yang menampilkan alamat IP pribadi mesin lokal. Alamat IP pribadi digunakan untuk menentukan server fisik ke mana permintaan yang sesuai ditugaskan. Dengan mengamati konsistensi alamat IP ini, Anda dapat memverifikasi efektivitas persistensi sesi SLB.

Jalankan perintah curl dalam lingkungan Linux.
Anggaplah alamat IP layanan SLB adalah 10.170.XX.XX dan URL halaman uji adalah
http://10.170.XX.XX/check.jsp.Masuk ke server Linux untuk pengujian.
Jalankan perintah berikut untuk menanyakan nilai cookie server SLB.
curl -c test.cookie http://10.170.XX.XX/check.jspCatatanMode persistensi sesi default untuk Alibaba Cloud SLB adalah menyisipkan cookie. Namun, pengujian curl tidak menyimpan atau mengirim cookie secara default. Oleh karena itu, Anda harus terlebih dahulu menyimpan cookie yang sesuai untuk pengujian. Jika tidak, hasil pengujian curl bersifat acak, dan Anda mungkin salah menyimpulkan bahwa persistensi sesi SLB tidak berfungsi.
Anda dapat menjalankan perintah berikut untuk melakukan pengujian berkelanjutan.
for ((a=1;a<=30;a++)); do curl -b test.cookie http://10.170.XX.XX/check.jsp | grep '10.170.XX.XX'; sleep 1; doneCatatanNilai `30` adalah jumlah pengujian berulang dan dapat dimodifikasi sesuai kebutuhan. Perintah
grep '10.170.XX.XX'memfilter output untuk alamat IP tertentu. Ganti alamat IP contoh dengan alamat IP pribadi instance ECS backend.Amati alamat IP yang dikembalikan oleh pengujian. Jika alamat IP pribadi yang sama dari instance ECS dikembalikan setiap kali, persistensi sesi SLB bekerja dengan benar. Jika tidak, ada masalah dengan konfigurasi persistensi sesi.