DNS dışındaki UDP servislerini nasıl health check ederim (UDP senaryosu, Hex/Base64/metin)?
Kısa cevap
Check Type alanında UDP seçilip UDP Scenario açılır. Senaryo sırayla çalışan adımlardan oluşur: Send data (veri Text, Hexadecimal ya da Base64 biçiminde), Wait(ms), Expect text ve Expect regex. Böylece servise protokolüne uygun bir istek gönderilip yanıtı doğrulanır. Senaryosuz UDP denetimi boş bir paket gönderir ve yanıt beklemez; servisin gerçekten çalıştığını doğrulamaz.
Sorun: UDP'de Bağlantı Yok, Servisin Çalıştığı Belli Değil
UDP bağlantısız bir protokoldür: bir pakete yanıt gelmemesi hem servisin çalışmadığı hem de paketin kaybolduğu anlamına gelebilir; bağlantı kurulamadığı için port denetimi de yapılamaz. Syslog, NTP, RADIUS, oyun sunucuları gibi servislerin gerçekten çalıştığını anlamak için protokole uygun bir istek gönderip yanıtı beklemek gerekir.
Çözüm
UDP scenario, servise protokolüne uygun bir istek gönderip yanıtında beklenen metni ya da deseni arar. Senaryo adımları arayüzden tanımlanır.
UDP Scenario
- Nasıl çalışır Adımlar sırayla çalışır; gelen yanıtlar biriktirilir. Beklenen metin ya da desen yanıtta bulunmazsa (en fazla Timeout, en çok 5 saniye beklenir) ya da hiç yanıt gelmezse denetim başarısız olur.
- Nerede açılırLoad Balancer → Profiles → Health Checks → Add → Check Type: UDP → UDP Scenario
- Gereksinim Servisin bir isteğe yanıt vermesi; profilin atanacağı bir Kurum Servisi
- vService tipi Tümü; UDP trafiği Network vService'te (UDP - L4) dengelenir ve sağlık durumu Port Range kapalıyken dağıtıma yansır
Adım adım yapılandırma
Sol alttaki TR7 logosuyla Configuration Menu açılır; Load Balancer → Profiles → Health Checks yolu izlenip Add'e tıklanır (Nasıl eklenir?).
Name girilir; Check Type alanında UDP seçilir.
UDP Scenario anahtarı açılır; ilk adım kartı eklenir.
Kartta UDP Action (1) = Send Data seçilir; Data to Send alanına istek yazılır ve Data Format seçilir: Text (varsayılan), Hexadecimal ya da Base64. Hexadecimal'de baytlar arasında boşluk bırakılabilir (ör. DE AD BE EF); onaltılık olmayan karakter denetimi başarısız kılar.
Yeni kart eklenir; UDP Action (2) = Expect Text seçilip Text to Expect alanına yanıtta geçmesi gereken metin yazılır (büyük/küçük harfe duyarlı) ya da Expect Regex seçilip Regex to Expect alanına desen yazılır (büyük/küçük harfe duyarsız). Gerekiyorsa adımlar arasına Wait(ms) eklenir (Wait Time (ms), en az 1).
Add butonuna tıklanır.
Load Balancer → Backend Services yolu izlenir; Kurum Servisine sağ tıklanıp Edit seçilir.
Health Check alanında profil seçilir.
Edit butonuna tıklanır. 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 listesinin Health kolonundaki gösterge kontrol edilir (Health durumu göstergesi); servis durdurulduğunda art arda Required failures kadar başarısızlıktan sonra Error olur.
OK (yeşil)Sık Yapılan Hatalar
- Senaryosuz UDP denetimini yeterli saymak. Boş paket gönderilir, yanıt beklenmez; servis çökse bile sunucu sağlıklı görünebilir.
- İkili (binary) yanıtı hex olarak beklemek. Beklenen yanıt metin olarak aranır; ikili yanıtlar için yanıttaki okunabilir bir parça ya da Expect regex kullanılır.
- Geçersiz hex girmek. Onaltılık olmayan karakterler denetimi başarısız kılar.
- Timeout'u çok kısa tutmak. Expect adımı yanıtı en fazla Timeout kadar (en çok 5 saniye) bekler.
Dokümantasyonda nasıl yapılır
