Persistence yüzünden yük dengesiz dağılıyor; ne yapabilirim?
Kısa cevap
Persistence kullanıcıları ilk atandıkları Kurum Servisinde tuttuğu için yük zamanla dengesizleşebilir: yeni eklenen sunucu yalnızca yeni kullanıcıları alır, uzun oturumlu kullanıcılar eski sunucularda birikir. SAM kullanılıyorsa Rebalance ile yoğun sunuculardaki oturumların bir kısmı temizlenir. Ayrıca yeni oturumların dağılımı için doğru algoritma ve Weight seçilir, persistence süreleri kısaltılır, Hash anahtarı çeşitlendirilir; uygulama stateless ise persistence kaldırılır (None).
Sorun: Sabitlenen Oturumlar Birikiyor
Persistence açıkken yük dengeleme kararı yalnızca yeni kullanıcılar için verilir. Bir sunucu bakımdan döndüğünde, yeni sunucu eklendiğinde ya da bazı kullanıcıların oturumları çok uzun sürdüğünde mevcut oturumlar yerinde kalır. NAT arkasından gelen kullanıcılar ya da düşük çeşitlilikteki anahtarlar da tek sunucuda toplanabilir.
Önce Teşhis
- SAM sekmesi: Her Kurum Servisinin oturum yüzdesi ve sayısı görülür; Weight 1'den büyükse çubukta
Weight=Netiketi görünür. - Dashboard: Backend Current Sessions Distribution ve Backend Queue Distribution grafikleri incelenir.
Çözüm: Beş Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| SAM kullanılıyor; mevcut oturumları yeniden dağıtmak | Yöntem 1: SAM Rebalance |
| Yeni oturumlar da dengesiz dağılıyor | Yöntem 2: Algoritma ve Weight |
| Oturumlar gereğinden uzun süre sabit kalıyor | Yöntem 3: Süreleri kısaltmak |
| Çok kullanıcı tek anahtarda toplanıyor (NAT, sabit başlık) | Yöntem 4: Anahtarı çeşitlendirmek |
| Uygulama oturumu sunucuda tutmuyor | Yöntem 5: Persistence'ı kaldırmak |
Yöntem 1: SAM Rebalance Önerilen
- Nasıl çalışır Seçilen sunuculara bağlı oturum kayıtlarının belirlenen yüzdesi silinir; bu kullanıcılar bir sonraki isteklerinde algoritmaya göre yeniden atanır.
- Nerede açılır vService ekranı → Session Affinity Manager (SAM) sekmesi → Rebalance
- Gereksinim Persistence = SAM; listede en az iki Kurum Servisi
- vService tipi HTTP
Adım adım yapılandırma
vService'in yönetim ekranı açılır ve Session Affinity Manager (SAM) sekmesine geçilir (sekmeler); sekme yalnızca Persistence SAM olduğunda görünür.
Yoğun sunucuların bulunduğu listenin (Default Backend Services ya da koşullu küme) başlığındaki Rebalance tıklanır; Rebalance Sessions formu açılır.
Backends alanında yalnızca yoğun sunucular işaretlenir, Percent (1–100, varsayılan 100) düşük bir değere (ör. 30) çekilir. Percent 100'ün altındayken görünen Selection alanında seçici belirlenir (ör. Oldest (By expiry) süresi dolmaya en yakın oturumları seçer).
Formun altındaki Accept butonuna tıklanır.
Rebalance Sessions? penceresinde temizlenecek yaklaşık oturum sayısı kontrol edilip onaylanır. Açık bağlantılar kesilmez; kullanıcılar bir sonraki isteklerinde yeniden atanır.
Doğrulama
İşlemden sonra sekme yenilenir; yoğun sunucunun oturum yüzdesi düşer.
Oturum yüzdeleri birbirine yaklaşırYöntem 2: Algoritma ve Weight
- Nasıl çalışır Persistence yalnızca ilk atamadan sonra devreye girer; ilk atamayı algoritma yapar. Doğru algoritma ve Weight, yeni oturumların dengeli dağılmasını sağlar.
- Nerede açılır vService → Edit → Details → LB Algorithm; Kurum Servisi → Edit → Details → Weight
- Gereksinim Yok
- vService tipi HTTP, L7 TCP
Adım adım yapılandırma
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Details → LB Algorithm kutusunda varsayılan Round Robin Weight'i yok sayar. Sunucu kapasiteleri farklıysa Weighted Round Robin, oturum süreleri çok farklıysa Least Connection seçilir.
vService formundaki Save butonuna tıklanır.
Load Balancer → Backend Services ekranında Kurum Servisi seçilip Edit tıklanır.
Kapasiteyle orantılı Weight (1–256, varsayılan 1) girilir.
Formun altındaki Edit butonuna tıklanır; 4–6. adımlar diğer Kurum Servisleri için tekrarlanır. Mevcut sabitlemeler süreleri dolana ya da Rebalance yapılana kadar yerinde kalır.
Doğrulama
vService Dashboard'unda Backend Current Sessions Distribution grafiği izlenir.
Oturumlar sunuculara daha dengeli dağılırYöntem 3: Süreleri Kısaltmak
- Nasıl çalışır Persistence kayıtları daha çabuk sona erer; kullanıcılar daha sık yeniden dağıtılır.
- Nerede açılır vService → Details → LB Algorithm kutusu → Persistence alanları
- Gereksinim Sürelerin uygulamanın oturum süresinden kısa olmaması
- vService tipi HTTP, L7 TCP
Adım adım yapılandırma
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Details → LB Algorithm kutusundaki Persistence alanlarında: New cookie: Cookie max-idle (varsayılan 30 dk) ve Cookie max-life (varsayılan 8 saat) · SAM: Max idle (varsayılan 30 dk) ve Max life (varsayılan 24 saat) · Hash: Hash Key Expire Time (varsayılan 7 gün). Süreler, uygulamanın kendi oturum süresinden kısa olmayacak şekilde düşürülür. SAM'de bu değişiklik oturum tablosunu sıfırlamaz.
Save tıklanır.
Doğrulama
vService Dashboard'unda Backend Current Sessions Distribution grafiği izlenir.
Oturumlar sunuculara daha dengeli dağılırYöntem 4: Anahtarı Çeşitlendirmek
- Nasıl çalışır Hash anahtarı ya da SAM oturum kimliği az sayıda farklı değer üretiyorsa çok kullanıcı tek kayıtta toplanır; kullanıcıya özgü bir değer bu yığılmayı önler.
- Nerede açılır vService → Persistence → Hash Key ya da SAM → Session ID Format
- Gereksinim İstekte kullanıcıya özgü bir değer bulunması
- vService tipi HTTP, L7 TCP
Adım adım yapılandırma
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Hash persistence'ta anahtar istemci IP adresiyse (NAT arkası) Hash Key listesine kullanıcıya özgü bir header ya da cookie değeri veren Smart Variable eklenir.
SAM'de Custom Format kullanılıyorsa anahtarlar kullanıcıya özgü değerlerle zenginleştirilir ya da UUID biçimine geçilir. Session ID Format değişikliği SAM tablosunu sıfırlar.
Save tıklanır.
Doğrulama
vService Dashboard'unda Backend Current Sessions Distribution grafiği izlenir.
Oturumlar sunuculara daha dengeli dağılırYöntem 5: Persistence'ı Kaldırmak
- Nasıl çalışır Uygulama oturumu ortak bir depoda (Redis, veritabanı) ya da token'da tutuyorsa persistence gereksizdir; kaldırıldığında her istek algoritmaya göre dağıtılır.
- Nerede açılır vService → Details → LB Algorithm kutusu → Persistence → None
- Gereksinim Uygulamanın stateless olması
- vService tipi HTTP, L7 TCP
Adım adım yapılandırma
Uygulama ekibiyle oturumun sunucu yerelinde tutulmadığı doğrulanır.
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Details → LB Algorithm kutusundaki Persistence alanında None seçilir; docs da stateless uygulamalarda persistence kullanılmamasını önerir (en iyi uygulamalar).
Save tıklanır.
Doğrulama
vService Dashboard'unda Backend Current Sessions Distribution grafiği izlenir.
Oturumlar sunuculara daha dengeli dağılırSık Yapılan Hatalar
- Rebalance'ı oturum taşıma sanmak. Rebalance kayıtları siler; yeni sunucuyu algoritma seçer.
- Bütün sunucuları Percent 100 ile seçmek. Listenin bütün oturumları temizlenir; kademeli dengeleme için yoğun sunucular ve düşük yüzde seçilir.
- Reload ile dengelemeye çalışmak. vService menüsündeki Reload servisi yeniden başlatır; kontrollü değildir.
- Connection limit ile çözmeye çalışmak. Connection Limit oturumları taşımaz; yalnızca limite ulaşan servisin yeni bağlantı almasını engeller, HTTP ve L7 TCP'de bütün servisler limitteyse istek Queue Timeout süresince kuyrukta bekler, ardından 503 döner.
Dokümantasyonda nasıl yapılır
