Your SlideShare is downloading. ×
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Varnish more than a cache
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Varnish more than a cache

540

Published on

An introduction into the features of the Varnish cache and an example for that.

An introduction into the features of the Varnish cache and an example for that.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
540
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1   Varnish  –  More  than  a  cache   Bernd Löffeld Head of Platform Development Magic Internet GmbH Email: Bernd.Loeffeld@magicinternet.de Magic Internet entwickelt und betreut www.myvideo.de Deutschlands großes Videoportal!
  • 2. Varnish  Features   2   o  Caching   o  Loadbalancing  and  Backend-­‐Selec3on   o  Header  analysis  and  manipula3on   o  DSL  for  handling  all  that   o  Edge  Side  Includes  
  • 3. Varnish  Subrou5nes   3  
  • 4. Varnish  Configura5on  Language  in  example   4   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") {! 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);! }! return (lookup);! }!
  • 5. The  Setup  –  A  vision  by  now   5  
  • 6. Start:  Just  a  simple  Web  Applica5on   6  
  • 7. Start:  Just  a  simple  Web  Applica5on   7  
  • 8. Step  1:  Ac5vate  the  cache   8  
  • 9. Step  1:  Ac5vate  the  cache   9   include "bwb/backends.vcl“; Varnish à /etc/varnish/main.vcl backend default { .host = "nginx-1"; .port = "80"; } Varnish à /etc/varnish/bwb/backends.vcl server { expires 1m; } nginx-1 à /etc/nginx/sites-available/bwb
  • 10. Step  1:  Ac5vate  the  cache   10  
  • 11. Step  2:  Introduce  new  Backend   11  
  • 12. Step  2:  Introduce  new  Backend   12   include "bwb/backends.vcl"; sub vcl_recv { if (req.url ~ "/fancy/") { set req.backend = fancy; } } Varnish à /etc/varnish/main.vcl backend default { .host = "nginx-1"; .port = "80"; } backend fancy { .host = "nginx-2"; .port = "80"; } Varnish à /etc/varnish/bwb/backends.vcl
  • 13. Step  2:  Introduce  new  Backend   13   <html> <head> <title>Legacy Web Application</title> <link href="/fancy/css/default.css" rel="stylesheet" type="text/css" media="all" /> </head> ... nginx-1 à /srv/www/bwb/page1.html
  • 14. Step  2:  Introduce  new  Backend   14  
  • 15. Step  2:  Introduce  new  Backend   15  
  • 16. Step  3:  Connect  the  Applica5ons  with  ESI   16  
  • 17. Step  3:  Connect  the  Applica5ons  with  ESI   17   <body> <!-- Old Navigation HTML was removed!--> <esi:include src="/fancy/nav/navigation.html" /> <h1>Just a robust and experienced application</h1> <div>Page 1 is mostly empty.</div> <esi:include src="/fancy/news/abox.html" /> </body> nginx-1 à /srv/www/bwb/page1.html include "bwb/backends.vcl"; sub vcl_recv { if (req.url ~ "/fancy/") { set req.backend = fancy; } } sub vcl_fetch { set beresp.do_esi = true; } Varnish à /etc/varnish/main.vcl
  • 18. Step  3:  Connect  the  Applica5ons  with  ESI   18   <div class="container newsbox"> <h1>News</h1> <div>really hot new stuff to read</div> </div> nginx-2 à /srv/www/bwb-fancy/fancy/news/abox.html server { ... location /fancy/news/ { expires 10s; } } nginx-2 à /etc/nginx/sites-available/bwb-fancy
  • 19. Step  3:  Connect  the  Applica5ons  with  ESI   19  
  • 20. Step  3:  Connect  the  Applica5ons  with  ESI   20  
  • 21. Step  4:  Simple  balancing  between  two  backends   21  
  • 22. Step  4:  Simple  balancing  between  two  backends   22   backend default { … } backend fancy_1 { .host = "nginx-2"; .port = "80"; } backend fancy_2 { .host = "nginx-3"; .port = "80"; } varnish à /etc/varnish/bwb/backends.vcl director fancy_round round-robin { { .backend = fancy_1; } { .backend = fancy_2; } } Varnish à /etc/varnish/bwb/director.vcl
  • 23. Step  4:  Simple  balancing  between  two  backends   23   include "bwb/backends.vcl"; include "bwb/director.vcl"; sub vcl_recv { if(req.url ~ "/fancy/") { set req.backend = fancy_round; } } varnish à /etc/varnish/main.vcl
  • 24. Step  4:  Simple  balancing  between  two  backends   24   192.168.56.5 - - [28/Sep/2013:19:51:57 +0200] "GET /fancy/news/abox.html HTTP/1.1" 200 100 “ 192.168.56.5 - - [28/Sep/2013:19:52:28 +0200] "GET /fancy/news/abox.html HTTP/1.1" 200 100 “ 192.168.56.5 - - [28/Sep/2013:19:52:51 +0200] "GET /fancy/news/abox.html HTTP/1.1" 200 100 “ 192.168.56.5 - - [28/Sep/2013:19:53:17 +0200] "GET /fancy/news/abox.html HTTP/1.1" 200 100 access-log nginx-1 192.168.56.5 - - [28/Sep/2013:19:52:14 +0200] "GET /fancy/news/abox.html HTTP/1.1" 200 100 “ 192.168.56.5 - - [28/Sep/2013:19:52:39 +0200] "GET /fancy/news/abox.html HTTP/1.1" 200 100 “ 192.168.56.5 - - [28/Sep/2013:19:53:05 +0200] "GET /fancy/news/abox.html HTTP/1.1" 200 100 “ 192.168.56.5 - - [28/Sep/2013:19:53:31 +0200] "GET /fancy/news/abox.html HTTP/1.1" 200 100 access-log nginx-2
  • 25. Want  to  know  more?   25   Bernd.Loeffeld@magicinternet.de   hCp://www.myvideo.de/karriere   Work  with  us!   o  Architect   o  Developer   o  Sysadmin  

×