Varnish es un proxy de almacenamiento en caché inverso [2] que se utiliza como acelerador HTTP para sitios web dinámicos con mucho contenido, así como para API . A diferencia de otros aceleradores web , como Squid , que comenzó como un caché del lado del cliente, o Apache y nginx , que son principalmente servidores de origen , Varnish fue diseñado como un acelerador HTTP. Varnish se centra exclusivamente en HTTP , a diferencia de otros servidores proxy que a menudo admiten FTP , SMTP y otros protocolos de red .
El proyecto fue iniciado por la rama online del periódico sensacionalista noruego Verdens Gang . El arquitecto y desarrollador principal es el consultor independiente danés Poul-Henning Kamp [2] (un conocido desarrollador de FreeBSD ), con la gestión, la infraestructura y el desarrollo adicional proporcionados originalmente por la empresa consultora noruega de Linux Linpro. El soporte, la gestión y el desarrollo de Varnish se escindieron más tarde en una empresa independiente, Varnish Software.
Varnish es un software gratuito y de código abierto , disponible bajo una licencia BSD de dos cláusulas . Varnish Software, entre otros, ofrece soporte comercial.
La versión 1.0 de Varnish se lanzó en 2006, [3] [4] Varnish 2.0 en 2008, [5] Varnish 3.0 en 2011, [6] Varnish 4.0 en 2014, [7] Varnish 5.0 en 2016, [8] Varnish 6.0 en marzo de 2018, [9] y Varnish 7.0 en septiembre de 2021. [10]
Varnish almacena datos en la memoria virtual y deja al sistema operativo la tarea de decidir qué se almacena en la memoria y qué se envía al disco . Esto ayuda a evitar la situación en la que el sistema operativo comienza a almacenar datos en caché mientras la aplicación los mueve al disco.
Varnish tiene muchos subprocesos y cada conexión de cliente es manejada por un subproceso de trabajo independiente. Cuando se alcanza el límite configurado en la cantidad de subprocesos de trabajo activos, las conexiones entrantes se colocan en una cola de desbordamiento; cuando esta cola alcanza su límite configurado, las conexiones entrantes se rechazan.
El principal mecanismo de configuración es el lenguaje de configuración de Varnish (VCL), un lenguaje específico de dominio (DSL) que se utiliza para escribir ganchos que se llaman en puntos críticos en el manejo de cada solicitud. La mayoría de las decisiones de política se dejan en manos del código VCL, lo que hace que Varnish sea más configurable y adaptable que la mayoría de los demás aceleradores HTTP. [ cita requerida ] Cuando se carga un script VCL, se traduce a C , el compilador del sistema lo compila en un objeto compartido y se carga directamente en el acelerador, que, de este modo, se puede reconfigurar sin reiniciar.
Una serie de parámetros de tiempo de ejecución controlan aspectos como el número máximo y mínimo de subprocesos de trabajo, varios tiempos de espera, etc. Una interfaz de administración de línea de comandos permite modificar estos parámetros y compilar, cargar y activar nuevos scripts VCL sin reiniciar el acelerador.
Para reducir al mínimo la cantidad de llamadas del sistema en la ruta rápida, los datos de registro se almacenan en la memoria compartida y la tarea de monitorear, filtrar, formatear y escribir datos de registro en el disco se delega a una aplicación separada.
Varnish Cache puede acelerar la entrega de información en un factor de varios cientos. Para garantizar un funcionamiento y un rendimiento adecuados, Varnish expone métricas que se pueden monitorear en las siguientes áreas: [11]
Varnish Cache se entrega con herramientas de monitoreo y registro. Una de las más utilizadas es varnishstat, que brinda una instantánea detallada del rendimiento actual de Varnish. Proporciona acceso a estadísticas en memoria, como aciertos y errores de caché, consumo de recursos, subprocesos creados y más. [12]
Al ejecutar varnishstat desde la línea de comandos, se obtiene una lista que se actualiza continuamente de todas las métricas de Varnish disponibles. Si se agrega el indicador -1, varnishstat saldrá después de imprimir la lista una vez. [13] Varnishstat se puede utilizar como una herramienta independiente para verificar el estado de la memoria caché. Para graficar las métricas a lo largo del tiempo, correlacionarlas con otras estadísticas de toda una infraestructura y configurar alertas sobre cualquier problema que pueda surgir, los servicios de monitoreo pueden integrarse con Varnish y recopilar métricas de varnishstat.
Varnishlog es una herramienta que se puede utilizar para depurar o ajustar la configuración de Varnish, ya que proporciona información detallada sobre cada solicitud individual.
Varnish permite equilibrar la carga mediante un método de rotación y un director aleatorio, ambos con una ponderación por backend. También está disponible la comprobación básica del estado de los backends. [14]
Varnish Cache también incluye: