Backend Sağlığı

Bundan önce arka uçların sağlığını nasıl kontrol edeceğimizi gördük.

pageArka Uçlar (Backends) ve Health Probes

Önceki örneğimize sağlık prob'u ekleyelim.

default.vcl
vcl 4.0;

probe healthcheck {
    .url = "/";
    .interval = 5s;
    .timeout = 1s;
    .window = 10;
    .threshold = 3;
    .initial = 1;
    .expected_response = 200;
}

backend public {
    .host = "public.example.com";
}

backend admin {
    .host = "admin.example.com";
}

sub vcl_recv {
  if(req.url ~ "^/admin(/.*)?") {
      set req.backend_hint = admin;
  } else {
      set req.backend_hint = public;
  }
}

Bu örnekteki sağlık kontrolleri, ana sayfadaki bir HTTP isteğine göre yapılır. Bu kontrol, her beş saniyede bir, bir saniyelik zaman aşımı ile yapılır. Bir HTTP 200 durum kodu bekliyoruz. Arka uçlar ancak 10 sağlık kontrolünden 3'ü başarılı olursa sağlıklı kabul edilir.

Aşağıdaki komutu çalıştırarak arka uçlarınızın sağlığını görüntüleyebilirsiniz:

varnishadm backend.list

Aşağıdaki gibi bir çıktı alırsınız.

Backend name   Admin   Probe
boot.public    probe   Healthy 10/10
boot.admin     probe   Healthy 10/10

Her iki arka uç listelenir ve sağlıkları bir prob tarafından otomatik olarak kontrol edilir (Yönetici sütununa bakın). Sağlıklı olduğunu görüyoruz çünkü 10 kontrolden 10'u başarılı olmuştur. Örneğimizde sağlıklı bir arka uç için başarılı olması gereken yoklama sayısı sadece üç taneydi.

Aşağıdaki komutları vererek, probun arka uç sağlığı ile ilgili kararını manuel olarak da geçersiz kılabilirsiniz:

varnishadm backend.set_health boot.public sick
varnishadm backend.set_health boot.admin healthy

Çıktı aşağıdaki gibi olacaktır.

Backend name   Admin     Probe
boot.public    sick      Healthy 10/10
boot.admin     healthy   Healthy 10/10

Gördüğünüz gibi, Admin sütunu artık probe değil sağlık durumunu gösteriyor. Kontrolü sağlık problarına geri vermek için aşağıdaki komutları vermeniz yeterlidir:

varnishadm backend.set_health boot.public auto
varnishadm backend.set_health boot.admin auto

vmod_std'nin bir parçası olan std.healthy() fonksiyonu, bir arka ucun sağlıklı olup olmadığını söyleyebilir. Geçerli arka uçtaki sağlığı kontrol etmek için, sadece std.healthy(req.backend_hint) kullanabilirsiniz.

Last updated