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 en caché el contenido para acelerar el rendimiento de su servidor web, almacenando el 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 servirá desde la caché. De esta manera, 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, balanceador de carga y más. Se configura mediante el flexible Varnish Configuration Language (VCL) que se puede ampliar mediante módulos Varnish (también conocidos como VMOD), admite Edge Side Included (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 de Varnish para que se ejecute frente al servidor HTTPD.

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

Paso 1: Instalación del servidor web Apache en CentOS/RHEL 8

1. Empiece por actualizar todos los paquetes de software instalados en el sistema de la siguiente manera mediante el comando DNF.

# dnf update

2. A continuación, ejecute el siguiente comando para instalar el servidor web Apache HTTP desde el repositorio de 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 mediante 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 volver a cargar la configuración de firewalld para aplicar los nuevos cambios.

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

Paso 2: Instalación de Varnish Cache 6.4 en CentOS/RHEL 8

5. Ahora que el servidor web Apache se está ejecutando, puede continuar con la instalación de 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 de barniz principal escrito con VCL.
  • /etc/varnish/secret: es el archivo secreto de barniz.

8. Ahora inicie el servicio de barniz, por ahora, habilítelo para que se inicie automáticamente durante el arranque del sistema en caso de que se reinicie el servidor y verifique su estado para asegurarse de que esté en funcionamiento 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 frente al servicio Apache. Por defecto, 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.

Ábralo para editarlo con su 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 el 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 servirá 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 del servidor HTTP Apache predeterminada, 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 en busca de errores. Si está bien, reinicie el servicio httpd para aplicar los nuevos cambios.

# httpd -t
# systemctl restart httpd

11. Para implementar Varnish frente a HTTPD, simplemente debe configurarlo para que escuche las solicitudes de los clientes en el puerto HTTP 80 predeterminado, como se explica a continuación.

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

# systemctl edit --full  varnish

Busque la línea ExecStart, luego cambie el valor del conmutador -a (que especifica que el barniz 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 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.

12. Ahora, debe configurar el servidor de origen, conocido en la terminología de Varnish como backend. Es el servidor que entiende HTTP, con el que habla Varnish, para buscar contenido, httpd en este caso. Está configurado en el archivo de configuración principal /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl 

Hay una sección de configuración de backend predeterminada llamada default. Puede cambiar "predeterminado" a servidor1 (o cualquier nombre de su elección para cumplir con los estándares de su entorno). De forma predeterminada, el parámetro de host apunta al localhost, asumiendo que el servidor backend se está ejecutando 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 del 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 de 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: Prueba de Varnish Cache y la configuración de Apache

14. Para probar la configuración de Varnish Cache-HTTPD, abra un navegador web y navegue usando la IP del servidor o FQDN 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 con el botón derecho en la página web que se muestra, seleccione Inspeccionar para abrir las herramientas de desarrollador, luego haga clic en la pestaña Red y vuelva a cargar 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 la utilidad Varnish Cache

15. Terminemos esta guía examinando algunos de los programas útiles con los que viene la distribución de Varnish Cache. Incluyen utilidades para la administración de caché de barniz, que muestran registros de registro detallados y visualizan estadísticas de rendimiento de barniz como se describe a continuación.

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 iniciando y deteniendo varnishd, cambiando los parámetros de configuración, recargando la VCL, enumerando backends y más.

# varnishadm
> backend.list

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

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

# varnishlog

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

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 man varnishstat.

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

# varnishtop 

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

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

# varnishhist

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

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

Si tiene alguna consulta sobre este tema o ideas para 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 próximo artículo, que mostrará cómo habilitar SSL/TLS para Varnish Cache usando Hitch en CentOS/RHEL 8.