Varnish Cache: Performance-Boost für dynamische Webprojekte

Dynamische Webprojekte verlieren mit zunehmender Komplexität und steigenden Nutzerzahlen deutlich an Performance. Um den Webserver zu entlasten und dem Geschwindigkeitsverlust entgegenzuwirken, kann man einen Reverse Proxy verwenden, der die Anfragen an den Webserver stellvertretend beantwortet. Dazu speichert er das angeforderte Material – statische Inhalte wie Bilder sowie Ergebnisse häufig aufgerufener, dynamisch erstellter Seiten – zunächst in seinem Cache. Eine sehr beliebte Caching-Software ist Varnish. Im Gegensatz zu vielen Konkurrenten wurde die freie Software von Grund auf als Webbeschleuniger entwickelt. Die Nutzung von Varnish Cache setzt einen Webserver mit installiertem Unix-Betriebssystem sowie Root-Rechte zur Installation und Konfiguration voraus.

So funktioniert Varnish Cache

Varnish wird als Reverse Proxy direkt vor den Webserver geschaltet, auf dem sich die Website-Inhalte befinden. Kommt es nun zu einem Seitenaufruf, wird dieser zunächst noch vom ursprünglichen Server verarbeitet, der Varnish Proxy speichert jedoch die Anfrage und erforderliche Inhalte. Bei einem erneuten Aufruf dieser Art können die Daten dann direkt aus dem Varnish Cache geladen werden. Die Software legt dabei sämtliche Daten im Arbeitsspeicher ab und lässt das Betriebssystem entscheiden, was auf die Festplatte des Servers ausgelagert werden soll. So wird vermieden, dass das System gleichzeitig Daten im Cache und auf der Festplatte speichert.

Varnish fungiert zudem als Load Balancer. Nach dem Round-Robin-Verfahren werden die eingehenden Anfragen der Clients jeweils als separate Arbeits-Threads (Arbeitsschritte) gewertet, die nacheinander vom Varnish Cache abgehandelt werden. Ein festgelegtes Limit bestimmt, wie viele gleichzeitig aktive Threads bearbeitet werden können. Ist dieses erreicht, gelangen alle weiteren Anfragen in eine Warteschlange. Erst wenn auch das Limit der Warteschlange erreicht ist, werden eingehende Verbindungen blockiert.

Die Konfiguration des Varnish-Reverse-Proxys wird hauptsächlich über die Varnish Configuration Language (VCL) gesteuert. Diese ermöglicht es, Hooks (Schnittstellen) zu schreiben, mit deren Hilfe sich fremder Code in die Anwendung integrieren lässt. Lädt ein solches VCL-Skript, wird es in die Programmiersprache C übersetzt und in eine Programmbibliothek kompiliert; die VCL-Anweisungen werden mit dem Varnish Cache verknüpft. Wenn das verwendete CMS, die eingesetzte Shop-Software oder die zugrundeliegende Webapplikation die Auszeichnungssprache ESI (Edge Side Includes) beherrschen, kann Varnish außerdem als Ganzes zwischengespeicherte Seiten ausliefern. Die Auszeichnungssprache erzeugt in den HTML-Dateien der Seiten sogenannte ESI-Tags, die dynamische Inhalte auszeichnen. Bei einer Client-Anfrage erkennt der Varnish Cache diese Tags und lädt die entsprechenden Inhalte nach.

Vor- und Nachteile von Varnish Hosting

Die eigene Hosting-Lösung mit einem Varnish Cache zu optimieren, kann in vielen Fällen die Antwort auf die wachsende Komplexität Ihres Projektes und steigende Besucherzahlen sein. Allerdings ist der Einsatz der Software nicht für alle Webpräsenzen zu empfehlen. Zum besseren Überblick haben wir die Vor- und Nachteile von Varnish Hosting für Sie zusammengefasst:

Vorteile: Nachteile:
✔ schnellere Ladezeiten dank Inhalten im Arbeitsspeicher ✘ für Systeme, die ESI nicht beherrschen, bietet Varnish Cache keine wesentliche Optimierung
✔ Entlastung des Webservers ✘ erhöhte Komplexität und Fehleranfälligkeit 
✔ ESI-Unterstützung  ✘ keine Unterstützung von TLS/SSL bzw. HTTPS
✔ Betriebssystem lagert die Inhalte auf Server-Festplatte aus  ✘ Einrichtung und Konfiguration ist sehr aufwendig und erfordert entsprechendes Know-how
✔ Lastverteilung nach dem Round-Robin-Verfahren ✘ nur für Unix-Betriebssysteme
✔ flexible Konfigurationsmöglichkeiten dank VCL

Die Gegenüberstellung macht deutlich, dass Varnish Hosting für Sie nur dann eine Alternative zu den vorhandenen Caching-Funktionen von Clients und Webservern darstellt, wenn Sie mit einer Webapplikation, die die Auszeichnungssprache ESI beherrscht, arbeiten. Ferner ist die Einrichtung und Konfiguration des Varnish Cache inklusive der ESI-Tags mit einem hohen Aufwand verbunden. Da Varnish keine TLS-/SSL-Verbindungen unterstützt, benötigen Sie einen weiteren Proxy-Server für die sichere Übertragung.

Ein richtig konfigurierter Varnish Cache inklusive ESI-Tags verspricht Ihnen allerdings eine Beschleunigung Ihres Webprojektes, die mit gängigen Caching-Methoden nicht erreicht wird. Das verringert die Ladezeiten für Ihre Besucher enorm und wird Ihnen dadurch langfristig zu einer wesentlich höheren Conversion-Rate verhelfen. Zusätzlich profitieren Sie automatisch von einem besseren Suchmaschinenranking und entlasten enorm den Webserver, der nicht mehr allein für das Bearbeiten eingehender Verbindungen zuständig ist. Insbesondere bei Betreibern von Onlineshops und Webpräsenzen mit einer Vielzahl an Inhalten erfreut sich Varnish Hosting daher einer sehr großen Beliebtheit.

Varnish Cache installieren

Um den Varnish Cache zu installieren, sind administrative Rechte über das verwendete UNIX-System Grundvoraussetzung. Ferner muss auch der Webserver, vor den der Varnish Cache geschaltet werden soll, bereits installiert sein. In der folgenden Anleitung erfahren Sie die notwendigen Schritte bei der Installation und Konfiguration von Varnish. Beispielhaft wurden Ubuntu als Betriebssystem und Apache als Webserver verwendet:

1. Schritt:

Standardmäßig ist Varnish in der Software-Paketverwaltung von Ubuntu enthalten, allerdings nicht unbedingt in einer aktuellen Version. Varnish Software bietet deshalb an, bei der Installation auf das eigene Online-Verzeichnis zuzugreifen. So öffnen Sie das Verzeichnis und binden es als Quelle ein:

sudo apt-get install apt-transport-https
sudo curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
sudo echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.1" >> /etc/apt/sources.list.d/varnish-cache.list 

2. Schritt:

Im Anschluss lesen Sie die Paketlisten neu ein und installieren Varnish:

sudo apt-get update
sudo apt-get install varnish

3. Schritt:

Nun gilt es, die Varnish-Datei so zu konfigurieren, dass die Software weiß, wo sie die Webinhalte findet. Dazu öffnen Sie zunächst die Datei:

sudo nano /etc/default/varnish

Dort ändern Sie die Angaben unter „DAEMON_OPTS“ wie folgt:

DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m"

4. Schritt:

Speichern Sie die Änderungen und öffnen Sie nun die default.vlc-Datei:

sudo nano /etc/varnish/default.vlc

Hier geben Sie Port 8080 als Quelle für den von Varnish erfassten Content an:

backend default {
.host = "127.0.0.1";
.port = "8080";
}

5. Schritt:

Abschließend stellen Sie auch für Apache den Port 8080 (standardmäßig 80) ein. Öffnen Sie dazu die Apache-Port-Konfigurationsdatei:

sudo nano /etc/apache2/ports.conf

Ändern Sie die Port-Nummer für die Einträge „NameVirtualHost“ und „Listen“ entsprechend:

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

6. Schritt:

Passen Sie in der default-Datei (etc/apache2/sites-available/default) den VirtualHost-Eintrag auf die gleiche Weise an.

7. Schritt:

Starten Sie anschließend Server und Varnish neu, um Installation und Einrichtung zu beenden:

sudo service apache2 restart
sudo service varnish restart

Weitere Anleitungen zur Installation von Varnish auf anderen Unix-Betriebssystemen sowie den Programmcode der Software finden Sie im Downloadbereich der offiziellen Homepage varnish-cache.org.