HTTP health check'te belirli bir status code'u (ör. 200, 302) nasıl beklerim?
Kısa cevap
HTTP ya da HTTPS türündeki Health Checks profilinde Expected Status Codes listesinde beklenen kodlar seçilir; varsayılan 200'dür. Yanıtın kodu listedekilerden biriyse denetim başarılı sayılır. TR7 yönlendirmeleri izlemez: sağlık adresi 302 dönüyorsa 302 listeye eklenmelidir. Aynı liste WEB-CLI'da --expectedStatusCodes.N ile yazılır; durum koduyla birlikte başlık ya da gövde koşulu gerekiyorsa Content Check Mode alanında JSONata Expression kullanılır.
Sorun: Sağlık Adresi 200 Dışında Bir Kod Dönüyor
Varsayılan HTTP denetimi yalnızca 200 yanıtını başarılı sayar. Bazı uygulamaların sağlık adresi oturum açma sayfasına yönlendirir (302), bazıları 204 ya da 401 döner. Dönen kod listede yoksa denetim "Unexpected status code" hatasıyla başarısız olur; sunucu çalışırken bile art arda Required Failures kadar başarısızlıktan sonra Error durumuna geçer ve trafikten çıkar.
Çözüm: 3 Yöntem
Üç yöntem birbirinin alternatifidir; Yöntem 3, Yöntem 1'deki listeyle birlikte çalışır.
| Durumunuz | Uygun yöntem |
|---|---|
| Kod listesini arayüzden belirlemek istiyorum | Yöntem 1: Expected Status Codes |
| Profili WEB-CLI'dan oluşturuyorum ya da güncelliyorum | Yöntem 2: WEB-CLI |
| Durum koduyla birlikte başlık ya da gövde koşulu gerekiyor | Yöntem 3: JSONata ifadesi |
Yöntem 1: Expected Status Codes Önerilen
- Nasıl çalışır Yanıtın durum kodu listedeki herhangi bir kodla eşleşirse denetim başarılıdır; eşleşmezse "Unexpected status code" hatası oluşur.
- Nerede açılırLoad Balancer → Profiles → Health Checks → HTTP/HTTPS profili → Expected Status Codes
- GereksinimCheck Type HTTP ya da HTTPS; profilin atanacağı bir Kurum Servisi
- vService tipi Tümü (Network vService'te ANY - L3 ve Port Range açıkken sağlık durumu dağıtıma yansımaz)
Adım adım yapılandırma
Sol alttaki TR7 logosuyla Configuration Menu açılır; Load Balancer → Profiles → Health Checks yolu izlenir.
Yeni profil için Add'e tıklanır; mevcut bir profil için profil seçilip Edit'e tıklanır (Nasıl eklenir?).
Name alanına profil adı yazılır; Check Type listesinde HTTP (varsayılan) ya da HTTPS seçilir. Tür kayıttan sonra değiştirilemez.
Path + Query alanına sağlık adresi yazılır (ör. /health); boş bırakılırsa istek / adresine gönderilir.
Expected Status Codes listesinde beklenen kodlar işaretlenir (ör. 200: OK ve 302: Found (Moved Temporarily)). Varsayılan seçim 200: OK'tir.
Formun altındaki Add (düzenlemede Edit) butonuna tıklanır. Profil zaten Kurum Servislerine atanmışsa değişiklik profili kullanan bütün Kurum Servislerine uygulanır.
Load Balancer → Backend Services yolu izlenir; Kurum Servisine sağ tıklanıp Edit seçilir.
Health Check alanında profil seçilir. Seçimden sonra görünen Enable HC Logs varsayılan olarak açıktır.
Formun altındaki Edit butonuna tıklanır. Kurum Servisi önce Preparing durumuna geçer; art arda Required Successes kadar başarılı denetimden sonra OK olur. Cluster'da değişiklik varsayılan olarak eş cihaza kendiliğinden aktarılır; Manual Sync Mode açıksa Synchronize ile gönderilir.
Doğrulama
Backend Services listesinde Kurum Servisine tıklanır; önizlemenin Details sekmesindeki Status Code satırı son denetimde alınan kodu gösterir (Details satırları).
Status Code: 302 · Health Check: OK (yeşil)Önizlemedeki Health Checks sekmesinde her kaydın özetinde denetim türü, süre ve dönen kod yer alır.
OK · HTTP / 3ms / 302: Found (Moved Temporarily)Yöntem 2: WEB-CLI
- Nasıl çalışır Beklenen kodlar
--expectedStatusCodes.Nalanına sıra numarasıyla yazılır; her kod kendi sıra numarasını alır. - Nerede açılır WEB-CLI →
lb hc add/lb hc update(lb hc · HTTP ve HTTPS alanları) - Gereksinim WEB-CLI erişimi; profili atamak için Kurum Servisinin kimliği
- vService tipi Tümü
Adım adım yapılandırma
Yeni profil şu komutla oluşturulur; checkType ve name zorunludur ve bu sırayla yazılır:
lb hc add checkType http name web-saglik --uri /health --expectedStatusCodes.0 200 --expectedStatusCodes.1 302Önce lb hc show <profil-kimliği> ile profilin mevcut listesi görülür. Yeni kod listenin ilk boş sıra numarasına yazılır; dolu bir sıra numarasına yazılan kod oradaki kodun yerine geçer. Listede yalnızca 200 varsa:
lb hc update id <profil-kimliği> --expectedStatusCodes.1 302Profil kimliği lb hc list, Kurum Servisi kimliği lb backend list çıktısından alınır ve profil kimliği Kurum Servisinin --hc alanına yazılır (lb backend · Health check alanları):
lb backend update id <backend-kimliği> --hc <profil-kimliği>Doğrulama
Profil kaydı görüntülenir.
lb hc show <profil-kimliği>expectedStatusCodes listesinde 200 ve 302Yöntem 3: JSONata İfadesi
- Nasıl çalışırContent Check Mode alanında JSONata Expression seçildiğinde ifade durum kodunu (
status), yanıt başlıklarını (headers) ve gövdeyi (body,bodyRaw) birlikte değerlendirir; ifade doğru (truthy) dönerse içerik kontrolü başarılıdır. Expected Status Codes listesi ayrıca uygulanmaya devam eder. - Nerede açılır HTTP/HTTPS profili → Content Check Mode → JSONata Expression → JSONata Query
- Gereksinim Beklenen kodların Expected Status Codes listesinde de bulunması
- vService tipi Tümü
Adım adım yapılandırma
Load Balancer → Profiles → Health Checks ekranında HTTP/HTTPS profili seçilip Edit'e tıklanır.
Expected Status Codes listesinde ifadede beklenen kod da işaretlenir (ör. 302: Found (Moved Temporarily)).
Content Check Mode alanında JSONata Expression seçilir; JSONata Query alanına örneğin status = 302 and $contains(headers.location, "/login") yazılır.
Edit butonuna tıklanır; değişiklik profili kullanan bütün Kurum Servislerine uygulanır.
Doğrulama
Backend Services listesinin Health kolonundaki gösterge kontrol edilir (Health durumu göstergesi). İfade sağlanmazsa önizlemedeki Health Check kartında hata metni görünür.
OK (yeşil)Sık Yapılan Hatalar
- Yönlendirmenin izleneceğini sanmak. TR7 302'yi takip etmez; 302 beklenen kodlar arasında olmalıdır.
- JSONata'ya güvenip listeyi 200'de bırakmak. Expected Status Codes JSONata ile birlikte de uygulanır; 3xx listede yoksa denetim başarısız olur.
- WEB-CLI'da dolu sıra numarasına yazmak.
lb hc updateile--expectedStatusCodes.0yazmak listedeki ilk kodun yerine geçer; ekleme için ilk boş sıra numarası kullanılır. - Tek başarısız denetimde sunucunun hemen düştüğünü sanmak. Sunucu, art arda Required Failures kadar başarısızlıktan sonra Error olur.
Dokümantasyonda nasıl yapılır
