Health Check sürekli up/down arasında gidip geliyor (flapping); ne yapmalıyım?
Kısa cevap
Önce Kurum Servisinin Health Checks sekmesinde geçişlerin nedeni (zaman aşımı mı, hata kodu mu) bulunur. Zaman aşımında Timeout, sunucunun yük altındaki yanıt süresinin üzerine çıkarılır; Required Failures artırılarak anlık hatalar tolere edilir, Required Successes artırılarak sunucunun kararlı hâle gelmeden trafiğe dönmesi önlenir. Sağlık adresi hafifletilir ve Period gereğinden düşük tutulmaz (Yük altındaki ortamlar); geçiş bildirimleri sorun çözülene kadar bildirim profilinden azaltılabilir.
Sorun: Sunucu Sürekli Trafiğe Girip Çıkıyor
Health check sınırda kaldığında sunucu art arda trafikten çıkıp geri döner. Her geçişte yeni istekler başka sunuculara kayar, oturum kalıcılığı bozulabilir ve bildirimler birikir. Bunun nedeni yük altında uzayan yanıt süreleri, ağdaki kısa kesintiler ya da servise göre çok dar ayarlanmış eşiklerdir.
Önce teşhis:
- Kurum Servisi önizlemesindeki Health Checks sekmesi Only Change Logs modunda açılır; geçişlerin saatine ve hata türüne (Request timeout error mı, Unexpected status code mu) bakılır.
- Dashboard'daki Health Check Time panelinde denetim süresinin Timeout'a yaklaşıp yaklaşmadığı kontrol edilir.
- Cluster'da Health göstergesinin iki yarısına bakılır: dalgalanmayı yalnızca bir cihaz görüyorsa o cihazın ağ yolu incelenir.
- Sunucunun yük altındaki yanıt süresi ölçülür (ör.
curl -o /dev/null -s -w '%{time_total}' http://192.0.2.20/health).
Çözüm: 4 Yöntem
Yöntem 1 ve 2 nedeni giderir ve birlikte uygulanabilir; Yöntem 3, Yöntem 1'in WEB-CLI karşılığıdır; Yöntem 4 yalnızca bildirim gürültüsünü azaltır.
| Durumunuz | Uygun yöntem |
|---|---|
| Hatalar zaman aşımı ya da tek tük; eşikler dar | Yöntem 1: Timeout ve eşikleri ayarlamak |
| Sağlık adresi ağır ya da yük altında yavaş | Yöntem 2: Sağlık adresini hafifletmek |
| Profili WEB-CLI'dan güncelliyorum | Yöntem 3: WEB-CLI |
| Geçiş bildirimleri sorun çözülene kadar gürültü yaratıyor | Yöntem 4: Bildirimleri azaltmak |
Yöntem 1: Timeout ve Eşikleri Ayarlamak Önerilen
- Nasıl çalışır Timeout yavaş ama sağlıklı yanıtları kapsar; Required failures ve Required successes kısa dalgalanmaları süzer: sunucu ancak art arda Required failures kadar başarısızlıkta çıkar, art arda Required successes kadar başarıda döner.
- Nerede açılırLoad Balancer → Profiles → Health Checks → profil → Edit
- Gereksinim Profilin hangi Kurum Servislerinde kullanıldığının bilinmesi (Used in sekmesi)
- vService tipi Tümü
Adım adım yapılandırma
Load Balancer → Profiles → Health Checks ekranında profil seçilip Edit'e tıklanır.
Timeout yük altındaki normal yanıt süresinin üzerine (120 saniyenin altında), Required Failures örneğin 3'e, Required Successes örneğin 5'e çıkarılır (formda en fazla 10). Period 1 saniyenin altındaysa ya da sunucuya yük bindiriyorsa artırılır.
Edit butonuna tıklanır. Profili kullanan bütün Kurum Servisleri Preparing'e döner ve Required successes kadar başarılı denetimden sonra trafiğe girer; bu yüzden değişiklik düşük trafikli bir zamanda yapılır (Bir health check profilini değiştirirsem hangi Kurum Servisleri etkilenir?).
Doğrulama
Health Checks sekmesi Only Change Logs modunda açılır; yoğun bir trafik dönemi boyunca yeni geçiş görülmez.
Yeni OK / Error geçişi yokYöntem 2: Sağlık Adresini Hafifletmek
- Nasıl çalışır Sağlık adresi yük altında yavaşlıyorsa denetim zaman aşımına düşer; yalnızca uygulamanın çalıştığını dönen hafif bir adres bu dalgalanmayı ortadan kaldırır.
- Nerede açılır Uygulama tarafı · profil → Path + Query
- Gereksinim Uygulama tarafında hafif bir sağlık adresi (Uygulamamda health check için nasıl bir /health endpoint'i tasarlamalıyım?)
- vService tipi Tümü
Adım adım yapılandırma
Uygulama tarafında ağır bir sayfa ya da sorgu yerine yalnızca uygulamanın çalıştığını dönen hafif bir adres hazırlanır; bağımlılık kontrolleri önbelleğe alınır.
Load Balancer → Profiles → Health Checks ekranında profil seçilip Edit'e tıklanır.
Path + Query alanına yeni adres yazılır (ör. /health).
Edit butonuna tıklanır.
Doğrulama
Health Check Time panelinde denetim süresinin Timeout'un belirgin biçimde altında kaldığı görülür.
Düşük ve kararlı denetim süresiYöntem 3: WEB-CLI
- Nasıl çalışır Yöntem 1'deki alanlar
--timeout,--requiredFailure,--requiredSuccessve--testIntervalile yazılır; WEB-CLI'da Required alanları 100'e kadar girilebilir. - Nerede açılır WEB-CLI →
lb hc update(lb hc · Her türde bulunan eşik alanları) - Gereksinim WEB-CLI erişimi; profil kimliği (
lb hc list) - vService tipi Tümü
Adım adım yapılandırma
lb hc update id <profil-kimliği> --timeout 3 --requiredFailure 3 --requiredSuccess 5Doğrulama
Profil kaydı görüntülenir.
lb hc show <profil-kimliği>timeout 3, requiredFailure 3, requiredSuccess 5Yöntem 4: Bildirimleri Azaltmak
- Nasıl çalışır vService'in bildirim profilinde Backend Service Status kapatılırsa Kurum Servisi durum bildirimleri üretilmez; bu dalgalanmayı çözmez, yalnızca gürültüyü azaltır.
- Nerede açılırLoad Balancer → Profiles → Notifications → profil → Backend Service Status
- Gereksinim vService'e atanmış özel bir bildirim profili (yerleşik Default profile düzenlenmez)
- vService tipi HTTP, L7 TCP
Adım adım yapılandırma
Load Balancer → Profiles → Notifications ekranında vService'in kullandığı profil seçilip Edit'e tıklanır.
Backend Service Status seçeneği kapatılır; kalıcı çözüm Yöntem 1 ve 2'dir.
Edit butonuna tıklanır; sorun giderildiğinde seçenek yeniden açılır.
Doğrulama
Notification Logs ekranında bu vService'in Kurum Servisi durum bildirimleri artık üretilmez.
Yeni bildirim yokSık Yapılan Hatalar
- Period'u düşürerek kararlılık beklemek. Daha sık denetim daha fazla yük demektir; kararlılığı eşikler sağlar.
- Yalnızca Required failures'ı artırmak. Sunucunun geri dönüşü de süzülmelidir; Required successes de artırılır.
- Profili yoğun saatte değiştirmek. Profili kullanan Kurum Servisleri Required successes kadar başarılı denetime kadar trafik almaz.
Dokümantasyonda nasıl yapılır
