Pesquisa de site

Como instalar o Varnish Cache para Apache no CentOS/RHEL 8


Varnish Cache é um acelerador de aplicativos da web gratuito, de código aberto, moderno e de alto desempenho. É um proxy HTTP reverso rápido que armazena conteúdo em cache para acelerar o desempenho do servidor web, armazenando conteúdo web na memória do servidor – em um cache. Ele está configurado para ser executado na frente de um servidor de origem, como o servidor web Apache (HTTPD).

Quando um cliente solicita conteúdo, o Varnish aceita a solicitação HTTP, envia a solicitação ao servidor de origem, armazena em cache os objetos retornados e responde à solicitação do cliente. Na próxima vez que o cliente solicitar o mesmo conteúdo, o Varnish o servirá a partir do cache. Dessa forma, reduz o tempo de resposta e o consumo de largura de banda da rede em futuras solicitações equivalentes.

O Varnish também funciona como roteador de solicitação HTTP, firewall de aplicativos da web, balanceador de carga e muito mais. Ele é configurado usando a flexível Varnish Configuration Language (VCL) que é extensível usando Varnish Modules (também conhecidos como VMODs >), suporte para Edge Side Included (ESL), compactação e descompactação Gzip e muito mais.

Neste artigo, você aprenderá como instalar o servidor web Apache HTTPD e o Varnish Cache 6 em um servidor CentOS/RHEL 8 novo, incluindo a configuração Varnish para rodar na frente do servidor HTTPD.

Pré-requisitos:

  • Um servidor com instalação CentOS 8
  • Um servidor com instalação RHEL 8 com assinatura Red Hat habilitada em seu sistema.

Etapa 1: Instalando o servidor Web Apache no CentOS/RHEL 8

1. Comece atualizando todos os pacotes de software instalados no sistema da seguinte maneira, usando o comando DNF.

dnf update

2. Em seguida, execute o seguinte comando para instalar o servidor web Apache HTTP do repositório AppStream.

dnf install httpd

3. Assim que a instalação for concluída, inicie o serviço httpd, habilite-o para iniciar automaticamente durante a inicialização do sistema e verifique seu status para confirmar se está instalado e funcionando, usando o comando systemctl.

systemctl start httpd
systemctl enable httpd
systemctl status httpd

4. Por padrão, o CentOS/RHEL 8 inclui um firewall totalmente bloqueado (execute firewall-cmd –state para confirmar). Você deve abrir o acesso ao serviço HTTP no firewall para permitir que os usuários acessem sites ou aplicativos executados em HTTP e também recarregar as configurações do firewalld para aplicar as novas alterações.

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

Etapa 2: Instalando o Varnish Cache 6.4 no CentOS/RHEL 8

5. Agora que o servidor web Apache está em execução, você pode prosseguir para instalar o Varnish Cache no sistema usando o seguinte comando.

dnf module install varnish

6. Após uma instalação bem-sucedida, você poderá verificar a versão do Varnish instalada em seu sistema.

varnishd -V

7. Em seguida, o executável principal é instalado como /usr/sbin/varnishd. Além disso, os arquivos de configuração do Varnish são armazenados no diretório /etc/varnish, onde:

  • /etc/varnish/default.vcl – é o principal arquivo de configuração do verniz escrito usando VCL.
  • /etc/varnish/secret – é o arquivo secreto do verniz.

8. Agora inicie o serviço de verniz, por enquanto, habilite-o para iniciar automaticamente durante a inicialização do sistema no caso de reinicialização do servidor e verifique seu status para garantir que ele esteja funcionando da seguinte maneira.

systemctl start varnish
systemctl enable varnish
systemctl status varnish

Etapa 3: Configurando o Apache para funcionar com Varnish Cache

9. Agora é hora de configurar o Varnish Cache para ser executado na frente do serviço Apache. Por padrão, o servidor Apache está configurado para escutar na porta 80, isso é definido no arquivo de configuração principal /etc/httpd/conf/httpd.conf.

Abra-o para edição usando seu editor de texto favorito.

vi /etc/httpd/conf/httpd.conf

Procure o parâmetro Listen. Para executar o Varnish na frente do servidor Apache, você deve alterar a porta padrão 80 para 8080 (ou qualquer outra porta de sua escolha) como mostrado na captura de tela a seguir.

Esta porta será adicionada como a porta do servidor backend no arquivo de configuração do Varnish posteriormente.

Além disso, a configuração do host virtual para cada site/aplicativo que servirá via Varnish deve ser configurada para escutar a porta acima. Aqui está a configuração do 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>

Importante: Para evitar que a página de teste padrão do servidor HTTP Apache seja usada, comente todas as linhas no arquivo /etc/httpd/conf.d /welcome.conf ou simplesmente exclua o arquivo.

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

10. Em seguida, teste a sintaxe de configuração do httpd para ver se há erros. Se estiver tudo bem, reinicie o serviço httpd para aplicar as novas alterações.

httpd -t
systemctl restart httpd

Configurando o Varnish para Systemd

11. Para implantar o Varnish na frente do HTTPD, basta configurá-lo para escutar as solicitações do cliente na porta HTTP padrão 80 conforme explicado abaixo.

Observe que no Varnish Cache 6.0 e superior, você deve definir a porta que o servidor do verniz escuta no arquivo de serviço do Varnish para o systemd. Primeiro, abra-o para edição.

systemctl edit --full  varnish

Procure a linha ExecStart e altere o valor da opção -a (que especifica o verniz para ouvir o endereço e a porta) de :6081 para :80 conforme indicado na imagem a seguir.

É importante ressaltar que se você não especificar um endereço, o varnishd escutará todas as interfaces IPv4 e IPv6 disponíveis e ativas no servidor.

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

Salve as alterações no arquivo e saia.

Configurando servidores back-end Varnish usando VCL

12. Agora, você precisa configurar o servidor de origem, conhecido na terminologia do Varnish como backend. É o servidor que entende HTTP, com o qual Varnish conversa para buscar conteúdo – httpd neste caso. Ele é configurado no arquivo de configuração principal /etc/varnish/default.vcl.

vi /etc/varnish/default.vcl 

Há uma seção de configuração de backend padrão chamada default. Você pode alterar “default ” para server1 (ou qualquer nome de sua escolha para atender aos padrões do seu ambiente). Por padrão, o parâmetro host aponta para localhost, supondo que o servidor back-end esteja sendo executado no localhost.

Em seguida, defina a porta como 8080 (a porta que você definiu no arquivo de configuração do host virtual Apache) conforme mostrado na captura de tela.

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

Se o seu servidor backend estiver sendo executado em um host diferente, por exemplo, outro servidor com endereço 10.42.1.10, o parâmetro host deverá apontar para este endereço IP.

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

Salve o arquivo e feche-o.

13. Depois de fazer todas as alterações necessárias em relação ao Varnish, recarregue a configuração do gerenciador systemd para refletir as novas alterações no arquivo de serviço do Varnish e também reinicie o serviço Varnish para aplicar as alterações gerais.

systemctl daemon-reload
systemctl restart varnish

14. Neste ponto, Varnish e Apache devem estar escutando nas portas 80 e 8080 respectivamente. Você pode confirmar isso usando o comando socket stats.

ss -tpln

Etapa 4: testando o cache do Varnish e a configuração do Apache

14. Para testar a configuração do Varnish Cache-HTTPD, abra um navegador da web e navegue usando o IP ou FQDN do servidor. forte> conforme mostrado na imagem a seguir.

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

Em seguida, verifique se as páginas da web estão sendo veiculadas por meio do Varnish Cache da seguinte maneira. Verifique os cabeçalhos HTTP clicando com o botão direito na página da web exibida, selecione Inspecionar para abrir as ferramentas do desenvolvedor, clique na guia Rede e recarregue a página. Em seguida, selecione uma solicitação para visualizar os cabeçalhos HTTP para confirmar isso, conforme mostrado na captura de tela a seguir.

Alternativamente, você pode executar o seguinte comando curl para verificá-lo.

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

Programas utilitários de cache Varnish úteis

15. Vamos encerrar este guia examinando alguns dos programas úteis que acompanham a distribuição Varnish Cache. Eles incluem utilitários para administração de cache de verniz, exibição de registros de log detalhados e visualização de estatísticas de desempenho de verniz conforme descrito abaixo.

vernizadm

O primeiro é o varnishadm que é usado para administrar uma instância do Varnish em execução. Ele estabelece uma conexão de interface de linha de comando com o varnishd. Isso pode afetar uma instância em execução do Varnish iniciando e parando o varnishd, alterando os parâmetros de configuração, recarregando a VCL, listando back-ends e muito mais.

varnishadm
> backend.list

Para obter mais informações, leia man vernizadm.

vernizlog

O próximo programa é o varnishlog que é usado para acessar dados específicos de solicitações (ou seja, informações sobre clientes e solicitações específicas). Fornece grandes quantidades de informações, por isso geralmente é necessário filtrá-las.

varnishlog

Para mais informações, leia o man vernizlog.

vernizstat

Também temos varnishstat (estatísticas de verniz) que é usado para acessar estatísticas gerais, como o número total de solicitações, número de objetos e muito mais.

varnishstat

Para mais informações, leia o man vernizstat.

verniz top

Depois temos o varnishtop, que é um utilitário que lê o log do Varnish e apresenta uma lista continuamente atualizada das entradas de log que ocorrem com mais frequência.

varnishtop 

Para mais informações, leia o man verniztop.

envernizador

Outro utilitário útil é o varnishhist (varnish history) que lê os logs do Varnish e apresenta um histograma continuamente atualizado mostrando a distribuição das últimas N solicitações por seus em processamento.

varnishhist

Para mais informações, leia o man envernizador.

Aí está! Você implantou com sucesso o Varnish Cache para acelerar o conteúdo do seu aplicativo da web servido usando o servidor Apache HTTP no CentOS/RHEL 8.

Se você tiver alguma dúvida sobre este tópico ou ideias para compartilhar, use o formulário de feedback abaixo. Confira a documentação do Varnish Cache 6.0 para obter mais informações.

Se você deseja habilitar HTTPS em seu site, consulte nosso próximo artigo, que mostrará como habilitar SSL/TLS para Varnish Cache usando Hitch em CentOS/RHEL 8.