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 API . A diferencia de otros aceleradores web , como Squid , que comenzó su vida 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 suelen admitir FTP , SMTP y otros protocolos de red .
El proyecto fue iniciado por la sección en línea 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 gestión, infraestructura y desarrollo adicional proporcionados originalmente por la empresa consultora noruega de Linux Linpro. Posteriormente, el soporte, la gestión y el desarrollo de Varnish se escindieron 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 . El soporte comercial está disponible en Varnish Software, entre otros.
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 alcance su límite configurado, las conexiones entrantes serán rechazadas.
El principal mecanismo de configuración es Varnish Configuration Language (VCL), un lenguaje específico de dominio (DSL) que se utiliza para escribir enlaces que se llaman en puntos críticos en el manejo de cada solicitud. La mayoría de las decisiones políticas 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 necesaria ] Cuando se carga un script VCL, el compilador del sistema lo traduce a C , lo compila en un objeto compartido y lo carga directamente en el acelerador, que por lo tanto se puede reconfigurar sin reiniciar.
Una serie de parámetros de tiempo de ejecución controlan cosas 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 volver a pisar el acelerador.
Para reducir al mínimo la cantidad de llamadas al 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 varios cientos de veces. Para garantizar el funcionamiento y el 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. Uno de los más utilizados es polishstat, que proporciona 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]
La ejecución de barnizstat desde la línea de comando devuelve una lista que se actualiza continuamente de todas las métricas de Varnish disponibles. Si se agrega el indicador -1, barnizstat saldrá después de imprimir la lista una vez. [13] Varnishstat se puede utilizar como una herramienta independiente para comprobar el estado del caché. Para graficar métricas a lo largo del tiempo, correlacionarlas con otras estadísticas de toda la infraestructura y configurar alertas sobre cualquier problema que pueda surgir, los servicios de monitoreo pueden integrarse con Varnish y recopilar métricas de barnizstat.
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 admite el equilibrio de carga mediante una operación por turnos y un director aleatorio, ambos con una ponderación por backend. También está disponible la verificación básica del estado de los backends. [14]
Varnish Cache también incluye: