Comment installer Varnish et effectuer un benchmark du serveur Web

Réfléchissez un instant à ce qui s’est passé lorsque vous avez navigué jusqu’à la page actuelle. Vous avez soit cliqué sur un lien reçu via une newsletter, soit sur le lien sur la page d’accueil de Tecmint.com et ensuite été redirigé vers cet article.

En quelques mots, vous (ou plutôt votre navigateur) avez envoyé une requête HTTP au serveur web hébergeant ce site, et le serveur a renvoyé une réponse HTTP.

Aussi simple que cela puisse paraître, ce processus implique bien plus que cela. Beaucoup de traitement a dû être effectué côté serveur pour présenter la page joliment formatée que vous voyez avec toutes les ressources – statiques et dynamiques.

Sans creuser beaucoup plus, vous pouvez imaginer que si le serveur web doit répondre à de nombreuses requêtes similaires simultanément (commençons par seulement quelques centaines), il peut rapidement s’embourber lui-même ou tout le système.

C’est là qu’intervient Varnish, un accélérateur HTTP hautes performances et un proxy inverse, qui peut sauver la mise. Dans cet article, je vais expliquer comment installer et utiliser Varnish en tant que frontal pour Apache ou Nginx afin de mettre en cache les réponses HTTP plus rapidement et sans surcharger davantage le serveur web.

Cependant, étant donné que Varnish stocke normalement sa mémoire cache au lieu du disque, nous devrons être prudents et limiter l’espace RAM alloué au cache. Nous discuterons de la manière de le faire dans un instant.

Comment fonctionne Varnish

How Varnish Works

Installation du cache Varnish sur le serveur Linux

Cet article suppose que vous avez installé un serveur LAMP ou LEMP. Si ce n’est pas le cas, veuillez en installer un de ces piles avant de continuer.

La documentation officielle recommande d’installer Varnish à partir du dépôt du développeur car ils fournissent toujours la dernière version. Vous pouvez également choisir d’installer le package à partir des dépôts officiels de votre distribution, bien qu’il puisse être un peu dépassé.De plus, veuillez noter que les dépôts du projet ne prennent en charge que les systèmes 64 bits, tandis que pour les machines 32 bits, vous devrez vous fier aux dépôts officiellement maintenus de votre distribution.

De plus, veuillez noter que les dépôts du projet ne fournissent que du soutien pour les systèmes 64 bits, tandis que pour les machines 32 bits, vous devrez avoir recours aux dépôts officiellement maintenus par votre distribution.

Dans cet article, nous installerons Varnish à partir des dépôts officiellement soutenus par chaque distribution. La principale raison derrière cette décision est de fournir une uniformité dans la méthode d’installation et d’assurer la résolution automatique des dépendances pour toutes les architectures.

Installer Varnish dans les distributions Linux basées sur Debian

Sur les distributions basées sur Debian, vous pouvez installer Varnish en utilisant la commande apt comme indiqué.

# apt update 
# apt install varnish 	
Install Varnish Cache in Debian

Installer Varnish dans les distributions Linux basées sur RHEL

Sur les distributions basées sur RHEL, telles que CentOS, Rocky et AlmaLinux, vous devrez activer le dépôt EPEL avant d’installer Varnish à l’aide de la commande yum comme indiqué.

# yum install epel-release
# yum update
# yum install varnish 
Install Varnish Cache in RHEL

Si l’installation se termine avec succès, vous aurez l’une des versions de varnish suivantes en fonction de votre distribution:

# varnishd -V

varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)

Enfin, vous devez démarrer manuellement Varnish si le processus d’installation ne l’a pas fait pour vous et l’activer pour qu’il démarre au démarrage.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Check Varnish Cache Status

Par défaut, le port 6081 est utilisé par le service varnish et vous pouvez le confirmer en exécutant la commande netstat suivante.

# netstat -tunlp | grep 6081
Check Varnish Cache Port

Configuration du cache Varnish dans Linux

Comme nous l’avons dit précédemment, Varnish se situe entre les clients externes et le serveur web. Pour cette raison, et afin que le cache soit transparent pour les utilisateurs finaux, nous devrons :

  1. Modifiez le port par défaut 6081 sur lequel Varnish écoute pour 80.
  2. Modifiez le port par défaut sur lequel le serveur Web écoute pour 8080 au lieu du 80 par défaut.
  3. Redirigez le trafic entrant de Varnish vers le serveur Web. Heureusement, Varnish fait cela automatiquement après avoir terminé les étapes 1) et 2).

Changer le port de Varnish

Le processus varnishd est contrôlé par systemd et possède un fichier unité à /usr/lib/systemd/system/varnish.service, qui contient la configuration de fonctionnement Varnish par défaut.

Ici, nous devons changer le port Varnish par défaut de 6081 vers le port 80 et la taille du cache vers 1GB comme indiqué en exécutant la commande suivante, qui ouvrira le fichier unité dans l’éditeur comme indiqué.

Note: Vous pouvez changer la quantité de mémoire en fonction de vos ressources matérielles ou choisir alternativement de sauvegarder les fichiers mis en cache sur le disque.

$ sudo systemctl edit --full varnish
OR 
# systemctl edit --full varnish
Configure Varnish Cache in Linux

Après avoir apporté des modifications au fichier /etc/systemd/system/varnish.service, vous devez recharger le démon Systemd en exécutant la commande suivante:

# systemctl daemon-reload

Changer le port d’Apache ou Nginx

Après avoir changé le port Varnish, vous devez maintenant modifier le port de votre serveur web Apache ou Nginx par défaut 80 vers le port réseau le plus courant, à savoir 8080.

---------- 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]  
Change Apache Port

Une fois que vous avez effectué les modifications, n’oubliez pas de redémarrer Varnish et le serveur web.

# systemctl restart varnish 

---------- On Debian-based Systems ---------- 
# systemctl restart apache2     
# systemctl restart nginx

---------- On RHEL-based Systems ----------
# systemctl restart httpd     
# systemctl restart nginx     

Tester le cache Varnish sous Linux

Le premier test consiste à effectuer une requête HTTP via la commande curl et à vérifier qu’elle est gérée par Varnish:

# curl -I http://localhost
Check Varnish Cache Status

Varnish inclut également deux outils pratiques :

  • Afficher les journaux Varnish en temps réel, appelés intuitivement varnishlog.
  • Afficher les statistiques du cache Varnish, appelées varnishstat.

Dans un second test, dans la vidéo ci-dessous, nous afficherons à la fois les journaux et les statistiques sur un serveur CentOS (dev1, moitié supérieure de l’écran) et sur un serveur Debian (dev2, moitié inférieure de l’écran) alors que des requêtes HTTP sont envoyées et que des réponses sont reçues.

Tester les performances du serveur Web avec un benchmark

Notre troisième et dernier test consistera à effectuer un benchmarking du serveur web et de Varnish avec l’outil de benchmarking ab et à comparer les temps de réponse et la charge du CPU dans chaque cas.

Dans cet exemple particulier, nous utiliserons le serveur CentOS, mais vous pouvez utiliser n’importe quelle distribution et obtenir des résultats similaires. Observez la moyenne de charge en haut et la ligne des requêtes par seconde dans la sortie de ab.

Avec ab, nous envoyons 50 (-c 50) requêtes concurrentes en même temps et répétons le test 1000000 fois (indiqué par -n 1000000). Varnish retournera un nombre plus élevé de requêtes par seconde et une moyenne de charge beaucoup plus faible.

Important: N’oubliez pas que Varnish écoute sur le port 80 (le port HTTP par défaut), tandis qu’Apache écoute sur le port 8080. Vous pouvez également noter la quantité de temps nécessaire pour effectuer chaque test.

# ab -c 50 -n 100000 http://localhost/index.html

Conclusion

Dans cet article, nous avons discuté de la façon de configurer un cache Varnish en face d’un serveur web, Apache, ou Nginx. Notez que nous n’avons pas creusé en profondeur dans le fichier de configuration default.vcl, qui nous permet de personnaliser davantage la politique de mise en cache.

Vous pourriez maintenant vouloir vous référer à la documentation officielle pour de plus amples exemples de configuration ou laisser un commentaire en utilisant le formulaire ci-dessous.

Source:
https://www.tecmint.com/install-varnish-cache-server/