Cluster com Glassfish, influencia na aplicação?

Pessoal,

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.

Obrigado.

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?

Especificação do cliente :?

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.

Muito obrigado.

[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?

felipeguerra

Até que "nível’ vai esse superficialmente?

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.

Obrigado

1º Não sei como configura load-balance no Glassfish, no Weblogic eu sei.

2º Supondo que as conexões com o banco seja entregues pelo Datasource configurado corretamente no Application Server, tudo certo.

O Apache tem algum plugin para trabalhar em conjunto com o Glassfish? Dá uma pesquisada.

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?

Muito obrigado