Varnish Web Beschleuniger
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
Inhaltsverzeichnis |
Installation
Varnish ist Teil von Debian Squeeze (Version 2.1.3), Ubuntu Natty (2.1.4) und Ubuntu Precise (3.0.2). Aufgrund einer Syntax-Änderung der Konfiguration (2.0.6->2.1.x) wird empfohlen gleich mit einer Version >= 2.1.x zu starten. Für Debian Lenny existieren neuere Varnish Pakete auf http://backports.debian.org, doch generell wird gleich der Einsatz von Debian Squeeze empfohlen. Die direkte Installation von Varnish aus einem Repository erfolgt wie gewohnt mit:
apt-get install varnish
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 4 und RHEL 5 ist die Varnish Version aufgrund der Konfigurationsänderung dort auf 2.0.6 eingefroren, ab RHEL 6 gibt es bereits die 2.1.x Version im EPEL Repository. Für RHEL 5 finden sich direkt im Varnish Repository aktuelle Binaries: http://repo.varnish-cache.org/redhat/varnish-2.1/el5/.
Mehr Details zur Installation finden sich hier: http://www.varnish-cache.org/docs/2.1/installation/index.html
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. Falls die zu beschleunigende Webseite Cookies verwendet, muss auf alle Fälle die Standard Konfiguration von Varnish angepasst werden und für bestimmte URL-Pfade oder Dateitypen Cookies entfernt werden. Erst dadurch werden überhaupt Daten von Varnish gecached.
Auch wenn eine Seite hauptsächlich dynamischen Content beinhaltet, könnten 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/2.1/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)
Mittels varnishstat lassen sich detailierte Zugriffsstatistiken anzeigen. Interessant vorallem die Cache-Hit Rate.
Weitere Informationen
- http://www.varnish-cache.org
- http://www.varnish-cache.org/wiki/
- http://www.linux-magazin.de/Heft-Abo/Ausgaben/2010/01/Gas-geben/%28offset%29/2
- http://deserialized.com/caching/reverse-proxy-performance-varnish-vs-squid-part-1/
- http://deserialized.com/caching/reverse-proxy-performance-varnish-vs-squid-part-2/
- http://kristianlyng.wordpress.com/2009/12/08/varnishstat-for-dummies/


