Como Acelerar o Apache com Cache Varnish no CentOS 7

O Varnish Cache (comumente conhecido como Varnish) é um acelerador HTTP de proxy reverso de código aberto e popular, projetado para acelerar servidores web. Ele é projetado para endpoints de API altamente utilizados e também para sites dinâmicos que servem conteúdo massivo e experimentam alto tráfego.

Basicamente, ele ajuda a reduzir a carga da CPU, suporta balanceamento de carga em servidores web e permite que um navegador da web carregue rapidamente os sites, armazenando o cache na RAM. Algumas grandes empresas o utilizam, incluindo Facebook, Twitter e Wikipedia, para citar apenas algumas.

Requisitos

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

Neste artigo, explicarei como instalar e usar o Varnish Cache 6.5 como um front-end para um servidor web Apache no CentOS 7 (também funciona no RHEL 7).

Passo 1: Instale o Servidor Web Apache no CentOS 7

1. Primeiro, instale o servidor HTTP Apache a partir dos repositórios de software padrão do CentOS usando o gerenciador de pacotes YUM da seguinte forma.

# yum install httpd
Install Apache on CentOS 7

2. Uma vez instalado o Apache, inicie-o temporariamente e habilite-o para iniciar automaticamente durante a inicialização do sistema.

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

3. Próxima atualização do sistema de regras de firewall para permitir pacotes de entrada na porta 80 usando os comandos abaixo.

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

Passo 2: Instalar o Varnish Cache no CentOS 7

4. Agora há pacotes RPM pré-compilados para a versão mais recente do Varnish Cache 6 (isto é, 6.5 no momento da escrita), portanto, você precisa adicionar o repositório oficial do Varnish Cache.

Antes disso, você precisa habilitar o repositório EPEL para instalar vários pacotes de dependências, como mostrado.

# yum install -y epel-release

5. A próxima coisa, instale pygpgme, um pacote para lidar com assinaturas GPG e yum-utils, uma coleção de ferramentas úteis que extendem as funcionalidades nativas do yum de várias maneiras.

# yum install pygpgme yum-utils

6. Agora crie um arquivo chamado /etc/yum.repos.d/varnishcache_varnish65.repo que contém a configuração do repositório abaixo.

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

Importante: Certifique-se de substituir el e 7 na config abaixo pelo seu Linux distribuído e versão:

[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. Agora execute o comando abaixo para atualizar seu cache local do yum e instalar o pacote de cache do Varnish (não esqueça de aceitar a chave GPG digitando y ou yes enquanto instala o pacote):

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

8. Após a instalação de Varnish Cache, o principal executável será instalado como /usr/sbin/varnishd e os arquivos de configuração do Varnish estão localizados em /etc/varnish/:

  • /etc/varnish/default.vcl – este é o arquivo de configuração principal do Varnish, escrito usando a linguagem de configuração do Varnish (VCL).

9. Agora inicie o serviço do Varnish, habilite-o para iniciar automaticamente durante o boot do sistema e verifique seu status para garantir que está rodando conforme segue.

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

10. Você pode confirmar que a instalação do Varnish foi bem-sucedida olhando para a localização do executável do Varnish e da versão instalada no seu sistema.

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

Passo 3: Configurar o Apache para Funcionar Como Varnish Cache

11. Agora configure o Apache para funcionar em conjunto com o Varnish Cache. Por padrão, o Apache escuta na porta 80, você precisa mudar a porta padrão do HTTPD para 8080 – isso garantirá que o HTTPD execute atrás do cache do Varnish.

Você pode usar o comando sed para mudar a porta 80 para 8080 conforme mostrado.

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

Nota: Também, você precisa mudar a porta no seu arquivo de configuração de virtual host para cada site web que você quiser servir através do Varnish. Aqui está a configuração para nosso site de teste (/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 seguir, abra o arquivo de configuração do systemd do Varnish e encontre o parâmetro ExecStart que especifica a porta na qual o Varnish está ouvindo e altere seu valor de 6081 para 80 conforme mostrado na captura de tela.

# systemctl edit --full  varnish

A configuração deve ficar assim quando concluída.

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

13. A seguir, configure o Apache como um servidor de backend para o proxy Varnish, no arquivo de configuração /etc/varnish/default.vcl.

# vi /etc/varnish/default.vcl 

Encontre a seção backend e defina o IP do host e a porta. A configuração de backend padrão abaixo deve ser configurada para apontar para o seu servidor de conteúdo real.

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

Se o seu servidor de backend estiver rodando em um servidor diferente com o endereço 10.42.1.10, então o parâmetro de host deve apontar para este endereço IP.

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

14. Após performar todas as configurações necessárias, reinicie o HTTPD e o cache do Varnish para aplicar as mudanças acima.

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

Passo 4: Testar o Cache do Varnish no Apache

15. Finalmente, teste se o Varnish está habilitado e funcionando com o serviço HTTPD usando o comando cURL abaixo, que pode ser usado para visualizar as headers HTTP.

# curl -I http://localhost
Saída de exemplo
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 obter mais informações, consulte o Repositório do Github do Cache do Varnish: https://github.com/varnishcache/varnish-cache

Neste tutorial, explicamos como configurar o proxy Varnish Cache 6.5 para o servidor HTTP Apache no CentOS 7. Caso tenha alguma dúvida ou ideias adicionais para compartilhar, use o formulário de feedback abaixo para nos escrever.

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