Cómo instalar Varnish y realizar pruebas de rendimiento del servidor web

Piensa por un momento en lo que sucedió cuando navegaste a la página actual. O bien hiciste clic en un enlace que recibiste a través de un boletín, o en el enlace de la página de inicio de Tecmint.com y luego fuiste llevado a este artículo.

En pocas palabras, tú (o en realidad tu navegador) enviaste una solicitud HTTP al servidor web que aloja este sitio, y el servidor envió una respuesta HTTP.

Por simple que suene, este proceso implica mucho más que eso. Se tuvo que realizar mucho procesamiento en el lado del servidor para presentar la página con el formato agradable que puedes ver con todos los recursos en ella, estáticos y dinámicos.

Sin profundizar mucho, puedes imaginar que si el servidor web tiene que responder a muchas solicitudes como esta simultáneamente (comencemos con solo unas pocas cientos), puede llevarse a sí mismo o a todo el sistema al límite antes de mucho tiempo.

Y ahí es donde Varnish, un acelerador HTTP de alto rendimiento y un proxy inverso, puede salvar el día. En este artículo, explicaré cómo instalar y usar Varnish como un frente para Apache o Nginx para almacenar en caché las respuestas HTTP de forma más rápida y sin agregar una carga adicional al servidor web.

Sin embargo, dado que Varnish normalmente almacena su caché en memoria en lugar de en disco, necesitaremos tener cuidado y limitar el espacio de RAM asignado para la caché. Discutiremos cómo hacer esto en un momento.

Cómo Funciona Varnish

How Varnish Works

Instalación de la Caché de Varnish en el Servidor Linux

Este artículo asume que has instalado un servidor LAMP o LEMP. Si no lo has hecho, por favor instala uno de esos stacks antes de continuar.

La documentación oficial recomienda instalar Varnish desde el propio repositorio del desarrollador porque siempre proporcionan la última versión. También puedes optar por instalar el paquete desde los repositorios oficiales de tu distribución, aunque podría estar un poco desactualizado.También ten en cuenta que los repositorios del proyecto solo brindan soporte para sistemas de 64 bits, mientras que para máquinas de 32 bits, tendrás que recurrir a los repositorios oficialmente mantenidos por tu distribución.

Además, tenga en cuenta que los repositorios del proyecto solo brindan soporte para sistemas de 64 bits, mientras que para máquinas de 32 bits, tendrá que recurrir a los repositorios mantenidos oficialmente por su distribución.

En este artículo, instalaremos Varnish desde los repositorios oficialmente respaldados por cada distribución. La razón principal detrás de esta decisión es proporcionar uniformidad en el método de instalación y garantizar la resolución automática de dependencias para todas las arquitecturas.

Instalar Varnish en Linux basado en Debian

En distribuciones basadas en Debian, puede instalar Varnish utilizando el comando apt como se muestra.

# apt update 
# apt install varnish 	
Install Varnish Cache in Debian

Instalar Varnish en Linux basado en RHEL

En distribuciones basadas en RHEL, como CentOS, Rocky y AlmaLinux, necesitará habilitar el repositorio EPEL antes de instalar Varnish utilizando el comando yum como se muestra.

# yum install epel-release
# yum update
# yum install varnish 
Install Varnish Cache in RHEL

Si la instalación se completa correctamente, tendrá una de las siguientes versiones de varnish dependiendo de su distribución:

# varnishd -V

varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)

Finalmente, necesita iniciar Varnish manualmente si el proceso de instalación no lo hizo y habilitarlo para que inicie en el arranque.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Check Varnish Cache Status

Por defecto, el puerto 6081 es utilizado por el servicio de varnish y puede confirmarlo ejecutando el siguiente comando netstat.

# netstat -tunlp | grep 6081
Check Varnish Cache Port

Configurar Varnish Cache en Linux

Como mencionamos anteriormente, Varnish se encuentra en medio de los clientes externos y el servidor web. Por esa razón, y para que el almacenamiento en caché sea transparente para los usuarios finales, necesitaremos:

  1. Cambiar el puerto predeterminado 6081 donde Varnish escucha a 80.
  2. Cambiar el puerto predeterminado donde el servidor web escucha a 8080 en lugar del predeterminado 80.
  3. Redirigir el tráfico entrante desde Varnish al servidor web. Afortunadamente, Varnish hace esto automáticamente después de que hayamos completado los pasos 1) y 2).

Cambiar el puerto de Varnish

El proceso varnishd está controlado por systemd y tiene su archivo de unidad en /usr/lib/systemd/system/varnish.service, que contiene la configuración de tiempo de ejecución de Varnish predeterminada.

Aquí, necesitamos cambiar el puerto predeterminado de Varnish de 6081 al puerto 80 y el tamaño de la caché a 1GB como se muestra al ejecutar el siguiente comando, que abrirá el archivo de unidad en el editor como se muestra.

Nota: Puede cambiar la cantidad de memoria según sus recursos de hardware o, alternativamente, optar por guardar archivos almacenados en caché en disco.

$ sudo systemctl edit --full varnish
OR 
# systemctl edit --full varnish
Configure Varnish Cache in Linux

Después de realizar cambios en el archivo /etc/systemd/system/varnish.service, necesita recargar el demonio Systemd ejecutando el siguiente comando:

# systemctl daemon-reload

Cambiar el puerto de Apache o Nginx

Después de cambiar el puerto de Varnish, ahora necesitas cambiar el puerto de tu servidor web Apache o Nginx desde el predeterminado 80 al puerto de red más común es decir, 8080.

---------- On Debian-based Systems ---------- 
# nano /etc/apache2/ports.conf      [On Apache]
# /etc/nginx/sites-enabled/default  [On Nginx]

---------- On RHEL-based Systems ----------
# vi /etc/httpd/conf/httpd.conf   [On Apache]
# vi /etc/nginx/nginx.conf        [On Nginx]  
Change Apache Port

Una vez que hayas realizado los cambios, no olvides reiniciar Varnish y el servidor web.

# systemctl restart varnish 

---------- On Debian-based Systems ---------- 
# systemctl restart apache2     
# systemctl restart nginx

---------- On RHEL-based Systems ----------
# systemctl restart httpd     
# systemctl restart nginx     

Probar el caché de Varnish en Linux

La primera prueba consiste en realizar una solicitud HTTP a través del comando curl y verificar que sea manejada por Varnish:

# curl -I http://localhost
Check Varnish Cache Status

Varnish también incluye dos herramientas útiles también:

  • Ver en tiempo real los registros de Varnish, llamados intuitivamente varnishlog.
  • Mostrar estadísticas de caché de Varnish, llamado varnishstat.

Como segunda prueba, en el siguiente screencast, mostraremos tanto los registros como las estadísticas en un servidor CentOS (dev1, mitad superior de la pantalla) y en un servidor Debian (dev2, mitad inferior de la pantalla) mientras se envían solicitudes HTTP y se reciben respuestas.

Probar el rendimiento del servidor web Benchmark

Nuestro tercer y último test consistirá en realizar un análisis comparativo del servidor web y Varnish utilizando la herramienta de benchmarking ab y comparando los tiempos de respuesta y la carga de CPU en cada caso.

En este ejemplo en particular, utilizaremos el servidor CentOS, pero puedes usar cualquier distribución y obtener resultados similares. Observa el promedio de carga en la parte superior y la línea de Solicitudes por segundo en la salida de ab.

Con ab, enviaremos 50 (-c 50) solicitudes concurrentes al mismo tiempo y repetiremos la prueba 1000000 veces (indicado por -n 1000000). Varnish devolverá un mayor número de solicitudes por segundo y un promedio de carga mucho menor.

Importante: Por favor recuerda que Varnish está escuchando en el puerto 80 (el puerto HTTP por defecto), mientras que Apache está escuchando en el puerto 8080. También puedes tomar nota del tiempo requerido para completar cada prueba.

# ab -c 50 -n 100000 http://localhost/index.html

Conclusión

En este artículo, hemos discutido cómo configurar una caché Varnish frente a un servidor web, Apache, o Nginx. Tenga en cuenta que no hemos profundizado en el archivo de configuración default.vcl, que nos permite personalizar aún más la política de almacenamiento en caché.

Ahora es posible que desee consultar la documentación oficial para obtener ejemplos de configuración adicionales o dejar un comentario utilizando el formulario a continuación.

Source:
https://www.tecmint.com/install-varnish-cache-server/