Varnish Cache
  • Varnish Cache
  • Varnish Cache Nedir?
    • Varnish Cache
    • Varnish Açık Kaynak Bir Proje
    • Varnish Nasıl Çalışır?
  • Varnish Başlangıç
    • Varnish Kurulumu
      • Paket Yöneticisi Kullanarak Varnish Kurulumu
      • Ubuntu ve Debian Üzerinde Varnish Kurulumu
      • Red Hat and CentOS Üzerinde Varnish Kurulumu
    • Varnish Yapılandırma
      • Yapılandırma Dosyası
      • Ubuntu ve Debian için Systemd Ek Bilgi
      • Başlangıç Seçenekleri
    • TLS/SSL Hakkında
  • Varnish HTTP
    • Varnish ve HTTP
    • Idempotence
    • State (Durum)
    • Expiration (Süre sonu)
      • Expires Header
      • Cache-Control Header
      • Expiration Precedence (Bitiş Süresi Önceliği)
    • Koşullu İstekler
      • ETag
      • Last-Modifed
      • Koşullu İstekler ile Varnish İşlemleri Nasıl Yapılır?
    • Önbellek Varyasyonları
    • Varnish Hakkında Bazı Sorular
  • Varnish Yapılandırma Dili (VCL)
    • Varnish Yapılandırma Dili (VCL)
    • Kancalar ve Alt Yordamlar
      • İstemci Tarafı Alt Yordamları
      • Arka Uç Alt Yordamları
      • Başlatma ve Temizleme Alt Yordamlar
      • Özel Alt Rutinler
    • Dönüş İfadeleri
    • Akış Şeması
    • VCL Sintaks
      • Operatörler
      • Koşullar
      • Yorumlar
      • Değerler
      • Düzenli İfadeler
      • Include
      • Varnish Modüllerini Dahil Etme
    • Arka Uçlar (Backends) ve Health Probes
    • Erişim Kontrol Listeleri (ACL)
    • VCL Değişkenleri
    • Varnish'in Dahili VCL'i
  • Önbelleği Geçersiz Kılma
    • Purging
    • Banning
      • Lurker-Friendly Bans
      • Ban Listesi
    • Zorla Önbelleği Geçersiz Kılmak
  • Backend Kullanımı
    • Backend Kullanımı
    • Backend Seçimi
    • Backend Sağlığı
    • Directors
      • Round-Robin Director
      • Random Director
      • Hash Director
      • Fallback Director
    • Grace Mode
      • Grace Mode Aktif Et
  • Loglama ve Debug
    • Loglama ve Debug
    • Varnishstat
    • Varnishtop
  • Varnish Modüller
    • Varnish Modüller
    • libvmod-geoip
    • libvmod-vsthrottle
  • Kaynaklar
    • Kaynaklar
Powered by GitBook
On this page

Was this helpful?

  1. Backend Kullanımı
  2. Directors

Hash Director

Belirli bir değere sahip bir SHA256 hash değerini temel alarak arka ucu seçer. Sahip olduğu değer, director nesnesinin backend() yöntemine iletilir.

Genellikle istemcinin IP adresini veya bir oturum çerezini alarak sticky-session'ı kolaylaştırmak için kullanılır. Bu değerlerden herhangi birini elde ederek, Varnish, aynı kullanıcı veya oturum için taleplerin her zaman aynı arka uca ulaştığını garanti eder.

Bu, oturum verilerini yerel olarak depolayan arka uç sunucular için önemlidir. İstek URL’sine göre de karma olabilir. URL istekleri her zaman aynı arka uca gönderilir.

İstemci IP'sine veya istek URL'sine göre hash değeri almak bazen risklidir, aşağıdaki durumlarda olduğu gibi, yükün eşit olarak dağıtılmamasına neden olabilir:

  • İstemci IP adresi, birden fazla kullanıcı tarafından kullanılan bir proxy sunucusunun IP'si olabilir.

  • Bir URL diğerinden çok daha popüler olabilir ve belirli bir arka uçta ağır yük oluşmasına neden olabilir.

sub vcl_init {
  new loadbalancing = directors.hash();
  loadbalancing.add_backend(backend1, 1.0);
  loadbalancing.add_backend(backend2, 1.0);
}

Bu örnek, önerilen değer olan aynı ağırlığa sahip iki arka uç atar. Ağırlıkları değiştirirseniz, bir sunucu diğerinden daha fazla istek alır, ancak aynı kullanıcı, URL veya oturum istekleri sürekli olarak aynı arka uçlara gönderilir. İşte istemcinin IP adresine göre hash yapan bir hash director örneği:

sub vcl_recv {
 set req.backend_hint = loadbalancing.backend(client.ip);
}

IP kullanımı dediğimiz gibi riskli olabilir. Bunun yerine kullanıcı cookie değerine göre işlem yapmak daha sağlıklı olur. Aşağıdaki örnekte PHP uygulamalarda kullanılan cookie değerine göre nasıl yapıldığı gösterilmiştir.

sub vcl_recv {
  set req.backend_hint = loadbalancing.backend(
    regsuball(req.http.Cookie, "^.*;? ?PHPSESSID=([a-zA-Z0-9]+)( ?|;| ;).*$","\1")
  );
}
PreviousRandom DirectorNextFallback Director

Last updated 6 years ago

Was this helpful?