Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

05 2014-varnish

664 views

Published on

Présentation de Varnish Cache, un reverse proxy HTTP.

Published in: Internet
  • Be the first to comment

05 2014-varnish

  1. 1. Symfony Pot – Juin 2014 Thomas Lecomte th.lecomte@gmail.com
  2. 2. Kesako ➔ Le principe du cache avec HTTP ➔ La philosophie de Varnish ➔ Un peu de conf de base ➔ Les contraintes ➔ Configuration avancée ➔ Hiérarchie de cache ➔ Bans / PURGE ➔ Questions
  3. 3. Le cache avec HTTP ➔ Le protocole HTTP/1.1 intègre nativement la notion de gateway et de cache [RFC2068] ➔ Headers Expires et Cache-Control pour contrôler le TTL et la visibilité ➔ Header Vary pour indiquer au cache que le contenu varie en fonction d'un header ➔ Bénéfices ?
  4. 4. La philosophie de Varnish ➔ Rapidité et performances – 200k req/s ➔ Peu d'objets / beaucoup d'accès – Cache non persistant – Cache en RAM ou sur disque ➔ Configuration écrite en pseudo-C – Grande liberté & flexibilité – Possibilité de faire du C inline – Vmods
  5. 5. Le langage VCL ➔ Une forme de C simplifié ➔ Fonctions, tests, strings ➔ Pas de boucles itératives ➔ Traduit en C et compilé avec GCC au démarrage ➔ Rechargeable à chaud ➔ Much more ...
  6. 6. Under the hood... vcl_recv vcl_hash vcl_fetch vcl_deliver vcl_pass PASS LOOKUP GET /foobar HTTP/1.1 Host: www.foo.net MISS HIT Origin
  7. 7. Démo #1 ➔ VCL par défaut ➔ Serveur web simulé par un script – Latence de 3 secondes avant chaque réponse ➔ Analyse du comportement de Varnish avec la commande varnishlog
  8. 8. Les contraintes ➔ Les cookies sont nos amis, ou pas ... – Espace client et contenu personnalisé – Géolocalisation ➔ Le hash et la notion de clé de cache ➔ HTTP c'est pas saykure, je veux du SSL ! ➔ J'ai mis à jour un objet, mais son TTL n'a pas expiré dans mes caches, mes clients hurlent !
  9. 9. Configuration avancée ➔ Grace mode ➔ TTL différents de ce que l'origin renvoie ➔ Pages d'erreur personnalisées ➔ Ajout de valeur de cookie dans la clé de cache d'un objet ➔ Ajout de clés de flush dans les objets stockés ➔ Query strings
  10. 10. Hierarchie de cache ➔ Il est possible de chaîner les caches ➔ Warm-up des edges moins douloureux pour l'origin ➔ Trafic à l'origin Clients Varnish L1 Varnish L2 Origin
  11. 11. Bans / PURGE ➔ Il est possible d'implémenter la méthode HTTP PURGE PURGE /content/foo.png HTTP/1.1 Host: cdn.foo.net ➔ Bans via varnishadm – Sur req ● Évalué à chaque requête reçue – Sur obj (smartbans) ● Évalué pour chaque objet servi plus vieux que le ban ● Ban lurker
  12. 12. Bans : exemples ➔ Forcera un MISS si l'objet matché en cache est plus vieux que le ban req.http.Host == "cdn.foo.net" && req.url == /content/foo.png obj.http.X-Host == "cdn.foo.net" && obj.http.X-Url == /content/foo.png ➔ Attention à l'empilement des bans : impact sur les perfs ! ➔ Bans supprimés automatiquement ➔ Ban lurker
  13. 13. Questions ?

×