Hash persistence nasıl çalışır?
Kısa cevap
Hash persistence, Hash Key alanında Smart Variable ile tanımlanan bir anahtarın (ör. istemci IP'si, bir HTTP header'ı, bir cookie değeri) değerini, seçilen Kurum Servisi ile eşleyip TR7 üzerindeki bir tabloda tutar. İlk istekte Kurum Servisini vService'in algoritması seçer; aynı anahtara sahip sonraki istekler kayıt süresi (Hash Key Expire Time, varsayılan 7 gün) dolana kadar aynı Kurum Servisine gider. Cookie gerektirmediği için HTTP'nin yanı sıra L7 TCP vService'te de kullanılır. Tablo cihaz yereldir; cluster cihazları arasında paylaşılmaz ve vService yeniden yüklendiğinde sıfırlanır.
Nasıl Çalışır?
- İstek gelince Hash Key listesindeki Smart Variable'ların değerleri birleştirilerek anahtar oluşturulur.
- Anahtar tabloda varsa istek kayıtlı sunucuya gider ve kaydın süresi tazelenir.
- Anahtar tabloda yoksa sunucuyu vService'in algoritması (ör. Least Connection) seçer ve eşleme tabloya yazılır.
- Kayıt, Hash Key Expire Time boyunca istek gelmezse silinir.
- Tablo dolarsa en eski kayıtlar atılır.
Alanlar
| Alan | Varsayılan | Aralık |
|---|---|---|
| Hash Key | Form ilk uygun Smart Variable ile açılır; en az bir giriş gerekir, aynı giriş iki kez eklenemez | – |
| Hash Key List Size | 3.000.000 kayıt | 10.000 – 100.000.000 |
| Hash Key Expire Time | 7 gün | 10 dakika – 365 gün |
Anahtar Örnekleri
| Anahtar (Smart Variable) | Uygun olduğu durum |
|---|---|
| İstemci IP adresi | Basit IP kalıcılığı (NAT arkasında dikkat) |
İstek başlığı (ör. X-Client-ID, API anahtarı) | API istemcileri, cookie desteklemeyen istemciler |
| İstek cookie'si | Uygulamanın oturum cookie'sine göre kalıcılık |
| URL / sorgu parametresi | Önbellek katmanı, kiracı bazında yönlendirme |
| L7 TCP'de bağlantı düzeyindeki değişkenler (ör. istemci IP'si) | L7 TCP vService'te yalnız bağlantı düzeyinde çözülen Smart Variable'lar listelenir (Variables · Alan hangi değişkenleri listeler) |
Smart Variable'lara fonksiyonlar (ör. Hash, JWT Payload Query, Replace) eklenerek anahtar kısaltılabilir ya da ayıklanabilir.
Algoritmayla İlişkisi
Hash persistence ile dağıtım yöntemi ayrı seçilir: yeni anahtarları algoritma (ör. Least Connection) dağıtır, eşleme tabloda tutulur. Source gibi hash algoritmalarında ise sunucu hash hesabıyla seçilir ve dağıtım yöntemi ayrıca seçilemez. Hash tablosu vService yapılandırması yeniden yüklendiğinde korunmaz; ayrıntı için Bir yapılandırma değişikliğini kaydetmek persistence tablolarını sıfırlar mı? sayfasına bakılır.
TR7'de
- Yer: Load Balancer → Load Balancer vService List → vService → Edit → Details → LB Algorithm kutusu → Persistence → Hash (Persistence); Hash Key, Hash Key List Size ve Hash Key Expire Time yalnızca Hash seçiliyken görünür; Save ile kaydedilir. Self-persistent bir algoritma seçiliyken Persistence alanı görünmez.
- WEB-CLI:
--persistence dynamicPersistence, anahtarlar--dynamicPersistenceKeys.N, tablo boyutu--dynamicPersistenceTableSize, süre--dynamicPersistenceTableExpire.val/.unit. - Cluster: Ayarlar, Clustering açıkken ve Manual Sync Mode kapalıyken (varsayılan) eş cihaza otomatik aktarılır; tablo ise her cihazda ayrıdır. Trafiği aynı anda birden fazla cihaz karşılıyorsa ya da VIP eş cihaza geçerse aynı anahtar diğer cihazda yeniden algoritmayla eşlenir.
Sık Karıştırılan Noktalar
- "Hash, algoritma gibi sunucuyu anahtardan hesaplar." Sunucuyu ilk seferde algoritma seçer; Hash yalnızca eşlemeyi saklar.
- "Tablo cluster'da ortaktır." Cihaz yereldir.
- "Anahtar istemci IP'si olmak zorunda." Herhangi bir Smart Variable olabilir; NAT arkasındaki kullanıcılar için IP dışı bir anahtar önerilir.
- "Anahtar olmayan istekler de kalıcıdır." Anahtar değeri boş gelen istekler aynı boş anahtarı paylaşır; anahtarın her istekte bulunduğundan emin olunmalıdır.
Dokümantasyonda nasıl yapılır
