Upload
chepins
View
222
Download
1
Embed Size (px)
Citation preview
<Varnish 4.0>
sub vcl_recv { set req.http.X-Forwarded-For = client.JoseLuisSanchez; }
if (req.http.host ~ “^phpbarcelona.org") { return(lookup); }
#@chepins
¿Qué es Varnish?
“Anem a PAMS”
Reverse Proxy CacheProxy Cache
Como funciona un proxy cache?
¿Por qué tendría que usar RPC?
• Incremento de velocidad —> Mejora del SEO
• Estabilidad —> Evita downtimes, picos de saturación, etc
• Mejora importante en número de peticiones servidas por segundo
• Libera recursos del sistema de proceso
• Load Balancer de Backends
OK… entonces Varnish?• Varnish es un sistema RPC OpenSource
• Continuamente en revision y sistema bugtracker
• Opción de soporte a medida para entornos ent.
• Novedoso sistema de Prefetching
• Purge selectivo
• Herramientas y API de troubleshooting y control
• Lo usan empresas como Facebook, Vimeo…
Varnish para todo?
• Ojo Cookies, sesiones, formularios
• Plataformas tipo marketplace necesitan plugins ESI
• VMOD GEOIP no son 100% fiables
• OJO Load Balancing: Duplicidad de cache
¿Cómo funciona Varnish?
• Sistema de subrutinas por rol / workflow
• Programación en VCL / C
• Módulos externos VMOD
• Tools varnishadm
Acciones:• HIT
• MISS
• PIPE
• LOOKUP
• PASS
Subrutinas BASE
EJEMPLOS RECVif ( req.method != "GET" && req.method != "HEAD" && req.method != "PUT" && req.method != "POST" && req.method != "TRACE" && req.method != "OPTIONS" && req.method != "DELETE" ) { return (pipe); } if ( req.method != "GET" && req.method != "HEAD" ) { return (pipe); }
if (req.http.Authorization) { return (pass); }
return (hash);
if ( req.url ~ "uncached=1$" ) { return(pass); }
DELIVER subsub vcl_deliver { unset resp.http.Via; unset resp.http.X-Varnish; if (obj.hits > 0) { set resp.http.X-V-Cache = "HIT"; } else { set resp.http.X-V-Cache = "MISS"; } }
HASH Subsub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (lookup);}
Novedades de la nueva versión 4
• Multithread por rol de subrutina
• Algoritmo más eficiente para Streaming
• Cambios importantes VCL
• REFETCHING de Items en cache
REFETCHING?
Caso práctico…nginx 3,11s
Caso práctico…varnish 4 778ms
VARNISH WINS!
Como?
Vamos a ello…