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.