Preciso configurar uma aplicação em Load Balance, mas não sei como será a configuração dos servidores.
Gostaria que vocês me falassem o que isso pode impactar na aplicação e as possíveis maneiras de se configurar servidores em load balance, por exemplo, é possível fazer a configuração do load balance pelo tom cat?
Preciso configurar uma aplicação em Load Balance, mas não sei como será a configuração dos servidores.
Gostaria que vocês me falassem o que isso pode impactar na aplicação e as possíveis maneiras de se configurar servidores em load balance, por exemplo, é possível fazer a configuração do load balance pelo tom cat?
Obrigado[/quote]
João,
Se sua aplicação tiver autenticação usando sessão como base você deve garantir que o loadbalance sempre vai te redirecionar para o mesmo servidor. Na sua aplícação não é necessário mudar uma linha de código.
Entendi.
Mas uma dúvida que tenho é com relação a configuração do load balance no servidor.
Pesquisando um pouco sobre o assunto vi que pode ser feita de várias maneira, por exemplo, no hardware com LVS ou no próprio tom cat.
Negociando com o cliente agredito que vá sobrar pra mim essa configuração. Dentre as que você conhece, você sabe me dizer qual seria a mais indicada, considerando também a coplexidade, visto que sou leigo no assunto !
Porém, se meu inglês não falhou, essa configuração não replica seção, ele só distribui as requisições entre os web containers. Então se um dos servidores cair o usuário perderá sua seção, certo??
Se for isso mesmo, acredito que essa não seja a melhor solução!
Joaozava, vamos ver se consigo “clarear” alguma coisa pra vc.
Vamos supor dois tipos de aplicações:
a) Aplicação web stateless, não utiliza a sessão para nada, ou seja, recebe a requisição faz o que tem que fazer e retorna sem registrar nada na sessão.
Estratégia para balanceamento
Adotar a que deixa os servidores com o mesmo número de sessões com requisições equalizadas; ao verificar o número de sessões de um servidor deverá ter 50 sessões por exemplo o verificar o outro também deverá ter também 50.
Neste tipo de balanceamento, o balancer recebe a requisição e repassa para o servidor que tiver recebido menos requisições.
b) Aplicação web statefull, utilização a sessão para atender o usuário.
Estratégia para balanceamento
Adotar a que deixa o usuário sempre conectado no servidor que recebeu a primeira requisição, porque se a próxima requisição depender de dados contidos na sessão e ela for desviada para o outro servidor haverá um erro.
Dá para utilizar uma aplicação que utiliza sessões (b) adotando a estratégia descrita no item (a)? Sim, mas para isso temos que CLUSTERIZAR os servidores, a clasterização fará com que as sessões ao serem criadas o que for incluido nelas sejam replicados para o(s) outro(s) servidore(s).
Ponto negativo na estratégia descrita no item (b): ao ocorrer um erro o usuário será obrigado a executar o login novamente e reiniciar os procedimentos que estavam sendo executados, porque tudo o que foi feito estava na memória de um único servidor que agora não consegue mais atendê-lo.
Na solução do link que passei no post anterior diz que as requisições do mesmo usuário irão sempre para o mesmo servidor. Então daria certo se a aplicação utilizar sessão.
A minhas dúvidas são:
Se o servidor cair??? se estiver clusterizado a sessão não é perdida??
Criar load balance pelo Apache Web Server é uma boa solução, seria uma solução, digamos, “parruda”? Ou criar por hardware ou DNS, LVS seria melhor??
Se o servidor cair, o que estiver nele será perdido sim. O detalhe neste contexto é o seguinte: Quanto o balancer recebe a primeira requisição ele repassa para o servidor, o servidor (SE ESTIVER CLUSTERIZADO << não confundir isso com balanceamento) irá criar uma sessão e logo em seguida irá copiar esta seção que foi criada para o outro servidor. Quando o seu sistema atualiza a sessão no servidor que o usuário está conectado (inclusão de um carrinho de compra) esta atualização também é copiada para o outro servidor. Porisso, se o servidor que o usuário está conectado cair, não tem problema, porque o outro servidor que irá receber a próxima requisição está atualizado, compatível com o servidor que caiu como se fosse um “espelho”.
Por hardware é a melhor solução (minha opinião), pois acho vc não irá se envolver com configurações neste ponto. Se a empresa puder bancar isso seria uma boa pra você.
P.S Clusterizações / Balanceamentos são muito chatos de se fazer, passíveis de muitos problemas ao configurar sendo aconselhados somente se não houver nenhuma outra alternativa.
Portanto digamos que esteja cluterizado e balanceado, se o servidor do usuário cair ele não perde a sessão, pois a mesma está replicada nos demais servidores, correto?
Bom, seguindo o raciocionio que sim, se eu não tiver escolha e implementar a solução do Apache, se os servidores estiverem clusterizados isso seria transparente para mim ou teria que realizar configurações específicas na configuração do balancer?
No caso de estar clusterizado, isso seria tranparente para a aplicação também?
[quote]Portanto digamos que esteja cluterizado e balanceado, se o servidor do usuário cair ele não perde a sessão, pois a mesma está replicada nos demais servidores, correto?
[/quote]
Corretissimo.
Posso estar enganado mas vc terá apenas DOIS pontos de configuração:
a) Configurar os web servers, vc terá que abrir o arquivo de configuração deles e dizer que eles estão clusterizados.
b) Configurar o software que irá fazer o papel de balancer, dizer quem são os servidores que irão receber as requisições.
Isso só é chato de fazer, requer muita leitura a procura de entendimento mas envolve pouquissimas linhas; talvez vc só tenha que descomentar alguma coisa e alterar outras porque na maioria das vezes já vem pré-definido.
É transparente para sua aplicação, ela não saberá e nem tem que saber de nada, aliás se tudo der certo pra vc nem o usuário vai saber o que está acontecendo, mesmo quando um servidor cair.
Olá fantomas…obrigado pela ajuda…
deu pra clarear bem as idéias!
Agora uma pergunta meio “escrota”
Neste cliente já existem aplicações em load balance, que são em .Net.
Para essas aplicações é utilizado o Application Center da MS para balancear as cargas.
Será que esse Application Center também funcionaria para Java?? Alguém já precisou usar??
Digo isso porque dessa forma já teriamos uma solução pronta, não precisaria configurar nada!
[quote=fantomas][
Dá para utilizar uma aplicação que utiliza sessões (b) adotando a estratégia descrita no item (a)? Sim, mas para isso temos que CLUSTERIZAR os servidores, a clasterização fará com que as sessões ao serem criadas o que for incluido nelas sejam replicados para o(s) outro(s) servidore(s).
[/quote]
Só para complementar: A estratégia de utilizar preferencialmente o mesmo servidor para atender requisições deuma determinada sessão é chamada de “Sticky session”, ou “sessão grudenta”.
[quote=joaozava] Neste cliente já existem aplicações em load balance, que são em .Net.
Para essas aplicações é utilizado o Application Center da MS para balancear as cargas.
Será que esse Application Center também funcionaria para Java?? Alguém já precisou usar??
Digo isso porque dessa forma já teriamos uma solução pronta, não precisaria configurar nada!
[/quote]
Não sei lhe dizer, pois não conheço este mecanismo; se fosse para dar um “chute” eu diria que sim, porque supostamente, ele equilibra apenas as requisições http, logo seria independente da tecnologia aplicada no servidor. Portanto vale a pena conferir.
[quote=fantomas][quote=joaozava] Neste cliente já existem aplicações em load balance, que são em .Net.
Para essas aplicações é utilizado o Application Center da MS para balancear as cargas.
Será que esse Application Center também funcionaria para Java?? Alguém já precisou usar??
Digo isso porque dessa forma já teriamos uma solução pronta, não precisaria configurar nada!
[/quote]
Não sei lhe dizer, pois não conheço este mecanismo; se fosse para dar um “chute” eu diria que sim, porque supostamente, ele equilibra apenas as requisições http, logo seria independente da tecnologia aplicada no servidor. Portanto vale a pena conferir.
flws
[/quote]
Era isso que eu imaginava, vou dar uma pesquisada para ver como ele trabalha.