Bir koşulu olumsuz ("şu değilse") olarak kullanabilir miyim?
Kısa cevap
Evet. Ayrı bir NOT koşulu oluşturulmaz: tanımlanan her koşul (Conditions), kullanıldığı yerlerdeki seçim listelerinde pozitif hâlinin yanında olumsuz hâliyle de yer alır (otomatik NOT koşulu). Action'ın ya da Conditional Backend Services (Content Switching) bloğunun Conditions alanında olumsuz hâl seçilir; adlı koşulda !KoşulAdı biçiminde görünür. TR7 ile gelen hazır koşulların olumsuzları (ör. If SSL is NOT terminated) ayrı adlarla listelenir; WEB-CLI'da olumsuzluk koşul kimliğinin önüne ! yazılarak kurulur.
Sorun: Kural "Şu Değilse" Diye Kurulmalı
Birçok kural bir durumun yokluğuna bağlıdır: "ofis ağından gelmiyorsa engelle", "mobil değilse masaüstü sunucularına gönder". Bunun için koşulun tersinin kullanılması gerekir; ters koşulu ayrıca tanımlamak hem iş yükü hem de iki kaydın birbirinden kopması riski demektir.
Çözüm: Üç Yöntem
Olumsuz hâl, koşulun kullanıldığı her yerde seçilebilir. Hangi yöntemin kullanılacağı, olumsuz koşulun nerede gerektiğine bağlıdır:
| Durumunuz | Uygun yöntem |
|---|---|
| Aksiyon, koşul sağlanmadığında çalışmalı | Yöntem 1: Aksiyonda olumsuz hâl |
| Koşulu sağlamayan istekler ayrı Kurum Servisine gitmeli | Yöntem 2: Conditional Backend Services bloğunda olumsuz hâl |
| Komut satırından | Yöntem 3: WEB-CLI (!) |
Yöntem 1: Aksiyonda Olumsuz Hâli Seçmek Önerilen
- Nasıl çalışır Koşulun olumsuz hâli seçildiğinde aksiyon, koşul sağlanmadığında çalışır. Olumsuz hâl ayrı bir kayıt değildir; koşulun kullanıldığı yerde tutulan bir işarettir.
- Nerede açılırLoad Balancer → Actions → Add / Edit → Conditions
- Gereksinim Koşul alabilen bir aksiyon tipi; tersi kullanılacak koşulun pozitif hâliyle tanımlı olması (hazır koşullarda gerekmez)
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
Koşul henüz yoksa pozitif hâliyle oluşturulur: Load Balancer → Conditions → Add ile koşul formu açılır; ör. ofis ağı için Criteria = Source IP, Source IP type = Manual seçilip ofis adresleri yazılır ve Add ile kaydedilir (nasıl eklenir). Ayrı bir NOT koşulu oluşturulmaz. Hazır bir koşulun tersi kullanılacaksa bu adım atlanır.
Conditions alanındaki Select Conditions listesinde koşulun olumsuz satırı seçilir. Olumsuz hâl kısa gösterimle yazılır: adlı koşulda !KoşulAdı; adsız koşulda koşulun kendisi ters işaretle (IP listesinde ∉, birebir eşleşmede ≠). TR7 ile gelen hazır koşullar listede italik yazılır ve olumsuzları ayrı adlarla yer alır (ör. If SSL is NOT terminated, If the client is NOT mobile); Always ve Never gibi bazılarının yalnızca pozitif hâli vardır.
Yeni aksiyon Add, mevcut aksiyon Edit ile kaydedilir. Yeni aksiyon ayrıca vService'in Details → Actions alanına eklenip vService Save ile kaydedilir.
Doğrulama
Load Balancer → Actions listesindeki Conditions kolonunda ve önizlemenin Conditions sekmesinde olumsuz hâl görülür (aksiyon önizlemesi).
!OfisAgiKoşulu sağlayan ve sağlamayan birer adresten istek gönderilir; aksiyonda Hit counter açıksa sayım vService'in Live Stats · Action Hits bölümünde izlenir.
Aksiyon yalnızca koşulu sağlamayan istekte çalışırYöntem 2: Conditional Backend Services Bloğunda
- Nasıl çalışır Bloğun koşul seçicisi de her koşulu olumsuz hâliyle birlikte listeler; koşulu sağlamayan istekler bloğun Kurum Servislerine gider.
- Nerede açılır vService → Edit → Default Backend Services → + Conditional backend services → Select Conditions
- Gereksinim HTTP ya da L7 TCP vService; blokta yalnızca istek aşamasındaki koşullar seçilebilir
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
Koşul henüz yoksa Load Balancer → Conditions → Add ile pozitif hâliyle oluşturulup Add ile kaydedilir (nasıl eklenir); olumsuz hâl listede kendiliğinden yer alır.
Bloğun yönlendireceği sunucular TR7'de henüz Kurum Servisi olarak tanımlı değilse önce eklenir; tanımlıysa bu adım atlanır. Load Balancer → Backend Services → Add ile her sunucu için Backend Service Name ve Address (IP ya da alan adı ve port) girilir; Health Check alanında profil seçilmezse (varsayılan No check) sunucunun erişilemez olduğu algılanmaz. Sunucular tek hedef olarak yönetilecekse Load Balancer → Backend Groups → Add ile bir Backend Group oluşturulur. Ayrıntı: Kurum Servisi nasıl eklenir; hangi bilgiler zorunludur?
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Default Backend Services tablosunun başlığındaki + Conditional backend services tıklanır; mevcut blok kullanılacaksa başlığına tıklanarak açılır.
Bloğun Select Conditions alanında koşulun olumsuz satırı, Backend Services tablosunda hedef Kurum Servisleri ya da Backend Group seçilir.
vService formu Save ile kaydedilir.
Doğrulama
Koşulu sağlamayan bir istek gönderilir; Left Monitor Panel'de vService açılıp Logs & Tracking sekmesindeki HTTP logs ekranında isteğin gittiği Kurum Servisine bakılır.
Koşulu sağlamayan istek → blok hedefiYöntem 3: WEB-CLI (!)
- Nasıl çalışır Koşul ifadesinde koşul kimliğinin önüne
!yazılır. Bir parantezin önüne yazılan!da kabul edilir; TR7 onu koşul düzeyine dağıtır:!(A or B)→!A and !B. - Nerede açılır TR7 WEB-CLI →
lb action update·lb service update - Gereksinim WEB-CLI erişimi; koşulların kimlikleri (adları değil)
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
İfadede koşulun adı değil kimliği kullanılır; kimlikler lbConditions- ile başlar (lb condition). Ad yazılırsa komut hata vermez, ancak bu öğe tanımlı bir koşula karşılık gelmediği için yapılandırma uygulanırken koşuldan düşer.
lb condition list--cond aksiyonun mevcut koşulunun tamamının yerine geçer (aksiyon komutları):
lb action update id <aksiyon-kimliği> --cond "!<koşul-kimliği>"Conditional Backend Services blokları formdaki sırayla tutulur; en üstteki blok 0'dır. Bloğun sırası vService kaydından okunur:
lb service show <vService>Komuttaki sıra numarası, o sıradaki mevcut bloğun yalnızca koşulunu değiştirir; bloğun hedefleri ve diğer bloklar korunur (WEB-CLI · lb service). Örnek: en üstteki bloğun koşulu:
lb service update id <vService> --dynamicBackendList.0.cond "!<koşul-kimliği>"Doğrulama
Kayıt lb action show ya da lb service show ile yeniden görüntülenir; koşul alanı WEB-CLI ifadesi olarak, koşul kimliğiyle gösterilir. Koşul adıyla gösterim arayüzde Actions listesinin Conditions kolonunda görülür.
Koşul kimliğinin önünde ! · arayüzde !KoşulAdıSık Yapılan Hatalar
- Arayüzde "NOT (A ve B)" için grubu olumsuzlamaya çalışmak. Arayüzde olumsuzluk tek koşul düzeyindedir; eşdeğeri bir grupta
!Ave!B'nin or ile birleştirilmesidir. WEB-CLI'da!(A and B)yazılabilir; TR7 bunu aynı biçime çevirir. - Conditions listesinde ayrı NOT kaydı aramak. Load Balancer → Conditions listesinde yalnızca pozitif kayıt görünür; olumsuz hâl, koşulun seçildiği listelerde gelir.
- User authentication (On HTTP request) aksiyonunda olumsuz hâli seçmek. Bu aksiyonda User Authentication koşulunun pozitif hâli seçilir; TR7 kimliği doğrulanmamış istekleri kendisi ayırır ve giriş penceresini yalnızca onlara açar.
- Olumsuz koşulun boş değerde de eşleştiğini unutmak. Örneğin "başlık X değilse" koşulu, başlığı hiç taşımayan istekleri de kapsar.
Dokümantasyonda nasıl yapılır
