quinta-feira, 10 de janeiro de 2008

2006, GNU/Linux, Java e o TCC [Cluster Linux] parte 003

Que beleza, o cluster estava sendo construído, mas eu precisa poder testar sua capacidade de processamento e minha primeira ação neste sentido foi criar uma aplicação web para instalar no cluster. Esta aplicação web deveria ter que acessar uma base de dados para que simulasse uma aplicação real, que fizesse transações na base de dados, como consultas e gravações.
Eu já tinha resolvido iniciar estudos em Java e na época estava brincando com Mentawai (http://www.mentaframework.org) para desenvolvimentos de aplicações J2EE (este seria meu framework MVC). Antes dele estava penando estudando Struts e depois Webwork2, mas não era nada fácil produzir algo em Java e ter que declarar um monte de coisas em XML. Com Mentawai era tudo muito mais "natural" para mim, logo consegui desenvolver a aplicação web para rodar em Tomcat no cluster (já havia desistido de usar apache, porque para meu projeto, o Tomcat iria servir bem).
Beleza, a aplicação web rodando no cluster, eu acessava com Firefox, mas e como medir os tempos de processamento? Quantas requisições por segundo o cluster era capaz de processar. E se eu tivesse um cluster com 2 nós, 3 nós, ou mesmo um só computador, como eu iria obter resultados para comparação?
Antes mesmo de procurar por uma ferramenta para medição de performance, atraquei-me no desenvolvimento de uma aplicação desktop (com swing, nesta época o matisse estava me salvando, por isto optei por desenvolvê-la em Java) para disparar requisições contra o cluster e obter os tempos de cada resposta. Estava bem legal, mas para minha surpresa, o computador cliente, que estava disparando as requisições ao cluster, retornava praticamente os mesmos valores, independente de utilizar 1, 2 ou 3 computadores no cluster (certos estamos de que 1 nós não seria um cluster). Rapidamente tive a idéia de monitorar o uso de CPU de cada nó durante uma sessão de processamento e foi aí que descobri que meu notebook com processador pentium IV de 2.8GHz não seria capaz de elevar o uso de CPU, nem mesmo o nó primário (um athlon 3000+) de cluster a 100%, ou seja, o cluster estava com folga, mesmo que eu utilizasse um só nó, eu deveria ter que utilizar mais computadores clientes e aí estava um grande problema. A muito custo consegui comprar mais dois "jogos" de gabinete, placa-mae, memoria, disco rígido e processador para, juntamente com meu PC (o primário) formar o cluster. Eita projetinho mal elaborado!

Um comentário:

Eu Sou o que Sou! disse...

Olá amigo,
Estou trabalhando em um projeto de HA, e isso inclui um PostgreSQL, estou lendo muita documentações sobre Cluster e a cada Documentação lida fico mais confuso. :-)
Estavamos usando OCFS2, mas devido a uma limitação com Cyrus vamos mudar para GFS, e tinha uma idéia de com poderia montar o PostgreSQL, até ler seu artigo. :-)
Segue a idéia que eu tinha e gostaria de trocar algumas figurinhas com você por já ter passado por isso antes.

Tenho a seguinte situação:
2 máquinas 192.168.1.1 e 192.168.1.2 as duas com a partição /gfs espelhada via GFS.
na máquina 192.168.1.1 o pgdata está no /gfs o postgresql funcionando perfeito.
o que eu quero é que a máquina 192.168.1.2 acesse esse mesmo pgdata e mesma base.

Existe essa possibilidade?, qual configuração deve ser feita em ambas as máquinas?

Pergunto isso, porque como disse antes, estamos montando uma estrutura de HA de um servidor de e-mail, a função do postgresql é muito pequena nessa estrutura, apenas para arquivar documentos internos enviados e auditorias.

Versão postgresql 8.1.11
Versão S.O Debian Etch
as 2 máquinas são identicas.


Grato
Wesley Lago