SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
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!
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	
  
Varnish	
  Subrou5nes	
  
3	
  
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);!
}!
The	
  Setup	
  –	
  A	
  vision	
  by	
  now	
  
5	
  
Start:	
  Just	
  a	
  simple	
  Web	
  Applica5on	
  
6	
  
Start:	
  Just	
  a	
  simple	
  Web	
  Applica5on	
  
7	
  
Step	
  1:	
  Ac5vate	
  the	
  cache	
  
8	
  
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
Step	
  1:	
  Ac5vate	
  the	
  cache	
  
10	
  
Step	
  2:	
  Introduce	
  new	
  Backend	
  
11	
  
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
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
Step	
  2:	
  Introduce	
  new	
  Backend	
  
14	
  
Step	
  2:	
  Introduce	
  new	
  Backend	
  
15	
  
Step	
  3:	
  Connect	
  the	
  Applica5ons	
  with	
  ESI	
  
16	
  
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
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
Step	
  3:	
  Connect	
  the	
  Applica5ons	
  with	
  ESI	
  
19	
  
Step	
  3:	
  Connect	
  the	
  Applica5ons	
  with	
  ESI	
  
20	
  
Step	
  4:	
  Simple	
  balancing	
  between	
  two	
  backends	
  
21	
  
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
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
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
Want	
  to	
  know	
  more?	
  
25	
  
Bernd.Loeffeld@magicinternet.de	
  
hCp://www.myvideo.de/karriere	
  
Work	
  with	
  us!	
  
o  Architect	
  
o  Developer	
  
o  Sysadmin	
  

Contenu connexe

Tendances

WordCamp Ann Arbor 2014: Site Caching, From Nothing to Everything
WordCamp Ann Arbor 2014: Site Caching, From Nothing to EverythingWordCamp Ann Arbor 2014: Site Caching, From Nothing to Everything
WordCamp Ann Arbor 2014: Site Caching, From Nothing to Everythingtopher1kenobe
 
Websockets in Node.js - Making them reliable and scalable
Websockets in Node.js - Making them reliable and scalableWebsockets in Node.js - Making them reliable and scalable
Websockets in Node.js - Making them reliable and scalableGareth Marland
 
The Case for HTTP/2
The Case for HTTP/2The Case for HTTP/2
The Case for HTTP/2Andy Davies
 
Websockets at tossug
Websockets at tossugWebsockets at tossug
Websockets at tossugclkao
 
The Case for HTTP/2 - EpicFEL Sept 2015
The Case for HTTP/2 - EpicFEL Sept 2015The Case for HTTP/2 - EpicFEL Sept 2015
The Case for HTTP/2 - EpicFEL Sept 2015Andy Davies
 
Front-End Performance Optimizing
Front-End Performance OptimizingFront-End Performance Optimizing
Front-End Performance OptimizingMichael Pehl
 
Front End Website Optimization
Front End Website OptimizationFront End Website Optimization
Front End Website OptimizationGerard Sychay
 
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offlineDevelop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offlineJan Jongboom
 
Blazor - An Introduction
Blazor - An IntroductionBlazor - An Introduction
Blazor - An IntroductionJamieTaylor112
 
The 5 most common reasons for a slow WordPress site and how to fix them
The 5 most common reasons for a slow WordPress site and how to fix themThe 5 most common reasons for a slow WordPress site and how to fix them
The 5 most common reasons for a slow WordPress site and how to fix themOtto Kekäläinen
 
PHPDay 2013 - High Performance PHP
PHPDay 2013 - High Performance PHPPHPDay 2013 - High Performance PHP
PHPDay 2013 - High Performance PHPJonathan Klein
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notesPerrin Harkins
 
Bigger Stronger Faster
Bigger Stronger FasterBigger Stronger Faster
Bigger Stronger FasterChris Love
 
Goodbye JavaScript Hello Blazor
Goodbye JavaScript Hello BlazorGoodbye JavaScript Hello Blazor
Goodbye JavaScript Hello BlazorEd Charbeneau
 
Choosing a Web Architecture for Perl
Choosing a Web Architecture for PerlChoosing a Web Architecture for Perl
Choosing a Web Architecture for PerlPerrin Harkins
 
.htaccess for SEOs - A presentation by Roxana Stingu
.htaccess for SEOs - A presentation by Roxana Stingu.htaccess for SEOs - A presentation by Roxana Stingu
.htaccess for SEOs - A presentation by Roxana StinguRoxana Stingu
 
Scaling my sql_in_3d
Scaling my sql_in_3dScaling my sql_in_3d
Scaling my sql_in_3dsarahnovotny
 

Tendances (20)

WordCamp Ann Arbor 2014: Site Caching, From Nothing to Everything
WordCamp Ann Arbor 2014: Site Caching, From Nothing to EverythingWordCamp Ann Arbor 2014: Site Caching, From Nothing to Everything
WordCamp Ann Arbor 2014: Site Caching, From Nothing to Everything
 
Websockets in Node.js - Making them reliable and scalable
Websockets in Node.js - Making them reliable and scalableWebsockets in Node.js - Making them reliable and scalable
Websockets in Node.js - Making them reliable and scalable
 
The Case for HTTP/2
The Case for HTTP/2The Case for HTTP/2
The Case for HTTP/2
 
Websockets at tossug
Websockets at tossugWebsockets at tossug
Websockets at tossug
 
The Case for HTTP/2 - EpicFEL Sept 2015
The Case for HTTP/2 - EpicFEL Sept 2015The Case for HTTP/2 - EpicFEL Sept 2015
The Case for HTTP/2 - EpicFEL Sept 2015
 
Front-End Performance Optimizing
Front-End Performance OptimizingFront-End Performance Optimizing
Front-End Performance Optimizing
 
Front End Website Optimization
Front End Website OptimizationFront End Website Optimization
Front End Website Optimization
 
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offlineDevelop:BBC 2013 - Turbocharge your mobile web apps by using offline
Develop:BBC 2013 - Turbocharge your mobile web apps by using offline
 
Blazor - An Introduction
Blazor - An IntroductionBlazor - An Introduction
Blazor - An Introduction
 
The 5 most common reasons for a slow WordPress site and how to fix them
The 5 most common reasons for a slow WordPress site and how to fix themThe 5 most common reasons for a slow WordPress site and how to fix them
The 5 most common reasons for a slow WordPress site and how to fix them
 
PHPDay 2013 - High Performance PHP
PHPDay 2013 - High Performance PHPPHPDay 2013 - High Performance PHP
PHPDay 2013 - High Performance PHP
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notes
 
Web application intro
Web application introWeb application intro
Web application intro
 
Bigger Stronger Faster
Bigger Stronger FasterBigger Stronger Faster
Bigger Stronger Faster
 
HTTP2 is Here!
HTTP2 is Here!HTTP2 is Here!
HTTP2 is Here!
 
Goodbye JavaScript Hello Blazor
Goodbye JavaScript Hello BlazorGoodbye JavaScript Hello Blazor
Goodbye JavaScript Hello Blazor
 
Metarefresh
MetarefreshMetarefresh
Metarefresh
 
Choosing a Web Architecture for Perl
Choosing a Web Architecture for PerlChoosing a Web Architecture for Perl
Choosing a Web Architecture for Perl
 
.htaccess for SEOs - A presentation by Roxana Stingu
.htaccess for SEOs - A presentation by Roxana Stingu.htaccess for SEOs - A presentation by Roxana Stingu
.htaccess for SEOs - A presentation by Roxana Stingu
 
Scaling my sql_in_3d
Scaling my sql_in_3dScaling my sql_in_3d
Scaling my sql_in_3d
 

Similaire à Varnish more than a cache

T3DD12 Caching with Varnish
T3DD12 Caching with VarnishT3DD12 Caching with Varnish
T3DD12 Caching with VarnishAOE
 
VUG5: Varnish at Opera Software
VUG5: Varnish at Opera SoftwareVUG5: Varnish at Opera Software
VUG5: Varnish at Opera SoftwareCosimo Streppone
 
Going crazy with Varnish and Symfony
Going crazy with Varnish and SymfonyGoing crazy with Varnish and Symfony
Going crazy with Varnish and SymfonyDavid de Boer
 
Drupal, varnish, esi - Toulouse November 2
Drupal, varnish, esi - Toulouse November 2Drupal, varnish, esi - Toulouse November 2
Drupal, varnish, esi - Toulouse November 2Marcus Deglos
 
A new way to develop with WordPress!
A new way to develop with WordPress!A new way to develop with WordPress!
A new way to develop with WordPress!David Sanchez
 
Advanced Web Hosting
Advanced Web HostingAdvanced Web Hosting
Advanced Web HostingOVHcloud
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesAlfresco Software
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budgetDavid Lukac
 
June8 presentation
June8 presentationJune8 presentation
June8 presentationnicobn
 
Fix me if you can - DrupalCon prague
Fix me if you can - DrupalCon pragueFix me if you can - DrupalCon prague
Fix me if you can - DrupalCon praguehernanibf
 
Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)
Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)
Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)Ontico
 
Offline of web applications
Offline of web applicationsOffline of web applications
Offline of web applicationsFDConf
 
Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014Jan Jongboom
 
My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009Cosimo Streppone
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalabilityWim Godden
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderSadayuki Furuhashi
 

Similaire à Varnish more than a cache (20)

T3DD12 Caching with Varnish
T3DD12 Caching with VarnishT3DD12 Caching with Varnish
T3DD12 Caching with Varnish
 
Performance
PerformancePerformance
Performance
 
HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
 
VUG5: Varnish at Opera Software
VUG5: Varnish at Opera SoftwareVUG5: Varnish at Opera Software
VUG5: Varnish at Opera Software
 
Going crazy with Varnish and Symfony
Going crazy with Varnish and SymfonyGoing crazy with Varnish and Symfony
Going crazy with Varnish and Symfony
 
Always on! Or not?
Always on! Or not?Always on! Or not?
Always on! Or not?
 
Drupal, varnish, esi - Toulouse November 2
Drupal, varnish, esi - Toulouse November 2Drupal, varnish, esi - Toulouse November 2
Drupal, varnish, esi - Toulouse November 2
 
A new way to develop with WordPress!
A new way to develop with WordPress!A new way to develop with WordPress!
A new way to develop with WordPress!
 
Advanced Web Hosting
Advanced Web HostingAdvanced Web Hosting
Advanced Web Hosting
 
BP-6 Repository Customization Best Practices
BP-6 Repository Customization Best PracticesBP-6 Repository Customization Best Practices
BP-6 Repository Customization Best Practices
 
Automatisation in development and testing - within budget
Automatisation in development and testing - within budgetAutomatisation in development and testing - within budget
Automatisation in development and testing - within budget
 
June8 presentation
June8 presentationJune8 presentation
June8 presentation
 
Web Application Defences
Web Application DefencesWeb Application Defences
Web Application Defences
 
Fix me if you can - DrupalCon prague
Fix me if you can - DrupalCon pragueFix me if you can - DrupalCon prague
Fix me if you can - DrupalCon prague
 
Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)
Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)
Масштабируемая конфигурация Nginx, Игорь Сысоев (Nginx)
 
Offline of web applications
Offline of web applicationsOffline of web applications
Offline of web applications
 
Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014Offline for web - Frontend Dev Conf Minsk 2014
Offline for web - Frontend Dev Conf Minsk 2014
 
My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009My Opera meets Varnish, Dec 2009
My Opera meets Varnish, Dec 2009
 
Caching and tuning fun for high scalability
Caching and tuning fun for high scalabilityCaching and tuning fun for high scalability
Caching and tuning fun for high scalability
 
Embulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loaderEmbulk, an open-source plugin-based parallel bulk data loader
Embulk, an open-source plugin-based parallel bulk data loader
 

Dernier

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Dernier (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Varnish more than a cache

  • 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  
  • 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