Varnish para acelerar tu sitio web

 

¿Qué es Varnish?

Varnish es un es un acelerador de aplicaciones web, también conocido como caché de proxy HTTP inversa. Se instala delante de cualquier servidor HTTP y se configura para almacenar en el caché del servidor una copia del recurso solicitad. Esta ideado para aumentar la performance de aplicaciones web con contenidos pesados y APIs altamente consumidas.

Las principales características de Varnish son:

  • Es estable y muy rápido, capaz de servir varios cientos de miles de peticiones por segundo, según ciertos benchmarks.
  • Dispone de un lenguaje propio de configuración, llamado VCL (Varnish Configuration Language), con el que es posible definir las reglas para cachear contenido. Gracias a esto es extremadamente flexible, pudiéandose configurar para solucionar problemas muy diversos.
  • Está escrito en C, y es posible extender su funcionalidad con módulos llamados VMODs, escritos asimismo en C. Puedes ver una lista de VMODs publicados aquí.
  • Ofrece soporte para GZIP y ESI (Edge Side Includes), y es capaz de recomponer una página usando ESI sin pasar por el back-end. Esto permite cachear fragmentos de la página usando tiempos de expiración diferentes, mostrando siempre contenido fresco sin necesidad de borrar de caché las secciones menos cambiantes de la página.

httpcachemiss

¿Cómo usar Varnish?

Una vez instalado Varnish desde el repositorio de tu sistema operativo o compliando el código fuente (instrucciones), hay que configurarlo para que sea el encargado de recibir todas las peticiones desde el exterior. Vamos a editar el archivo /etc/default/varnish y a configurar el demonio para que escuche desde el puerto 80 de la interfaz pública del servidor.

DAEMON_OPTS="-a :80 
 -T localhost:6082 
 -f /etc/varnish/default.vcl 
 -S /etc/varnish/secret 
 -s malloc,1G"


Lo más interesante de esta sencilla configuración es el parámetro -s. Con él indicaremos dónde queremos guardar la caché (RAM o disco) y cuanto espacio queremos reservar. Obviamente la RAM (malloc) es varios órdenes de magnitud más rápida que el disco por lo que es recomendable usarla para almacenar la caché siempre y cuanto dispongas de suficiente memoria en el servidor. Puedes usar el comando varnishd --help puedes ver que significa cada parámetro.

mas info: http://www.sromero.org/wiki/linux/servicios/varnish_basico

 

Hay muchas más opciones configurables pero que sólo hará falta cambiarlas en servidores con mucho tráfico (varios millones de visitas). Si estás interesado, este tutorial al respecto es muy interesante.

A continuación debemos cambiar la configuración del servidor para que deje de escuchar en el puerto 80 de la IP pública (Ya que ese socket está ocupado por Varnish). Pero esto lo veremos en el siguiente artículo. Además, voy a mostrar un ejemplo de archivo de configuración de Varnish (.vcl) como el que usamos en TNW y daré una serie de consejos prácticos para sacar el máximo rendimiento a Varnish y hacer que tus página vuelen.

 

varnish-cache-opt

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *