LinuxParty
Piense por un momento en lo que sucedió cuando navegó a la página actual. Hizo clic en un enlace que recibió a través de un boletín informativo o en el enlace en la página de inicio de LinuxParty.es y luego fue llevado a este artículo.
En pocas palabras, usted (o en realidad su navegador) envió una solicitud HTTP al servidor web que aloja este sitio y el servidor envió una respuesta HTTP.
Tan simple como suena, este proceso implica mucho más que eso. Se tuvo que realizar una gran cantidad de procesamiento en el lado del servidor para presentar la página con un formato agradable que puede ver con todos los recursos: estáticos y dinámicos.
Sin profundizar mucho más, puede imaginar que si el servidor web tiene que responder a muchas solicitudes como esta simultáneamente (que solo sean unos pocos cientos para empezar), puede hacer que todo el sistema se detenga en poco tiempo.
Y ahí es donde Varnish , un acelerador HTTP de alto rendimiento y proxy inverso, puede salvar el día. En este artículo, explicaré cómo instalar y usar Varnish como interfaz para Apache o Nginx para almacenar en caché las respuestas HTTP más rápido y sin colocar una carga adicional en el servidor web.
Sin embargo, dado que Varnish normalmente almacena su caché en la memoria en lugar de en el disco, debemos tener cuidado y limitar el espacio de RAM asignado para el almacenamiento en caché. Discutiremos cómo hacer esto en un minuto.
Cómo funciona Varnish
Clients send HTTP requests to what they see as a "regular" web server service, but it's Varnish wich recives them.
Varnish in turn relays the requests to Apacyhe or Nginx and sotres the responses in its cache so that future requests are server directly from there instead of through another processing operation in the web server.
This speeds up response times and decreases the processing load in the web server itself.
Cómo funciona el Varnish
Instalación de Varnish Cache en un servidor Linux
Esta publicación asume que ha instalado un servidor LAMP o LEMP . De lo contrario, instale una de esas pilas 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 puede estar un poco desactualizado.
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 , deberá recurrir a los repositorios mantenidos oficialmente por su distribución.
En este artículo, instalaremos Varnish desde los repositorios admitidos oficialmente por cada distribución. La razón principal detrás de esta decisión es brindar 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 las distribuciones basadas en Debian , puede instalar Varnish usando el comando apt como se muestra.
# apt update # apt install varnish
Instalar Varnish Cache en Debian
Instale Varnish en Linux basado en RHEL
En distribuciones basadas en RHEL como CentOS, Rocky y AlmaLinux, deberá habilitar el repositorio EPEL antes de instalar Varnish usando el comando yum como se muestra.
# yum install epel-release # yum update # yum install varnish
Instale Varnish Cache en RHEL
Si la instalación se completa con éxito, tendrá una de las siguientes versiones de barniz según su distribución:
# varnishd -V varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Finalmente, debe iniciar Varnish manualmente si el proceso de instalación no lo hizo por usted y permitir que se inicie en el arranque.
# systemctl start varnish # systemctl enable varnish # systemctl status varnish
Comprobar el estado de la caché Varnish
De forma predeterminada, el servicio de barniz utiliza el puerto 6081 y usted lo confirma ejecutando el siguiente comando netstat .
# netstat -tunlp | grep 6081
Compruebe el puerto de caché de Varnish
Configuración de Varnish Cache en Linux
Como dijimos 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:
- Cambie el puerto predeterminado 6081 donde escucha Varnish a 80 .
- Cambie el puerto predeterminado donde escucha el servidor web a 8080 en lugar del 80 predeterminado .
- Redirigir el tráfico entrante de Varnish al servidor web. Afortunadamente, Varnish hace esto automáticamente después de haber completado los pasos 1) y 2) .
Cambiar puerto de barniz
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 predeterminada del tiempo de ejecución de Varnish.
Aquí, necesitamos cambiar el puerto de barniz predeterminado de 6081 a puerto 80 y el tamaño de caché a 1 GB como se muestra al ejecutar el siguiente comando, que abrirá el archivo de la unidad en el editor como se muestra.
Nota : puede cambiar la cantidad de memoria según sus recursos de hardware o, alternativamente, elegir guardar los archivos almacenados en caché en el disco.
$ sudo systemctl edit --full varnish O # systemctl edit --full varnish
Configurar Varnish Cache en Linux
Después de realizar cambios en el archivo /etc/systemd/system/varnish.service , debe volver a cargar el demonio Systemd ejecutando el siguiente comando:
# systemctl daemon-reload
Cambiar puerto Apache o Nginx
Después de cambiar el puerto de Varnish, ahora debe cambiar el puerto de su servidor web Apache o Nginx del 80 predeterminado 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]
Cambiar puerto Apache
Una vez que haya realizado los cambios, no olvide 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
Probando Varnish Cache 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
Comprobar el estado de la caché Varnish
Varnish también incluye dos útiles herramientas:
- Vea en tiempo real los registros de Varnish, llamados intuitivamente varnishlog .
- Muestra las estadísticas de caché de Varnish, llamadas 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) como son las solicitudes HTTP. enviados y respuestas recibidas.
Prueba comparativa de rendimiento del servidor web
Nuestra tercera y última prueba consistirá en evaluar tanto el servidor web como Varnish con la herramienta de evaluación comparativa ab y comparar los tiempos de respuesta y la carga de la CPU en cada caso.
En este ejemplo en particular, usaremos el servidor CentOS , pero puedes usar cualquier distribución y obtener resultados similares. Observe el promedio de carga en la parte superior y la línea Solicitudes por segundo en la salida de ab .
Con ab , se nos enviarán 50 ( -c 50 ) solicitudes concurrentes al mismo tiempo y repetiremos la prueba 1000000 veces (indicado por -n 1000000 ). Varnish devolverá una mayor cantidad de solicitudes por segundo y un promedio de carga mucho más bajo.
Importante : recuerde que Varnish está escuchando en el puerto 80 (el puerto HTTP predeterminado), mientras que Apache está escuchando en el puerto 8080. También puede tomar nota de la cantidad de tiempo necesario para completar cada prueba.
# ab -c 50 -n 100000 http://localhost/index.html
Conclusión
En este artículo, hemos discutido cómo configurar un caché de Varnish frente a un servidor web, Apache o Nginx . Tenga en cuenta que no hemos profundizado en el archivo de configuración default.vcl , lo que nos permite personalizar aún más la política de almacenamiento en caché.
Ahora puede consultar la documentación oficial para obtener más ejemplos de configuración o dejar un comentario utilizando el formulario a continuación.
-
Apache
- Cómo Resolver Problemas de Acceso en Apache Relacionados con SELinux en Fedora
- Cómo cambiar el nombre del servidor Apache por cualquier cosa personalizando el servidor
- Cómo instalar Varnish y realizar una evaluación comparativa del servidor web
- 13 consejos para reforzar la seguridad del servidor web Apache en Servidores Linux
- Cómo administrar el servidor Apache usando la herramienta "Apache GUI"
- Crear un sitio web protegido, con usuario y contraseña
- Cómo instalar Joomla en Rocky Linux y AlmaLinux
- Incrementar el rendimiento de su Web usando Nginx como Proxy con Apache
- ¿Cómo usar IPv6 en Apache?
- Cómo configurar HTTPS en Apache Web Server con CentOS
- Usar el comando occ, cómo funciona.
- Redirigir todo tu viejo dominio al nuevo dominio a través de .htaccess
- Ejemplos y Trucos de uso y configuración del htaccess de Apache
- Seguridad de Joomla: Cómo asegurar su sitio web de Joomla durante la instalación
- Securizar tu servidor Web Apache con mod_security