Persistence açık olmasına rağmen kullanıcılarım farklı sunuculara düşüyor; neden?
Kısa cevap
Nedenler şunlardan biridir: seçilen Persistence yöntemi uygulanmıyordur (self-persistent bir algoritma seçili ya da SAM kullanılan listede tek sunucu var), istemci cookie'yi geri göndermiyordur (API istemcisi, HTTP üzerinden erişilen Secure cookie, SameSite kısıtı), süreler doluyordur, sabitlenen sunucu health check'te Error durumuna düşüyor ya da Maintenance Mode'a alınıyordur, servis yeniden başlatılıp Hash ya da SAM tablosu boşalıyordur ya da istek farklı bir Conditional Backend Services kümesine veya cluster'daki diğer cihaza gidiyordur. Neden, tarayıcıdaki cookie'ler ve vService'in HTTP Logs ekranındaki Backend Service kolonuyla bulunur.
Olası Nedenler
| Neden | Açıklama | Ne yapılır |
|---|---|---|
| Self-persistent algoritma | Source, URI, URL Param ya da HDR (L7 TCP'de RDP Cookie) seçiliyse Persistence alanı gizlenir ve oradaki yöntem uygulanmaz; dağıtım algoritmanın hash'ine göre yapılır (ör. Source'ta istemcinin IP'si değişirse sunucu da değişir) | Algoritma ve Persistence ayarı birlikte gözden geçirilir |
| SAM'de listede tek sunucu | SAM, Default Backend Services listesinde ya da koşullu kümede ikiden az sunucu varsa o listeye uygulanmaz | Listeye ikinci bir Kurum Servisi eklenir |
| İlk iki istek (SAM, TR7 Generates) | İlk istek cookie'siz gelir ve algoritmayla dağıtılır; eşleme cookie'nin geri geldiği istekte kurulur | Beklenen davranıştır |
| Cookie geri gelmiyor | API istemcileri ve bazı mobil uygulamalar cookie saklamaz | Header tabanlı Hash ya da HDR algoritması kullanılır |
| Secure bayrağı + HTTP | SAM Security Flags'te Secure (HTTPS only) açıkken (varsayılan) site HTTP ile açılırsa tarayıcı cookie'yi göndermez | Siteye HTTPS ile erişilir ya da bayrak gözden geçirilir |
| SameSite = Strict | Başka siteden gelen geçişlerde cookie gönderilmez; yeni oturum başlar | SameSite değeri uygulamaya göre seçilir |
| Süreler doldu | New cookie: Cookie max-idle / max-life · SAM: Max idle / Max life · Hash: Hash Key Expire Time | Süreler uygulamanın oturum süresine göre ayarlanır |
| Sunucu düştü ya da bakımda | Sabitlenen sunucu health check'te Error olursa ya da Maintenance mode'a alınırsa istekler başka sunucuya gider | Sunucunun sağlık geçmişi Kurum Servisinin önizlemesindeki Health Checks sekmesinden incelenir |
| Servis yeniden yüklendi | vService menüsündeki Reload SAM ve Hash tablolarını boşaltır; olağan kayıtta da Hash tablosu yeniden kurulur | Bkz. Bir yapılandırma değişikliğini kaydetmek persistence tablolarını sıfırlar mı? |
| Cluster | SAM ve Hash tabloları her cihazda ayrıdır; istek diğer cihaza giderse (ör. VIP eş cihaza geçtiğinde) kayıt bulunmaz. New cookie ve Current cookie bundan etkilenmez | Trafiğin tek cihazda karşılanıp karşılanmadığı kontrol edilir |
| Conditional Backend Services | Her koşullu kümenin kendi sunucuları ve kendi tablosu vardır; istek küme değiştirirse farklı sunucuya gider | Koşullar ve kümeler gözden geçirilir |
| Current cookie ayarı | Cookie adı uygulamanınkiyle birebir aynı değilse ya da uygulama cookie'yi set etmiyorsa sabitleme kurulmaz | Cookie adı tarayıcıda kontrol edilir |
| Cookie adı ya da sunucu adresi değişti | Eski cookie'ler eşleşmez | Değişiklik sonrası geçici olarak beklenir |
Teşhis Adımları
- Tarayıcı geliştirici araçları: Yanıtta persistence cookie'sinin (
TR-C,TR7SIDya da uygulamanın cookie'si) set edilip edilmediğine ve sonraki isteklerde gönderilip gönderilmediğine bakılır; Secure ve SameSite bayrakları incelenir. - HTTP Logs: Aynı kullanıcının isteklerinin Backend Service kolonunda hangi sunuculara gittiği ve geçişin ne zaman olduğu bulunur.
- Sağlık durumu: Geçiş anında sunucunun Error ya da bakımda olup olmadığı kontrol edilir.
- SAM sekmesi: SAM kullanılıyorsa vService'in Session Affinity Manager (SAM) sekmesinde oturum sayıları incelenir; listede iki sunucudan az varsa sekme bunu bir uyarıyla gösterir.
Sık Karıştırılan Noktalar
- "Persistence sunucu düşse de kullanıcıyı aynı sunucuda tutar." Kullanılamayan sunucuya istek gönderilmez.
- "SAM ilk istekten itibaren sabitler." Eşleme cookie'nin geri geldiği istekte kurulur.
- "Reload tabloları korur." vService menüsündeki Reload SAM ve Hash tablolarını boşaltır.
- "Tablolar cluster'da ortaktır." Her cihaz kendi tablosunu tutar.
Dokümantasyonda nasıl yapılır
