Compilation Installation et Configuration de Varnish en reverse proxy
Un reverse proxy cache, concurrent de squid ? d'apache en reverse proxy ? d'HAproxy ?
Varnish-cache est un reverse-proxy très léger, et parait il très performant , mis au point par le Sieur Poul-Henning Kamp, un des développeurs de la partie réseau de FreeBSD.
Varnish permet non seulement de décharger un ou plusieurs serveurs d’application web quel que soit le langage utilisé, mais il peut gérer un cache local très précis selon des critères assez complexes, ou encore diviser la page en plusieurs parties notamment grâce à la technologie Edge Side Includes.
Enfin, les règles mandataire de Varnish (écrites dans un micro-langage, le VCL), sont compilées en langage C par Varnish qui lance ensuite gcc pour obtenir un code natif, ce qui revient à dire que les règles de mise en cache ou de service que vous écrivez sont directement interprétées par votre reverse-proxy.
Voici l'url du Site officiel : http://varnish-cache.org/
Téléchargement :
Vous pourrez trouver la dernière version à cette url :
http://sourceforge.net/projects/varnish/files/
cd /opt/SOURCES wget http://sourceforge.net/projects/varnish/files/varnish/2.0.6/varnish-2.0.6.tar.gz/download tar xvzf varnish-2.0.6.tar.gz cd varnish-2.0.6
Pré-requis :
Je n'ai pas rencontré de problème de dépendances mais il faut dire qu'il commence a y avoir pas mal de merdier sur mon serveur de test Varnish à besoin parait il de : libncurses Si vous en découvrez d'autres faites le nous savoir.
Installation :
Faites un petit ./configure --help pour voir les options.
mkdir /opt/varnish206 ln -s /opt/varnish206/ /opt/varnish ./configure --prefix=/opt/varnish --enable-stack-protector make make install
L'option : stack-protector est une protection en cas d'attaque DOS.
Configuration :
Retournez dans les sources vous devriez y trouver un répertoire redhat :
cd /opt/SOURCES/varnish-2.0.6/redhat
Copiez le fichier de configuration varnish.sysconfig :
cp -a varnish.sysconfig /opt/varnish206/etc/varnish/varnish.sysconfig mv /opt/varnish/etc/varnish/varnish.sysconfig /opt/varnish/etc/varnish/varnish.cfg
Copiez le script d'init :
cp -a varnish.initrc /etc/init.d/ mv /etc/init.d/varnish.initrc /etc/init.d/varnish
Modifications du fichier de configuration default.vcl :
Éditez le et décommentez tout sauf les commentaire
vi /opt/varnish/etc/varnish/default.vcl
La petite partie :
backend default { .host = "126.7.7.8"; .port = "8080"; }
sert à "dire" à Varnish sur quelle ip et quel port écoute le serveur web, le reste du fichier est le fameux langage Vcl.
Modifier le fichier d'init script pour qu'il colle bien à votre installation :
vi /etc/init.d/varnish
Voici les modifications que j'ai du effectuer :
# Source function library. . /etc/init.d/functions retval=0 pidfile=/var/run/varnish.pid exec="/opt/varnish/sbin/varnishd" prog="varnishd" config="/opt/varnish/etc/varnish/varnish.cfg" lockfile="/var/lock/subsys/varnish" # Include varnish defaults [ -e /opt/varnish/etc/varnish/varnish.cfg ] && . /opt/varnish/etc/varnish/varnish.cfg
Création de l'utilisateur et groupe :
adduser varnish
Modification pour les librairies :
vi /etc/ld.so.conf ajouter : /opt/varnish/lib
Oubliez pas de charger les nouvelles librairies avec la commande : ldconfig
Démarrer Varnish :
service varnish start
qui devrait vous donner :
Starting varnish HTTP accelerator: [ OK ]
Si vous rencontrez des problèmes avec le script d'init vous pouvez lancer varnish à la main :
exemple :
/opt/varnish/sbin/varnishd -a 0.0.0.0:80 -f /opt/varnish/etc/varnish/default.vcl -T 0.0.0.0:6082 -t 120 -w 1,1000,120 -u varnish -g varnish -s file,/opt/varnish/var/lib/varnish/varnish_storage.bin,1G
Tester l'installation avec l'interface d'admin :
telnet 127.0.0.1 6082
Tapez help pour avoir la liste des commandes disponibles, les plus intéressantes sont les suivantes :
status stats
Si vous allez plus loin avec ce logiciel n'hésitez pas à partager vos découvertes.
Voici quelques pistes :
Schéma : Comment fonctionne Varnish
FAQ : Pas mal de trucs utiles
Autre : Article anglais