31 ene 2012

Varnish HTTP Acelartor

Alguien conoce a Varnish ?

Pues yo no, sino hasta hace poco cuando decían que era un acelerador HTTP,idea que no comprendía hasta que esa definición se convirtió en una cache http = proxy, similar a SQUID. Y desde el punto de vista lógico si lo es, obviamente dependiendo del modo en cual lo configuremos. Nose que tan usado o famoso sea, la cuestión es que hoy me toca liar con el. La instalación es muy simple desde los ports de FreeBSD o desde los source de Debian/Linux http://goo.gl/ylWa5 . Una diferencia importante e interesante a la vez, es que los logs de esta aplicacion no van a disco sino quedan en un segmento de memoria compartida, por lo que lo hace mas performante pero a la vez, podemos perder pistas si tenemos errores ya que una vez que el log se va llenando las entradas antiguas son sobre-escritas.

Si queremos saber un poco del proceso realizaremos el clasico comando "ps" lo cual puede darnos una salida similar a la siguiente:

root@server02:~$ ps -fe |grep varnishd
root 28371 1 0 13:48 ? 00:00:00 /usr/sbin/varnishd -P /var/run/varnishd.pid -a :80 -T 127.0.0.1:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1G
nobody 28372 28371 0 13:48 ? 00:00:15 /usr/sbin/varnishd -P /var/run/varnishd.pid -a :80 -T 127.0.0.1:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,1G

Aqui despues de dezasnarme un poco en la Wiki de Varnish, encuento que los parametros se interpretan de la siguiente manera:
  • /usr/sbin/varnishd : EL path al ejecutable del demonio.
  • -P /var/run/varnishd.pid: El archivo que contendra el PID del proceso.
  • -a :80 : El puerto donde Varnish atendera las peticiones.
  • -T 127.0.0.1:6082 : El hosts:port donde varnish nos brindara una consola de manager
  • -f /etc/varnish/default.vcl : El archivo con las configuraciones de la aplicacion.
  • -S /etc/varnish/secret : Todavia ni idea
  • -s malloc,1G : El metodo y la cantidad de memoria que reservara Varnish para trabajar.
Una vez sabiendo interpretar los parámetros del proceso, nos vemos en la necesidad de saber que esta haciendo o saber en el caso de un mal funcionamiento que esta sucediendo, es aqui cuando hay que echarle mano al comando varnishlog. El cual nos dirá en tiempo real, todo lo que esta realizando la aplicación. En la Wiki esta muy claro como debemos usar e interpretar la salida y este comando:http://goo.gl/WYxgL

En mi caso en particular el app se vuelve inaccesible dando un timeout, como las peticiones enviadas al puerto 80 están siendo atendidas por Varnish, no queda otra que pensar que este o alguno de sus back-ends sufre de algunas dificultades. Siguiendo la Wiki encontramos como hacer el debugging de Varnish: http://goo.gl/Jy5WP
De aquí en mas hay que probar, veremos en la próxima que novedades he alcanzado.