NetScaler Persistence: SOURCEIP mi, COOKIEINSERT mi?

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.

About Cem Kemal Erbaş

Bir yanıt yazın