Trafiğin yalnızca belirli bir yüzdesini yeni sürüme gönderebilir miyim?
Kısa cevap
Evet. Kalıcı bir pay için yeni ve eski sürümün Kurum Servislerine Weight verilir ve vService'in LB Algorithm alanında Weighted Round Robin seçilir; yeni sürümün payı, kendi Weight değerinin toplam Weight'e oranıdır. İstek başına rastgele bir yüzde için Random Number değişkenini kullanan bir Dynamic Condition koşulu Conditional Backend Services (Content Switching) bloğuna bağlanır. Kullanıcıyı etkilemeden yalnızca kopya göndermek için Traffic Mirroring aksiyonunun Sampling Percentage (%) alanı kullanılır.
Sorun: Yeni Sürüm Trafiğin Küçük Bir Payıyla Denenmeli
Yeni sürüm, riskin sınırlı kalması için önce trafiğin belirli bir yüzdesiyle çalıştırılmak istenir. Payın kalıcı bir dağıtım oranı olarak mı, her istekte yeniden verilen bir karar olarak mı, yoksa kullanıcıya hiç dokunmayan bir kopya olarak mı uygulanacağı ihtiyaca göre değişir.
Çözüm: Üç Yöntem
Üç yöntem birbirinin alternatifidir; Yöntem 1 ve 2 gerçek kullanıcı trafiğini yeni sürüme gönderir, Yöntem 3 yalnızca kopya gönderir.
| Durumunuz | Uygun yöntem |
|---|---|
| Sabit bir oran istiyorum; aynı kullanıcı hep aynı sürüme gidebilsin | Yöntem 1: Weight + Weighted Round Robin |
| Her istekte yeniden verilen rastgele bir yüzde istiyorum | Yöntem 2: Dynamic condition + Random number |
| Kullanıcılar etkilenmesin; yeni sürüm yalnızca kopya trafik alsın | Yöntem 3: Traffic Mirroring Sampling Percentage |
Yöntem 1: Weight + Weighted Round Robin Önerilen
- Nasıl çalışır Her Kurum Servisi, Weight değerinin toplam Weight'e oranında istek alır. Örnek: eski sürüm 90, yeni sürüm 10 → yeni sürüm isteklerin %10'unu alır.
- Nerede açılırLoad Balancer → Backend Services → Weight · vService → LB Algorithm
- Gereksinim İki sürüm de vService'in Default Backend Services listesinde; LB algorithm = Weighted Round Robin
- vService tipi HTTP · L7 TCP (Network vService'te karşılığı Weighted Round-Robin'dir)
Adım adım yapılandırma
Yeni sürüm TR7'de henüz Kurum Servisi olarak tanımlı değilse Load Balancer → Backend Services ekranında Add butonuna tıklanır; ekleme formu açılır. Yeni sürüm zaten tanımlıysa Adım 4'e geçilir.
Backend Service Name ve Address (yeni sürüm sunucusunun IP adresi ya da alan adı ve portu) girilir. Formun altındaki Details anahtarı açılır (varsayılan kapalı) ve Weight alanına payı belirleyen değer yazılır (ör. 10; aralık 1–256, alan boşken 1 uygulanır). Sunucunun düştüğünün anlaşılması için Health Check alanında bir profil seçilir; varsayılan No check'tir. Ayrıntı: Kurum Servisi nasıl eklenir; hangi bilgiler zorunludur?
Formun altındaki Add butonuna tıklanır.
Eski sürümün Kurum Servisi listede seçilip Edit ile açılır; Details anahtarı açılıp Weight alanına kalan pay yazılır (ör. 90). Sunucular bir Backend Group içindeyse aynı alan grubun sunucu satırlarında bulunur; ayrıntı: Backend Groups · sunucu düzeyinde ağırlıklar.
Formun altındaki Edit butonuna tıklanır.
Load Balancer → Load Balancer vService List ekranında vService seçilip düzenleme formu açılır.
Default Backend Services listesinde eski ve yeni sürümün Kurum Servisleri bulunduğu kontrol edilir; yoksa eklenir.
Details panelindeki LB Algorithm alanında Weighted Round Robin seçilir. Varsayılan Round Robin Weight değerlerini dikkate almaz.
Aynı kullanıcının hep aynı sürüme gitmesi isteniyorsa Persistence alanında New cookie seçilir. Bu seçenek yalnızca HTTP vService'te bulunur.
Save butonuna tıklanır. Cluster'da değişiklik auto-sync (varsayılan) ile eş cihaza kendiliğinden aktarılır; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Left Monitor Panel → Load Balancer vServices → vService → Logs & Tracking → HTTP Logs ekranında isteklerin Backend Service sütunundaki dağılımı incelenir. HTTP Logs için vService'e bir log profili atanmış olmalıdır (HTTP Logs nasıl aktif edilir). L7 TCP vService'te bağlantıların hangi Kurum Servisine gittiği vService Sessions ekranında görülür.
Yeni sürüm ≈ %10 · eski sürüm ≈ %90Yöntem 2: Dynamic Condition + Random Number
- Nasıl çalışır Her istekte 0 ile Random max. değerinin bir eksiği arasında bir sayı üretilir; sayı eşiğin altındaysa istek Conditional Backend Services bloğundaki yeni sürüme gider. Random max. = 100 ve eşik 10 → isteklerin %10'u.
- Nerede açılırLoad Balancer → Conditions → Dynamic Condition · vService → Conditional Backend Services
- Gereksinim Yeni sürümün Kurum Servisi tanımlı
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
Yeni sürüm TR7'de henüz Kurum Servisi olarak tanımlı değilse Load Balancer → Backend Services → Add ile Backend Service Name ve Address girilip Add ile kaydedilir (Kurum Servisi nasıl eklenir; hangi bilgiler zorunludur?). Birden çok sunucu tek hedef olarak yönetilecekse Load Balancer → Backend Groups ekranında bir Backend Group oluşturulur.
Load Balancer → Conditions ekranında Add butonuna tıklanır (nasıl eklenir).
Formun altındaki Add butonuna tıklanır.
Load Balancer → Load Balancer vService List ekranında vService seçilip düzenleme formu açılır.
+ Conditional backend services ile yeni bir blok eklenir; bloğun koşul alanında Adım 3'te oluşturulan koşul seçilir, Backend Services alanında yeni sürümün Kurum Servisi (ya da Backend Group'u) seçilir. Bu blok, varsa diğer bloklardan önce değerlendirilmesi gerekiyorsa sürüklenerek üste taşınır (Conditional Backend Services bloklarının değerlendirme sırasını nasıl değiştiririm?).
Save butonuna tıklanır. Koşulu sağlamayan istekler (%90) Default Backend Services listesindeki eski sürüme gider. Cluster'da değişiklik auto-sync (varsayılan) ile eş cihaza aktarılır; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
HTTP Logs ekranında isteklerin Backend Service sütunundaki dağılımına bakılır; L7 TCP vService'te aynı bilgi vService Sessions ekranındadır.
İsteklerin ≈ %10'u bloğun Kurum ServisindenYöntem 3: Traffic Mirroring Sampling Percentage
- Nasıl çalışır İsteklerin seçilen yüzdesinin kopyası yeni sürüme gönderilir; kullanıcı yanıtı her zaman asıl Kurum Servisinden alır, kopyanın yanıtı atılır.
- Nerede açılırLoad Balancer → Actions → Traffic Mirroring → Sampling
- Gereksinim Kopyanın gönderileceği tek bir Kurum Servisi; Backend Group seçilemez
- vService tipi HTTP
Adım adım yapılandırma
Kopyanın gönderileceği yeni sürüm TR7'de henüz Kurum Servisi olarak tanımlı değilse Load Balancer → Backend Services → Add ile Backend Service Name ve Address girilip Add ile kaydedilir (Kurum Servisi nasıl eklenir; hangi bilgiler zorunludur?).
Load Balancer → Actions ekranında Add butonuna tıklanır.
Action Type = Traffic Mirroring seçilir; Mirror Target Service (zorunlu) alanında yeni sürümün Kurum Servisi seçilir. Hedef Kurum Servisinin Address alanında kendi IP adresi ve portu tanımlı olmalıdır; Use Frontend Port seçili bir Kurum Servisine kopya gönderilmez.
Sampling anahtarı açılır (varsayılan kapalı) ve Sampling Percentage (%) girilir (varsayılan 10, aralık 0–100).
Formun altındaki Add butonuna tıklanır.
Load Balancer → Load Balancer vService List ekranında vService seçilip düzenleme formu açılır; Details panelindeki Actions alanına aksiyon eklenir. Aksiyonu oluşturmak tek başına yetmez.
vService Save ile kaydedilir.
Doğrulama
vService'in Live Stats ekranındaki Traffic Mirroring bölümünde Mirrored/s, Skipped/s ve Dropped/s değerlerine; geçmiş akış için Dashboard'un Traffic Mirroring sekmesindeki Mirror Flow grafiğine bakılır (aynalamanın izlenmesi).
Mirrored/s > 0Sık Yapılan Hatalar
- Varsayılan Round Robin ile Weight beklemek. Round Robin Weight değerlerini dikkate almaz; oran için LB algorithm = Weighted Round Robin seçilir.
- Random number bölmesini oturumlu uygulamalarda kullanmak. Karar her istekte yeniden verildiği için aynı kullanıcının istekleri iki sürüm arasında dağılır; oturumlu uygulamada Yöntem 1 ve New cookie persistence kullanılır.
- Aynalamayı gerçek yönlendirme sanmak. Traffic Mirroring yalnızca kopya gönderir; kullanıcı yeni sürümün yanıtını görmez.
- Cluster'da eş cihazı ayrıca yapılandırmak. Auto-sync (varsayılan) açıkken yapılandırma tek cihazda yapılır ve eş cihaza kendiliğinden geçer; yalnızca Manual Sync Mode açıkken Synchronize gerekir.
Dokümantasyonda nasıl yapılır
