Dy­na­mi­sche Web­pro­jek­te verlieren mit zu­neh­men­der Kom­ple­xi­tät und stei­gen­den Nut­zer­zah­len deutlich an Per­for­mance. Um den Webserver zu entlasten und dem Ge­schwin­dig­keits­ver­lust ent­ge­gen­zu­wir­ken, kann man einen Reverse Proxy verwenden, der die Anfragen an den Webserver stell­ver­tre­tend be­ant­wor­tet. Dazu speichert er das an­ge­for­der­te Material – statische Inhalte wie Bilder sowie Er­geb­nis­se häufig auf­ge­ru­fe­ner, dynamisch er­stell­ter Seiten – zunächst in seinem Cache. Eine sehr beliebte Caching-Software ist Varnish. Im Gegensatz zu vielen Kon­kur­ren­ten wurde die freie Software von Grund auf als Web­be­schleu­ni­ger ent­wi­ckelt. Die Nutzung von Varnish Cache setzt einen Webserver mit in­stal­lier­tem Unix-Be­triebs­sys­tem sowie Root-Rechte zur In­stal­la­ti­on und Kon­fi­gu­ra­ti­on voraus.

So funk­tio­niert Varnish Cache

Varnish wird als Reverse Proxy direkt vor den Webserver ge­schal­tet, auf dem sich die Website-Inhalte befinden. Kommt es nun zu einem Sei­ten­auf­ruf, wird dieser zunächst noch vom ur­sprüng­li­chen Server ver­ar­bei­tet, der Varnish Proxy speichert jedoch die Anfrage und er­for­der­li­che 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 Ar­beits­spei­cher ab und lässt das Be­triebs­sys­tem ent­schei­den, was auf die Fest­plat­te des Servers aus­ge­la­gert werden soll. So wird vermieden, dass das System gleich­zei­tig Daten im Cache und auf der Fest­plat­te speichert.

Varnish fungiert zudem als Load Balancer. Nach dem Round-Robin-Verfahren werden die ein­ge­hen­den Anfragen der Clients jeweils als separate Arbeits-Threads (Ar­beits­schrit­te) gewertet, die nach­ein­an­der vom Varnish Cache ab­ge­han­delt werden. Ein fest­ge­leg­tes Limit bestimmt, wie viele gleich­zei­tig aktive Threads be­ar­bei­tet werden können. Ist dieses erreicht, gelangen alle weiteren Anfragen in eine War­te­schlan­ge. Erst wenn auch das Limit der War­te­schlan­ge erreicht ist, werden ein­ge­hen­de Ver­bin­dun­gen blockiert.

Die Kon­fi­gu­ra­ti­on des Varnish-Reverse-Proxys wird haupt­säch­lich über die Varnish Con­fi­gu­ra­ti­on Language (VCL) gesteuert. Diese er­mög­licht es, Hooks (Schnitt­stel­len) zu schreiben, mit deren Hilfe sich fremder Code in die Anwendung in­te­grie­ren lässt. Lädt ein solches VCL-Skript, wird es in die Pro­gram­mier­spra­che C übersetzt und in eine Pro­gramm­bi­blio­thek kom­pi­liert; die VCL-An­wei­sun­gen werden mit dem Varnish Cache verknüpft. Wenn das ver­wen­de­te CMS, die ein­ge­setz­te Shop-Software oder die zu­grun­de­lie­gen­de Web­ap­pli­ka­ti­on die Aus­zeich­nungs­spra­che ESI (Edge Side Includes) be­herr­schen, kann Varnish außerdem als Ganzes zwi­schen­ge­spei­cher­te Seiten aus­lie­fern. Die Aus­zeich­nungs­spra­che erzeugt in den HTML-Dateien der Seiten so­ge­nann­te ESI-Tags, die dy­na­mi­sche Inhalte aus­zeich­nen. Bei einer Client-Anfrage erkennt der Varnish Cache diese Tags und lädt die ent­spre­chen­den Inhalte nach.

Vor- und Nachteile von Varnish Hosting

Die eigene Hosting-Lösung mit einem Varnish Cache zu op­ti­mie­ren, kann in vielen Fällen die Antwort auf die wachsende Kom­ple­xi­tät Ihres Projektes und steigende Be­su­cher­zah­len sein. Al­ler­dings ist der Einsatz der Software nicht für alle Web­prä­sen­zen zu empfehlen. Zum besseren Überblick haben wir die Vor- und Nachteile von Varnish Hosting für Sie zu­sam­men­ge­fasst:

Vorteile: Nachteile:
schnel­le­re La­de­zei­ten dank Inhalten im Ar­beits­spei­cher für Systeme, die ESI nicht be­herr­schen, bietet Varnish Cache keine we­sent­li­che Op­ti­mie­rung
Ent­las­tung des Web­ser­vers erhöhte Kom­ple­xi­tät und Feh­ler­an­fäl­lig­keit 
ESI-Un­ter­stüt­zung  keine Un­ter­stüt­zung von TLS/SSL bzw. HTTPS
Be­triebs­sys­tem lagert die Inhalte auf Server-Fest­plat­te aus  Ein­rich­tung und Kon­fi­gu­ra­ti­on ist sehr aufwendig und erfordert ent­spre­chen­des Know-how
Last­ver­tei­lung nach dem Round-Robin-Verfahren nur für Unix-Be­triebs­sys­te­me
flexible Kon­fi­gu­ra­ti­ons­mög­lich­kei­ten dank VCL

Die Ge­gen­über­stel­lung macht deutlich, dass Varnish Hosting für Sie nur dann eine Al­ter­na­ti­ve zu den vor­han­de­nen Caching-Funk­tio­nen von Clients und Web­ser­vern darstellt, wenn Sie mit einer Web­ap­pli­ka­ti­on, die die Aus­zeich­nungs­spra­che ESI be­herrscht, arbeiten. Ferner ist die Ein­rich­tung und Kon­fi­gu­ra­ti­on des Varnish Cache inklusive der ESI-Tags mit einem hohen Aufwand verbunden. Da Varnish keine TLS-/SSL-Ver­bin­dun­gen un­ter­stützt, benötigen Sie einen weiteren Proxy-Server für die sichere Über­tra­gung.

Ein richtig kon­fi­gu­rier­ter Varnish Cache inklusive ESI-Tags ver­spricht Ihnen al­ler­dings eine Be­schleu­ni­gung Ihres Web­pro­jek­tes, die mit gängigen Caching-Methoden nicht erreicht wird. Das ver­rin­gert die La­de­zei­ten für Ihre Besucher enorm und wird Ihnen dadurch lang­fris­tig zu einer we­sent­lich höheren Con­ver­si­on-Rate verhelfen. Zu­sätz­lich pro­fi­tie­ren Sie au­to­ma­tisch von einem besseren Such­ma­schi­nen­ran­king und entlasten enorm den Webserver, der nicht mehr allein für das Be­ar­bei­ten ein­ge­hen­der Ver­bin­dun­gen zuständig ist. Ins­be­son­de­re bei Be­trei­bern von On­line­shops und Web­prä­sen­zen mit einer Vielzahl an Inhalten erfreut sich Varnish Hosting daher einer sehr großen Be­liebt­heit.

Varnish Cache in­stal­lie­ren

Um den Varnish Cache zu in­stal­lie­ren, sind ad­mi­nis­tra­ti­ve Rechte über das ver­wen­de­te UNIX-System Grund­vor­aus­set­zung. Ferner muss auch der Webserver, vor den der Varnish Cache ge­schal­tet werden soll, bereits in­stal­liert sein. In der folgenden Anleitung erfahren Sie die not­wen­di­gen Schritte bei der In­stal­la­ti­on und Kon­fi­gu­ra­ti­on von Varnish. Bei­spiel­haft wurden Ubuntu als Be­triebs­sys­tem und Apache als Webserver verwendet:

1. Schritt:

Stan­dard­mä­ßig ist Varnish in der Software-Pa­ket­ver­wal­tung von Ubuntu enthalten, al­ler­dings nicht unbedingt in einer aktuellen Version. Varnish Software bietet deshalb an, bei der In­stal­la­ti­on auf das eigene Online-Ver­zeich­nis zu­zu­grei­fen. So öffnen Sie das Ver­zeich­nis 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 Pa­ket­lis­ten neu ein und in­stal­lie­ren Varnish:

sudo apt-get update
sudo apt-get install varnish

3. Schritt:

Nun gilt es, die Varnish-Datei so zu kon­fi­gu­rie­ren, dass die Software weiß, wo sie die Web­in­hal­te 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 Än­de­run­gen 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:

Ab­schlie­ßend stellen Sie auch für Apache den Port 8080 (stan­dard­mä­ßig 80) ein. Öffnen Sie dazu die Apache-Port-Kon­fi­gu­ra­ti­ons­da­tei:

sudo nano /etc/apache2/ports.conf

Ändern Sie die Port-Nummer für die Einträge „Na­me­Vir­tu­al­Host“ und „Listen“ ent­spre­chend:

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 Vir­tu­al­Host-Eintrag auf die gleiche Weise an.

7. Schritt:

Starten Sie an­schlie­ßend Server und Varnish neu, um In­stal­la­ti­on und Ein­rich­tung zu beenden:

sudo service apache2 restart
sudo service varnish restart

Weitere An­lei­tun­gen zur In­stal­la­ti­on von Varnish auf anderen Unix-Be­triebs­sys­te­men sowie den Pro­gramm­code der Software finden Sie im Down­load­be­reich der of­fi­zi­el­len Homepage varnish-cache.org.

Zum Hauptmenü