Varnish Server Cache

Documentos relacionados
Varnish Server Cache

Lazarus pelo SVN Linux/Windows

Entendendo como funciona o NAT

Programando em PHP. Conceitos Básicos

Gerenciamento de Redes de Computadores. Pfsense Introdução e Instalação

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

TRABALHO COM GRANDES MONTAGENS

Boas Práticas de Desenvolvimento Seguro

INTRODUÇÃO À OTIMIZAÇÃO

Como Instalar Programas no GNU/Linux. Elexsandro Rangel dos Santos

Configurando um servidor DHCP

Programação Web Prof. Wladimir

Curso de Linux Básico

COORDENAÇÃO DE TECNOLOGIA (COTEC) MAIO/2010

PARANÁ GOVERNO DO ESTADO

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Uma poderosa ferramenta de monitoramento. Madson Santos - madson@pop-pi.rnp.br Técnico de Operação e Manutenção do PoP-PI/RNP

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas

Internet e Programação Web

Linux - Servidor de Redes

Introdução ao PHP. Prof. Késsia Marchi

2 echo "PHP e outros.";

PHP AULA1. Prof. Msc. Hélio Esperidião

XDOC. Solução otimizada para armazenamento e recuperação de documentos

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

Módulo e-rede VirtueMart v1.0. Manual de. Instalação do Módulo. estamos todos ligados

JDBC Java Database Connectivity

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

Cap 03 - Camada de Aplicação Internet (Kurose)

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Manual de Instalação PIMSConnector em Windows

Sistemas Operacionais

Manual de Instalação. Instalação via apt-get

Relatorio do trabalho pratico 2

Sistemas Distribuídos

Arquitetura de Rede de Computadores

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Versionamento de Código. Núcleo de Desenvolvimento de Software

ENDEREÇOS DE REDE PRIVADOS até até até Kernel

Servidor proxy - Squid PROFESSOR : RENATO WILLIAM

BACKUP ONLINE LINHA OFFICE

Scriptlets e Formulários

Aplicação Prática de Lua para Web

Integração entre o IBM HTTP SERVER, APACHE WEB Server e IBM Websphere Application Server

Instalando o Debian em modo texto

Redes de Computadores II

EAI Manual do Administrador

LOGs e ALERTAS de DESEMPENHO

Desenvolvendo Websites com PHP

Instalando o Internet Information Services no Windows XP

Salvando modificações localmente (commit) Enviando modificações para o servidor (push) Sinalizando versão estável (tag)

Manual do usuário. Mobile Auto Download

Aula 03 - Projeto Java Web

Para funcionamento do Netz, alguns programas devem ser instalados e alguns procedimentos devem ser seguidos. São eles:

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Manual de Instalação PIMSConnector em Linux

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira


2 de maio de Remote Scan

Manual de backup do banco de dados PostgreSQL - Versão 2. Setembro-2011

Sistemas Operacionais

Manual de Administração

Redes de Computadores

TCEnet e TCELogin Manual Técnico

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

TRANSMISSOR ECF. Sistema de transmissão de arquivos Nota Fiscal Paulista. Manual de Utilização

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

Firewall. Tutorial Firewall em Linux Acadêmicos: Felipe Zottis e Cleber Pivetta

Como é o Funcionamento do LTSP

Introdução a listas - Windows SharePoint Services - Microsoft Office Online

Formação de Administradores de Redes Linux LPI level 1

FileMaker Pro 14. Utilização de uma Conexão de Área de Trabalho Remota com o FileMaker Pro 14

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

3º Exercício Prático: DNS

Manual de Instalação e Configuração

Online Help StruxureWare Data Center Expert

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

COORDENAÇÃO DE TECNOLOGIA (COTEC) OUTUBRO/2010

Varnish-Cache: Velocidade e disponibilidade para aplicações WEB

TUTORIAL DE INSTALAÇÃO DO PFSENSE E UMA REDE INTERNA NO VIRTUALBOX

Conceitos de relação de confiança

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

GUIA INTEGRA SERVICES E STATUS MONITOR

Sistemas Operacionais de Rede Linux - Gerenciamento de Arquivos

Curso de extensão em Administração de sistemas GNU/Linux: redes e serviços

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

FreeBSD Proxy squid autenticado com o Actvie Directory por ntlm auth. Informações relevantes antes de dar início a este artigo

Programação WEB II. Sessions e Cookies. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Backup. Tutorial TGC Backup

JobScheduler Empresa: Assunto: Responsável: Dados de Contato: Suporte: Comercial: Financeiro:

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

Transcrição:

Varnish Server Cache Ricardo Brito do Nascimento 10 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. Isto é feito no arquivo de configuração padrão do Varnish, o InstallDir / varnish/default.vcl, que provavelmente estará em /usr/local/etc/varnish/ default.vcl ou /etc/varnish/default.vcl. Logo no topo deste arquivo de configuração, haverá um bloco com a seguinte aparência: # backend default { #.host = "127.0.0.1"; #.port = "8080"; # } Este trecho de configuração, comentado por #, escrito na linguagem VCL, define o servidor default (padrão) que hospeda o conteúdo a ser cacheado e acelerado pelo Varnish, ou seja o backend. Com trechos deste tipo, o Varnish pode ter várias infra-estruturas definidas e até aglomerados de backends para fins de balanceamento de carga. Para habilitá-lo, vamos retirar o comentário e apontar para um servidor válido na rede, considerando a porta do serviço. O trecho deverá ficar parecido com o trecho abaixo, após retirar os comentários e configurar valores válidos: backend default {.host = "192.168.1.1";.port = "80"; } 5

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ário (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ção a ser utilizado. -s malloc,1g define o tipo de armazenamento o Varnish utilizará para o conteúdo de cache. -T 127.0.0.1:2000 -a 0.0.0.0:8080 Especifica que Varnish escutará a porta 8080, recebendo requisições HTTP. Em um ambiente de produção normalmente a porta padrão escutada, é a porta 80 (HTTP). Agora Varnish está em execução. Para testar o funcionamento correto, use o navegador acessar a máquina, na qual foi configurado o Varnish, exemplo: http: //192.168.1.2:8080/, deverá apresentar a aplicação web que esta rodando no servidor http://192.168.1.1:80. Após estas alterações a única chance do aplicativo não ter sido acelerado, é usa cookies para cada sessão (Varias aplicações em PHP e Java parecem enviar cookies de sessão mesmo que não seja necessário) ou se utiliza sessão autenticada, a qual o Varnish não fará 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 é 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ória 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ão grande é o volume de acesso de dados, para um portal ou sítio; o tamanho da página com todas as coisas nela contida, e do tamanho de todas as páginas e objetos ligados, desde a raiz. 6

Como é caro para gerar um objeto? Às vezes faz sentido imagens cache apenas um pouco ou não cache-los em tudo, se eles são baratos para servir de back-end e você tem uma quantidade limitada de memória. 3.2 Registro de Eventos Logs Uma das características realmente interessante é 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ória compartilhado. Quando se esgota o espaço deste segmento, o Varnish sobrescreve automaticamente os registros mais antigos. A vantagem deste processo é a agilidade para registrar o evento, evitando o acesso ao sistema de arquivos, que é um processo lento, e não requer espaço em disco. Por outro lado se não tiver um programa para persistir os logs em disco o histórico de todos os eventos irão desaparecer. O varnish, possui um programa nativo chamado varnishlog, com o qual podese acompanhar o registro dos eventos, em tempo real. Este programa é 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áquina onde varnish, está rodando, o resultado será 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 é o numero que identifica a requisição, todas as linhas que possuem o mesmo numero fazem parte da mesma transação HTTP. A segunda coluna é a etiqueta da mensagem, todas as entradas são etiquetadas, e ordenadas no inicio da atividade. As etiquetas ou tags começando com Rx indicam que o Varnish está 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). A quarta coluna é o registro sobre as requisições em HTTP. 7

-b Apenas apresenta as linhas do registo de tráfego que entram e os servidores de backend. Isso é útil quando se deseja otimizar as taxas de acesso ao cache; -c Mesmo que -b, mas para o tráfego do lado do cliente. -i tag Exibe apenas as linhas com a etiqueta especificada. -I varnishlog SessionOpen, Nota: só vai apresentar as novas sessões; as tags são case sensitive. -I Filtrar os dados através de Expressão Regular. Para mostrar todos os cabeçalhos de cookies provenientes dos clientes: $ varnishlog -c -i RxHeader -I Cookie; -o Grupo de registro por ID de requisição. 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 e 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 é carregada, o processo gestor varnishd traduz o código de VCL para C, o compilando para um objeto que será então 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ão delimitados por chaves, ponto e virgula para fim de sentença, e os comentários, podem ser escritos como em C, C++ ou Perl. Além da atribuição do tipo C (=), comparação (==) e os operadores booleano (!, && e ), o VCL suporta expressões regulares e verificação de ACL através da utilização do operador. No trato com strings, elas podem ser concatenadas apenas em colocá-las uma após a outra, sem qualquer operador adicional. Referências [1] VARNISH. Varnish Cache. nov 2010. Disponível em: <http://www.varnishcache.org/>. Acesso em: 07 dez 2010. [2] RS compute. Hardware utilizado no armazenamento de backup e recuperação. dez 2010. Hardware utilizado no armazenamento de backup e recuperação. 8

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-isvarnish>. 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. 9