Persistence nedir?
Kısa cevap
Persistence (session affinity, sticky session), aynı istemciden gelen ardışık isteklerin hep aynı Kurum Servisine gönderilmesini sağlar. Oturum bilgisini (sepet, giriş durumu…) sunucunun kendi belleğinde tutan uygulamalarda gereklidir; aksi hâlde kullanıcı başka sunucuya düştüğünde oturumu kaybolur. Oturumu merkezi bir yerde (Redis, veritabanı) tutan uygulamalarda gerekmez. TR7'de vService formundaki Persistence alanından seçilir: HTTP'de New cookie, Current cookie, Hash ve Session Affinity Manager (SAM), L7 TCP'de Hash, Network'te L4 Persistence ve SIP Persistence.
Nasıl Çalışır?
- İlk istek: Persistence kaydı olmayan istemci, vService'in algoritmasına göre bir Kurum Servisine gönderilir.
- Eşleme kurulur: TR7 istemciyi o Kurum Servisiyle eşleştirir: bir cookie ekleyerek, uygulamanın kendi cookie'sini okuyarak ya da kaynak IP gibi bir anahtardan hash üreterek.
- Sonraki istekler: Aynı istemcinin istekleri algoritmaya sorulmadan eşlendiği Kurum Servisine gider.
- Sunucu düşerse: Eşlendiği Kurum Servisi health check'te down olursa ya da Maintenance mode'a alınırsa istemci algoritmaya göre başka bir Kurum Servisine yönlendirilir; oturum yalnızca sunucunun belleğindeyse kaybolur.
2. istek → Sunucu 2
3. istek → Sunucu 1
2. istek → Sunucu 1
3. istek → Sunucu 1
Ne Zaman Gerekir?
| Uygulama | Persistence |
|---|---|
| Oturumu sunucunun belleğinde tutan (stateful) web uygulamaları | Gerekir |
| Oturumu merkezi bir store'da (Redis, veritabanı) tutan uygulamalar | Gerekmez |
| Stateless API'ler ve mikroservisler | Gerekmez; açılırsa yük dağılımını bozabilir |
| Uzak masaüstü (RDP) oturumları | Gerekir; L7 TCP'deki RDP Cookie algoritması bunu kendiliğinden sağlar |
TR7'de Persistence
Yöntemler vService tipine göre değişir:
| vService tipi | Yöntemler |
|---|---|
| HTTP | New Cookie (TR7 kendi cookie'sini ekler), Current Cookie (uygulamanın cookie'sini okur, ör. JSESSIONID), Hash (Smart Variable'larla tanımlanan anahtar), Session Affinity Manager (SAM) (oturumları izleyen ve yeniden dengeleyebilen yöntem) |
| L7 TCP | Hash (kaynak IP, SNI, hedef IP/port gibi Smart Variable anahtarları) |
| Network | L4 Persistence (kaynak IP), SIP Persistence (Call-ID) |
Persistence ayarı vService formundadır. Source, URI, URL Param, HDR ve RDP Cookie gibi kendi başına kalıcılık sağlayan (self-persistent) algoritmalar seçildiğinde Persistence alanı gizlenir; bu algoritmalar aynı anahtarı zaten aynı sunucuya gönderir.
Sık Karıştırılan Noktalar
- "Persistence her uygulamada açık olmalı." Oturumu merkezi tutan ya da stateless uygulamalarda gereksizdir; açılırsa trafik sunuculara dengesiz dağılabilir.
- "Persistence açıkken sunucu düşse de kullanıcı oturumunu korur." Eşlendiği sunucu düşünce istemci başka sunucuya gider; oturum sunucunun belleğindeyse kaybolur.
- "Kaynak IP'ye göre persistence her zaman güvenilirdir." Kurumsal NAT ya da proxy arkasındaki çok sayıda kullanıcı tek IP'den gelir ve hepsi aynı sunucuya düşer. HTTP'de cookie tabanlı yöntemler (New cookie, Current cookie, SAM) her istemciyi ayrı tanır.
Dokümantasyonda nasıl yapılır
