Arka Uçlar (Backends) ve Health Probes

Şimdiye kadar ele aldığımız tüm VCL, Varnish’in davranışını değiştirmemize izin veren rutinler ile ilgiliydi. Ancak, Varnish'in asıl amacı arka uç yanıtlarını önbelleğe almak olduğunu unutmayın. Bu yüzden arka uçların VCL yönünü ele almamızın zamanı geldi. Genel olarak aşağıdaki gibi gözükür.

backend name {
  .attribute = "value";
}

Varnish, önce tanımlanmış olan arka uca otomatik olarak bağlanır. Diğer arka uçlar sadece req.backend_hint değişkenine değer atayarak kullanılabilir.

Desteklenen arka uç nitelik listesi:

backend default {
  .host = "127.0.0.1";
  .port = "8080";
  .connect_timeout = 2s;
  .first_byte_timeout = 5s;
  .between_bytes_timeout = 1s;
  .max_connections = 150;
}

Yukarıdaki örnekte, 8080 numaralı bağlantı noktasında yerel makineyle bağlantı kurulur. İlk bağlantı için en fazla iki saniye bekleyecek. Bağlantı kurulduktan sonra, ilk baytı almak için beş saniye kadar bekleyecek. Bundan sonra düzenli bir frekans ile bayt almak istiyoruz. Her bayt arasında en fazla bir saniye bekleyecek. Arka uçla aynı anda 150 bağlantıya izin verecek.

Arka uçtan daha fazla istek max_connections ayarında izin verilenden daha fazla olursa, başarısız olurlar.

Kriterlerden herhangi biri karşılanmazsa, arka uç hatası atılır ve HTTP 503 durum koduyla vcl_backend_error'a iletilir.

Bir arka uç probu kullanılmadan, sağlıksız bir arka uç ancak bağlantı koptuğunda tespit edilebilir. Sözde bir arka uç probu, arka uçları düzenli olarak sorgulayacak ve belirli koşullara dayanarak sağlığını kontrol edecektir. problar arka uçlara benzer şekilde tanımlanabilir.

probe name {
  .attribute = "value";
}

Örnek bir kod aşağıda:

backend default {
  .host = "127.0.0.1";
  .port = "8080";
  .probe = {
    .url = "/";
    .expected_response = 200;
    .timeout = 1s;
    .interval = 1s;
    .window = 5;
    .threshold = 3;
    .initial = 2;
  }
}

Yukarıdaki örnekte: arka uç 8080 numaralı bağlantı noktasındaki yerel ana bilgisayara bağlanmaya çalışır. Arka uç sağlığını belirleyen bir arka uç probu vardır. prob, kök URL'deki 8080 numaralı bağlantı noktasında arka uça yoklama yapar. Bir yoklamanın başarılı olması için 200 durum kodlu bir HTTP yanıtı bekleniyor ve bu yanıt bir saniye içinde verilmeli.

Her saniye, prob arka ucu yoklayacak ve beş yoklama sonucu sağlığı belirlemek için kullanılıyor. Bu beş yoklamadan en az üçünün, arka uç sağlıklı olduğunu düşünmesi için başarılı olması gerekir. Başlangıçta, bu iki yoklama olmalıdır.

Ayrıca bir probu açıkça tanımlayabilir, adlandırabilir ve bu probu çoklu arka uçlar için yeniden kullanabiliriz. İşte bunu yapan bir kod örneği:

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

backend default {
    .host = "my.primary.backend.com";
    .probe = myprobe;
}

backend backup {
   .host = "my.backup.backend.com";
   .probe = myprobe;
}

Last updated