Birden fazla koşulu AND / OR ile nasıl birleştiririm?
Kısa cevap
Action'ın ya da Conditional Backend Services (Content Switching) bloğunun Conditions alanında bir gruba birden fazla koşul (Conditions) seçilir; grupta ikinci koşul eklenince çıkan anahtarla grup içi mantık and ya da or yapılır (varsayılan and). Farklı mantıkta bir parça gerekiyorsa + ile yeni grup eklenir (en fazla 3 grup); yeni grup önceki gruba varsayılan olarak or ile bağlanır. Gruplar arasında and, or'dan önce değerlendirilir: G1 or G2 and G3, G1 or (G2 and G3) demektir (çoklu koşul mantığı).
Sorun: Tek Koşul Yetmiyor
Gerçek kurallar çoğu zaman birden fazla ölçüte dayanır: "yol /admin ile başlıyorsa ve istemci ofis ağında değilse" ya da "Host A veya Host B ise". Bu ölçütlerin tek bir kuralda doğru mantıkla birleştirilmesi gerekir. TR7'de koşullar ve aksiyonlar (Conditions & Actions; F5 Local Traffic Policy / iRules, Citrix Responder / Rewrite policy benzeri) bu birleştirmeyi kod yazmadan yapar.
Çözüm: Dört Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| Bir aksiyonun ne zaman çalışacağını belirlemek | Yöntem 1: Aksiyon formundaki Conditions alanı |
| İsteğin hangi Kurum Servisine gideceğini koşula bağlamak | Yöntem 2: Conditional Backend Services bloğu |
| Komut satırından | Yöntem 3: WEB-CLI koşul ifadesi |
| Mantık 3 gruba sığmıyor | Yöntem 4: Birden fazla aksiyona bölmek |
Yöntem 1: Aksiyon Formundaki Conditions Alanı Önerilen
- Nasıl çalışır Grup içindeki koşullar grubun anahtarıyla, gruplar da aralarındaki anahtarla birleştirilir; and ile bağlı ardışık gruplar önce birleşir.
- Nerede açılırLoad Balancer → Actions → Add / Edit → Conditions
- Gereksinim Koşul alabilen bir aksiyon tipi (koşul alan ve almayan aksiyonlar); birleştirilecek koşullar tanımlı
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
Birleştirilecek koşullar henüz yoksa her biri ayrı ayrı oluşturulur: Load Balancer → Conditions → Add ile koşul formu açılır, Criteria ve ölçüte ait alanlar doldurulup Add ile kaydedilir (nasıl eklenir). Örnek: yönetim yolu için Path /admin/, ofis ağı için Source IP (Manual). Her koşulun olumsuz hâli listede kendiliğinden bulunur; ayrıca oluşturulmaz (otomatik NOT koşulu).
Yeni aksiyonda önce Action Type ve aşama seçebilen tiplerde Execution Level (On Request / On Response) belirlenir. Aşama değiştirildiğinde seçili koşullar sıfırlanır; ayrıca koşul listesi yalnızca seçilen aşamada ve protokolde çalışan koşulları gösterir.
Conditions alanında ilk grubun Select Conditions listesinden koşullar seçilir; liste çoklu seçimlidir. Grupta iki koşul olunca grubun yanında and/or anahtarı çıkar (varsayılan and); tıklanarak or yapılır.
Farklı mantıkta bir parça için ilk grubun yanındaki + tıklanır; üç gruba ulaşınca + devre dışı kalır. Fazla grup, yanındaki çöp kutusu simgesiyle silinir.
İki grup arasında çıkan anahtar yeni grupta or olarak gelir; gerekiyorsa tıklanarak and yapılır. Örnek: "(A veya B) ve C" için Grup 1 = A, B (or), Grup 2 = C, gruplar arası and.
Yeni aksiyon Add, mevcut aksiyon Edit ile kaydedilir. Mevcut aksiyonda değişiklik, aksiyonu kullanan bütün vService'lere uygulanır.
Yeni aksiyon bir vService'e bağlanmadan çalışmaz: Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır, Details bölümündeki Actions alanından aksiyon seçilir.
vService formu Save ile kaydedilir.
Doğrulama
Load Balancer → Actions listesindeki Conditions kolonunda ve satıra tıklanınca açılan önizlemenin Conditions sekmesinde birleşim görülür (aksiyon önizlemesi). Kolonda and &, or | ile gösterilir; birden fazla koşullu grup parantez içine alınır.
(A | B) & CYöntem 2: Conditional Backend Services Bloğu
- Nasıl çalışır Bloğun koşul alanı aksiyon formundakiyle aynı biçimde çalışır; birleşik koşul sağlanırsa istek bloğun Kurum Servislerine gider. Bloklar yukarıdan aşağıya değerlendirilir, ilk eşleşen blok kazanır.
- Nerede açılır vService → Edit → Default Backend Services → + Conditional backend services
- 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
Birleştirilecek koşullar henüz yoksa Load Balancer → Conditions → Add ile her biri ayrı ayrı oluşturulup Add ile kaydedilir (nasıl eklenir).
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.
Mevcut blok başlığına tıklanarak açılır; yeni blok için Default Backend Services tablosunun başlığındaki + Conditional backend services tıklanır.
Bloğun Select Conditions alanında gruplara koşullar seçilir; grup içi ve gruplar arası and/or anahtarları Yöntem 1'deki gibi ayarlanır (en fazla 3 grup).
Bloğun Backend Services tablosundan hedef Kurum Servisleri ya da Backend Group seçilir.
vService formu Save ile kaydedilir.
Doğrulama
vService formunda bloğun başlığında koşulun kısa özeti görünür; koşulsuz blokta başlık CONDITIONAL BACKEND #1 gibi sıra numarasıdır.
(A | B) & CKoşula uyan ve uymayan birer istek gönderilir; Left Monitor Panel'de vService açılıp Logs & Tracking sekmesindeki HTTP logs ekranında isteklerin gittiği Kurum Servisine bakılır.
Uyan istek → blok hedefi · uymayan → Default backend servicesYöntem 3: WEB-CLI Koşul İfadesi
- Nasıl çalışır Koşullar kimlikleriyle tırnak içinde bir ifade olarak yazılır;
and/or, olumsuzluk için!ve en fazla bir düzey parantez kullanılır. TR7 ifadeyi arayüzdeki gruplara çevirir: parantez bir grup olur, and yine or'dan önce değerlendirilir. - 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 ve listeden alınır (lb condition). İfadeye 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; tek koşulsa aksiyon koşulsuz hâle gelir.
lb condition list--cond aksiyonun mevcut koşulunun tamamının yerine geçer (aksiyon komutları). Örnek "(A veya B) ve C":
lb action update id <aksiyon-kimliği> --cond "(<koşul-A> or <koşul-B>) and <koşul-C>"Conditional Backend Services blokları dynamicBackendList listesinde, formdaki sırayla tutulur; en üstteki blok 0'dır. Değiştirilecek 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-A> or <koşul-B>) and <koşul-C>"Doğrulama
Aksiyon kaydı lb action show komutuyla, vService kaydı lb service show komutuyla yeniden görüntülenir; koşul alanı WEB-CLI ifadesi olarak, koşul kimlikleri ve işleçlerle gösterilir. Koşul adlarıyla gösterim arayüzde Actions listesinin Conditions kolonunda görülür.
A, B ve C'nin kimlikleri istenen and / or yapısındaYöntem 4: Birden Fazla Aksiyona Bölmek
- Nasıl çalışır Tek aksiyonun 3 grubuna sığmayan bir "veya" mantığı, aynı işi yapan birden fazla aksiyona bölünür; her aksiyon kendi koşuluyla çalışır.
- Nerede açılırLoad Balancer → Actions
- Gereksinim Aksiyonun isteği sonlandırmaması ya da sıranın bilinçli kurulması (Bir action trafiği engeller veya yönlendirirse sonraki action'lar çalışır mı?)
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
Load Balancer → Actions → Add ile aksiyon oluşturulur; Conditions alanında birinci dalın koşulları seçilip Add & Repeat tıklanır. Form açık kalır.
Aynı tipte ikinci aksiyon için ad ve ikinci dalın koşulları girilir, Add ile kaydedilir.
vService Edit ile açılır; iki aksiyon Details → Actions alanında seçilir. Aksiyonlar listedeki sırayla çalışır (Action'lar hangi sırayla çalışır; sırayı nasıl değiştiririm?).
vService formu Save ile kaydedilir.
Doğrulama
Aksiyonlarda Hit counter açılırsa her dalın kaç kez çalıştığı vService'in Live Stats · Action Hits bölümünde ayrı ayrı görülür.
Her dalın sayacı kendi koşulunda artarSık Yapılan Hatalar
- Yeni grubun and ile bağlandığını sanmak. Arayüzde yeni grup önceki gruba varsayılan olarak or ile bağlanır; grup içi anahtar ise varsayılan and'dir.
- Grupları soldan sağa değerlendirmek.
G1 or G2 and G3,G1 or (G2 and G3)olarak değerlendirilir; and her zaman önce birleşir. - Dördüncü grubu aramak. Arayüzde en fazla 3 grup vardır; daha karmaşık mantık aksiyonlara bölünür.
- Yeni aksiyonda Execution level'ı koşullardan sonra değiştirmek. Aşama değişince seçili koşullar sıfırlanır; önce aşama, sonra koşullar seçilir.
- WEB-CLI ifadesine koşulun adını yazmak. İfade kimlikle kurulur; ad yazılan öğe koşuldan düşer ve aksiyon beklenenden geniş trafiğe uygulanabilir. WEB-CLI'da iç içe parantez de kullanılamaz.
Dokümantasyonda nasıl yapılır
