Olá Srs.
Tenho um sistema web desenvolvido em JAVA funcionando em conjunto com
SDBD pgSQL, dessa forma desejo ver com vocês a melhor solução para
replicação, alta disponibilidade e balanceamento de carga. Já fiz alguns
estudos, e encontrei algo tipo PgPool e Snoly. O cenário é critico e não
admite a não continuidade de serviços. Atualmente temos um servidor de
Postgresql atuando em servidor linux SLES11, versão 8.4, onde no mesmo
servido está o applicationServer Tomcat6 rodando.
Verifiquei que com Snoly eu consigo fazer apenas replicação
unidirecioanal, Master-Slave, e modo Assincrono, ou seja, os dados são
replicados apenas quando a transação é comitada no servidor master,
querendo ou não gera um pequeno Delay sim ou não?. Outrosim, se o servidor
master der "Crash", teremos que alterar manualmente a configuração de
conexão com banco de dados da apliação web, que no caso usa Hibernate como
framework ORM, acima da camada JDBC, em outras palavras, teremos que
alterar o arquivo de configuração Hibernate.cfg.xml, que aponta para o ip e
a porta do postgresql. Mesmo realizano replicação, ainda não tenho Alta
Disponibilidade e Balanceamento de Carga de consultas SQL, o que acho na
minha visão eu não alcançaria somente com Snoly, embora eu vi que tem como
fazer um dupla entre Snoly e HeartBeat, mas eu lhes pergunto, funciona essa
dupla?
Quanto ao PgPool, vi que ele funciona como mediador entre o
front-end e o back-end, ou seja, o que chama de *Middleware, *atuando com
Balanceador de Carga de Consultas, Replicação Bidirecional? isso mesmo? Se
cair um nó do meu cluster, e posteriormente ele ser levantado, os dados
serão sincronizados? Outrosim, ele é replicador Sincrono, com isso o
PgPool além de ser Pool de Conexões, não necessitando toda hora abrir
conexão com SDGD, as consultas são enviadas simultaneamente para todos os
backends? E quanto as campos identificadores(PK), e os identificadores com
valores automaticos ou controlados pelo SGBD (Serial), como é tratado? E
quanto a Concorrência? Embora eu trate a concorrência a nivel de
aplicação,por default o HIBERNATE adota a otimista, ou seja, ele não dá
DEAD-LOCK nas tabelas seria isso mesmo né o conceito? Outra coisa é quanto
as soluções adotadas, com PgPool eu faço HA, LoadBalancing e Replicação
entre os nós,. ou seja meus backends certo ou errado? e com HeartBeat ou
BDB ou CARP eu faria HA entre os PgPools, visto que se eu tiver um PoolPool
somente, teria ponto de falha dentro do meu cenário certo ou errado?
provavelmente irei colocar os servidores web junto com os PgPools,
porquanto o hibernate ira conectar no PgPool. Amigos sei que os Srs já
passaram por tal situação, fiquem a avontade a dar sugestões.,
Obrigado!.
--
*Atenciosamente,
Sebastião Fidêncio da Silva Pereira
Analista de Sistemas - BitUp Sistemas Inteligentes.
Cell: 062-9228-8405 / 062-8190-4236*
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral