Load Balancing yapılandırıldı, backend sunucular UP durumda. Peki uygulama aynı kullanıcının sonraki isteklerinin de aynı backend sunucuya gitmesini gerektiriyorsa?
Burada Persistence (Session Affinity / Stickiness) devreye girer.
Normal akış:
Client → VIP → LB Algorithm → Backend
Persistence sonrasında:
Client → VIP → Aynı Backend
Persistence, Load Balancing algoritmasının yerine geçmez. İlk backend seçimini LB algoritması yapar; persistence ise sonraki uygun isteklerin aynı backend’e yönlendirilmesini sağlar. docs.netscaler.com
SOURCEIP Persistence
SOURCEIP, istemcinin kaynak IP adresini persistence anahtarı olarak kullanır.
Örneğin ilk bağlantı:
10.10.10.50 → Server-01
Persistence süresi boyunca aynı source IP’den gelen sonraki bağlantılar tekrar Server-01‘e yönlendirilebilir. docs.netscaler.com
CLI:
set lb vserver LB_WEB -persistenceType SOURCEIP -timeout 60
NetScaler’ın güncel dokümantasyonunda bu yapılandırma halen desteklenmektedir. docs.netscaler.com
SOURCEIP’in avantajı HTTP’ye bağımlı olmamasıdır; HTTP, HTTPS, TCP ve UDP gibi farklı vServer tiplerinde kullanılabilir. docs.netscaler.com
NAT / Proxy Ortamlarında Dikkat
Yüzlerce kullanıcı aynı NAT veya proxy arkasından geliyorsa NetScaler bu istemcileri tek source IP üzerinden görebilir:
203.0.113.10
Sonuç olarak çok sayıda kullanıcı aynı backend’e yönlendirilebilir ve yük dağılımı bozulabilir.
NetScaler dokümantasyonu source-IP persistence ile ilişkili proxy/NAT problemlerine özellikle dikkat çekiyor ve bu tip ortamlarda farklı bir persistence yönteminin değerlendirilmesini öneriyor. docs.netscaler.com
COOKIEINSERT Persistence
HTTP/HTTPS uygulamalarında alternatiflerden biri COOKIEINSERT yöntemidir.
İlk istek:
Client → VIP → Server-02
NetScaler response içerisine persistence cookie’si ekler.
Sonraki istek:
Client + Cookie → VIP → Server-02
NetScaler cookie bilgisini kullanarak isteği daha önce seçilmiş backend servise yönlendirir. docs.netscaler.com
CLI:
set lb vserver LB_WEB -persistenceType COOKIEINSERT -timeout 60
COOKIEINSERT yalnızca HTTP ve HTTPS vServer’larda kullanılabilir. Bu nedenle TCP/UDP tabanlı servislerde SOURCEIP veya uygulamaya uygun başka persistence yöntemleri gerekir. docs.netscaler.com
Client cookie’yi saklamıyor veya sonraki request’lerde geri göndermiyorsa COOKIEINSERT persistence çalışmaz. docs.netscaler.com
SOURCEIP mi, COOKIEINSERT mi?
SOURCEIP
→ Client IP bazlıdır
→ HTTP dışındaki protokollerde de kullanılabilir
→ Basit ve etkilidir
→ NAT/Proxy arkasındaki yoğun kullanıcı ortamlarında dikkat gerektirir
COOKIEINSERT
→ HTTP/HTTPS cookie bazlıdır
→ Web uygulamaları için uygundur
→ Source IP’ye bağımlılığı azaltır
→ Client’ın persistence cookie’sini geri göndermesi gerekir
Dolayısıyla seçim:
“Hangisi daha iyi?”
sorusundan çok:
“Uygulamanın protokolü ve client mimarisi için hangisi doğru?”
sorusuyla yapılmalıdır.
Troubleshooting sırasında benim kontrol zincirim:
VIP → Persistence Type → Persistence Session → LB Method → ServiceGroup → Backend
Çünkü backend sunucular UP olsa bile yanlış persistence tasarımı, bazı sunucuların aşırı yüklenmesine veya kullanıcı session’larının beklenmedik şekilde farklı backend’lere gitmesine neden olabilir.
Cem Kemal Erbaş Network, Siber Güvenlik ve Teknik Rehberler