Estou procurando a respeito de clustes com o Glassfish e já encontrei bastante coisa sobre as configurações necessárias, porém ainda me resta a principal dúvida, que é se a aplicação necessita de alguma adequação para rodar em cima de um glassfish com clusters.
Existe diferença? A mesma app que eu fizer para um glassfish comum, eu posso coloca-la para rodar em um glassfish com cluster?
E a respeito de sessions, conexões com banco e outras dependencias de uma aplicação web, estar rodando em um cluster faz com que eu tenha que adequar minha aplicação? Ou posso fazer um projeto comum (.war por exemplo) e colocar pra rodar…
A app é bem básica, somente tratamento de parametros, criação de algumas sessions e conexão com banco de dados via jdbc comum.
Para que uma aplicação rode em um cluster ela tem que seguir várias especificações JEE (EJB, JPA, etc). Como você citou que o seu deploy é .war e sua aplicação usa “JDBC comum”, quase certeza que ele não vai rodar “redondo” em um cluster.
Uma coisa que você deve se perguntar é por que sua aplicação precisa rodar em um cluster? Alta disponibilidade? Balancemento de carga? Se não precisa nada disto, por que o cluster?
A app vai ser integrada a um glassfish já existente, e ele já está clusterizado e configurado.
Exige mudanças então? Poderia me passar alguma documentação, links sobre como realizar essa adequação? Só achei sobre como configurar o glassfish para cluster, e não como adequar a aplicação para rodar em um glassfish com cluster.
Na minha visão achei que não teria mudanças, pois é o server que cuida da replicação, balanceamento e gerenciamento das apps instaladas nele, então isso ficaria transparente para a aplicação, não possuindo mudanças.
[quote=oyama]Para que uma aplicação rode em um cluster ela tem que seguir várias especificações JEE (EJB, JPA, etc). Como você citou que o seu deploy é .war e sua aplicação usa “JDBC comum”, quase certeza que ele não vai rodar “redondo” em um cluster.
[/quote]
Superficialmente, não tem qualquer influência se é cluster ou não…
O seu ‘com certeza’ é baseado em algum problema que vc passou?
Como eu disse, a app é bem básica, e usa jdbc do modo mais básico que existe. Tenho que adequar? Como seria essa adequação?
E em relação as dependencias, como sessions, conexões e tal, em um cluster já configurado será transparente para a aplicação?
Exemplo: se tenho 10 instancias rodando no cluster, e a requisição de um cliente for para instancia 5, essa requisição estará replicada nas outras? Caso a instancia 5 caia, o posso acessá-la na instancia 4?
Obs: quando falo “posso acessá-la” digo o servidor, pois é o servidor glassfish que estará configurado para fazer esse trabalho, não influenciando no meu código.
Pelo o que eu me lembro, seu o deploy do seu projeto for um war, o application server não replica as sessions entre as várias instancias do seu cluster. Com isto, iniciado uma session com um nó do cluster, todas as requests vão ser direcionados para o mesmo nó. Com isto perde-se a questão de alta disponibilidade: se o nó cair, a session morre e o client tem que abrir outra session. Dependendo da aplicação, este comportamento não vai trazer problemas. Só haverá replicação de session entre os vários nós se a aplicação for EJB.
Outro ponto que me chamou a atenção é você dizer que usa “JDBC básico”. Para que a coisa funcione direito em cluster, as conexões com o banco de dados deveriam ser controlados pelo application server. Mais um ponto que a não terá alta disponibilidade.
Bem, isto é o que me lembro. Posso estar enganado.
Mesma em uma configuração do tipo “um cluster como master (DAS eu acho), e os outros como dependentes” isso acontece?
Observei isso também, vou mudar para utilizar conexões do DataSource pelo glassfish, percebi que alem de ser a forma correta de fazer, vai funcionar certo pro cluster.
A respeito do load-balancer, li em um tutorial que para conseguir isso, se utiliza um outro servidor web na frente (apache) com uma ferramenta de load balancer (no tutorial a ferramenta era própria do apache) instalada, onde era configurada a interação entre o apache e o glassfishh DAS, que funcionava como servidor de aplicação (glassfish DAS clusterizado).
Será que é preciso fazer isso? O Glassfish é um web-server certo? não é somente um container servlet como o TomCat, ele deveria conseguir fazer isso sozinho…
Mas ai jah entramos muito em configuração de servidor, e não da aplicação rsrs
Uma app básica, utilizando conexão via DataSource Glassfish então já é um começo pra testar no cluster, certo?