Varnish 3 com Apache no CentOS

Acredito que todo mundo já ouviu falar do Varnish pelo menos uma vez, devido a quantidade de empresas que estão adotando-o como solução de proxy reverso, principalmente os grandes portais que tem uma quantidade enorme de acessos diariamente. Um grande caso de sucesso com a implementação do varnish é a globo.com onde pode ser visto uma apresentação da mesma aqui e aqui, explicando como foi implementado, os motivos que levaram a escolha de se utilizar varnish e números interessantes tanto de acesso quanto de custos.

Instalar e configurar o varnish não é dificil, porém como no caso da globo eles fizeram uma configuração totalmente personalizada para o cenário deles. Irei mostrar como instalar e utilizar o varnish em sua configuração padrão, o que dependendo do seu caso pode ser mais do que suficiente para ser utilizado em um blog ou em um site com uma quantidade razoavel de acessos, porém nada irá impedi-lo de configurar o varnish como desejar buscando informações externas a essa tutorial.


Atualmente estou utilizando a versão 5.6 do CentOS e irei utilizar a versão 3 do Varnish. Por padrão o varnish não está disponível nos repositórios do CentOS e o pacote disponível no repositório EPEL (Extra Packages for Enterprise Linux) é antigo, por este motivo iremos utilizar pacotes disponibilizados pelo próprio varnish.

Como root execute o comando abaixo para instalar o repositório do varnish (O comando serve tanto para i386 quanto para x86_64):


Agora instale o varnish:

# yum install varnish

Por padrão o varnish vem configurado com a porta 6081, porém iremos altera-la para a porta 80, assim toda requisição ao apache irá primeiro passar pelo varnish.

Edite o arquivo /etc/sysconfig/varnish:

# vi /etc/sysconfig/varnish

Localize a linha que contenha

 VARNISH_LISTEN_PORT=6081

E Altere para:

VARNISH_LISTEN_PORT=80

Agora iremos editar o arquivo /etc/varnish/default.vcl. Nesse arquivo nós iremos configurar o proxy reverso em si ou seja como o varnish agora está escutando a porta 80 vamos informar qual porta o apache está utilizando.

Edite o arquivo :

# vi /etc/varnish/default.vcl

Localize o conteúdo:

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

E altere apenas a porta 80 para 78 ficando deste modo:

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

Essas alterações que efetuamos tanto no arquivo /etc/sysconfig/varnish quanto no /etc/varnish/default.vcl foram apenas para alterar as portas onde o varnish e o apache estarão atuando. Eu utilizei a porta 78 como exemplo, porém você poderá utilizar a porta que desejar pois está será a porta que o apache estará utilizando que será alterada agora.

Edite o arquivo /etc/httpd/conf/httpd.conf:

# vi /etc/httpd/conf/httpd.conf

E Localize a linha:

Listen :80

Altere para a porta 78, ou a porta em que desejar que o apche utilize:

Listen :78

Salve o arquivo e reinicie o apache:

# service httpd restart

Inicie o Varnish:

# service varnish start

Através do navegador web acesse seu ip ou domínio para verificar se está tudo funcionando, no meu caso acessei através do ip 187.34.209.9 onde está sendo exibido o conteúdo passado pelo cache do varnish e pelo 187.34.209.9:78 onde está o conteúdo direto do apache. Você deverá conseguir visualizar o mesmo conteúdo pelos dois endereços.

No meu Caso criei um arquivo html simples e estou visualizando o conteúdo assim:

(Varnish - 187.34.209.9)

E Também pelo:

(Apache - 187.34.209.9:78)

Veja que pelos dois endereços eu consigo visualizar o mesmo conteúdo, agora um simples teste eu alterei o arquivo html para verificar se o cache está funcionando, acessei novamente o endereço direto do apache:

(Apache - 187.34.209.9:78)

O conteúdo da página foi alterado normalmente conforme mostra o endereço direto do apache. Agora vamos verificar o endereço padrão do varnish:

(Varnish - 187.34.209.9)

Conforme pode ser visto o endereço padrão 187.34.209.9 está com o cache do varnish exibindo o conteúdo antigo da página. O tempo de cache do varnish pode ser configurado de acordo com a sua necessidade podendo definir um tempo menor ou maior para determinada área do seu site. Você pode por exemplo configurar de uma forma que qualquer publicação ou atualização de conteúdo em sua página automaticamente já limpe o cache do varnish para que o novo conteúdo seja exibido imediatamente. 
Dependendo da forma de como você implementa o varnish será extreamente vantajoso tanto quanto economia de recursos da máquina quanto de custos de projeto e claro com a possibilidade de escalabilidade

Para maiores informações verifique a documentação oficial, com ótimos exemplos de instalação e configuração.


2 Comentário(s) em “Varnish 3 com Apache no CentOS”

Deixe um comentário