Varnish Nedir ? – Varnish WEB Accelerator (HTTP Reverse Proxy Cache)

Varnish basitçe, yapılan istekleri, belli kurallar ile cache’leyip istemciye dönen, genelde web sunucuların önünde konumlandırılan bir araç. İstekler Varnish’e geliyor, Varnish önbelleğinde varsa isteği buradan dönüyor, eğer yoksa “backend”den fetch ediyor.

Varnish Cache

varnish nedir ?

İstekler Varnish’e gelir önbelleğinde varsa döner yoksa web sunucusuna gider önbelleğine alır ve buradan isteklere cevap vermeye devam eder. Aynı zamanda Load Balancer görevi de görür. Oldukça esnektir. vcl denilen, javascript syntax’ına yakın bir dil ile gerekli ayarlamaları yapılmaktadır.Facebook’un da kullandığı bir teknolojidir. FOX TV’de artan trafik yükünü analiz ettikten sonra Varnish’i de kullanmaya karar verdik ve bunun sonucunda da gayet memnun kaldığımızı söyleyebilirim.

Daha iyi anlamak için şu videoyu izlemenizi tavsiye ederim 🙂

Web sunucusuna gelen her istek ve oluşan markup yani içeriğin tümü her defasında tekrar tekrar çalıştırılarak kullanıcıya iletilir. Bu durum sunucu tarafında bandwidth kullanımını arttıracaktır buna paralel RAM ve CPU oranları da artacağından web sunucusunun cevap verme süresi de artacaktır.

Genelde tüm kullanıcılara sunulan statik dosyaları önbelleğe alıp web sunucusunu boşuna yormamak için kullanıldığı gibi dinamik içeriklerin cachelenmesi için de kullanılır. ESI (Edge Side Includes) dil entegrasyonu ve Websockets desteği vardır.

ESI (Edge Side Includes) ile sayfa içeriklerinde objelere farklı TTL süreleri verilerek (/pagination.php=60sn) dinamik sayfaların da cache’lenip valid-invalidation kontrolü yapılabilmektedir.

Yanlız dikkat etmeniz gereken SSL desteğin bulunmaması fakat bu 4.0 sürümü ile henüz inceleme fırsatım olmasada artık SSL desteğini de vermiş gözüküyor. Alt sürümleri kullanıyorsanız buna dikkat etmeniz gerekiyor.

Şimdi Varnish’i Ubuntu dağıtımını kullandığımız sunucumuza kuralım.

Varnish’i repo’ya ekleyelim :

Şimdi

komutu ile sources.list dosyasını açıp sonuna

komutlarını terminalde çalıştırarak varnishi kuralım. işte bu kadar basit. Şimdi gelelim esas önemli konumuzuza:) Web sitesine gelen istekler 80. port üzerinden yapılır. www.mustafatoker.com.tr yazdığınızda aslında www.mustafatoker.com.tr:80 ‘a gidersiniz. Varnishi kurduk ama hala birşeyler eksik istekler web sunucusuna geliyor.

Varnish’in vcl dosyasını düzenleyelim :

dosyayı açtık şimdi varnish’e web sunucusunun artık 8181 Varnish’inde 80 portundan çalışacacağını söyleyelim

olarak düzenledik. şimdi şu satırları bulun :

Şu satırlar ile değiştirin :

Burada Varnish’i Apache’nin önüne kurduk ! Artık istekler doğrudan Varnish’e gelecek.

Apache’de ise

olan satırlarınızı

olarak değiştirmeyi unutmayın ! Bir sonraki yazımda Varnish ayarlarını düzenleyip ESI’ye değineceğim ve Varnish’i PHP’de verimli kılma gibi konulara değineceğim 🙂 Görüşmek üzere