Cómo Acelerar Apache con Caché Varnish en CentOS 7

Varnish Cache (comúnmente conocido como Varnish) es un acelerador HTTP de proxy inverso de código abierto y popular diseñado para acelerar servidores web. Está diseñado para puntos finales de API muy utilizados y también para sitios dinámicos que sirven contenido masivo y experimentan un alto tráfico.

Básicamente ayuda a reducir la carga de la CPU, admite el equilibrio de carga en los servidores web y permite que un navegador web cargue rápidamente los sitios como resultado de almacenar la caché en la RAM. Varias grandes empresas lo utilizan, incluidas Facebook, Twitter y Wikipedia, por mencionar algunas.

Requisitos

  1. A CentOS 7 with Apache installed
  2. A CentOS 7 with a static IP address

En este artículo, explicaré cómo instalar y usar Varnish Cache 6.5 como front-end para un servidor web Apache en CentOS 7 (también funciona en RHEL 7).

Paso 1: Instalar el servidor web Apache en CentOS 7

1. Primero instale el servidor HTTP Apache desde los repositorios de software predeterminados de CentOS utilizando el gestor de paquetes YUM de la siguiente manera.

# yum install httpd
Install Apache on CentOS 7

2. Una vez instalado Apache, arránquelo por el momento y habilítelo para que se inicie automáticamente en el arranque del sistema.

# systemctl start httpd
# systemctl enable httpd
# systemctl status httpd
Start and Enable Apache

3. A continuación, actualiza las reglas del firewall del sistema para permitir paquetes entrantes en el puerto 80 utilizando los comandos a continuación.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --reload
Open Apache Port on Firewall

Paso 2: Instalar Varnish Cache en CentOS 7

4. Ahora hay paquetes RPM precompilados para la última versión de Varnish Cache 6 (es decir, 6.5 en el momento de la escritura), por lo tanto, necesitas agregar el repositorio oficial de Varnish Cache.

Antes de eso, necesitas habilitar el repositorio EPEL para instalar varios paquetes de dependencias como se muestra a continuación.

# yum install -y epel-release

5. A continuación, instala pygpgme, un paquete para manejar firmas GPG y yum-utils, una colección de utilidades útiles que extienden las características nativas de yum de varias maneras.

# yum install pygpgme yum-utils

6. Ahora crea un archivo con el nombre /etc/yum.repos.d/varnishcache_varnish65.repo que contenga la configuración del repositorio a continuación.

# vi /etc/yum.repos.d/varnishcache_varnish65.repo

Importante: Asegúrate de reemplazar el y 7 en la configuración a continuación con tu distribución y versión de Linux:

[varnishcache_varnish65]
name=varnishcache_varnish65
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[varnishcache_varnish65-source]
name=varnishcache_varnish65-source
baseurl=https://packagecloud.io/varnishcache/varnish65/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/varnishcache/varnish65/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

7. Ahora ejecuta el comando a continuación para actualizar la caché local de yum e instalar el paquete de caché de varnish (no olvides aceptar la clave GPG escribiendo y o yes al instalar el paquete):

# yum -q makecache -y --disablerepo='*' --enablerepo='varnishcache_varnish65'
# yum install varnish 
Install Varnish Cache in CentOS 7

8. Después de instalar Varnish Cache, el ejecutable principal se instalará como /usr/sbin/varnishd y los archivos de configuración de Varnish se encuentran en /etc/varnish/:

  • /etc/varnish/default.vcl – este es el archivo de configuración principal de Varnish, está escrito usando el lenguaje de configuración de Varnish (VCL).

9. Ahora inicie el servicio de Varnish, habilítelo para que se inicie automáticamente durante el arranque del sistema y verifique su estado para asegurarse de que esté en funcionamiento de la siguiente manera.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Start Varnish Cache

10. Puede confirmar que la instalación de Varnish fue exitosa al ver la ubicación del ejecutable de Varnish y la versión instalada en su sistema.

$ which varnishd
$ varnishd -V
Salida de muestra
varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2020 Varnish Software

Paso 3: Configurar Apache para funcionar con Varnish Cache

11. Ahora configure Apache para trabajar en conjunto con Varnish Cache. Por defecto, Apache escucha en el puerto 80, necesita cambiar el puerto predeterminado de HTTPD a 8080 – esto asegurará que HTTPD se ejecute detrás del almacenamiento en caché de Varnish.

Puede usar el comando sed para cambiar el puerto 80 a 8080 como se muestra.

# sed -i "s/Listen 80/Listen 8080/" /etc/httpd/conf/httpd.conf

Nota: Además, necesita cambiar el puerto en la configuración de su host virtual para cada sitio web que desee servir a través de Varnish. Aquí está la configuración para 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>

12. A continuación, abre el archivo de configuración del sistema de systemd de Varnish y busca el parámetro ExecStart que especifica el puerto en el que Varnish escucha, y cambia su valor de 6081 a 80 como se muestra en la captura de pantalla.

# systemctl edit --full  varnish

La configuración debería verse así cuando hayas terminado.

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

13. A continuación, configura Apache como servidor backend para el proxy de Varnish, en el archivo de configuración /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl 

Encuentra la sección backend y define la dirección IP y el puerto. A continuación se muestra la configuración predeterminada del backend, ajústala para que apunte a tu servidor de contenido real.

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

Si tu servidor backend se ejecuta en un servidor diferente con la dirección 10.42.1.10, entonces el parámetro host debería apuntar a esta dirección IP.

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

14. Después de realizar todas las configuraciones necesarias, reinicia HTTPD y la caché de Varnish para que los cambios anteriores surtan efecto.

# systemctl daemon-reload
# systemctl restart httpd
# systemctl restart varnish

Paso 4: Probar la caché de Varnish en Apache

15. Por último, prueba si Varnish está habilitado y funcionando con el servicio HTTPD utilizando el comando cURL a continuación, que se puede utilizar para ver el encabezado HTTP.

# curl -I http://localhost
Salida de muestra
HTTP/1.1 200 OK
Date: Wed, 06 Jan 2021 08:36:07 GMT
Server: Apache/2.4.6 (CentOS)
Last-Modified: Thu, 16 Oct 2014 13:20:58 GMT
ETag: "1321-5058a1e728280"
Accept-Ranges: bytes
Content-Length: 4897
Content-Type: text/html; charset=UTF-8
X-Varnish: 131085
Age: 0
Via: 1.1 varnish (Varnish/6.5)
Connection: keep-alive

Para obtener más información, visita el Repositorio de Github de Varnish Cache: https://github.com/varnishcache/varnish-cache

En este tutorial, explicamos cómo configurar el proxy Varnish Cache 6.5 para el servidor HTTP Apache en CentOS 7. En caso de tener consultas o ideas adicionales para compartir, utiliza el formulario de comentarios a continuación para escribirnos.

Source:
https://www.tecmint.com/install-varnish-cache-on-centos-7-for-apache/