Varnish 3.0.3s et tinyproxy sur Wheezy



  • Dans un article précédent, je vous avais présenté la solution que j’utilisais pour profiter du cache de Varnish afin de combler les manques d’un proxy sur lequel je n’avais pas forcément la main.

    Aujourd’hui j’utilise toujours cette méthode, même à mon chez moi. C’est bien pratique. J’ai cependant rencontré quelques petits soucis en passant sur la Wheezy. C’est donc l’occasion de faire une petite mise à jour sur le sujet…

    Un segfault avec Varnish 3.0.2s

    J’ai eu droit à un joli segfault avec la version 3.0.2s de Varnish en passant sous Wheezy. Je n’ai pas cherché le comment du pourquoi sachant que la 3.0.3s était disponible et que ce problème ne se reproduit pas avec cette version. Si vous avez une erreur du style varnishd[26677]: segfault at 0 ip 00000000004159f7 sp 00007fff1e7d77c0 error 4 in varnishd[400000+7d000], envisagez une mise à jour en 3.0.3s !

    Installer Varnish 3.0.3s sur Wheezy

    La Wheezy est en RC1, j’en profite pour commencer mes tests pour être prêt le jour J. Sur une Wheezy fraichement installée, voici la procédure pour installer Varnish 3.0.3s :

    • Installez les pré-requis :
    apt-get update
    apt-get install build-essential autogen automake pkg-config libtool libpcre3-dev python-docutils libncurses5-dev
    
    • Récupérez l’archive de Varnish avec le patch streaming sur Github.
    cd /usr/local/src
    wget https://github.com/mbgrydeland/varnish-cache-streaming/archive/streaming-3.0.3.zip
    unzip streaming-3.0.3.zip
    cd varnish-cache-streaming-streaming-3.0.3
    
    • Lancez la compilation de Varnish :
    ./autogen.sh
    ./configure --prefix=/usr/local --localstatedir=/var --sysconfdir=/etc
    make && make install && ldconfig
    
    • Il va manquer ce répertoire pour la configuration que je vais vous présenter :
    mkdir /var/lib/varnish
    

    Installer tinyproxy

    Rien à dire tellement c’est simple : apt-get install tinyproxy. Tinyproxy sera donc le backend de mon Varnish. Il suffit juste de configurer tinyproxy pour écouter en localhost sur le port de votre choix. Il y a un exemple de configuration dans le paragraphe suivant…

    Configuration

    Rien de particulier par rapport à mon article précédent, la configuration de Varnish ne change pas. Je fais fonctionner sur le même serveur (LXC) Varnish et Tinyproxy. Tinyproxy écoute seulement sur localhost et Varnish utilise donc localhost comme backend. J’ai repris le script d’init du paquet Varnish de la Wheezy. Tous ces fichiers de configuration sont sur Github.

    Attention : pour mes tests @home, j’utilise le backend de stockage “persistent”. Ce backend est, à ce jour, expérimental. Il permet de stocker le cache sur disque et le contenu n’est pas perdu dans le cas ou Varnish redémarre (contrairement au backend file ou malloc). Cette configuration est donnée à titre d’exemple : à ne pas utiliser en l’état dans un contexte de production !