• Nenhum resultado encontrado

Varnish Server Cache

N/A
N/A
Protected

Academic year: 2021

Share "Varnish Server Cache"

Copied!
9
0
0

Texto

(1)

Varnish – Server Cache

Ricardo Brito do Nascimento

10 de dezembro de 2010

Resumo

O Varnish ´e uma solu¸c˜ao de cache e acelera¸c˜ao de processamento para os mais diversos tipos de aplicativos.

1

Introdu¸

ao

O Varnish ´e um cache web de alta performance. Ele utiliza os recursos avan¸cados 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¸c˜ao muito flex´ıvel;

3. O balanceamento de carga com a verifica¸c˜ao de estado dos backends; 4. Suporte parcial a tecnologia ESI;

5. Reescrita de URL;

6. Manipula¸c˜ao elegante para backends inoperantes;

O Varnish trabalha na mem´oria virtual, e ´e o kernel do sistema operacional que decide qual processo, e a quantidade de RAM destinada, ao mapear o espa¸co de endere¸camento virtual dos processos.

Esta ferramenta cache foi desenvolvida para trabalhar em arquitetura de 64 bits, e usar mem´oria virtual; em um sistema de 32 bits, que foge o estilo inicial, poder´a ter problemas para configurar mais de 2 GB de armazenamento.

(2)

Embora n˜ao trabalhe nativamente com o protocolo HTTPS, outros recursos funcionam perfeitamente, como m´ultiplos VirtualHosts e o balanceamento de carga com algor´ıtimo round-robin, isto atrav´es da VCL.

1.1

Porque o nome Varnish?

Varnish do inglˆes, significa verniz, e segundo sua hist´oria (1), basicamente o fato instigador do nome, foi um cartaz publicit´ario, com a palavra ”Vernisage”, que foi verificada em um dicion´ario, a qual apresentou trˆes 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ˆencia atraente para enganosamente; encobrir.

As trˆes descreve o que acontece ao sistema de backend quando colocado atr´as do Varnish.

2

Instala¸

ao

Com o Varnish tem-se a op¸c˜ao de instala¸c˜ao por bin´arios, reposit´orios ou atrav´es do c´odigo fonte, como na maioria dos programas para Linux.

Os bin´arios, dispon´ıveis para Debian, FreeBSD, RHEL5 e Ubuntu; e o c´odigo 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ˆ

encias

Primeiramente, antes de iniciar a instala¸c˜ao do Varnish as dependˆencias devem estar contempladas no Sistema Operacional.

(3)

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´

orios: Ubuntu/Debian

$ curl http://repo.varnish-cache.org/debian/GPG-key.txt \ | aptkey add

-$ echo "deb http://repo.varnish-cache.org/debian/ \ lenny varnish-2.1" \

>> /etc/apt/sources.list $ aptitude update

(4)

2.4

por Reposit´

orios: RHELS/CentOS/Fedora

A intala¸c˜ao do varnish est´a dispon´ıvel atrav´es do reposit´orio EPEL. Infelizmente a vers˜ao mais recente dispon´ıvel ´e o varnish 2.0.6. Isto significa, se a instala¸c˜ao no RH-Like for feita atrav´es do reposit´orio.

$ yum install varnish

2.5

Por bin´

arios: FreeBSD

$ pkg add -r varnish

2.6

Por bin´

arios: Ubuntu/Debian

$ dpkg -ih varnish

2.7

Por bin´

arios: RHELS/CentOS/Fedora

$ rpm - -nosignature -ivh http://repo.varnish-cache.org/redhat/el5/noarch/varnish-release-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´odigo fonte do Varnish ´e necess´ario 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

(5)

A documenta¸c˜ao oficial, alerta que podem ocorrer falha no teste, e diz ’n˜ao se preocupe de um ou dois testes falharem, alguns dos testes s˜ao demasiadamente longos’.

Se tudo ocorreu corretamente, o Varnish, agora est´a instalado no diret´orio /usr/local, o bin´ario ‘varnishd’ est´a em /usr/local/sbin/varnishd e o arquivo de configura¸c˜ao padr˜ao est´a 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´asico do protocolo HTTP, al´em do Varnish funcionando com a configura¸c˜ao padr˜ao.

O Varnish atua com o conceito de servidores “backend” ou “origin”. Um servidor backend ´e o respons´avel por prover conte´udo que ser´a acelerado pelo Varnish. A primeira tarefa ´e configurar onde encontrar este conte´udo.

Isto ´e feito no arquivo de configura¸c˜ao padr˜ao do Varnish, o InstallDir/ varnish/default.vcl, que provavelmente estar´a em /usr/local/etc/varnish/ de-fault.vcl ou /etc/varnish/dede-fault.vcl.

Logo no topo deste arquivo de configura¸c˜ao, haver´a um bloco com a seguinte aparˆencia:

# backend default { # .host = "127.0.0.1"; # .port = "8080"; # }

Este trecho de configura¸c˜ao, comentado por #, escrito na linguagem VCL, define o servidor default (padr˜ao) que hospeda o conte´udo a ser cacheado e acelerado pelo Varnish, ou seja o backend.

Com trechos deste tipo, o Varnish pode ter v´arias infra-estruturas definidas e at´e aglomerados de backends para fins de balanceamento de carga.

Para habilit´a-lo, vamos retirar o coment´ario e apontar para um servidor v´alido na rede, considerando a porta do servi¸co. O trecho dever´a ficar parecido com o trecho abaixo, ap´os retirar os coment´arios e configurar valores v´alidos:

backend default { .host = "192.168.1.1"; .port = "80";

(6)

3.1

Iniciando o Varnish

Inicialmente deve-se parar o processo do Varnish, se por ventura estiver rodando, execute:

# pkill varnishd

Com status de super usu´ario (root), execute o seguinte comando para iniciar o Varnish:

# varnishd -f InstallDir/varnish/default.vcl \ -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:8080

-f /usr/local/etc/varnish/default.vcl – indica o arquivo de configura¸c˜ao a ser utilizado.

-s malloc,1G – define o tipo de armazenamento o Varnish utilizar´a para o conte´udo de cache.

-T 127.0.0.1:2000 –

-a 0.0.0.0:8080 – Especifica que Varnish escutar´a a porta 8080, recebendo requisi¸c˜oes HTTP. Em um ambiente de produ¸c˜ao normalmente a porta padr˜ao escutada, ´e a porta 80 (HTTP).

Agora Varnish est´a em execu¸c˜ao. Para testar o funcionamento correto, use o navegador acessar a m´aquina, na qual foi configurado o Varnish, exemplo: http: //192.168.1.2:8080/, dever´a apresentar a aplica¸c˜ao web que esta rodando no servidor http://192.168.1.1:80.

Ap´os estas altera¸c˜oes a ´unica chance do aplicativo n˜ao ter sido acelerado, ´e usa cookies para cada sess˜ao (Varias aplica¸c˜oes em PHP e Java parecem enviar cookies de sess˜ao mesmo que n˜ao seja necess´ario) ou se utiliza sess˜ao autenti-cada, a qual o Varnish n˜ao far´a cache.

Para iniciar o Varnish na porta 80, execute o comando da seguinte forma: # varnishd -f InstallDir/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 O que ´e equivalente a: # varnishd -f InstallDir/varnish/default.vcl -s malloc,1G -T 127.0.0.1:2000 -a 0.0.0.0:80 3.1.1 Dimensionamento de Cache

Definir a quantia de mem´oria e/ou disco, e o tipo a ser utilizado, SATA – Serial Advanced Technology Attachment, ISCSI – , FC – Fibre Chanel ou SAS – Serial Attached ISCSI, para montar a infraestrutura o Varnish pode ser uma tarefa complicada. Mas sempre considera-se:

• Qu˜ao grande ´e o volume de acesso de dados, para um portal ou s´ıtio; o tamanho da p´agina com todas as coisas nela contida, e do tamanho de

(7)

• Como ´e caro para gerar um objeto? `As vezes faz sentido imagens cache apenas um pouco ou n˜ao cache-los em tudo, se eles s˜ao baratos para servir de back-end e vocˆe tem uma quantidade limitada de mem´oria.

3.2

Registro de Eventos — Logs

Uma das caracter´ısticas realmente interessante ´e como o Varnish trabalha com o gerenciamento de logs. Em vez de gravar os registro em um arquivo mapeado em disco no sistema operacional, ele utiliza um segmento de mem´oria com-partilhado. Quando se esgota o espa¸co deste segmento, o Varnish sobrescreve automaticamente os registros mais antigos.

A vantagem deste processo ´e a agilidade para registrar o evento, evitando o acesso ao sistema de arquivos, que ´e um processo lento, e n˜ao requer espa¸co em disco. Por outro lado se n˜ao tiver um programa para persistir os logs em disco o hist´orico de todos os eventos ir˜ao desaparecer.

O varnish, possui um programa nativo chamado varnishlog, com o qual pode-se acompanhar o registro dos eventos, em tempo real. Este programa ´e executado via linha de comando. Este programa faz parte do processo master do Varnish, e verifica o bom andamento do cache.

Havendo acessos a m´aquina onde varnish, est´a rodando, o resultado ser´a semelhante a este trecho:

11 SessionOpen c 127.0.0.1 58912 0.0.0.0:8080 11 ReqStart c 127.0.0.1 58912 595005213 11 RxRequest c GET

11 RxURL c /

11 RxProtocol c HTTP/1.1

11 RxHeader c Host: localhost:8080 11 RxHeader c Connection: keep-alive

A primeira coluna ´e o numero que identifica a requisi¸c˜ao, todas as linhas que possuem o mesmo numero fazem parte da mesma transa¸c˜ao HTTP.

A segunda coluna ´e a etiqueta da mensagem, todas as entradas s˜ao etique-tadas, e ordenadas no inicio da atividade. As etiquetas ou tags come¸cando com Rx indicam que o Varnish est´a recebendo dados e Tx indica o envio de dados.

A terceira coluna apresenta a origem dos dados, sendo o cliente representado por (c) backend representado por (b).

(8)

-b Apenas apresenta as linhas do registo de tr´afego que entram e os servidores de backend. Isso ´e ´util quando se deseja otimizar as taxas de acesso ao cache;

-c Mesmo que -b, mas para o tr´afego do lado do cliente.

-i tag Exibe apenas as linhas com a etiqueta especificada. -I varnishlog Ses-sionOpen”, Nota: s´o vai apresentar as novas sess˜oes; as tags s˜ao case sensitive.

-I Filtrar os dados atrav´es de Express˜ao Regular. Para mostrar todos os cabe¸calhos de cookies provenientes dos clientes: $ varnishlog -c -i RxHeader -I Cookie;

-o Grupo de registro por ID de requisi¸c˜ao.

4

Varnish Configuration Language – VCL

O VCL ´e a linguagem de configura¸c˜ao utilizada no Varnish, desenvolvida pelos autores Dag-Erling Smørgrav, Poul-Henning Kamp, Kristian Lyngstøl e Per Buer.

´

E uma linguagem de pequeno porte, especificamente projetada para ser usada na defini¸c˜ao e na manipula¸c˜ao de pol´ıticas de cache para o acelerador HTTP Varnish.

Quando uma nova configura¸c˜ao ´e carregada, o processo gestor varnishd traduz o c´odigo de VCL para C, o compilando para um objeto que ser´a ent˜ao ligado e compartilhado dinamicamente aos processos do servidor.

4.1

Sintaxe

A linguagem VCL foi deliberadamente criada, similar as linguagens C e Perl. Onde os blocos s˜ao delimitados por chaves, ponto e virgula para fim de senten¸ca, e os coment´arios, podem ser escritos como em C, C++ ou Perl.

Al´em da atribui¸c˜ao do tipo C (=), compara¸c˜ao (==) e os operadores booleano (!, && e ||), o VCL suporta express˜oes regulares e verifica¸c˜ao de ACL atrav´es da utiliza¸c˜ao do operador ∼. No trato com strings, elas podem ser concatenadas apenas em coloc´a-las uma ap´os a outra, sem qualquer operador adicional.

Referˆ

encias

[1] VARNISH. Varnish Cache. nov 2010. Dispon´ıvel em: <http://www.varnish-cache.org/>. Acesso em: 07 dez 2010.

[2] RS compute. Hardware utilizado no armazenamento de backup e recupera¸c˜ao. dez 2010. Hardware utilizado no armazenamento de backup e recupera¸c˜ao.

(9)

Dispon´ıvel em: <http://www.compute-rs.com/pt/conselho-1556281.htm>. Acesso em: 10 dez 2010.

[3] 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.

[4] VARNISH. General questions. dez 2010. Dispon´ıvel em:

<http://www.varnish-cache.org/docs/2.1/faq/general.html#what-is-varnish>. Acesso em: 07 dez 2010.

[5] VARNISH. Releases Varnish. mai 2010. Dispon´ıvel em: <http://www.varnish-cache.org/releases>. Acesso em: 07 dez 2010.

Referências

Documentos relacionados

123 As principais conclusões deste trabalho apontam para uma maior participação dos indivíduos de Oliveira de Azeméis no que respeita à participação em

(A-E) Ferric chloride, black color indicates the presence of phenolic compounds; (A-B) Secondary phloem, phellem cells with phenolic content (arrows); (C,E)

Através da interpretação do gráfico de distribuição anual de focos do qual faz relações com os satélites do estudo, no período de 2003 a 2012 (Figura 9), nota-se que

Finalmente quem percebe o currículo como o conhecimento escolar não só manifesto, mas também “oculto” e que o mesmo está relacionado à formação de aspectos

Ainda, a respeito deste filme, gostaria de destacar as distintas maneiras como três personagens - Stanley, seu amigo Mitch, e um garoto de recados – acendem, em situações diversas,

e) Demonstrar que a operação configura um objeto que se concretiza através de um conjunto de obras, equipamentos e serviços relacionados exclusivamente entre si e que são

Grande Dourados, no uso das atribuições que lhe foram conferidas pela Portaria nº 779, de 26/08/2014, considerando a Portaria nº 1.369/10, de 07/12/2010, que

a) Levantamento de Requisitos – Foi analisado o funcionamento de uma oficina mecânica para identificar os requisitos e funcionalidades que se espera do sistema. c)