Varnish

3 December 2016

varnish-diagram3

 

 

 

 

 

 

Varnish

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.

İ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.

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.

Varnish Kurulumu

Aşağıdaki komutları SSH üstünden uygulayabilirsiniz

rpm –nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm

yum install varnish

Yukarıdaki komutlarda ilk komut ile varnish’i indirdik ve arkasından kurulumunu gerçekleştirdik.

Varnish Yapılandırma

Kurulumu tamamladıktan sonra http.conf dosyamızın içerisin de 8080 portunu aktif etmemiz gerekiyor.

nano /etc/httpd/conf/httpd.conf

http.conf dosyamızı açtık ve en altına aşağıdaki şekilde yazıyoruz. ( http.conf dosyası sizin sunucunuz da farklı bir yerde olabilir)

Listen 8080

Yukarıda gerçekleştirmiş olduğumuz işlem Apache web serveri 80 portun dan 8080’e alıyoruz ki Varnish’i 80 portuna göre yapılandırabilelim.
Varnish dosyasın da yer alan 6081 default portu 80 olacak şekilde aşağıdaki gibi düzenliyoruz.

nano /etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80

Varnish in default.vcl configurasyon dosyasını aşağıdaki şekilde güncelliyoruz

backend default{
.host “127.0.0.1”; #Apache Sunucu ip
.port “8080”; #Apache dinlenme portu
.connect_timeout=600s;
.first_byte_timeout=600s;
.between_bytes_timeout=600s;
}

 

En son tüm servislerimizi restart ediyoruz ve işlemler tamamlanmış oluyor.

Not : Bu makalede yapılan anlatım Centos ve Apache web server için anlatılmıştır bir kontrol paneli sunucu üstünde bulunmamaktadır.