Giriş
Bir sunucuya çok sayıda istek erişimi ulaştığında, sunucunun kapanmasına neden olmak kolaydır.Sunucunun önüne bir (toplu) önbellek makinesi ekleyin ve her önbellek makinesine çok sayıda istek dağıtın, bu da sunucunun iş yükünü büyük ölçüde azaltabilir.
Kısaca Varnish, sunucunun içeriğinin bir kısmını kendi önbellek alanında önbelleğe alacak, istemcinin sunucuya erişimi önce Varnish sunucusuna ulaşacak, Varnish'de müşterinin ihtiyacı olan bir şey olduğunda doğrudan cevap verecektir, yoksa Vernik İçeriğin bu kısmı sunucudan istenecek ve kendi üzerine önbelleğe alınacak, böylece arka plan erişim miktarı azaltılacaktır.
akış şeması:
Vernik ve Kalamar Karşılaştırması
Squid: Squid yüksek performanslı bir proxy önbellek sunucusudur.Squid FTP, gopher, HTTPS ve HTTP protokollerini destekler. Genel proxy önbellekleme yazılımının aksine, Squid tüm istemci isteklerini işlemek için ayrı, modüler olmayan, G / Ç odaklı bir süreç kullanır.
Vernik ve Kalamar arasındaki benzerlikler:
Her ikisi de bir ters proxy sunucusudur.
Hepsi açık kaynaklı yazılımdır.
Vernik ve Kalamar arasındaki farklar:
Vernik çok stabildir. İkisi aynı işi tamamladığında, Squid sunucusunun arızalanma olasılığı Varnish'inkinden daha yüksektir çünkü Squid'in sık sık yeniden başlatılması gerekir. (avantaj)
Vernik erişimi daha hızlıdır. Varnish, "Görsel Sayfa Önbelleği" teknolojisini kullanır, önbelleğe alınan tüm veriler doğrudan bellekten okunur, Squid ise önbelleğe alınmış verileri sabit diskten okur, böylece Varnish erişim hızı açısından daha hızlı olacaktır. (avantaj)
Vernik, daha fazla eşzamanlı bağlantıyı destekleyebilir. Varnish'in TCP bağlantı sürümü Squid'den daha hızlı olduğu için, eşzamanlı bağlantıların yüksek olması durumunda daha fazla TCP bağlantısını destekleyebilir. (avantaj)
Varnish, yönetim portu üzerinden bazı önbellekleri toplu olarak temizlemek için normal ifadeler kullanabilir, ancak Squid bunu yapamaz. (avantaj)
Vernik, yüksek eşzamanlılık altında Squid'e göre daha yüksek CPU, I / O ve bellek kaynağı ek yüküne sahiptir. (Dezavantajları)
Varnish işlemi kilitlendiğinde, çöktüğünde veya yeniden başladığında, önbelleğe alınan veriler tamamen bellekten serbest bırakılacaktır.Bu anda tüm istekler arka uç sunucuya gönderilecektir.Yüksek eşzamanlılık durumunda bu, arka uç sunucu üzerinde çok fazla baskıya neden olacaktır. (Dezavantajları)
Vernikle ilgili deneyler
laboratuvar ortamı
Bu deneyde, Redhat6.5 sisteminin üç sanal makinesini kullanıyoruz
server1172.25.66.1
server2172.25.66.2
server3172.25.66.3
Kurulum paketi: varnish-3.0.5-1.el6.x86_64.rpm, varnish-libs-3.0.5-1.el6.x86_64.rpm
İlgili işlemler
1: Vernik kurulum paketini server1'e koyun ve indirin
2: im / etc / sysconfig / vernish
66. satırdaki bağlantı noktasını 80 olarak değiştirin
3: vim /etc/security/limits.conf ## Kaynak sınırı yapılandırma dosyası
Kullanıcı işlemlerinin sayısının sınırlandırılması, Linux sisteminin kararlılığı için çok önemlidir.
Yazmak:
vernish-nofile 131073 ## Vernik kullanıcıları tarafından açılabilen maksimum dosya tanımlayıcı sayısı
vernish-memlock 82000 ## Maksimum kilit hafızası adres alanı
vernish-nproc unlimited ## Bir vernik kullanıcısının açabileceği maksimum işlem sayısı, sınırsız, sınırsız anlamına gelir
4: Vernik /etc/init.d/varnish başlangıcını açın
5: Vernik bağlantı noktasını görüntüleyin
6: Sunucu2'de
Httpd'yi indirin
Hizmeti başlatın: /etc/init.d/httpd start
cd / var / www / html /
vim index.html
Yazın: www.westos.org
7: Sunucu1'de: vim /etc/varnish/default.vcl
### Arka uç sunucusu yapılandırın
arka uç web1 {
.host = "172.25.66.2"; ### http hizmetinin kurulu olduğu ana bilgisayar IP'sini buraya yazın
.port = "80";
}
sub vcl_deliver {
eğer (obj.hits > 0) {
resp.http.X-Cache = "HIT önbelleği"; #hit ayarla
}
Başka {
set resp.http.X-Cache = "MISS cache"; ## Eksik
}
iade (teslim et);
}
Verniği /etc/init.d/varnish yeniden yükle yeniden başlatın
8: Test önbelleği isabeti
Gerçek makinede çalıştırın: curl -I 172.25.66.1
ilk defa:
Henüz bir önbellek olmadığından, ilk kez doğrudan arka uç sunucu sunucusuna2 erişiliyor, bu nedenle MISS görüntülenir
ikinci kez:
Arka uç sunucusu2 sunucusunu ilk kez ziyaret ettikten sonra, sunucu1'in vernik sunucusu verileri önbelleğe alır, bu nedenle verileri ikinci kez doğrudan önbellekten okuduğunda, HIT'in
Varnishadm ile önbelleği manuel olarak temizleyin:
varnishadm ban.url. * $ # tümünü temizle
varnishadm ban.url /index.html #Clear index.html sayfa önbelleği
varnishadm ban.url / admin / $ #Clear admin directory cache