Varnish 3.0 + pligg 1.2.1 , instalación

Esta mañana he estado jugando un poco con una instalación de Varnish (un cache/balanceador de conexiones). Habia estado leyendo sobre el y todo el mundo que lo usaba hablaba maravillas asi que… vamos a probarlo unos dias a ver que tal.

La idea es … colocar el cache escuchando sobre el puerto 80 (la ip publica) y que este redirija el trafico al puerto 80 de localhost (que es donde escucha el pligg). Se monta en dos patadas …

Partimos de estos numeros ( sacados con un curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://url

Tiempo de conexion :0.934
Tiempo de transferencia: 4.663
Tiempo total: 8.349

Los tiempos no es que sean la leche… pero las maquinas cuestan dinero y con la mierda que se saca de los anuncios no da para mas (lo normal es que no de ni para pagar la maquina) y hay que optimizar los recursos lo mas que se pueda …

Despues de poner el cache unas cuantas horas los tiempos han mejorado algo (tampoco es nada espectacular, pero algo es algo).

Tiempo de conexion: 0.745
Tiempo de transferencia: 1.504
Tiempo total: 4,955

Casi 3 segundos de tiempo de carga menos …

Para instalar el cache basta con seguir las instrucciones de su web:

– curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add –
– echo “deb http://repo.varnish-cache.org/ubuntu/ lucid varnish-3.0” >> /etc/apt/sources.list
– apt-get update
– apt-get install varnish

Despues editamos el fichero de configuracion /etc/varnish/default.vcl

Modificamos la primera entrada :
backend default {
.host = “127.0.0.1”;
.port = “80”;
}

Con esto le decimos al cache que su backend (o sea, el servidor web), va a escuchar en localhost por el puerto 80.

Despues modificamos /etc/default/varnish

Hay 3 formas de configurarlo, yo toque la segunda (que es la que viene por defecto), hay que dejarla asi:

DAEMON_OPTS=”-a x.x.x.x:80 \
-T y.y.y.y:8080 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,256m”

Con esto le decimos que, cuando arranque el demonio escuche por la ip x.x.x.x (que deberia ser la que este visible en internet) en el puerto 80 y que use la ip y.y.y.y como administracion. Todavia no tengo muy claro que información se puede sacar desde esa web de administración asi que, con cuidado.

256 Mb dedicadas al cache que habra que bajar (la maquina va pelada de memoria) y la secret que genera el.

Ahora solo nos falta hacer que el servidor web (apache en mi caso), deje de escuchar a la ip publica y conteste solo a la privada.

Para hacerlo:
/etc/apache2/ports.conf y cambiar el listen por: Listen 127.0.0.1:80

Reiniciamos apache… reiniciamos (arrancamos) varnish y empieza a funcionar …
Las peticiones las recoge el cache y se las pasa al servidor web, al poco rato vemos que empieza a servir objetos del cache.

La verdad es que, despues de unas cuantas horas el ratio de objetos cacheados es casi-ridiculo. Lo voy a dejar durante 24 horas y mirare a ver … todavia hay muchas opciones para añadirle a la configuracion.

Para mañana me queda por hacer:
– Configurar los logs para que las estadisticas vuelvan a funcionar. Al poner el cache delante, todas las peticiones que recibes en el servidor web vienen de 127.0.0.1
– Mirar a ver si realmente el cache hace algo mas que consumir memoria. Por lo que he visto, el rating del cache es tan pequeño que no merece la pena ponerlo.

Ya veremos.

2 Comments

  • Has configurado el varnish?
    Has configurado minimamente el Varnish?
    Con la configuración por defecto es muy pobre pero con un poco de configuración es un bicho. Te aseguro que soporta decenas de miles de visitas sin despeinarse y sirviendo la web desde el caché.

    • varnish
      No he podido jugar mucho con el, toque algunas cosas y como la maquina es enana me la dejaba tostada. A ver si tengo un rato y le dedico algo mas de tiempo.

      Thx por el comentario :).