Sticky Sessions

Sticky Sessions (Session Affinity) là gì ?
- Có thể triển khai tính năng sticky để một client luôn được chuyển hướng đến cùng một instance phía sau load balancer (không thay đổi).
- Tính năng này hỗ trợ cho:
- Classic Load Balancer (CLB)
- Application Load Balancer (ALB)
- Network Load Balancer (NLB)
- Cookie được sử dụng để duy trì tính kết dính (stickiness) có thời gian hết hạn mà bạn có thể cấu hình.
- Use case (tình huống sử dụng):
- Đảm bảo người dùng không mất dữ liệu phiên (session), ví dụ như giỏ hàng, trạng thái đăng nhập,...
- Lưu ý:
- Bật stickiness có thể gây mất cân bằng tải giữa các EC2 phía sau (vì một số instance sẽ phải phục vụ nhiều client hơn các instance khác).

Sticky session - Các loại cookie được dùng
Application-based Cookies
- Custom cookie (Cookie tùy chỉnh)
- Khi dùng: Khi app muốn tự kiểm soát logic session (ví dụ tạo sessionID, mã hóa session, custom attributes…).
- Vai trò: ELB đọc cookie do ứng dụng sinh ra để xác định user đó từng vào target nào → forward đúng target đó.
- Tùy biến cao, phù hợp hệ thống có session server hoặc logic session phức tạp.
- Tên cookie phải được chỉ định riêng cho mỗi target group.
- Không được dùng các tên:
AWSALB,AWSALBAPP, hoặcAWSALBTG— vì các tên này đã được AWS dành riêng để ELB sử dụng nội bộ.
- Application cookie
- Khi dùng: Khi bạn không cần tự tạo cookie, mà để ELB tạo và quản lý session cho bạn.
- Vai trò: AWS tạo cookie cho mỗi client và lưu thông tin target tương ứng → tiếp theo route về đúng target đó.
- Được tạo bởi Load Balancer.
- Tên cookie mặc định là
AWSALBAPP.
Duration-based Cookies
- Khi dùng: Khi bạn muốn session sticky theo thời gian cố định, ELB tạo và quản lý session cho bạn.
- Vai trò: Cookie chứa thông tin target ID và thời gian sống (TTL).
- ELB sẽ duy trì sticky routing đến cùng target trong suốt thời gian TTL.
- Tên cookie:
AWSALBđối với Application Load Balancer (ALB)AWSELBđối với Classic Load Balancer (CLB)
Nếu bạn cần session persistence dựa trên logic app-side (ví dụ auth token, user ID...), nên dùng Custom Cookie.
Nếu chỉ cần session affinity đơn giản (đảm bảo routing về đúng instance), dùng Application Cookie hoặc Duration Cookie do AWS quản lý.
Quan trọng là tránh dùng các tên cookie AWSALB* vì xung đột với AWS internal logic.
Bạn thấy bài này thế nào?