Búsqueda de sitios web

Cómo instalar Varnish Cache para Apache en CentOS/RHEL 8


Varnish Cache es un acelerador de aplicaciones web gratuito, de código abierto, moderno y de alto rendimiento. Es un proxy HTTP inverso rápido que almacena contenido en caché para acelerar el rendimiento de su servidor web, almacenando contenido web en la memoria del servidor, en un caché. Está configurado para ejecutarse frente a un servidor de origen como el servidor web Apache (HTTPD).

Cuando un cliente solicita contenido, Varnish acepta la solicitud HTTP, envía la solicitud al servidor de origen, almacena en caché los objetos devueltos y responde a la solicitud del cliente. La próxima vez que el cliente solicite el mismo contenido, Varnish lo entregará desde la memoria caché. De esta forma, reduce el tiempo de respuesta y el consumo de ancho de banda de la red en futuras solicitudes equivalentes.

Varnish también funciona como enrutador de solicitudes HTTP, firewall de aplicaciones web, equilibrador de carga y más. Se configura utilizando el flexible Lenguaje de configuración Varnish (VCL) que es extensible mediante Módulos Varnish (también conocidos como VMOD). >), compatibilidad con Edge Side Incluye (ESL), compresión y descompresión Gzip y mucho más.

En este artículo, aprenderá cómo instalar el servidor web Apache HTTPD y Varnish Cache 6 en un servidor CentOS/RHEL 8 nuevo, incluida la configuración. Varnish para ejecutar frente al servidor HTTPD.

Requisitos previos:

  • Un servidor con instalación CentOS 8
  • Un servidor con instalación de RHEL 8 con suscripción a Red Hat habilitada en su sistema.

Paso 1: Instalar el servidor web Apache en CentOS/RHEL 8

1. Comience actualizando todos los paquetes de software instalados en el sistema de la siguiente manera usando el comando DNF.

dnf update

2. A continuación, ejecute el siguiente comando para instalar el servidor web Apache HTTP desde el repositorio AppStream.

dnf install httpd

3. Tan pronto como se complete la instalación, inicie el servicio httpd, habilítelo para que se inicie automáticamente durante el inicio del sistema y verifique su estado para confirmar que está en funcionamiento, usando el comando systemctl.

systemctl start httpd
systemctl enable httpd
systemctl status httpd

4. De forma predeterminada, CentOS/RHEL 8 incluye un firewall completamente bloqueado (ejecute firewall-cmd –state para confirmar). Debe abrir el acceso al servicio HTTP en el firewall para permitir que los usuarios accedan a sitios web o aplicaciones que se ejecutan a través de HTTP y también recargar la configuración del firewall para aplicar los nuevos cambios.

firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --reload

Paso 2: Instalar Varnish Cache 6.4 en CentOS/RHEL 8

5. Ahora que el servidor web Apache se está ejecutando, puede continuar para instalar Varnish Cache en el sistema usando el siguiente comando.

dnf module install varnish

6. Después de una instalación exitosa, puede verificar la versión de Varnish instalada en su sistema.

varnishd -V

7. A continuación, el ejecutable principal se instala como /usr/sbin/varnishd. Además, los archivos de configuración de Varnish se almacenan en el directorio /etc/varnish, donde:

  • /etc/varnish/default.vcl: es el archivo de configuración principal de Barniz escrito con VCL.
  • /etc/varnish/secret: es el archivo secreto del barniz.

8. Ahora inicie el servicio de barniz; por ahora, habilítelo para que se inicie automáticamente durante el inicio del sistema en caso de que se reinicie el servidor y verifique su estado para asegurarse de que esté funcionando de la siguiente manera.

systemctl start varnish
systemctl enable varnish
systemctl status varnish

Paso 3: Configurar Apache para que funcione con Varnish Cache

9. Ahora es el momento de configurar Varnish Cache para que se ejecute delante del servicio Apache. De forma predeterminada, el servidor Apache está configurado para escuchar en el puerto 80, esto se define en el archivo de configuración principal /etc/httpd/conf/httpd.conf.

Ábrelo para editarlo usando tu editor de texto favorito.

vi /etc/httpd/conf/httpd.conf

Busque el parámetro Escuchar. Para ejecutar Varnish frente al servidor Apache, debe cambiar el puerto predeterminado 80 a 8080 (o cualquier otro puerto de su elección) como se muestra en la siguiente captura de pantalla.

Este puerto se agregará como puerto del servidor backend en el archivo de configuración de Varnish más adelante.

Además, la configuración del host virtual para cada sitio web/aplicación que funcionará a través de Varnish debe configurarse para escuchar el puerto anterior. Aquí está la configuración de nuestro sitio de prueba (/etc/httpd/conf.d/tecmint.lan.conf).

<VirtualHost *:8080>
    DocumentRoot "/var/www/html/tecmint.lan/"
    ServerName www.tecmint.lan
    # Other directives here
</VirtualHost>

Importante: Para evitar que se utilice la página de prueba predeterminada del servidor Apache HTTP, comente todas las líneas del archivo /etc/httpd/conf.d /welcome.conf o simplemente elimine el archivo.

rm /etc/httpd/conf.d/welcome.conf 

10. A continuación, pruebe la sintaxis de configuración httpd para detectar errores. Si está bien, reinicie el servicio httpd para aplicar los nuevos cambios.

httpd -t
systemctl restart httpd

Configurar Varnish para Systemd

11. Para implementar Varnish delante de HTTPD, simplemente necesita configurarlo para escuchar las solicitudes de los clientes en el puerto HTTP predeterminado 80 como se explica. abajo.

Tenga en cuenta que en Varnish Cache 6.0 y superior, debe configurar el puerto que el servidor de barniz escucha en el archivo de servicio de Varnish para systemd. Primero, ábrelo para editarlo.

systemctl edit --full  varnish

Busque la línea ExecStart, luego cambie el valor del modificador -a (que especifica el barniz que escucha la dirección y el puerto) de :6081 a :80 como se indica en la siguiente captura de pantalla.

Es importante destacar que si no especifica una dirección, varnishd escuchará en todas las interfaces IPv4 e IPv6 disponibles y activas en el servidor.

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Guarde los cambios en el archivo y salga.

Configuración de servidores backend de Varnish usando VCL

12. Ahora, necesitas configurar el servidor de origen, conocido en la terminología de Varnish como backend. Es el servidor el que entiende HTTP, con el que Varnish habla para recuperar el contenido (httpd en este caso). Se configura en el archivo de configuración principal /etc/varnish/default.vcl.

vi /etc/varnish/default.vcl 

Hay una sección de configuración backend predeterminada llamada default. Puede cambiar “predeterminado” a servidor1 (o cualquier nombre que elija para cumplir con los estándares de su entorno). De forma predeterminada, el parámetro host apunta al localhost, suponiendo que el servidor backend se ejecuta en el localhost.

Luego configure el puerto en 8080 (el puerto que definió en el archivo de configuración del host virtual Apache) como se muestra en la captura de pantalla.

backend server1 {
    .host = "127.0.0.1";
    .port = "8080";
}

Si su servidor backend se ejecuta en un host diferente, por ejemplo, otro servidor con la dirección 10.42.1.10, entonces el parámetro host debe apuntar a esta dirección IP.

backend server1 {
    .host = "10.42.1.10";
    .port = "8080";
}

Guarde el archivo y ciérrelo.

13. Después de realizar todos los cambios necesarios relacionados con Varnish, vuelva a cargar la configuración del administrador de systemd para reflejar los nuevos cambios en el archivo de servicio de Varnish y también reinicie. el servicio Varnish para aplicar los cambios generales.

systemctl daemon-reload
systemctl restart varnish

14. En este punto, Varnish y Apache deberían estar escuchando en el puerto 80 y 8080 respectivamente. Puede confirmar esto usando el comando de estadísticas de socket.

ss -tpln

Paso 4: Probar Varnish Cache y la configuración de Apache

14. Para probar la configuración de Varnish Cache-HTTPD, abra un navegador web y navegue utilizando la IP o el FQDN del servidor. como se muestra en la siguiente captura de pantalla.

http://10.42.0.144
OR
http://www.tecmin.lan

Luego verifique si las páginas web se sirven a través de Varnish Cache de la siguiente manera. Verifique los encabezados HTTP haciendo clic derecho en la página web mostrada, seleccione Inspeccionar para abrir las herramientas de desarrollo, luego haga clic en la pestaña Red y recarga la página. Luego seleccione una solicitud para ver los encabezados HTTP para confirmar esto como se muestra en la siguiente captura de pantalla.

Alternativamente, puede ejecutar el siguiente comando curl para verificarlo.

curl -I http:///10.42.0.144
OR
#curl -I http:///www.tecmint.lan

Programas útiles de utilidad de caché de barniz

15. Terminemos esta guía mirando algunos de los programas útiles que incluye la distribución Varnish Cache. Incluyen utilidades para la administración de la caché de barniz, la visualización de registros detallados y la visualización de estadísticas de rendimiento del barniz como se describe a continuación.

barnizadm

El primero es varnishadm, que se utiliza para administrar una instancia de Varnish en ejecución. Establece una conexión de interfaz de línea de comandos con varnishd. Puede afectar una instancia en ejecución de Varnish al iniciar y detener varnishd, cambiar los parámetros de configuración, recargar la VCL, enumerar los servidores y más.

varnishadm
> backend.list

Para obtener más información, lea man barnizadm.

barniz

El siguiente programa es varnishlog, que se utiliza para acceder a datos específicos de solicitudes (es decir, información sobre clientes y solicitudes específicos). Proporciona gran cantidad de información, por lo que suele ser necesario filtrarla.

varnishlog

Para obtener más información, lea el registro de barnizado.

barnizstat

También tenemos varnishstat (estadísticas de barniz) que se utiliza para acceder a estadísticas generales, como el número de solicitudes totales, el número de objetos y más.

varnishstat

Para obtener más información, lea el man barnizstat.

barnizar

Luego tenemos varnishtop, que es una utilidad que lee el registro de Varnish y presenta una lista continuamente actualizada de las entradas de registro que ocurren con más frecuencia.

varnishtop 

Para obtener más información, lea el hombre barniztop.

barnizado

Otra utilidad útil es la utilidad varnishhist (historial de barniz), que lee los registros de Varnish y presenta un histograma actualizado continuamente que muestra la distribución de las últimas N solicitudes por Procesando.

varnishhist

Para obtener más información, lea el hombre barnizhist.

¡Ahí tienes! Ha implementado con éxito Varnish Cache para acelerar el contenido de su aplicación web servido mediante el servidor Apache HTTP en CentOS/RHEL 8.

Si tiene alguna pregunta sobre este tema o alguna idea que compartir, utilice el formulario de comentarios a continuación. Consulte la documentación de Varnish Cache 6.0 para obtener más información.

Si desea habilitar HTTPS en su sitio, consulte nuestro siguiente artículo, que mostrará cómo habilitar SSL/TLS para Varnish Cache usando Hitch en CentOS/RHEL 8.