Varnish es un acelerador de aplicaciones web, también conocido como caché de proxy http inversa. Se instala delante de cualquier servidor web y se configura para almacenar en caché una copia del recurso solicitado. Ideado para aumentar el rendimiento de las aplicaciones web.
Una de las características clave, además de su rendimiento, es la flexibilidad de su configuración de lenguaje VCL. VCL permite determinar las políticas a tomar sobre las peticiones de entrada. En esta política se puede decidir qué contenido desea servir, desde donde se desea obtener el contenido y la forma en que la solicitud o la respuesta debe ser alterada.
Sitio web Oficial de Varnish: https://www.varnish-cache.org
A continuación veremos como se instala y configura Varnish en un servidor Debian.
Configuración de Apache
Apache por defecto está configurado para escuchar en el puerto 80 (puerto web), pero en este caso quien va a atender las peticiones será Varnish ya que sólo accederán a Apache las peticiones cuyo contenido no se encuentre en cache.
Por este motivo vamos a modificar el puerto de escucha de Apache por el 8888 al que sólo accederemos como “localhost” (127.0.0.1).
root@javierandres:~# vim /etc/apache2/ports.conf .... #NameVirtualHost *:80 #Listen 80 NameVirtualHost 127.0.0.1:8888 Listen 127.0.0.1:8888 .....
Modificamos en puerto de TODOS los VirtualHost.
root@javierandres:~# vim /etc/apache2/sites-enabled/default VirtualHost 127.0.0.1:8888 --> dentro de ServerAdmin webmaster@localhost
Reiniciamos Apache para que repliquen los cambios.
root@javierandres:~# service apache2 restart
Comprobamos si los cambios que hemos realizado han replicado correctamente.
root@javierandres:~# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1570/sshd tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 6527/apache2 tcp6 0 0 :::22 :::* LISTEN 1570/sshd
Instalación y configuración de Varnish
Antes de comenzar la instalación de Varnish tenemos que instalar el paquete “apt-transport-https“, este paquete nos permite utilizar repositorios que utilizar el protocolo seguro https:
apt-get install apt-transport-https
A continuación añadimos el repositorio que contiene el paquete Varnish:
curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add - echo "deb https://repo.varnish-cache.org/debian/ wheezy varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list
Lanzamos un “update” para actualizar el listado de repositorios e instalamos Varnis:
apt-get update apt-get install varnish
Si utilizas otra distribución de linux distinta a Debian, aquí tenéis más información: https://www.varnish-cache.org/docs
Comenzamos la configuración de Varnish, en este paso vamos a asignar la memoria RAM para cache, en nuestro caso 512Mb y el puerto por el que escuchará Varnish (80, puerto web por defecto).
root@javierandres:~# vim /etc/default/varnish ... DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -s malloc,512m" ...
En este paso, vamos a indicarle el lugar donde se encuentra el servidor web, en nuestro caso Apache, y el puerto por el que escucha nuestro Apache 8888. Recordemos que el servidor Apache lo tenemos instalado en el mismo servidor que Varnish con lo ue introduciremos “localhost” y el puerto por el que escucha Apache 8888. Recordar que Varnish escucha por el puerto 80.
root@javierandres:~# vim /etc/varnish/default.vcl backend default { .host = "127.0.0.1"; .port = "8888"; } ...
Este último fichero permite muchas configuraciones gracias a las reglas VCL (Varnish Control Language), en nuestro caso sólo vamos a modificar esos dos parámetros aunque Varnish da para mucho más. Ejemplos de ficheros VCL y un manual de uso de VCL.
Una vez reiniciados los servicios Varnish y Apache, comprobamos que los cambios que hemos realizado han replicado correctamente.
root@javierandresroy:~# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:6082 0.0.0.0:* LISTEN 2623/varnishd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2625/varnishd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1570/sshd tcp 0 0 127.0.0.1:8888 0.0 donde puedo comprar viagra sin receta.0.0:* LISTEN 6527/apache2
Comprobación rendimiento Varnish
Por último para comprobar si nuestro sistema de cache se comporta correctamente podemos ejecutar la instrucción varnishstat que nos permitirá ver en tiempo real muchos datos relativos al rendimiento y el estado de los servicios. Varnishstat es una especie de top.
root@javierandres:~# varnishstat
Finalmente quería agradecer a mi compañero Manuel Gracia por enseñarme este programa y ayudarme en su configuración.