24
<Varnish 4.0> sub vcl_recv { set req.http.X-Forwarded-For = client.JoseLuisSanchez; } if (req.http.host ~ “^phpbarcelona.org") { return(lookup); } #@chepins

Varnish4 php Barcelona

  • Upload
    chepins

  • View
    222

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Varnish4 php Barcelona

<Varnish 4.0>

sub vcl_recv { set req.http.X-Forwarded-For = client.JoseLuisSanchez; }

if (req.http.host ~ “^phpbarcelona.org") { return(lookup); }

#@chepins

Page 2: Varnish4 php Barcelona

¿Qué es Varnish?

Page 3: Varnish4 php Barcelona
Page 4: Varnish4 php Barcelona
Page 5: Varnish4 php Barcelona

“Anem a PAMS”

Page 6: Varnish4 php Barcelona

Reverse Proxy CacheProxy Cache

Page 7: Varnish4 php Barcelona

Como funciona un proxy cache?

Page 8: Varnish4 php Barcelona

¿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

Page 9: Varnish4 php Barcelona

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…

Page 10: Varnish4 php Barcelona

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

Page 11: Varnish4 php Barcelona

¿Cómo funciona Varnish?

• Sistema de subrutinas por rol / workflow

• Programación en VCL / C

• Módulos externos VMOD

• Tools varnishadm

Page 12: Varnish4 php Barcelona

Acciones:• HIT

• MISS

• PIPE

• LOOKUP

• PASS

Page 13: Varnish4 php Barcelona

Subrutinas BASE

Page 14: Varnish4 php Barcelona
Page 15: Varnish4 php Barcelona

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); }

Page 16: Varnish4 php Barcelona

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"; } }

Page 17: Varnish4 php Barcelona

HASH Subsub vcl_hash { hash_data(req.url); if (req.http.host) { hash_data(req.http.host); } else { hash_data(server.ip); } return (lookup);}

Page 18: Varnish4 php Barcelona

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

Page 19: Varnish4 php Barcelona

REFETCHING?

Page 20: Varnish4 php Barcelona

Caso práctico…nginx 3,11s

Page 21: Varnish4 php Barcelona

Caso práctico…varnish 4 778ms

Page 22: Varnish4 php Barcelona

VARNISH WINS!

Page 23: Varnish4 php Barcelona

Como?

Vamos a ello…

Page 24: Varnish4 php Barcelona