Varnish Cache Basics
| 29. April 2011 | Posted by admin under Varnish Cache |
Varnish HTTP Cache ist ein Reverse Proxy und der neue Stern am Cache Himmel. Wobei, so neu ist er auch nicht mehr. Immerhin wurde die erste Version bereits 2006 veröffentlicht. Doch er erfreut sich zunehmender Beliebtheit, gerade im TYPO3 Umfeld.
Was steckt wirklich dahinter? Alles nur ein Hype oder hat Varnish zu Recht einen so guten Ruf?
Was ist überhaupt ein Reverse Proxy?
Ich vergleiche einen Reverse Proxy gerne mit einer Chefsekretärin, welche im realen Leben ähnliche Aufgaben übernimmt und auch sehr oft unterschätzt wird.
Eine gute Chefsekretärin sollte folgende Eigenschaften besitzen:
- sie nimmt alle Anfragen an den Chef entgegen und filtert unerwünschte Anfragen raus.
- sie weiß, welche Anfragen direkt an den Chef weitergeleitet werden müssen.
- sie bespricht sich mindestens ein oder zweimal am Tag mit ihrem Chef über wichtige Angelegenheiten und kennt somit deren Stand.
- sie kann viele Anfragen selbst beantworten, ohne den Chef fragen zu müssen.
- sie kann Anfragen so umformulieren, dass sie auch der Chef versteht.
- sie kann ihren Chef auch mal kurz vertreten oder zumindest entschuldigen.
- ist sie mal krank oder im Urlaub, ist der Chef völlig überfordert.
Kurzum, entlastet sie ihren Chef und kann ihn sogar stellenweise vertreten.
Das sind alles Aufgaben, die ein Reverse Proxy auch übernehmen sollte. Er ist also eine Art Filter, Zwischenspeicher und Vertreter eines anderen Servers – meist Webservers.
Ein guter Reverse Proxy kann also,
- unerwünschte Anfragen an den Server abwehren, z.B. Spam oder Brutforce Attacken,
- Anfragen an bestimmte Webseiten, z.B. die sehr aktuell sein müssen oder mit Nutzer bezogenen Daten, direkt weiterleiten,
- bereits angefragte Seiten zwischenspeichern und somit selbst ausliefern,
- die zwischengespeicherten Seiten nach einer bestimmten Zeit wieder mit dem Webserver abgleichen,
- Anfragen modifizieren und z.B. einen HTTP Header umschreiben,
- eigene Fehlerseiten ausliefern, wenn der Webserver oder bestimmte Seiten nicht mehr erreichbar sind.
Genau das und noch viel mehr kann Varnish Cache. Er zeichnet sich durch seine Stabilität, einfache Konfiguration und enorme Geschwindigkeit aus.
Er läuft und läuft und läuft…
Der Projektleiter von Varnish, Poul-Henning Kamp ist u.a. Core Entwickler bei FreeBSD und er versteht was von moderner Prozessentwicklung unter Linux. Das merkt man auch Varnish an. Nicht nur, dass Varnish ressourcensparend und schnell arbeitet, er ist zudem sehr stabil und lässt sich nicht so einfach aus dem Konzept bringen. Varnish überwacht sich sozusagen selbst und ein spezieller Prozess hat nur die Aufgabe den Kernprozess von Varnish am laufen zu halten.
Das Herz von Varnish ist VCL (Varnish Configuration Language)
Poul-Henning Kamp ist gebürtiger Däne und vielleicht ist das der Grund, warum Varnish eine eigene Konfigurationssprache (VCL) besitzt. Bekanntlich mögen Dänen ja solche Konfigurationssprachen um Systeme zu beeinflussen – siehe die von Kasper Skaarhoj entwickelte Konfigurationssprache „Typoscript“ bei TYPO3.
Wie auch immer, mit VCL kann man das Caching-Verhalten von Varnish nach Herzenslust beeinflussen und sich seinen Anforderungen entsprechend anpassen.
Dank VCL ist es z.B. kein Problem bestimmte URLs aus dem Caching auszunehmen oder Mediadateien eine andere Cachedauer (TTL) zu verpassen. Man kann den Request vor und nach dem Weiterleiten an das Backend (Webserver) manipulieren, ACL (Access Control Lists) anlegen, spezifische Fehlerseiten erzeugen oder auch rudimentäres Load-Balancing einrichten und vieles mehr.
Die Syntax von VCL ist an C und Perl orientiert und daher für PHP Entwickler relativ einfach zu erlernen. Der Funktionsumfang hält sich auch noch in Grenzen und man kann mit wenigen Zeilen Code eine Menge auf die Beine stellen. Generell aber gilt bei VCL die Regel: „keep it simple“.
Wie gut wird meine Seite gecached?
Varnish bringt einige Möglichkeiten mit, sich die Effizienz des Caching darstellen zu lassen. Der Klassiker ist “varnishtop”, welcher ähnlich wie das bekannte Linux “top”, eine textbasierte Statistik aufzeigt, die u.a. aktuelle Cache-Hit-Ratios aufführt. Im Klartext heißt das, wie viel Prozent der Anfragen gecached ausgeliefert werden konnten. Schöner ist es allerdings, sich das bekannte Server Statistik Tool “Munin” zu installieren, für das es auch ein fertiges Varnish Modul gibt und einem so schicke Grafiken u.a. über die Hit-Ratio ausliefert.
Fazit
Varnish hat somit den Einstellungstest mit Bravour bestanden. Auch wenn man vielleicht ein wenig Einarbeitungszeit investieren muss, ist er letztendlich der nahezu perfekte Sekretär: Er ist schnell, flexibel, merkt sich viel und fällt sehr selten aus.
Ausblick
Nach dieser sehr allgemeinen Einführung in das Thema, möchte ich demnächst ein paar Praxisbeispiele vorstellen. Vor allem der Einsatz von Varnish im TYPO3 Umfeld und dessen Stolperfallen.
Weiterführende Links
- Varnish Website
- Varnish Wiki
- Varnish und TYPO3 Experten (engl.)
- Poul-Henning Kamp auf der T3CON10 (Video)
- Munin
Letzte Kommentare