diff --git a/support/varnish.tex b/support/varnish.tex new file mode 100644 index 0000000..db1adde --- /dev/null +++ b/support/varnish.tex @@ -0,0 +1,110 @@ +% Copyright (c) 2004-2010 Evolix +% Permission is granted to copy, distribute and/or modify this document +% under the terms of the GNU Free Documentation License, Version 1.2 +% or any later version published by the Free Software Foundation; +% with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +% A copy of the license is included at http://www.gcolpart.com/howto/fdl.html + +\chapter{Varnish} + +Site officiel: \url{https://www.varnish-cache.org/} + +\section{Présentation} + +Varnish est un reverse proxy HTTP dans le but premier est la mise en cache de +contenu. Il est également capable de gérer plusieurs backend, avec +répartition de charge et détection de panne. + +Varnish, développé en C, se concentre principalement sur la performance sur des infrastructures +à haut et très haut trafic. + +Un autre point fort est son langage de configuration, qui permet de paramétrer +finement le comportement de Varnish aux différentes étapes du traitement de la +requête. + +Le développement de Varnish a commencé en 2005, et il est distribué sous licence +BSD. + +\section{Installation} + +Varnish est disponible dans les dépôts de Debian Squeeze en version 2.1.3. Il +existe également un backport du paquet de Wheezy, qui fournit la version 3.0.2. +Cette version apporte de nombreuses amélioration et fonctionnalité dans la +gestion du load-balancing entre les backends. + +Installation du paquet: +\begin{verbatim} +# aptitude install varnish +\end{verbatim} + +\section{Configuration} + +Les possibilités offertes pour la configuration de Varnish sont assez vastes, +elles seront abordés par grands thèmes. + +\subsection{Paramétrage de base} + +Tout d'abord, il est nécessaire de renseigner quelques informations de base au +démon \texttt{varnishd}. Cette configuration se passe dans le fichier +\texttt{/etc/default/varnish}. Plusieurs cas de figure sont proposés à titre +d'exemple dans ce fichier, en voici un autre avec quelques optimisations +supplémentaires: +\begin{verbatim} +DAEMON_OPTS="-a 192.0.2.1:80 \ + -T localhost:6082 \ + -f /etc/varnish/default.vcl \ + -S /etc/varnish/secret \ + -s malloc,3G + -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,10G + -p thread_pools= + -p thread_pool_add_delay=2 + -p thread_pool_max=5000" +umask 022 +\end{verbatim} + +Et voici quelques explications sur les paramètres: +\begin{description} + \item[\texttt{-a 192.0.2.1:80}] \hfill \\ + Il s'agit du couple IP,port sur lequel Varnish attendra les requêtes HTTP à + traiter. + \item[\texttt{-T localhost:6082}] \hfill \\ + Il s'agit du couple IP,port sur lequel sera accessible l'interface + d'administration de Varnish (traité plus loin dans ce chapitre). + \item[\texttt{-f /etc/varnish/default.vcl}] \hfill \\ + Cette option indique le fichier de configuration à utiliser. + \item[\texttt{-S /etc/varnish/secret}] \hfill \\ + \item[\texttt{-s malloc,3G}] + \item[\texttt{-s file,/var/lib/varnish/\$INSTANCE/varnish\_storage.bin,10G}] \hfill \\ + On indique ici qu'une partie du cache sera stocké en mémoire 3~Go, ainsi que + dans un fichier plat sur le disque, qui sera limité à 10~Go. + \item[\texttt{-p thread\_pools=}] + \item[\texttt{-p threa\_poo\_ad\_delay=2}] + \item[\texttt{-p threa\_poo\_max=5000}] \hfill \\ + L'option \texttt{-p} permet de modifier différents paramètres d'exécution. + De nombreux paramètres peuvent être modifiés, la liste complète avec leur + description se trouve ici: + \url{https://www.varnish-cache.org/docs/2.1/reference/varnishd.html}. + + \texttt{threa\_pools} indique le nombre de groupe de threads à lancer. Cette + valeur ne devrait pas dépasser le nombre de c\oe{}ur disponible sur le système + (pour des raisons de performance). Pour \texttt{threa\_poo\_ad\_delay}, il + s'agit du temps en milisecondes à attendre avant la création d'un nouveau + thread. Et enfin \texttt{threa\_poo\_max} représente le nombre total de + thread maximum à ne pas dépasser, tout pool confondus. + \item[\texttt{umask 022}] \hfill \\ + Varnish s'attend à avoir un umask à 022 pour s'exécuter + correctement. \'Etant donné qu'il n'est pas forcé dans le script d'init, + nous le plaçons ici manuellement. +\end{description} + +\subsection{Aperçu de la syntaxe du langage VCL} + +\subsection{Gestion du cache} + +\subsection{Gestion du load-balancing} + +\subsection{Gestion du failover} + +\section{Administration} + +\section{Gestion des logs}