04mar.2010
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

Commentaires
jeudi, mars 4 2010 | 08:58
Tiens, ils ont enfin acheté un vrai nom de domaine? :D Avant c'était sur http://varnish.projects.linpro.no
Je trouve aussi que c'est un logiciel vraiment performant, souple et pratique. La syntaxe du fichier de conf est un peu compliquée au départ mais suffisamment logique pour qu'on s'y retrouve. J'aime bien les possibilités qu'offrent les outils divers autour du logiciel en lui même : la possibilité de faire un reload du fichier de conf uniquement, les outils pour lire les logs, enregistrer du trafic et le rejouer sur un autre varnish en temps réel ou pas, et surtout, surtout ! varnishhist avec son interface en ncurses, j'adore :p
Sans parler des probes complètement configurables pour détecter les backends défaillants, vraiment super ca.
Par contre il subsiste encore quelques bugs, par exemple quand il n'y a plus aucun backend disponible il arrive que varnish perde les pédales, un restart règle généralement le problème en quelques secondes mais c'est tout de même embetant.
Après avoir utilisé pound et hésité avec nginx, je ne regrette absolument pas ce choix, varnish est très bien.
Super le schéma en lien à la fin, je l'avais pas trouvé celui la.
Amandine
jeudi, mars 4 2010 | 12:39
Pas mal, je connaissais pas.
Et dans le même genre, il n'y aurait pas un outil qui ne fait que du SSL ?
jeudi, mars 4 2010 | 13:35
Sinon, il y a aussi Nginx, dans le genre, qui marche vraiment vite et bien