Varnish cache, web sitelerinin response timelarını azaltmak yani daha hızlı cevap vermelerini sağlamak için reverse proxy mantığıyla çalışan yapıdır. Varnish bir diğer adıyla hızlı web olarakta adlandırılır.
Varnish nedir ? Nasıl çalışır ?
Varnish, client üzerinden gelen istekleri konfigüre edilen kurallar ile cacheleyip cilenta dönüş sağlayan web sunucularının önünde çalışan yapıdır. Varnish aktif edildikten sonra arkasında bulunan web sunucularını taklit eder. Eğer varnish birden fazla backend için konfigüre edildiyse bir backendden cevap alamadığı durumda diğer backendler ile iletişim kurar eğer cevap alıyorsa yayın vermeye devam eder. Başka bir senaryo için varnish bütün backendlerden cevap alamadığı durumlar içinde belli bir sürede yayın vermesi için konfigüre edilebilir. Varnish web sayflarını ön bellekte tutarak eğer daha önceden istek yapılmış ve cevap alınmışsa tekrar aynı isteği backend sormaz aynı sayfayı cacheten döner. Bu sayede web sunucularına gelen yüküde azaltabiliriz. Varnish konfigürasyon için kendi yazılım dilini Varnish Configuration Language (VCL) kullanır. Yalnız dikkat edilmesi gereken bir nokta her varnish versiyonunda Varnish Configuration Language (VCL) değişkenlik gösterir. Bu yüzden versiyon değiştikçe konfigürasyon dosyasını yeni versiyona göre düzenlemek gerekecektir.
Varnish Nasıl Kurulur ?
Bu yazıda centos 7 işletim sistemi üzerinde varnish 6.6 versiyonu nasıl kurulacağı ve basit bir konfigürasyon ile nasıl up edileceği anlatılacaktır. Kurulumdan önce makine üzerinde herhangi bir engelleme ile karşılaşmamak için firewall ve selinux disable edilir.
Öncelikli olarak swap alanını kapatıyoruz. fstab üzerinde swap alanının olduğu satırın başına # işareti koyarak kapatabiliriz.
sudo swapoff -a
nano /etc/fstab
Kurulum öncesinde ihtiyaç olan uygulamaları kuruyoruz.
sudo yum -y install pygpgme yum-utils
sudo yum -y install epel-release
Varnih 6.6 repository indiriyoruz. Kerneldan kurulum yapmaması için indirilen varnish repository aktif ediyoruz.
sudo curl -s https://packagecloud.io/install/repositories/varnishcache/varnish66/script.rpm.sh | sudo bash
sudo yum -q makecache -y –disablerepo=’*’ –enablerepo=’varnishcache_varnish66′
sudo yum install varnish
Sonrasında /etc/varnish path altında default.vcl konfigüre edebiliriz. 2 backend ile /sample url cachelemek için konfigürasyon basit bir şekilde yapılabilir.
backend server1 {
.host = “192.168.0.1”;
.port = “8080”;
}
}
backend server2 {
.host = “192.168.0.2”;
.port = “8080”;
}
}
sub vcl_recv {
if (req.url ~ “^/sample/”) {
set req.backend_hint = sample;
} else {
set req.backend_hint = default;
}
Sunucu restart edildiltan varnish otomatik çalışması için enable ediyoruz.
systmctl enable varnish
Varnish start etmeden önce hangi parametreler ile çalışacağını /etc/systemd/system/multi-user.target.wants/varnish.service bu file üzerinden belirliyoruz.
[Unit]
Description=Varnish Cache, a high-performance HTTP accelerator
After=network-online.target nss-lookup.target
[Service]
Type=forking
KillMode=process
LimitNOFILE=131072
LimitMEMLOCK=85983232
TasksMax=infinity
LimitCORE=infinity
ExecStart=/usr/sbin/varnishd \
-a :6081 \
-a localhost:8443,PROXY \
-p feature=+http2 \
-f /etc/varnish/default.vcl \
-s malloc,256m
ExecReload=/usr/sbin/varnishreload
[Install]
WantedBy=multi-user.target
Sonrasında varnish start ediyoruz.
systemctl start varnish
Artık http://(varnish-server-IP):6081 bu URL ile sayfamızın cachelendiği görebiliriz.
Sayfayı açtığımızda 304 yönlendirmesini görüyorsak varnish üzerinden cevap geldiğini gözlemleyebiliriz.