So installieren Sie Varnish und testen Webserver-Benchmarking
Denken Sie einen Moment darüber nach, was passiert ist, als Sie zur aktuellen Seite geblättert haben. Sie haben entweder auf einen Link geklickt, den Sie über einen Newsletter erhalten haben, oder auf den Link auf der Startseite von linux-console.net und sind dann zu diesem Artikel gelangt.
In wenigen Worten, Sie (oder eigentlich Ihr Browser) haben eine HTTP-Anfrage an den Webserver gesendet, der diese Website hostet, und der Server hat eine HTTP-Antwort zurückgesendet.
So einfach das klingt, dieser Prozess umfasst viel mehr als das. Es musste viel serverseitig verarbeitet werden, um die schön formatierte Seite zu präsentieren, die Sie mit allen darin enthaltenen Ressourcen sehen können – statisch und dynamisch.
Ohne viel tiefer zu graben, können Sie sich vorstellen, dass der Webserver, wenn er auf viele solche Anfragen gleichzeitig antworten muss (es sind nur ein paar hundert für den Anfang), entweder sich selbst oder das gesamte System in Kürze zum Erliegen bringen kann.
Und genau hier kann Varnish, ein leistungsstarker HTTP-Beschleuniger und Reverse-Proxy, die Lage retten. In diesem Artikel erkläre ich Ihnen, wie Sie Varnish als Frontend für Apache oder Nginx installieren und verwenden, um HTTP-Antworten schneller und ohne weitere Last auf dem Webserver zwischenzuspeichern.
Da Varnish seinen Cache jedoch normalerweise im Speicher und nicht auf der Festplatte speichert, müssen wir vorsichtig sein und den für das Caching zugewiesenen RAM-Speicherplatz begrenzen. Wie das geht, besprechen wir gleich.
Wie Varnish funktioniert
Installieren von Varnish Cache auf einem Linux-Server
Dieser Beitrag geht davon aus, dass Sie einen LAMP- oder LEMP-Server installiert haben. Wenn nicht, installieren Sie bitte einen dieser Stacks, bevor Sie fortfahren.
- So installieren Sie den LAMP-Server auf RHEL-basierten Distributionen
- So installieren Sie den LAMP-Server unter Ubuntu
- So installieren Sie den LAMP-Server unter Debian
- So installieren Sie den LEMP-Server auf RHEL-basierten Distributionen
- So installieren Sie den LEMP-Server unter Ubuntu
- So installieren Sie den LEMP-Server unter Debian
Die offizielle Dokumentation empfiehlt, Varnish aus dem eigenen Repository des Entwicklers zu installieren, da dort immer die neueste Version bereitgestellt wird. Sie können sich auch dafür entscheiden, das Paket aus den offiziellen Repositories Ihrer Distribution zu installieren, obwohl es möglicherweise etwas veraltet ist.
Bitte beachten Sie auch, dass die Repositories des Projekts nur Unterstützung für 64-Bit-Systeme bieten, während Sie für 32-Bit-Maschinen auf die offiziell gepflegten Repositories Ihrer Distribution zurückgreifen müssen.
In diesem Artikel werden wir Varnish aus den Repositories installieren, die offiziell von jeder Distribution unterstützt werden. Der Hauptgrund für diese Entscheidung besteht darin, eine einheitliche Installationsmethode zu gewährleisten und eine automatische Abhängigkeitsauflösung für alle Architekturen sicherzustellen.
Installieren Sie Varnish unter Debian-basiertem Linux
Auf Debian-basierten Distributionen können Sie Varnish mit dem Befehl apt installieren, wie gezeigt.
# apt update
apt install varnish
Installieren Sie Varnish unter RHEL-basiertem Linux
Auf RHEL-basierten Distributionen wie CentOS, Rocky und AlmaLinux müssen Sie das EPEL-Repository aktivieren, bevor Sie Varnish mit dem Befehl yum installieren, wie gezeigt.
# yum install epel-release
yum update
yum install varnish
Wenn die Installation erfolgreich abgeschlossen wurde, verfügen Sie je nach Distribution über eine der folgenden Lackversionen:
# varnishd -V
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Schließlich müssen Sie Varnish manuell starten, wenn der Installationsvorgang dies nicht für Sie getan hat, und den Start beim Booten aktivieren.
# systemctl start varnish
systemctl enable varnish
systemctl status varnish
Standardmäßig wird Port 6081 vom Varnish-Dienst verwendet, und Sie bestätigen dies, indem Sie den folgenden netstat-Befehl ausführen.
# netstat -tunlp | grep 6081
Konfigurieren von Varnish Cache unter Linux
Wie bereits erwähnt, steht Varnish in der Mitte von externen Clients und dem Webserver. Aus diesem Grund und damit das Caching für Endbenutzer transparent wird, müssen wir:
- Ändern Sie den Standardport 6081, an dem Varnish auf 80 lauscht.
- Ändern Sie den Standardport, an dem der Webserver 8080 anstelle des Standardports 80 überwacht.
- Leiten Sie eingehenden Datenverkehr von Varnish zum Webserver um. Glücklicherweise macht Varnish dies automatisch, nachdem wir 1) und 2) Schritte abgeschlossen haben.
Lackanschluss wechseln
Der Varnishd-Prozess wird von systemd gesteuert und hat seine Unit-Datei in /usr/lib/systemd/system/varnish.service, die die Standardkonfiguration der Varnish-Laufzeit enthält.
Hier müssen wir den Standard-Varnish-Port von 6081 auf Port 80 und die Cache-Größe auf 1 GB ändern, wie durch Ausführen des folgenden Befehls gezeigt, der die Unit-Datei wie gezeigt im Editor öffnet.
Hinweis: Sie können die Speichermenge entsprechend Ihren Hardwareressourcen ändern oder alternativ zwischengespeicherte Dateien auf der Festplatte speichern.
$ sudo systemctl edit --full varnish
OR
systemctl edit --full varnish
Nachdem Sie Änderungen an der Datei /etc/systemd/system/varnish.service vorgenommen haben, müssen Sie den Systemd-Daemon neu laden, indem Sie den folgenden Befehl ausführen:
# systemctl daemon-reload
Apache- oder Nginx-Port ändern
Nachdem Sie den Varnish-Port geändert haben, müssen Sie jetzt den Port Ihres Apache- oder Nginx-Webservers von der Standardeinstellung 80 auf den gebräuchlichsten Netzwerkport, d. h. 8080, ändern.
---------- On Debian-based Systems ----------
nano /etc/apache2/ports.conf [On Apache]
/etc/nginx/sites-enabled/default [On Nginx]
---------- On RHEL-based Systems ----------
vi /etc/httpd/conf/httpd.conf [On Apache]
vi /etc/nginx/nginx.conf [On Nginx]
Wenn Sie die Änderungen vorgenommen haben, vergessen Sie nicht, Varnish und den Webserver neu zu starten.
# systemctl restart varnish
---------- On Debian-based Systems ----------
systemctl restart apache2
systemctl restart nginx
---------- On RHEL-based Systems ----------
systemctl restart httpd
systemctl restart nginx
Testen von Varnish Cache unter Linux
Der erste Test besteht darin, eine HTTP-Anfrage über den Befehl curl zu stellen und zu überprüfen, ob sie von Varnish verarbeitet wird:
# curl -I http://localhost
Varnish enthält auch zwei praktische Werkzeuge:
- Zeigen Sie Varnish-Protokolle in Echtzeit an, die intuitiv als Varnishlog bezeichnet werden.
- Zeigen Sie Varnish-Cache-Statistiken an, die als varnishstat bezeichnet werden.
Als zweiten Test werden wir im folgenden Screencast sowohl die Protokolle als auch die Statistiken auf einem CentOS-Server (dev1, obere Hälfte des Bildschirms) und auf einem Debian-Server (dev2, untere Hälfte des Bildschirms) anzeigen, während HTTP-Anfragen gesendet und Antworten empfangen werden.
Testen des Benchmarks für die Leistung von Webservern
Unser dritter und letzter Test wird darin bestehen, sowohl den Webserver als auch Varnish mit dem ab-Benchmarking-Tool zu benchmarken und die Antwortzeiten und die CPU-Auslastung jeweils zu vergleichen.
In diesem speziellen Beispiel verwenden wir den CentOS-Server, aber Sie können eine beliebige Distribution verwenden und ähnliche Ergebnisse erzielen. Beobachten Sie den Lastdurchschnitt oben und die Zeile Requests pro Sekunde in der Ausgabe von ab.
Mit ab erhalten wir 50 (-c 50) gleichzeitige Anfragen und wiederholen den Test 1000000 Mal (angezeigt durch -n 1000000). Varnish gibt eine höhere Anzahl von Anforderungen pro Sekunde und einen viel niedrigeren Lastdurchschnitt zurück.
Wichtig: Bitte denken Sie daran, dass Varnish auf Port 80 (dem Standard-HTTP-Port) lauscht, während Apache auf Port 8080 lauscht. Sie können sich auch die Zeit notieren, die für die Durchführung der einzelnen Tests erforderlich ist.
# ab -c 50 -n 100000 http://localhost/index.html
Schlussfolgerung
In diesem Artikel haben wir besprochen, wie man einen Varnish-Cache vor einem Webserver, Apache oder Nginx einrichtet. Beachten Sie, dass wir uns nicht tief in die Konfigurationsdatei default.vcl vertieft haben, was es uns ermöglicht, die Caching-Richtlinie weiter anzupassen.
Vielleicht möchten Sie jetzt in der offiziellen Dokumentation nachschlagen, um weitere Konfigurationsbeispiele zu erhalten, oder einen Kommentar über das untenstehende Formular hinterlassen.







