overview sobre varnish

50
Overview sobre Varnish

Upload: locaweb

Post on 26-Jul-2015

925 views

Category:

Technology


2 download

TRANSCRIPT

Overview sobre Varnish

➔ O que é Varnish➔ Como funciona➔ Onde o utilizamos➔ Intalação e Configuração➔ Utilitários➔ Macetes

Varnish Cache

Varnish é um acelerador HTTP. Dentre suas funcionalidades, a principal delas é o cache de conteúdo estático.

Em alguns cenários sua efetividade provê ganhos vertiginosos de performance à sites e servidores.

Como trabalha o Varnish?

Varnish Cache

A forma mais utilizada consiste em deixá-lo rodando na porta 80, à frente do Apache. Ao receber uma requisição, o Varnish verifica se o conteúdo requisitado está presente em seu cache. Se sim, fornece esse conteúdo diretamente para o cliente. Se não, busca esse conteúdo no servidor web, o armazena no cache e o fornece para o cliente.

Varnish Cache

Varnish Cache

Varnish Cache

Quando uma requisição é atendida pelo cache do Varnish, recursos preciosos são poupados no servidor web, como por exemplo sockets no webserver, I/O de disco, CPU e memória.

Varnish Cache

Servidor de cliente com problema de sobrecarga

● Upgrade de recursos (Memória, Disco, etc);

● Servidores mais robustos;

● Otimização de aplicação.

Alguns problemas de performance podem ser resolvidos com a instalação do Varnish.

Estou falando de dinheiro!

Varnish Cache

Cenário de instalação do Varnish:

● Muita leitura de disco;● Muitas requisições à arquivos estáticos;● Disponibilidade de memória.

Varnish Cache

Onde não se aplica Varnish:

● Alta de manda de processamento por conteúdo dinâmico.

Varnish Cache

Varnish Cache

Além de tê-lo instalado em milhares de servidores shared e dedicated, temos Varnish no próprio site da Locaweb onde o utilizamos com balanceamento com 2 backends rodando Apache2.

Varnish Cache

Como já mencionado, o Varnish suporta múltiplos backends, o que nos permite criar balanceamento de carga entre os servidores web.

Varnish Cache

Varnish Cache

O balanceamento de carga, contudo, é um recurso complementar ao cache feito pelo Varnish.

Não utilizamos Varnish para fins de balanceamento. Para isso temos clusters com LVS + Heartbeat e Big IP F5.

Ao melhorar a performance de websites

com Varnish, demandamos menos

servidores, o que na prática

significa economia financeira e

TI Verde.

Varnish Cache

Instalação

Instalação do Varnish CacheA instalação do Varnish é simples:

# yum install varnish

# apt-get install varnish

Pacote ‘varnish’ e suas dependências estão presentes nos melhores repositórios.

Varnish Cache

Na Locaweb utilizamos 2 arquivos “vcl”:

● /etc/varnish/backend.vcl = configuramos o(s) backend(s).● /etc/varnish/locaweb.vcl = configuramos as regras de controle do cache● Centos: /etc/sysconfig/varnish = configurações para o daemon● Debian: /etc/default/varnish = configurações para o daemon

O arquivo default.vcl é padrão de configuração do Varnish, mas nós não o utilizamos.

Varnish Cache

VCL = Varnish Cache Language

Varnish Cache

backend.vcl:

backend default {

.host = "192.168.0.100";

.port = "81";

.connect_timeout = 90s;

.first_byte_timeout = 90s;

.between_bytes_timeout = 90s;

}

Varnish Cache

O arquivo “locaweb.vcl” contém configurações de cache do Varnish.

A configuração de VCLs deve possuir ao menos um subroutine para tratar requisições entrantes e um segundo subroutine determinando o comportamento do servidor.

Varnish Cachesub vcl_recv {

if (req.http.host == "myserver.localhost" && req.url ~ "^/myserver/.*$") {

return(pass);

}

if (req.request == "GET" && req.url ~ "\.(js)") {

return(lookup);

}

if (req.request == "GET" && req.url ~ "\.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|img|tga|wmf)$") {

unset req.http.Cookie;

return(lookup);

}

Varnish Cachesub vcl_fetch {

set beresp.ttl = 300s;

set beresp.grace = 300s;

if (beresp.status == 404) {

set beresp.ttl = 0s;

}

if (beresp.status == 500) {

set beresp.ttl = 0s;

}

if (req.request == "GET" && req.url ~ "\.(gif|jpg|jpeg|bmp|png|tiff|tif|ico|img|tga|wmf)$") {

unset beresp.http.Set-Cookie;

set beresp.ttl = 600s;

}

Varnish Cache# Maximum number of open files (for ulimit -n)

NFILES=131072

# Maximum locked memory size (for ulimit -l)

# Used for locking the shared memory log in memory. If you increase log size,

# you need to increase this number as well

MEMLOCK=82000

DAEMON_OPTS="-a :80 -f /etc/varnish/locaweb.vcl -u varnish -g varnish -s malloc,4G -T 127.0.0.1:6082 -S /etc/varnish/secret"

Utilitários

Varnish Cache

● varnishstat : Fornece, em tempo real, toda a informação que você precisa para analisar a efetividade do cache.

● varnishhist : Fornece uma visão histograma de cache de acessos.

Varnish Cache

● varnishlog : Fornece informações detalhadas sobre as requisições.

● varnishtop : Lê a memória compartilhada que varnishd registra e apresenta uma entrada de registro que ocorrem mais comumente.

Varnish Cache

● varnishadm : Prompt de administração do varnish. Pode ser utilizado para recarregar vcls e urls.

Varnish Cache

Varnish Stat

Varnish Cache- Client connections accepted: Incrementado quando é feita uma nova conexão.

- Client requests received: Este é incrementado sempre que as conexões são aceitas.

1039 Cache hits

0 Cache hits for pass

369 Cache misses

Aqui observamos "Cache hits" e "Cache misses". "Cache hits" significa que o arquivo foi servido a partir Varnish, "cache misses" significa que Varnish teve de buscar o arquivo do backend. O exemplo acima é algo como 1/3 do conteúdo, o que não é muito bom. "Cache hits for pass" é quando o Varnish recebe uma resposta do backend e descobre que não pode armazenar esse conteúdo em cache. Ele criará um objeto em cache que registra essa instrução de modo que o próximo pedido vai receber bypass.

Varnish Cache

Varnish Hist

Varnish Cache

O gráfico histograma é dividido em duas áreas. Do lado esquerdo, representado por caractere "pipe", está tudo aquilo que é atendido pelo cache do Varnish. Do lado direito, representado pelo caractere "sustenido", está tudo aquilo que é atendido pelo disco do servidor. Ou seja, o Varnish foi buscar no backend.

Varnish Cache

Varnish Log

Varnish CacheHosts mais acessados

varnishlog -i RxHeader | grep 'Host'

Urls mais acessadas

varnishlog -c | grep RxURL

Varnish Cache

Varnish Top

Varnish CacheHosts mais acessados

varnishtop -i RxHeader -I '^Host'

Urls mais acessadas

varnishtop -i RxURL

Varnish Cache

Varnish Adm

Alguns problemas conhecidos

Varnish Cache

Varnish Cache

O serviço Varnish não sobe:

1. Não há memória livre para o Varnish;

2. Erro na configuração de algum arquivo VCL.

Varnish Cache[root@l50dnn0557][varnish]# /etc/init.d/varnish start

Starting Varnish Cache: [FAILED]

[root@l50dnn0557][varnish]# varnishd -a :80 -f /etc/varnish/locaweb.vcl -u varnish -g varnish -s malloc,4G -T 127.0.0.1:6082 -p send_timeout=3600 -S /etc/varnish/secret

Message from VCC-compiler:

Expected ';' got '}'

(program line 174), at

('input' Line 7 Pos 5)

}

----#

Running VCC-compiler failed, exit 1

VCL compilation failed

Varnish Cache

Próximos passos

● RTFM (Varnish Administrator Documentation):

https://www.varnish-cache.org/docs/trunk/index.html

● Varnish Mail Listing:

https://www.varnish-cache.org/trac/wiki/MailingLists

● Varnish Group in LinkedIn:

https://www.linkedin.com/groups/Varnish-Cache-855677?home=&gid=855677&trk=my_groups-tile-grp

Varnish Cache

Dúvidas?