Utilizando o varnishtop e varnishlog
A todos aqueles que utilizam varnish, aqui estão alguns comandos úteis para obter informações sobre quem está acessando seu servidor e muitas vezes até fazendo um ataque nele. O varnishtop vai mostrar os acessos similares ao comando top do *nix, ou seja, quem mais acessa é o primeiro da lista. Já o varnishlog mostra todo o log da requisição similar ao utilizar um tail -f no logo do apache por exemplo.
Ambos podem chegar no mesmo resultado, então fica a seu critério escolher qual o que vai lhe atender melhor. Não vou entrar em detalhes de todas as opções disponíveis, para isso consulte o man do comando :D.
Hosts mais acessados
1 2 3 | varnishtop -i RxHeader -I '^Host' varnishlog -i RxHeader | grep 'Host' |
Urls mais acessadas
1 2 3 | varnishtop -i RxURL varnishlog -c | grep RxURL |
Existe também o comando varnishstat que gera estatísticas de acesso como quantidades de conexões aceitas, quantidade de arquivos em cache dentre várias outras informações. Então um man varnishstat será bem produtivo.
GlusterFS – Um sistema de arquivos para alta disponibilidade
Depois de um longo tempo sem publicar nada no blog, estou de volta com um assunto interessante: GlusterFS.
Neste artigo irei mostrar como instalar e configurar o GlusterFS para criar um sistema de armazenamento de alta disponibilidade utilizando 2 servidores. Ambos os servidores serão client e server e cada servidor será espelho do outro onde os arquivos serão replicados automaticamente entre eles, ou seja, uma espécie de raid 1 via rede.
GlusterFS é um sistema de arquivos distribuído, capaz de escalar vários petabytes. Ele trabalha sob infiniband RDMA ou tcp/ip. Os desenvolvedores recomendam os sistemas de arquivos Ext3 e Ext4. Outros sistemas de arquivos, como ZFS, ReiserFS, btrfs, JFS, também funcionam, mas não foram amplamente testados. XFS tem vários problemas de desempenho devido a sua implementação atributos estendidos, se você optar por usar XFS seu desempenho utilizando Gluster será reduzido em pelo menos 60%.
Para seu funcionamento, você não precisa de nada em especial, pode utilizar seu hardware já existente, como por exemplo servidores com discos Sata/Sata-II ou ISCSI/SaS.
Os dados dos servidores a serem utilizados neste artigo são:
1 2 3 | Servidor 01: 192.168.0.10 Servidor 02: 192.168.0.11 diretório a ser compartilhado: /var/www |
É interessante você adicionar as seguintes entradas no /etc/hosts de cada servidor:
1 2 | 192.168.0.10 servidor01 192.168.0.11 servidor02 |
Como em artigos anteriores, este aqui também é baseado em debian. Os pacotes que iremos utilizar são glusterfs-client e glusterfs-server e a instalação segue o mesmo procedimento:
1 | apt-get install glusterfs-client glusterfs-server |
Depois de instalar os pacotes, entre no diretório /etc/glusterfs, nele você verá os seguintes arquivos:
1 2 | glusterfs.vol glusterfsd.vol |
O primeiro arquivo é responsável pela configuração do client e o segundo do server. Como os servidores serão client e server ao mesmo tempo, a configuração destes arquivos precisa ser idêntica em ambas as máquinas.
Renomeie os arquivos e adicione .default ao final de cada um deles:
1 2 3 | cd /etc/glusterfs mv glusterfs.vol glusterfs.vol.default mv glusterfsd.vol glusterfsd.vol.default |
Crie o arquivo /etc/glusterfs/glusterfs.vol com o seguinte conteúdo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | # /etc/glusterfs client configuration file # volume client01 type protocol/client option transport-type tcp/client option remote-host servidor01 option remote-subvolume brick end-volume volume client02 type protocol/client option transport-type tcp/client option remote-host servidor02 option remote-subvolume brick end-volume volume replicate type cluster/replicate subvolumes client01 client02 end-volume volume writeback type performance/write-behind option aggregate-size 1MB subvolumes replicate end-volume volume cache type performance/io-cache option page-size 512MB subvolumes writeback end-volume |
Crie o arquivo /etc/glusterfs/glusterfsd.vol com o seguinte conteúdo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # /etc/glusterfs server configuration file # volume posix type storage/posix option directory /var/www end-volume volume locks type features/locks subvolumes posix end-volume volume brick type performance/io-threads option thread-count 8 subvolumes locks end-volume volume server type protocol/server option transport-type tcp option auth.addr.brick.allow 192.168.0.10,192.168.0.11 subvolumes brick end-volume |
Para entender melhor as opções usadas nas configurações, sugiro dar uma lida na página de translators.
Com os arquivos configurados, inicie o daemon com o seguinte comando:
1 | /etc/init .d /glusterfs-server start |
Adicione a seguinte entrada no /etc/fstab de ambos os servidores:
1 | /etc/glusterfs/glusterfs.vol /var/lib/glusterfs glusterfs defaults 0 0 |
Crie o diretório /var/glusterfs e monte o diretório:
1 2 | mkdir /var/glusterfs mount -a |
Agora com tudo pronto em ambos os servidores, vamos realizar os seguintes testes:
1 2 3 4 5 6 7 | - No servidor 01: Salve alguns arquivos no /var/glusterfs. - Conecte no servidor 02 e veja se os arquivos estão lá. - Execute um reboot no servidor 01. - Veja se tudo está ok no servidor 02. - Salve alguns arquivos no servidor 02. - Quando o servidor 01 voltar, verifique no /var/glusterfs se os arquivos que você salvou quando ele estava fora foram replicados. - Repita o procedimento mudando a ordem do servidores. |
Você deve estar se perguntando porque estou me baseando no diretório /var/glusterfs e não no /var/www, isto porque para a replicação funcionar, os dados precisam ser gravados no /var/glusterfs.
E isto é tudo. Estando todos os testes ok, você agora tem um raid 1 vai rede :).
Palestra Nginx Linuxcon 2010
Participei do Linuxcon 2010, muito bom por sinal. Devido ao trabalho, fui somente no segundo dia (01/09), minha palestra estava marcada para as 15:00, cheguei lá por volta as 12:20, ainda tinha que almoçar e dar um tapa final nos slides.
Assim que entrei e peguei minha credencial, encontrei com o Maddog e enquanto todos estavam rodeando ele para tirar fotos, passou o Andrew Morton, tive o prazer de conversar um pouco com ele, muito atencioso, só que estava com um pouco de pressa, pois estava olhando para o relógio, pena que não pude tirar nenhuma foto, não passou uma viva alma naquele momento.
Depois disso, fui para a sala da Locaweb, deixei minha mochila e fui almoçar, praça de alimentação lotada e a única alternativa foi comer McDonald’s. Terminado o almoço, ou melhor, lanche, voltei para terminar os slides e fazer uma revisão geral para ver se não tinha nenhum erro. Infelizmente não tive muito tempo para elaborar esta palestra, foi meio que de última hora e por este motivo tudo foi meio improvisado. O pessoal estava com várias perguntas legais, muitas dúvidas inteligentes, no final fiquei batendo um papo com algumas pessoas.
Para aqueles que quizerem baixar o conteúdo que foi apresentado, clique aqui.