Varnish es un acelerador para HTTP que está causando furor en el mundo del hosting y en general en el mundo Linux. Varnish aparece como alternativa al poderoso Nginx, que durante mucho tiempo fue el rey en cuanto a la optimización a nivel de cache, proxy y balanceo de carga para los servicios web. Varnish además de hacer todo lo que hace Nginx con mejor rendimiento, también tiene algunas característiacs destacables, como por ejemplo:
- Lenguaje propio VLC, que permite al usuario manipular varnish a su gusto.
- Concebido desde el comiento para utilizarse en sistemas 64 bits
- Soporte parcial de ESI
- No necesita reiniciar para tomar los cambios de configuraciones
La forma de funcionar de Varnish es muy sencilla, pero a la vez efectiva: se guarda la información de cada request en la memoria virtual y el S.O es quien decide qué es guardado y que es paginado al disco duro. Esto es muy útil para que no se cachee información mientras se mueve al disco duro por otras aplicaciones.
Cada request desde el cliente genera hilos independientes y una vez se llega al límite de hilos, las nuevas conexiones son puestas en cola y recién a medida que se liberan otras, estas nuevas comienzan a despacharse. Sólo si la cola de peticiones pendientes alcanza un gran límite recién serán descartadas.
Un escenario ideal es tener apache, lighttpd o nginx en el puerto 8080 y Varnish en el 80 para actuar como proxy delante del webserver. En fin, ahora que ya tenemos una ideal general de como funciona, vamos a la parte divertida:
Para instalar Varnish vamos a seguir los siguientes pasos:
Si bien este repo es para RHEL/CentOS 5.x, funciona perfecto en la versión CentOS 6.x.
Instalamos el repositorio:
rpm --nosignature -i http://repo.varnish-cache.org/redhat/varnish-3.0/el5/noarch/varnish-release-3.0-1.noarch.rpm
Instalamos Varnish
yum install varnish
Lo configuramos para iniciar al arranque del sistema:
chkconfig varnish on
Iniciamos Varnish
service varnish start
Para comprobar si está funcionando, basta con tipear:
service varnish status
Finalmente, resta configurar el servicio desde dos archivos clave:
/etc/sysconfig/varnish, para configurar el servicio a nivel general
/etc/varnish/default.vlc, para configurar las directivas propias que afectarán a cada sitio web.
Más información en la web oficial de Varnish