Beberapa aplikasi memerlukan persistensi sesi untuk melindungi data pengguna seperti keranjang belanja, informasi login, preferensi pengguna, dan game. Jika permintaan dari klien yang sama didistribusikan ke server backend yang berbeda, data pengguna mungkin hilang, mengganggu pengalaman pengguna. Dengan mengaktifkan persistensi sesi pada instance Application Load Balancer (ALB), permintaan dari klien yang sama akan diteruskan ke server backend yang sama, memastikan konsistensi data dan meningkatkan pengalaman pengguna.
Informasi latar belakang
Secara default, ALB mendistribusikan permintaan ke server backend yang berbeda. Setelah persistensi sesi diaktifkan, permintaan dari klien yang sama akan diteruskan ke server backend yang sama. Hal ini memungkinkan server backend mempertahankan informasi status dan memberikan layanan terus-menerus kepada klien.
Persistensi Sesi Dinonaktifkan: Permintaan dari klien yang sama dapat didistribusikan ke server backend ALB yang berbeda. Dalam beberapa skenario, seperti saat masuk ke server backend untuk mendapatkan informasi interaksi, Anda mungkin perlu masuk beberapa kali.
Persistensi Sesi Diaktifkan: Permintaan dari klien yang sama didistribusikan ke server backend ALB yang sama. Dalam beberapa skenario, seperti saat masuk ke server backend untuk mendapatkan informasi interaksi, Anda tidak perlu masuk beberapa kali.
Untuk mengaktifkan persistensi sesi pada instance ALB Anda, pilih metode pengelolaan cookie. Metode yang didukung adalah sebagai berikut:
Sisipkan cookie: ALB menyisipkan cookie SERVERID dan SERVERCORSID ke dalam respons pertama yang dikirim ke klien. Cookie SERVERCORSID dibuat berdasarkan cookie SERVERID dengan atribut samesite=None. Permintaan selanjutnya dari klien akan membawa cookie tersebut, dan ALB meneruskan permintaan ke server backend yang sesuai.
CatatanJika persistensi sesi diaktifkan, atribut SameSite=None secara otomatis dikonfigurasikan untuk cookie. Tidak perlu mengonfigurasi atribut ini secara manual. Hal ini memungkinkan browser menyimpan cookie ketika konfigurasi berbagi sumber daya lintas domain (CORS) diterapkan dalam aturan pengalihan ALB.
Tulis ulang cookie: Ketika ALB mendeteksi cookie yang ditentukan pengguna, ALB akan menulis ulang cookie asli dengan cookie tersebut. Permintaan berikutnya dari klien menyertakan cookie yang ditentukan pengguna, dan ALB meneruskan permintaan ke server backend terkait.
Batasan
Jika Anda menggunakan grup server tipe Function Compute, Anda tidak perlu mengonfigurasi persistensi sesi. Untuk informasi lebih lanjut, lihat Buat Grup Server.
Prasyarat
Sebuah instance ALB yang menghadap Internet telah dibuat dan running. Untuk informasi lebih lanjut, lihat Buat Instance ALB.
Grup server tipe Function Compute atau IP telah dibuat. Untuk informasi lebih lanjut, lihat Buat Grup Server.
Dua instance Elastic Compute Service (ECS) bernama ECS01 dan ECS02 telah ditentukan sebagai server backend untuk menerima permintaan. Layanan backend yang berbeda diterapkan pada ECS01 dan ECS02. Permintaan ke ECS01 dan ECS02 menghasilkan respons yang berbeda. Misalnya, ECS01 mengembalikan
"Hello World ! This is ECS01", dan ECS02 mengembalikan"Hello World ! This is ECS02". Pastikan kelompok keamanan instance ECS mengizinkan permintaan ke port yang digunakan oleh layanan backend.ECS01 dan ECS02 telah ditambahkan ke grup server. Untuk informasi lebih lanjut, lihat Tambahkan Server Backend.
Listener telah dibuat untuk instance ALB. Untuk informasi lebih lanjut, lihat Tambahkan Listener HTTP, Tambahkan Listener HTTPS, dan Tambahkan Listener QUIC.
Langkah 1: Konfigurasikan persistensi sesi untuk instance ALB
Masuk ke Konsol ALB.
Di bilah navigasi atas, pilih wilayah tempat Anda ingin membuat grup server.
Di panel navigasi sebelah kiri, pilih .
Di halaman Server Groups, temukan grup server yang ingin Anda kelola dan klik Modify Basic Information di kolom Actions.
Dalam kotak dialog Modify Basic Information, aktifkan Session Persistence.
Session Persistence: Aktifkan Session Persistence dan konfigurasikan parameter Cookie Persistence.
Jika Anda memilih Insert Cookie, konfigurasikan parameter Session Persistence Timeout Period dan klik Save.
Jika Anda memilih Rewrite Cookie, konfigurasikan parameter Cookie Name dan klik Save.
Dalam contoh ini, cookie diberi nama
BACKEND_SERVER. Anda dapat menentukan nama berdasarkan persyaratan bisnis Anda.
(Opsional) Langkah 2: Konfigurasikan cookie untuk server backend
Jika Anda mengaktifkan persistensi sesi dan mengatur opsi cookie menjadi Tulis Ulang Cookie, Anda harus mengonfigurasi cookie untuk server backend.
Masuk jarak jauh ke instance ECS. Untuk informasi lebih lanjut, lihat Hubungkan ke Instance ECS.
Konfigurasikan cookie untuk server web Anda.
CatatanMetode yang digunakan untuk mengonfigurasi cookie bervariasi berdasarkan jenis server web. Prosedur berikut menunjukkan cara mengonfigurasi cookie pada server web yang umum digunakan. Jika Anda menggunakan server web yang berbeda, lihat panduan pengguna server web tersebut.
Nginx
Dalam contoh ini, sistem operasi CentOS 7.9 dan NGINX 1.20.1 digunakan. Sesuaikan konfigurasi berdasarkan lingkungan yang Anda gunakan.
Modifikasi dan simpan file konfigurasi NGINX. Blok kode berikut menunjukkan contohnya. Jalankan perintah
nginx -tuntuk menanyakan jalur file konfigurasi. Dalam kebanyakan kasus, jalur file konfigurasi adalah/etc/nginx/nginx.conf. Jalur tersebut mungkin berbeda berdasarkan lingkungan yang Anda gunakan.http { # ... server { listen 80; # Atur BACKEND_SERVER ke nama cookie yang digunakan untuk menulis ulang cookie. Atur nilai ke string kustom. add_header Set-Cookie "BACKEND_SERVER=value"; # ... } }Jalankan perintah berikut untuk memuat ulang file konfigurasi NGINX:
sudo nginx -s reload
Apache
Dalam contoh ini, sistem operasi CentOS 7.9 dan Apache 2.4.6 digunakan. Sesuaikan konfigurasi berdasarkan lingkungan yang Anda gunakan.
Modifikasi dan simpan file konfigurasi Apache. Blok kode berikut menunjukkan contohnya. Jalur default file konfigurasi adalah
/etc/httpd/conf/httpd.conf. Jalur tersebut mungkin berbeda berdasarkan lingkungan yang Anda gunakan.# ... Listen 80 # Atur BACKEND_SERVER ke nama cookie yang digunakan untuk menulis ulang cookie. Atur nilai ke string kustom. Header always set Set-Cookie "BACKEND_SERVER=value" # ...Jalankan perintah berikut untuk memuat ulang file konfigurasi Apache agar pengaturan diterapkan:
sudo systemctl reload httpd.service
Ulangi langkah-langkah sebelumnya untuk memodifikasi konfigurasi server backend lainnya dalam grup server.
Langkah 3: Uji apakah persistensi sesi berfungsi
Masuk ke Konsol ALB.
Di bilah navigasi atas, pilih wilayah tempat instance ALB diterapkan. Salin nama domain instance ALB yang ingin Anda kelola.
Kunjungi nama domain dari browser Anda dan segarkan halaman untuk menguji apakah server yang sama diakses.
Sebagai contoh, permintaan pertama Anda dikirim ke ECS01. Segarkan halaman untuk menguji apakah permintaan selanjutnya juga dikirim ke ECS01.

Jika permintaan Anda didistribusikan antara ECS01 dan ECS02, persistensi sesi gagal. Periksa konfigurasi persistensi sesi dan coba lagi.
Referensi
Jika masalah tetap ada, lihat FAQ tentang ALB.
Jika masalah pemeriksaan kesehatan tetap ada, lihat Pemecahan Masalah Pemeriksaan Kesehatan ALB.