- بواسطة x32x01 ||
ليه الـ Session بتضيع مع الـ Load Balancer؟ 
لو انت شغال على Web apps أو E-commerce، غالبًا واجهت الموقف ده: المستخدم بيعمل Login، وبمجرد ما السيستم وراه Load Balancer… الـ Session بتختفي أو الـ Cart بتتفّرغ، أو يحصل Logout فجأة
.
المشكلة دي شائعة جدًا في الأنظمة اللي فيها أكتر من Server أو Auto-Scaling. السبب؟ الريكوست الأول ممكن يروح لسيرفر، واللي بعده يروح لسيرفر تاني مالوش نفس الـ Session.
النتيجة اللي كلنا شفناها:
الحل: Session Affinity (Sticky Sessions)
الـ Session Affinity ببساطة معناه:
طالما المستخدم بدأ جلسته على سيرفر معيّن، كل الريكوستات تفضل رايحة لنفس السيرفر طول مدة الجلسة.
ده بيحل مشاكل كتير في:
Session Affinity على Azure
على Azure Application Gateway، فيه دعم للـ Session Affinity باستخدام Cookies. وده مهم خصوصًا مع:
✔ Auto-Scaling
✔ Traffic متغيّر
✔ Releases متكررة
الميزة هنا إن السيستم يقدر يوسّع الموارد بدون ما المستخدم يحس إن جلسته اتقطعت.
امتى تستخدم Session Affinity؟
الـ Session Affinity مش دايمًا الحل الأمثل لكل التطبيقات. استخدمها لما:
مثال عملي على NGINX
لو عايز تعمل Sticky Session على NGINX، ممكن تستخدم الكود ده:
الكود ده بيخلي كل المستخدمين يثبتوا على نفس السيرفر ويمنع مشاكل Session وCart.
الخلاصة
شاركنا تجربتك

لو انت شغال على Web apps أو E-commerce، غالبًا واجهت الموقف ده: المستخدم بيعمل Login، وبمجرد ما السيستم وراه Load Balancer… الـ Session بتختفي أو الـ Cart بتتفّرغ، أو يحصل Logout فجأة
المشكلة دي شائعة جدًا في الأنظمة اللي فيها أكتر من Server أو Auto-Scaling. السبب؟ الريكوست الأول ممكن يروح لسيرفر، واللي بعده يروح لسيرفر تاني مالوش نفس الـ Session.
النتيجة اللي كلنا شفناها:
المستخدم يخرج من السيستم فجأة
عملية Checkout تتقطع
تجربة الاستخدام تبقى سيئة ومحبطة
الحل: Session Affinity (Sticky Sessions)
الـ Session Affinity ببساطة معناه:طالما المستخدم بدأ جلسته على سيرفر معيّن، كل الريكوستات تفضل رايحة لنفس السيرفر طول مدة الجلسة.
ده بيحل مشاكل كتير في:
Web apps اللي فيها Login
E-commerce و Cart
ERP و Banking systems
أي سيستم فيه State حساس للمستخدم
Session Affinity على Azure
على Azure Application Gateway، فيه دعم للـ Session Affinity باستخدام Cookies. وده مهم خصوصًا مع:✔ Auto-Scaling
✔ Traffic متغيّر
✔ Releases متكررة
الميزة هنا إن السيستم يقدر يوسّع الموارد بدون ما المستخدم يحس إن جلسته اتقطعت.
امتى تستخدم Session Affinity؟
الـ Session Affinity مش دايمًا الحل الأمثل لكل التطبيقات. استخدمها لما:- التطبيق Stateful أو معتمد على Session
- Microservices
- APIs مبنية على Tokens
- أو Stateless Architectures
- ✔ Distributed cache
- ✔ Centralized session store
- ✔ أو Token-based identity
مثال عملي على NGINX
لو عايز تعمل Sticky Session على NGINX، ممكن تستخدم الكود ده: NGINX:
upstream backend {
ip_hash; # ده بيخلي الريكوستات لنفس المستخدم تروح لنفس السيرفر
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
الخلاصة
- Session Affinity مش “ترف تقني” - دي Layer أساسية لتحسين تجربة المستخدم
- لازم تعرف إمتى تستخدمها وإمتى تعتمد على بدائل أكتر مرونة
- لو النظام Stateful: Sticky Sessions مفيدة
- لو النظام Stateless: استخدم Centralized Session Store أو Token-based Identity
شاركنا تجربتك
- ⬅ واجهت قبل كده مشكلة Session مع Load Balancer؟
- ⬅ اشتغلت أكتر مع Sticky Sessions ولا Centralized Session Store؟