System-Linux

Aller au contenu | Aller au menu | Aller à la recherche

Compilation Installation et Configuration de Varnish en reverse proxy

varnish jpg

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.

reverse proxy png

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

Par GanGan | le jeudi, mars 4 2010 01:30

Commentaires

1. Amandine

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

2. Maxime

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 ?

3. Dju

jeudi, mars 4 2010 | 13:35

Sinon, il y a aussi Nginx, dans le genre, qui marche vraiment vite et bien :)