Les projets Web dy­na­miques perdent de leur per­for­mance au fur et à mesure que leur com­plexité et que le nombre de leurs uti­li­sa­teurs pro­gres­sent. Afin de décharger un serveur Web et de pallier à sa perte de rapidité, il est possible d’utiliser un reverse proxy dont l’objectif est de répondre aux requêtes faites au serveur Web et de sau­ve­gardes le matériel requis (le contenu statique tel que les images et les résultats des pages souvent con­sul­tées) par la suite dans le cache. Varnish fait partie de ces pro­grammes très appréciés. Con­trai­re­ment à beaucoup de ses con­cur­rents, ce logiciel libre a été développé dans le but d’accélérer le Web. L’uti­li­sa­tion d’un cache Varnish nécessite un serveur Web avec un système d’ex­ploi­ta­tion sous Unix ainsi que des accès racine pour l’ins­tal­la­tion et la con­fi­gu­ra­tion.

Voilà comment fonc­tionne le cache Varnish

Varnish est di­rec­te­ment activé en tant que reverse proxy pour le serveur Web où se trouve le contenu du site Web en question. Lorsqu’une page est chargée, le processus est d’abord traité par le serveur d’origine mais le proxy Varnish sau­ve­garde la requête et le contenu requis. Lors d’un nouveau char­ge­ment de ce genre, les données peuvent di­rec­te­ment être chargées en partant du cache Varnish. Le programme stocke alors toutes les données dans la mémoire vive et laisse le système d’ex­ploi­ta­tion décider ce qui doit être déplacé sur le disque dur du serveur. Ainsi, il est possible d’éviter que le système ne sau­ve­garde en même temps des données dans le cache et sur le disque dur.

Varnish sert également de ré­par­ti­teur de charge (Load balancer). Suite au processus round robin, les requêtes entrantes du client sont évaluées res­pec­ti­ve­ment en tant que threads séparés (phases de travail) qui sont suc­ces­si­ve­ment traitées par le cache Varnish. Une limite fixe détermine combien de threads peuvent être traités en même temps. Ce processus fini, toutes les requêtes at­ter­ris­sent dans une file d’attente. C’est seulement quand le bout de la file est atteint que les con­nexions entrantes sont bloquées.

La con­fi­gu­ra­tion du proxy reverse de Varnish est contrôlée prin­ci­pa­le­ment via le langage pro­prié­taire spé­ci­fique du programme (Varnish Con­fi­gu­ra­tion Language (VCL) en anglais). Ce dernier permet d’écrire des jonctions à l’aide desquels un code étranger peut être intégré dans l’ap­pli­ca­tion. Si un tel script VLC charge, ce dernier est traduit dans le langage de pro­gram­ma­tion C et compilé dans une bi­blio­thèque de pro­grammes. Les ins­truc­tions de VCL sont reliées avec le cache Varnish. Si le CMS utilisé, le logiciel de la boutique en ligne ou l’ap­pli­ca­tion Web de base maî­tri­sent la langue de balisage ESI (Edge Side Includes), Varnish peut par ailleurs livrer les pages mises en cache dans leur ensemble. Le langage de balisage crée dans les fichiers HTML des pages appelées balises ESI qui ca­rac­té­ri­sent le contenu dynamique. Lors d’une requête d’un client, le cache Varnish reconnaît ces balises et charge les contenus cor­res­pon­dants.

Avantages et in­con­vé­nients d’un hé­ber­ge­ment avec Varnish

Un cache Varnish peut vous aider à optimiser votre hé­ber­ge­ment si votre projet Web est de plus en plus complexe et si le nombre de vos uti­li­sa­teurs / visiteurs progresse. Il est important de garder en mémoire que ce logiciel ne convient pas à tous les sites Internet. Voici une synthèse des avantages et des in­con­vé­nients du cache Varnish qui vous per­met­tront de mieux faire votre choix :

Avantages In­con­vé­nients
Temps de char­ge­ment plus court grâce aux contenus qui figurent dans la mémoire vive Pour les systèmes qui ne maî­tri­sent pas ESI, le cache Varnish ne permet aucune op­ti­mi­sa­tion
Sou­la­ge­ment du serveur Web Davantage de com­plexité et le site est plus propice aux bugs
Prise en charge par les balises ESI Aucune prise en charge par TLS/SSL voire HTTPS
Le système d’ex­ploi­ta­tion stocke les contenus sur le disque dur du serveur L‘ins­tal­la­tion et la con­fi­gu­ra­tion prend beaucoup de temps et exige un certain savoir faire
Ré­par­ti­teur de charge suite au processus round robin Adapté seulement aux systèmes d’ex­ploi­ta­tion qui fonc­tion­nent sous UNIX
Diverses pos­si­bi­li­tés de con­fi­gu­ra­tion grâce à VCL

Cette com­pa­rai­son met en lumière le fait que Varnish ne re­pré­sente pour vous qu’une al­ter­na­tive aux capacités de cache des clients et des serveurs Web qui existent déjà. Par ailleurs, l’ins­tal­la­tion et la con­fi­gu­ra­tion du cache Varnish com­pre­nant les balises ESI ne se font pas sans effort. Etant donné que Varnish ne prend pas en charge les con­nexions TLS/SSL, vous aurez besoin d’un serveur proxy sup­plé­men­taire pour une trans­mis­sion sécurisée.

Un cache Varnish bien configuré com­pre­nant des balises ESI pourra accélérer votre site Internet de manière bien plus efficace que les méthodes de cache tra­di­tion­nelles. Il permet en effet de réduire le temps de chargement, ce qui vous aide à terme à améliorer votre taux de con­ver­sion, mais également de bé­né­fi­cier d’un meilleur ré­fé­ren­ce­ment et de soulager votre serveur Web qui n’est plus le seul à traiter les con­nexions entrantes. Le cache Varnish jouit d’une grande po­pu­la­rité en par­ti­cu­liers chez les ad­mi­nis­tra­teurs de boutiques en ligne et les sites Internet d’envergure.

Varnish Cache ins­tal­lie­ren

L’ins­tal­la­tion du cache Varnish implique que les droits d’ad­mi­nis­tra­teurs doivent passer par le système UNIX. Par ailleurs, il faut que le serveur Web, qui doit être activé pour le programme, soit déjà installé. Voici un exemple d’ins­tal­la­tion et de con­fi­gu­ra­tion de Varnish avec le système d’ex­ploi­ta­tion Ubuntu et le serveur Web Apache :

1. Varnish est inclus par défaut dans les ges­tion­naires de paquets de logiciels Ubuntu mais sa version n’est pas tout le temps à jour. Le programme permet d’avoir accès à son propre ré­per­toire en ligne lors de l’ins­tal­la­tion. Voici comment ouvrir ce ré­per­toire et le relier en tant que source.

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. Par la suite, insérez à nouveau les listes de paquets et installez Varnish :

sudo apt-get update
sudo apt-get install varnish

3. Il s’agit désormais de con­fi­gu­rer le fichier Varnish de sorte que le logiciel sache où il peut trouver le contenus du Web :

sudo nano /etc/default/varnish

A partir de là, modifiez les in­for­ma­tions sous « DAEMON_OPTS » comme suit :

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

4. En­re­gis­trez les mo­di­fi­ca­tions et ouvrez main­te­nant le fichier default.vlc

sudo nano /etc/varnish/default.vlc

Indiquez le port 8080 comme source pour le contenu créé par Varnish :

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

5. Enfin, réglez le port 8080 pour Apache (par défaut 80). Ouvrez également le fichier de con­fi­gu­ra­tion du port Apache :

sudo nano /etc/apache2/ports.conf

Modifiez le numéro de port pour les entrées « Na­me­Vir­tual­Host » et « Listen » comme ci-dessous :

NameVirtualHost 127.0.0.1:8080
Listen 127.0.0.1:8080

6. Adaptez de la même façon l’entrée vir­tual­Host dans le fichier default (etc/apache2/sites-available/default).

7. Re­dé­mar­rez enfin le serveur et Varnish afin de terminer l’ins­tal­la­tion et les réglages :

sudo service apache2 restart
sudo service varnish restart

Vous trouverez d’autres ins­truc­tions sur le site de varnish-cache.org. Vous pourrez avoir plus d’in­for­ma­tions sur les autres systèmes d’ex­ploi­ta­tion Unix ainsi que sur les codes de pro­gram­ma­tion du logiciel.

Aller au menu principal