Finish writing section "Gestion du load-balancing".
This commit is contained in:
parent
fe3b5a0a2f
commit
7d868fbfa6
|
@ -133,14 +133,16 @@ header HTTP \emph{Cache-Control} en ajoutant (dans le premier \texttt{if}:
|
||||||
set beresp.http.cache-control = ``max-age=432000'';
|
set beresp.http.cache-control = ``max-age=432000'';
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
\paragraph{Indiquer si un object provient du cache ou pas dans les headers HTTP}
|
\paragraph{Indiquer si un objet provient du cache ou pas dans les headers HTTP}
|
||||||
|
Dans un but de debugage, il peut être intéressant d'indiquer si un contenu
|
||||||
|
provient du cache de Varnish ou non. Cela se fait simplement comme ceci:
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
sub vcl_deliver {
|
sub vcl_deliver {
|
||||||
if (obj.hits > 0) {
|
if (obj.hits > 0) {
|
||||||
set resp.http.X-Cache = "HIT";
|
set resp.http.X-Cache = "HIT";
|
||||||
} else {
|
} else {
|
||||||
set resp.http.X-Cache = "MISS";
|
set resp.http.X-Cache = "MISS";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
@ -171,21 +173,64 @@ director baz round-robin {
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
Et enfin, on indique dans quel cas il sera utilisé (dans l'exemple il sera
|
Et enfin, on indique dans quel cas il sera utilisé (dans l'exemple il sera
|
||||||
utilisé dans tous les cas):
|
utilisé dans tous les cas, pas de condition):
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
sub vcl_recv {
|
sub vcl_recv {
|
||||||
if (req.http.host ~ "^.*$") {
|
set req.backend = baz;
|
||||||
set req.backend = baz;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
Il s'agit ici de la configuration la plus simple possible. Maintenant, il peut
|
Il s'agit ici de la configuration la plus simple possible. Maintenant, il peut
|
||||||
être intéressant d'ajuster certains paramètres:
|
être intéressant d'ajuster certains paramètres:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item poids
|
\item Dans l'exemple ci dessus, le director est en mode round-robin. Le trafic
|
||||||
\item max connection
|
est alors réparti équitablement entre les backend. On peut définir un
|
||||||
\item s/round-robin/client et critères pour sticky
|
«poids» pour chacun des backends, afin de jouer sur la répartition du trafic
|
||||||
|
entre eux:
|
||||||
|
\begin{verbatim}
|
||||||
|
director baz random {
|
||||||
|
{
|
||||||
|
.backend = www00;
|
||||||
|
.weight = 6;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
.backend = www01;
|
||||||
|
.weight = 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\end{verbatim}
|
||||||
|
Pour cela, on change le mode du director pour \emph{random}.
|
||||||
|
\item Une directive importante est \texttt{.max\_connections}. Elle permet de
|
||||||
|
limiter le nombre de connexions concurrentes envoyées sur un backend. En en
|
||||||
|
positionnant une sur chacun des backends, Varnish saura qu'il devra ignorer
|
||||||
|
le backend saturé et en choisir un autre, afin de ne pas le surchargé.
|
||||||
|
\begin{verbatim}
|
||||||
|
backend www00 {
|
||||||
|
.host = "192.0.2.8";
|
||||||
|
.port = "80";
|
||||||
|
.max_connections = 80;
|
||||||
|
}
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
\item Il est possible également de répartir les requêtes sur les backends
|
||||||
|
suivant des critères sur la requête. Le mode du director à utiliser est
|
||||||
|
alors \emph{client}:
|
||||||
|
\begin{verbatim}
|
||||||
|
director baz client {
|
||||||
|
{ .backend = www00; }
|
||||||
|
{ .backend = www01; }
|
||||||
|
}
|
||||||
|
|
||||||
|
sub vcl_recv {
|
||||||
|
set req.backend = baz;
|
||||||
|
set client.identity = req.ip;
|
||||||
|
}
|
||||||
|
\end{verbatim}
|
||||||
|
Dans l'exemple ci-dessus, le critère utilisé est l'IP du client
|
||||||
|
(\texttt{client.identity = req.ip}. Les autres critères possibles sont le
|
||||||
|
user-agent (\texttt{req.http.user-agent}), l'URL (\texttt{client.url}) ou encore
|
||||||
|
un cookie de session (\texttt{req.http.cookie}).
|
||||||
|
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\subsection{Gestion du failover}
|
\subsection{Gestion du failover}
|
||||||
|
|
Loading…
Reference in a new issue