Varnish Server Cache Ricardo Brito do Nascimento 8 de dezembro de 2010 Resumo O Varnish é uma solução de cache e aceleração de processamento para os mais diversos tipos de aplicativos. 1 Introdução O Varnish é um cache web de alta performance. Ele utiliza os recursos avançados do cerne Linux 2.6, FreeBSD 6/7 e Solaris 10 para atingir seu alto desempenho. Entre as características desta ferramenta de cache-proxy, destaca-se: 1. Design moderno; 2. VCL Varnish Configuration Language uma linguagem de configuração muito flexível; 3. O balanceamento de carga com a verificação de estado dos backends; 4. Suporte parcial a tecnologia ESI; 5. Reescrita de URL; 6. Manipulação elegante para backends inoperantes; O Varnish trabalha na memória virtual, e é o kernel do sistema operacional que decide qual processo, e a quantidade de RAM destinada, ao mapear o espaço de endereçamento virtual dos processos. Esta ferramenta cache foi desenvolvida para trabalhar em arquitetura de 64 bits, e usar memória virtual; em um sistema de 32 bits, que foge o estilo inicial, poderá ter problemas para configurar mais de 2 GB de armazenamento. Atualmente não há planos para adicionar suporte a HTTPS na estrutura do Varnish, até que possa encontrar um caminho onde agrega-se um valor significativo, em relação à execução estável de stand-alone proxy HTTPS. 1
Embora não trabalhe nativamente com o protocolo HTTPS, outros recursos funcionam perfeitamente, como múltiplos VirtualHosts e o balanceamento de carga com algorítimo round-robin, isto através da VCL. 1.1 Porque o nome Varnish? Varnish do inglês, significa verniz, e segundo sua história (1), basicamente o fato instigador do nome, foi um cartaz publicitário, com a palavra Vernisage, que foi verificada em um dicionário, a qual apresentou três seguintes significados: r.v. var nished, var nish ing, var nish es 1. To cover with varnish. Para cobrir com verniz. 2. To give a smooth and glossy finish to. Para dar um acabamento liso e brilhante para 3. To give a deceptively attractive appearance to; gloss over. Para dar uma aparência atraente para enganosamente; encobrir. As três descreve o que acontece ao sistema de backend quando colocado atrás do Varnish. 2 Instalação Com o Varnish tem-se a opção de instalação por binários, repositórios ou através do código fonte, como na maioria dos programas para Linux. Os binários, disponíveis para Debian, FreeBSD, RHEL5 e Ubuntu; e o código fonte pode ser baixado em http://www.varnish-cache.org/releases/ 2.1 Requisitos O Varnish requer um sistema operacional de 64 bits, sendo Linux, FreeBSD ou Solaris. 2.2 Dependências Primeiramente, antes de iniciar a instalação do Varnish as dependências devem estar contempladas no Sistema Operacional. 2
2.2.1 Ubuntu/Debian autotools-dev automake1.9 libtool autoconf libncurses-dev xsltproc groff-base libpcre3-dev pkg-config 2.2.2 RHELS/CentOS/Fedora automake autoconf libtool ncurses-devel libxslt groff pcre-devel pkgconfig 2.3 por Repositórios: Ubuntu/Debian $ curl http://repo.varnish-cache.org/debian/gpg-key.txt \ apt-key add - $ echo "deb http://repo.varnish-cache.org/debian/ \ lenny varnish-2.1" \ >> /etc/apt/sources.list $ aptitude update $ aptitude install varnish 3
2.4 por Repositórios: RHELS/CentOS/Fedora A intalação do varnish está disponível através do repositório EPEL. Infelizmente a versão mais recente disponível é o varnish 2.0.6. Isto significa, se a instalação no RH-Like for feita através do repositório. $ yum install varnish 2.5 Por binários: FreeBSD $ pkg add -r varnish 2.6 Por binários: Ubuntu/Debian $ dpkg -ih varnish 2.7 Por binários: RHELS/CentOS/Fedora $ rpm - -nosignature -ivh http://repo.varnish-cache.org/redhat/el5/noarch/varnishrelease-2.1-2.noarch.rpm 2.8 por fonte FreeBSD $ cd /usr/ports/varnish make install clean 2.9 por fonte Linux Para obter o código fonte do Varnish é necessário o subversion. Execute os comandos: $ svn co http://varnish-cache.org/svn/branches/2.1 varnish-cache $ cd varnish-cache $ sh autogen.sh $ sh configure $ make $ /bin/varnishtest &&./varnishtest tests/*.vtc $ make install 4
A documentação oficial, alerta que podem ocorrer falha no teste, e diz não se preocupe de um ou dois testes falharem, alguns dos testes são demasiadamente longos. Se tudo ocorreu corretamente, o Varnish, agora está instalado no diretório /usr/local, o binário varnishd está em /usr/local/sbin/varnishd e o arquivo de configuração padrão está em /usr/local/etc/verniz/default.vcl. 3 Utilizando o Varnish Para utilizar o Varnish adequadamente, o administrador de sistemas, deve saber como configurar seu aplicativo ou servidor web e ter conhecimento básico do protocolo HTTP, além do Varnish funcionando com a configuração padrão. O Varnish atua com o conceito de servidores backend ou origin. Um servidor backend é o responsável por prover conteúdo que será acelerado pelo Varnish. A primeira tarefa é configurar onde encontrar este conteúdo. 4 Varnish Configuration Language VCL O VCL é a linguagem de configuração utilizada no Varnish, desenvolvida pelos autores Dag-Erling Smørgrav, Poul-Henning Kamp, Kristian Lyngstøl, Per Buer. É uma linguagem de pequeno porte, especificamente projetada para ser usada na definição e na manipulação de poĺıticas de cache para o acelerador HTTP Varnish. Quando uma nova configuração é carregado, o processo de gestão traduz varnishd o código de VCL para C e compila-lo para um objeto comum, que é então ligado dinamicamente no processo servidor. Referências [1] VARNISH. Varnish Cache. nov 2010. Disponível em: <http://www.varnishcache.org/>. Acesso em: 07 dez 2010. [2] AGUIAR, A. S. Varnish: Uma camada de velocidade. mai 2010. Disponível em: <http://www.vivaolinux.com.br/artigos/impressora.php?codigo=11480>. Acesso em: 07 dez 2010. [3] VARNISH. General questions. dez 2010. Disponível em: <http://www.varnish-cache.org/docs/2.1/faq/general.html#what-isvarnish>. Acesso em: 07 dez 2010. 5
[4] VARNISH. Releases Varnish. mai 2010. Disponível em: <http://www.varnish-cache.org/releases>. Acesso em: 07 dez 2010. 6