Health Check nedir, neden gereklidir?
Kısa cevap
Health check, TR7'nin Kurum Servislerine belirli aralıklarla kontrol gönderip yanıt verip vermediklerini ölçmesidir. Kontrolü geçemeyen sunucu otomatik olarak trafik dışı bırakılır, düzeldiğinde geri alınır; böylece kullanıcılar çökmüş bir sunucuya gönderilmez. TR7'de Health Checks profili olarak tanımlanır ve Kurum Servisi'e ya da Backend Group'a atanır; atanmazsa sunucunun sağlığı izlenmez ve sunucu çökse bile trafik almaya devam eder.
Nasıl Çalışır?
- Kontrol gönderilir: TR7, her Period süresinde Kurum Servisine profildeki Check Type'a uygun bir kontrol gönderir (TCP bağlantısı, HTTP isteği, DNS sorgusu…).
- Sonuç değerlendirilir: Timeout süresi içinde beklenen yanıt gelmezse kontrol başarısız sayılır.
- Trafik dışı bırakılır: Ardışık başarısız kontrol sayısı Required Failures eşiğine ulaşınca Kurum Servisi trafik dışı bırakılır; istekler sağlıklı Kurum Servislerine gider.
- Geri alınır: Trafik dışındaki Kurum Servisi kontrol edilmeye devam eder. Ardışık başarılı kontrol sayısı Required Successes eşiğine ulaşınca yeniden trafiğe alınır.
| Parametre | Varsayılan | Anlamı |
|---|---|---|
| Period | 1 sn | Kontrollerin gönderilme aralığı |
| Timeout | 1 sn | Bir kontrolün yanıt için bekleyeceği en uzun süre |
| Required Failures | 2 | Trafik dışı bırakmak için gereken ardışık başarısız kontrol |
| Required Successes | 3 | Trafiğe geri almak için gereken ardışık başarılı kontrol |
Period ve Timeout 120 saniyenin altında tutulur; 120 saniye ve üzeri değerler 1 saniyeye düşürülür. Health check'ler trafik işleminden bağımsız olarak sürekli çalışır.
Neden Gereklidir?
| Health check olmadan | Health check ile |
|---|---|
| Çökmüş sunucu trafik almaya devam eder; kullanıcıların bir kısmı hata görür. | Arızalı sunucu otomatik trafik dışı bırakılır; istekler sağlıklı sunuculara gider. |
| Sunucu düzelince trafiğe elle alınması gerekir. | Düzelen sunucu Required Successes eşiğine ulaşınca otomatik olarak trafiğe geri alınır. |
| Sunucu ayakta ama uygulama hata veriyorsa fark edilmez. | HTTP kontrolüyle durum kodu ve yanıt içeriği doğrulanır. |
| Sunucunun ne zaman düştüğü görülmez. | Sağlık durumu listelerde ve Kurum Servisi Dashboard'unda izlenir. |
Kontrol Türleri
Profil formundaki Check Type listesinde 16 tür bulunur; tür profil oluşturulurken seçilir ve kayıttan sonra değiştirilemez:
| Grup | Türler | Ne kontrol eder |
|---|---|---|
| Bağlantı | TCP, TCPS, UDP, Ping | Portun ya da sunucunun yanıt verip vermediği; TCP, TCPS ve UDP'de veri gönderip beklenen yanıtı arayan senaryo tanımlanabilir |
| Web | HTTP, HTTPS | HTTP isteği gönderir; durum kodunu ve yanıt içeriğini doğrular |
| Uygulama protokolleri | DNS, FTP, FTPS, LDAP, LDAPS, SMTP, SMTPS, Oracle | Protokole özgü kontrol (DNS sorgusu, oturum açma, SQL sorgusu…) |
| Mantıksal | Expression (JSONata) | Ağ isteği göndermez; cihaz bilgileri (ör. cluster'daki cihaz kimliği, Master/Backup rolü) ve saat üzerinde bir JSONata ifadesini değerlendirir. İfade doğruysa sağlıklı, yanlışsa ya da hatalıysa down sayılır |
| Birleşik | Scenario | Birden fazla kontrolü and / or ile birleştirir; sonuç bu kontrollerin birlikte değerlendirilmesinden çıkar |
TR7'de Health Check
- Oluşturma: Load Balancer → Profiles → Health Checks → Add ile profil tanımlanır; Check Type (varsayılan HTTP) ve eşikler seçilir.
- Atama: Profil, Kurum Servisi formundaki Health Check alanından atanır; alanın varsayılanı No Check'tir. Backend Group'ta profil grup düzeyinde bir kez seçilir ve gruptaki her sunucuya aynı profille ayrı ayrı uygulanır.
- Durum göstergesi: Backend Services listesindeki Health göstergesi OK (yeşil), Error (kırmızı), Preparing (sarı) ya da HC disabled / No data (gri) durumunu gösterir; health check atanmamış Kurum Servisinde durum noktası yerine koyu gri güç ikonu görünür.
- Network vService: Health check sonucu TCP - L4 ve UDP - L4 protokollerinde, Port Range kapalıyken dağıtıma yansır. ANY - L3 protokolünde ya da Port range açıkken trafik güvenlik duvarı kuralları üzerinden dağıtıldığı için health check sonucu dikkate alınmaz; arızalı Kurum Servisi de paket almaya devam eder.
Sık Karıştırılan Noktalar
- "Health check atamasam da arızalı sunucu devre dışı kalır." Health check alanı No check'te kalan Kurum Servisinin sağlığı izlenmez; çökmüş olsa bile trafik almaya devam eder.
- "Port açıksa uygulama sağlıklıdır." TCP kontrolü yalnızca bağlantının kurulabildiğini gösterir. Web uygulamalarında HTTP kontrolüyle durum kodu ve içerik doğrulanması, uygulama hatalarını da yakalar.
- "Health check her Network vService'te çalışır." ANY - L3 protokolünde ve Port range açıkken health check sonucu dağıtıma yansımaz; arızalı Kurum Servisi paket almaya devam eder.
- "Backend Group'un health check'i grubu tek parça denetler." Profil grup düzeyinde seçilse de her sunucu ayrı denetlenir; yalnızca başarısız sunucu trafik dışı kalır.
Dokümantasyonda nasıl yapılır
