Como Instalar o Varnish e Realizar o Benchmark do Servidor Web

Pense por um momento sobre o que aconteceu quando você acessou a página atual. Você clicou em um link que recebeu por meio de um boletim informativo, ou no link na página inicial do Tecmint.com e então foi levado a este artigo.

Em poucas palavras, você (ou na verdade seu navegador) enviou uma solicitação HTTP para o servidor da web que hospeda este site, e o servidor enviou de volta uma resposta HTTP.

Por mais simples que isso pareça, esse processo envolve muito mais do que isso. Muito processamento teve que ser feito do lado do servidor para apresentar a página formatada de maneira agradável que você pode ver com todos os recursos nela – estáticos e dinâmicos.

Sem aprofundar muito, você pode imaginar que se o servidor da web tiver que responder a muitas solicitações como essa simultaneamente (comece com apenas algumas centenas), ele pode acabar sobrecarregado em pouco tempo.

E é aí que o Varnish, um acelerador HTTP de alto desempenho e proxy reverso, pode salvar o dia. Neste artigo, vou explicar como instalar e usar o Varnish como um front-end para o Apache ou o Nginx para armazenar em cache respostas HTTP de forma mais rápida e sem sobrecarregar ainda mais o servidor da web.

No entanto, como o Varnish normalmente armazena seu cache na memória em vez de no disco, precisaremos ter cuidado e limitar o espaço de RAM alocado para o cache. Vamos discutir como fazer isso em um minuto.

Como Funciona o Varnish

How Varnish Works

Instalando o Cache do Varnish no Servidor Linux

Este post presume que você já instalou um servidor LAMP ou LEMP. Se não, por favor instale um desses stacks antes de prosseguir.

A documentação oficial recomenda instalar o Varnish a partir do próprio repositório do desenvolvedor, pois eles sempre fornecem a versão mais recente. Você também pode optar por instalar o pacote a partir dos repositórios oficiais da sua distribuição, embora possa estar um pouco desatualizado.Também observe que os repositórios do projeto fornecem suporte apenas para sistemas 64 bits, enquanto para máquinas 32 bits, você terá que recorrer aos repositórios oficialmente mantidos pela sua distribuição.

Além disso, tenha em mente que os repositórios do projeto oferecem apoio apenas para sistemas de 64 bits, enquanto para máquinas de 32 bits, você terá que recorrer aos repositórios mantidos oficialmente pela sua distribuição.

Neste artigo, instalaremos Varnish a partir dos repositórios oficialmente apoiados por cada distribuição. A principal razão por trás desta decisão é fornecer uniformidade no método de instalação e garantir a resolução automática de dependências para todas as arquiteturas.

Instale o Varnish em Linux baseado em Debian

Em distribuições baseadas em Debian, você pode instalar Varnish usando o comando apt como mostrado.

# apt update 
# apt install varnish 	
Install Varnish Cache in Debian

Instale o Varnish em Linux baseado em RHEL

Em distribuições baseadas em RHEL como CentOS, Rocky e AlmaLinux, você precisará habilitar o repositório EPEL antes de instalar Varnish usando o comando yum como mostrado.

# yum install epel-release
# yum update
# yum install varnish 
Install Varnish Cache in RHEL

Se a instalação for concluída com sucesso, você terá uma das seguintes versões de varnish dependendo de sua distribuição:

# varnishd -V

varnishd (varnish-6.5.1 revision 1dae23376bb5ea7a6b8e9e4b9ed95cdc9469fb64)

Finalmente, você precisa iniciar Varnish manualmente se o processo de instalação não o fez e permitir que ele inicie na inicialização.

# systemctl start varnish
# systemctl enable varnish
# systemctl status varnish
Check Varnish Cache Status

Por padrão, a porta 6081 é usada pelo serviço varnish e você pode confirmar isso executando o seguinte comando netstat.

# netstat -tunlp | grep 6081
Check Varnish Cache Port

Configurando o Cache Varnish no Linux

Como dissemos anteriormente, o Varnish fica no meio dos clientes externos e do servidor web. Por esse motivo, e para que o cache se torne transparente aos usuários finais, precisaremos:

  1. Alterar a porta padrão 6081 em que o Varnish escuta para 80.
  2. Alterar a porta padrão em que o servidor Web escuta para 8080 em vez da padrão 80.
  3. Redirecionar o tráfego de entrada do Varnish para o servidor web. Felizmente, o Varnish faz isso automaticamente depois que completamos as etapas 1) e 2).

Alterar a Porta do Varnish

O processo varnishd é controlado por systemd e possui seu arquivo de unidade em /usr/lib/systemd/system/varnish.service, que contém a configuração de tempo de execução padrão do Varnish.

Aqui, precisamos alterar a porta padrão do varnish de 6081 para a porta 80 e o tamanho do cache para 1GB conforme mostrado executando o seguinte comando, que abrirá o arquivo de unidade no editor conforme mostrado.

Nota: Você pode alterar a quantidade de memória de acordo com os recursos de hardware ou, alternativamente, optar por salvar arquivos em cache no disco.

$ sudo systemctl edit --full varnish
OR 
# systemctl edit --full varnish
Configure Varnish Cache in Linux

Depois de fazer alterações no arquivo /etc/systemd/system/varnish.service, você precisa recarregar o daemon Systemd executando o seguinte comando:

# systemctl daemon-reload

Alterar a Porta do Apache ou Nginx

Depois de alterar a porta do Varnish, agora você precisa alterar a porta do seu servidor web Apache ou Nginx do padrão 80 para a porta de rede mais comum, ou seja, 8080.

---------- On Debian-based Systems ---------- 
# nano /etc/apache2/ports.conf      [On Apache]
# /etc/nginx/sites-enabled/default  [On Nginx]

---------- On RHEL-based Systems ----------
# vi /etc/httpd/conf/httpd.conf   [On Apache]
# vi /etc/nginx/nginx.conf        [On Nginx]  
Change Apache Port

Depois de fazer as alterações, não se esqueça de reiniciar o Varnish e o servidor web.

# systemctl restart varnish 

---------- On Debian-based Systems ---------- 
# systemctl restart apache2     
# systemctl restart nginx

---------- On RHEL-based Systems ----------
# systemctl restart httpd     
# systemctl restart nginx     

Testando o Cache do Varnish no Linux

O primeiro teste consiste em fazer uma solicitação HTTP via comando curl e verificando se é tratada pelo Varnish:

# curl -I http://localhost
Check Varnish Cache Status

O Varnish também inclui duas ferramentas convenientes:

  • Visualize os logs do Varnish em tempo real, intuitivamente chamado de varnishlog.
  • Exiba as estatísticas do cache do Varnish, chamado de varnishstat.

Como segundo teste, no seguinte screencast, exibiremos tanto os logs quanto as estatísticas em um servidor CentOS (dev1, metade superior da tela) e em um servidor Debian (dev2, metade inferior da tela) à medida que solicitações HTTP são enviadas e respostas recebidas.

Teste de Desempenho do Servidor Web Benchmark

Nosso terceiro e último teste consistirá em fazer o benchmark tanto do servidor web quanto do Varnish com a ferramenta ab de benchmark e comparando os tempos de resposta e a carga do CPU em cada caso.

Neste exemplo específico, usaremos o servidor CentOS, mas você pode usar qualquer distribuição e obter resultados semelhantes. Observe a média de carga no topo e a linha de Solicitações por segundo na saída do ab.

Com o ab, enviaremos 50 (-c 50) solicitações concorrentes ao mesmo tempo e repetiremos o teste 1000000 vezes (indicado por -n 1000000). O Varnish retornará um número maior de solicitações por segundo e uma média de carga muito menor.

Importante: Lembre-se de que o Varnish está ouvindo na porta 80 (a porta HTTP padrão), enquanto o Apache está ouvindo na porta 8080. Você também pode anotar a quantidade de tempo necessária para concluir cada teste.

# ab -c 50 -n 100000 http://localhost/index.html

Conclusão

Neste artigo, discutimos como configurar um cache Varnish na frente de um servidor web, Apache ou Nginx. Observe que não aprofundamos no arquivo de configuração default.vcl, que nos permite personalizar a política de cache ainda mais.

Agora, você pode querer consultar a documentação oficial para obter mais exemplos de configuração ou deixar um comentário usando o formulário abaixo.

Source:
https://www.tecmint.com/install-varnish-cache-server/