Varnish Web Beschleuniger

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen
Hinweis: Bitte beachten Sie, dass dieser Artikel / diese Kategorie sich entweder auf ältere Software/Hardware Komponenten bezieht oder aus sonstigen Gründen nicht mehr gewartet wird.
Diese Seite wird nicht mehr aktualisiert und ist rein zu Referenzzwecken noch hier im Archiv abrufbar.

Varnish ist ein Web Beschleuniger (Reverse Proxy), welcher Entlastung für die eigentlichen Webserver (das Backend) schafft. Er wurde im Gegensatz zu herkömmlichen Proxies (z.B. Squid) von Grund auf nur für diesen Einsatz entwickelt.

Die Webseite des Projekts findet sich hier: http://www.varnish-cache.org

Installation

Varnish ist Teil von Debian (Wheezy: Version 3.0.2) sowie Ubuntu (Trusty: Version 3.0.5). Mittlerweile gibt es Varnish 4.x, welcher im Moment in keiner stabilen Debian/Ubuntu Version enthalten ist.

Für die Installtion der 3.x Version aus dem Debian/Ubuntu Repository gehen Sie wie folgt vor:

apt-get install varnish

Wenn Sie eine neuere Version (4.x) für Debian/Ubuntu wünschen, können Sie auch direkt das Repository von varnish-cache.org einbinden. Die Anleitung dafür findet sich hier:

Für RedHat Enterprise Linux (RHEL/CentOS) gibt es Pakete im Extra Packages for Enterprise Linux (EPEL) Repository unter http://fedoraproject.org/wiki/EPEL. Für RHEL 7 ist eine Varnish 4.x Version im EPEL Repository verfügbar. http://dl.fedoraproject.org/pub/epel/7/x86_64/repoview/varnish.html

Mehr Details zur Installation finden sich hier:

Konfiguration

Es gibt eine eigene Konfigurationssprache namens VCL (Varnish Configuration Language). Mit dieser wird der Varnish Cache konfiguriert, danach in Binärcode übersetzt und für die ankommenden Web Requests ausgeführt. Normalerweise findet man die Standard Konfiguration in /etc/varnish/default.vcl. Falls die zu beschleunigende Webseite Cookies verwendet, muss auf alle Fälle die Standard Konfiguration von Varnish angepasst werden. Erst dadurch werden überhaupt Daten von Varnish gecached. Für das weitergehende Verständnis von VCL empfielt sich folgendes Dokument zu lesen: https://www.varnish-cache.org/docs/3.0/tutorial/vcl.html

Auch wenn eine Seite hauptsächlich dynamischen Content beinhaltet, können fast immer Bild-, Stylesheet- und Javascript-Dateien gecached werden. Außerdem können auch dynamischen Seiten gecached werden. Dies funktioniert mit Edge Side Includes (ESI). Dadurch wird durch spezielle "<esi:include ..."> Tags festgelegt, welche Inhalte einer Webseite sich dynamisch verändern können und wie lange diese gecached werden sollen.

Der Varnish Daemon selbst wird meist über eine eigene distributionsspezifische Datei angepasst.

  • Debian/Ubuntu: /etc/default/varnish
  • RHEL/CentOS: /etc/sysconfig/varnish

Darin wird unter anderem festgelegt auf welcher IP und Port der Varnish lauschen soll und ob flüchtiger Speicher (Typ "malloc") oder persistenter Speicher (Typ "file") verwendet werden soll.

Sehr hilfreich bei der Einführung eines Reverse Proxies kann auch das Apache Modul rpaf sein. Details dazu finden Sie im Artikel Apache mod_rpaf.

Als Einstieg bietet sich das Varnish Tutorial an: http://www.varnish-cache.org/docs/3.0/tutorial/index.html

Tiefergehende Details findet man im Wiki: http://www.varnish-cache.org/wiki/

Statistik

Varnish beinhaltet einige Statistik Tools.

Mittels varnishhist lässt sich grafisch anzeigen, wie viele Requests Cache Hits darstellen und wieviele ans Backend weitergereicht werden. Außerdem sieht man auf der x-Achse die jeweiligen Antwortzeiten in Sekunden (Bsp: 1e-1 -> 0,37 Sekunden, 1e-5 -> 0,0067 Sekunden)

Varnishhist.png


Mittels varnishstat lassen sich detailierte Zugriffsstatistiken anzeigen. Interessant vor allem die Cache-Hit Rate.

Varnishstat.png

Reload der Varnish Konfiguration

Um die Varnish Konfiguration neu zu laden ist unter Debian ein Skript enthalten.

/usr/share/varnish/reload-vcl

Weitere Informationen


Foto Christoph Mitasch.jpg

Autor: Christoph Mitasch

Christoph Mitasch arbeitet in der Abteilung Web Operations & Knowledge Transfer bei Thomas-Krenn. Er ist für die Betreuung und Weiterentwicklung der Webshop Infrastruktur zuständig. Seit einem Studienprojekt zum Thema Hochverfügbarkeit und Daten Replikation unter Linux beschäftigt er sich intensiv mit diesem Themenbereich. Nach einem Praktikum bei IBM Linz schloss er sein Diplomstudium „Computer- und Mediensicherheit“ an der FH Hagenberg ab. Er wohnt in der Nähe von Linz und ist neben der Arbeit ein begeisterter Marathon-Läufer und Jongleur, wo er mehrere Weltrekorde in der Team-Jonglage hält.


Das könnte Sie auch interessieren

Kernel panic - not syncing: Timeout: Not all CPUs entered broadcast exception handler
Linux I/O Scheduler
Mehrere Monitore unter Debian/Ubuntu/Linux mit disper verwalten