Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

17
Varnish Faites briller vos applications et sites web ! Thibaud Juin

description

Varnish est un serveur de cache HTTP qui permet d'accélérer les sites et applications web tout en allégeant la charge serveur... et bien d'autres choses encore !

Transcript of Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Page 1: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Varnish

Faites briller vos applications et sites web !

Thibaud Juin

Page 2: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Thibaud Juin

Des centaines de sites Un même code

Optimisation

Page 3: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Optimisation du code

Une fonction/page

spécifique

Une fonction

commune à toutes

les pages

Page 4: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Optimisation

Évitons l'éternel recommencement,

utilisons le cache !

Page 5: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Varnish

Faites briller vos applications et sites web !

Thibaud Juin

Page 6: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Fonctionnement de Varnish

Mise en place

Aller plus loin !

Page 7: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Fonctionnement

VisiteurVarnishApache, BD...

Un serveur proxy inverse et cache HTTP

C'est quoi Varnish ?

Page 8: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

VisiteurVarnishApache, BD...

Et pourquoi "Varnish" ?

Cache

FonctionnementC'est quoi Varnish ?

Page 9: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Fonctionnement

VisiteurVarnishApache, BD...

Cache

Load balancing

Page 10: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

VCL : le langage de configuration

sub vcl_recv {

if (req.restarts == 0) {

if (req.http.x-forwarded-for) {

set req.http.X-Forwarded-For =

req.http.X-Forwarded-For + ", " + client.ip;

} else {

set req.http.X-Forwarded-For = client.ip;

}

}

if (req.request != "GET" && req.request != "HEAD" && req.request != "PUT" && req.request != "POST" &&

req.request != "TRACE" && req.request != "OPTIONS" && req.request != "DELETE") {

/* Non-RFC2616 or CONNECT which is weird. */

return (pipe);

}

if (req.request != "GET" && req.request != "HEAD") {

/* We only deal with GET and HEAD by default */

return (pass);

}

if (req.http.Authorization || req.http.Cookie) {

return (pass);

...

Fonctionnement

Page 11: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Mettre en place Varnish

C'est très simple !

Une installation, une petite configuration...

- vitesse ou taille du cache ?

Quelques questions...

- Une même page varie t-elle en fonction de l'utilisateur ? Panier, compte

utilisateur...

- GET et POST utilisés à bon escient ?

Utile :

- Utilisation des en-têtes HTTP de cache

- Mod Rpaf (apache)

- Vider le cache

Page 12: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Aller plus loin !Configuration avec le VCL

Réception d'une requête

calcul du hash

HIT MISS

Requête au backend

Envoi de la réponse

Page 13: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Aller plus loin !Vider le cache

sub vcl_recv {

if (req.request == "BAN") {

# Same ACL check as above:

if (!client.ip ~ purge) {

error 405 "Not allowed.";

}

ban("req.http.host == " + req.http.host +

"&& req.url == " + req.url);

# Throw a synthetic page so the

# request won't go to the backend.

error 200 "Ban added";

}

}

Page 14: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Aller plus loin !Filtrer les requêtes

if(req.request != "GET" && req.request != "POST" req.request != "HEAD"){

error 405 "Not allowed.";

}

if(req.http.host == "beta.42stores.com" ){

set req.backend = beta;

}

else{

set req.backend = apache;

}

Page 15: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Aller plus loin !Réécriture d'URL

if (req.url ~ "^/ex/") {

set req.url = regsub(req.url, "^/ex/(.*)$", "/exemple/\1");

}

if (req.host == "exemple.com") {

set req.host = "www.exemple.com";

}

Page 16: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Pour terminer...

Varnish Cache is really, really fast. It typically speeds up delivery with a

factor of 300 - 1000x, depending on your architecture.

Performant

Flexible

Robuste

Page 17: Conférence #nwx2014 - Thibaud Juin - Varnish, accélérateur web

Convaincu ?

Des questions ?

Présentation réalisée avec Bunkr !

$ apt-get install varnish