Fórum

Problema no cache (clustering)

thumbnail
Henrique Simoes de Andrade, modificado 12 Anos atrás.

Problema no cache (clustering)

Regular Member Postagens: 165 Data de Entrada: 30/04/10 Postagens Recentes
Pessoal, boa tarde!
Estou com um problema que é referente ao clustering.

Configurei um ambiente com duas máquinas (com dois nodes em cada) e Liferay 6.0.5 com servidor de aplicação JBoss 5.0.1 e Apache 2.2.3 (mod_jk) p/ fazer o balanceamento, e S.O. Linux RedHat 5.5. Segui todo o tutorial deste wiki e algumas outras fontes como fóruns e blogs.

Então quando faço atualização no node1 (maquina A), esta alteração é replicada automaticamente no node2, mas nos demais nodes que estão na máquina B esta replicação não é feita, as vezes (é... as vezes) até faz, mas demora uma hora geralmente.

Configurei o seguinte com relação ao ehache:
net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml
ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml


Inicialmente achei que nada estava sendo replicado, então entrei na edição do webcontent num destes nodes problemáticos, e para minha supresa o conteúdo estava atualizado, mas a visualização deste lá na página através do portlet 'Visualização de Conteúdo Web' está exibindo a versão antiga. O_O

Acessei o JMX Console do JBoss e observei nas estatísticas do ehcache que não está registrando nem CacheMisses nem InMemoryHits dos objetos em memória, parece que está guardando em cache mas não está usando (?), tem uma imagem em anexo que deve explicar mais do que estas plavras... emoticon

Inicialmente eu tinha configurado o cluster ainda na versão 5.2.3 e só depois foi feita a migração para a 6.0.5, parece que tem a propriedade cluster.link.enabled mas ainda não entendi muito bem o funcionando desta, alguma idéia?

Obrigado!
thumbnail
Thiago Leão Moreira, modificado 12 Anos atrás.

RE: Problema no cache (clustering)

Liferay Legend Postagens: 1449 Data de Entrada: 10/10/07 Postagens Recentes
Boa noite Henrique,

O teu problema está provavelmente relacionado à rede. Minha sugestão é que você faça a configuração de cluster com o Liferay "zerado" numa base de dados limpa sem migração e verifique se as configurações estão corretas. Esse arquivo pode te ajudar: Advanced Liferay Architecture-Clustering and High Availability.pdf
thumbnail
Henrique Simoes de Andrade, modificado 12 Anos atrás.

RE: Problema no cache (clustering)

Regular Member Postagens: 165 Data de Entrada: 30/04/10 Postagens Recentes
Thiago, bom dia!

Vlw pela resposta!

Também suspeito da rede, mas fizemos uns testes de comunicação do JGroups entre os servidores e parece que está ok. Só depois vi que é configurado por padrão o uso do RMI na configuração do ehcache.

Estou pesquisando p/ saber se a troca do RMI p/ JGroups nas configurações do ehcache resolveria o problema.

Faremos um teste com instalação do zero hoje.

Obrigado!
thumbnail
Henrique Simoes de Andrade, modificado 12 Anos atrás.

RE: Problema no cache (clustering)

Regular Member Postagens: 165 Data de Entrada: 30/04/10 Postagens Recentes
Mas pensando bem... talvez tenha algo de errado na minha configuração, pq a estatística do cache indica objetos em memória, já acessei pelo JMX do JBoss:
com.liferay.portal.kernel.dao.orm.EntityCache.com.liferay.portal.model.impl.UserImpl
com.liferay.portal.kernel.dao.orm.EntityCache.com.liferay.portal.model.impl.LayoutImpl
com.liferay.portal.kernel.dao.orm.EntityCache.com.liferay.portlet.journal.model.impl.JournalArticleImpl
com.liferay.portal.kernel.dao.orm.EntityCache.com.liferay.portlet.documentlibrary.model.impl.DLFolderImpl


Entre outros... mas para todos indica que tem objetos em memória, mas nenhum hit para: CacheMisses, InMemoryHits, CacheHits. Todos estes atributos estão com o valor zerado. Mesmo sendo problema na rede (caso seja confirmado), não deveria pelo menos ter algum valor nestes atributos quando é feito acesso localmente?

Já revisei as configurações com base no PDF indicado e no wiki... pelo o que vi é basicamente incluir isto no portal-ext.properties:
net.sf.ehcache.configurationResourceName=/ehcache/hibernate-clustered.xml
ehcache.multi.vm.config.location=/ehcache/liferay-multi-vm-clustered.xml
cluster.link.enabled=true


E ter um endereço de multicast que funcione, exemplo do comando utilizado para iniciar os serviço do JBoss/Liferay:
run.sh -c node1 -g LiferayClustering -u 239.255.1.1 -b 0.0.0.0 -Djboss.messaging.ServerPeerID=1

Fizemos um teste com o multicast com base neste link , e conseguimos obter a resposta entre os servidores:
java -cp ./jgroups.jar org.jgroups.tests.McastReceiverTest -bind_addr 192.168.1.5 -mcast_addr 239.255.1.1 -port 5555
Socket=0.0.0.0/0.0.0.0:5555, bind interface=/192.168.1.5
MULLTICAST TEST [sender=192.168.1.1:52820]

Onde o 192.168.1.5 seria o servidor 2, e o 192.168.1.1 seria o servidor 1.

Mas de qualquer forma já estou preparando instalação do zero.

vlw!
thumbnail
Henrique Simoes de Andrade, modificado 12 Anos atrás.

RE: Problema no cache (clustering)

Regular Member Postagens: 165 Data de Entrada: 30/04/10 Postagens Recentes
Oi!
Este tópico já tem um tempinho, o problema ainda existe... com relação a estatística zerada (primeira imagem) era a propriedade ehcache.statistics.enabled que estava false (padrão), então modifiquei p/ true e agora está gerando as estatística, pelo menos p/ ter informações enquanto o problema existir.

Utilizando o JMX Console do JBoss, tenho acompanhado os tipos jboss.jgroups e net.sf.ehcache.

No ehcache vi que tem muitos cachesmisses p/ com.liferay.portal.kernel.dao.orm.EntityCache.com.liferay.portal.model.impl.LayoutImpl por exemplo, vou fazer mais umas pesquisas sobre estas informações e posto aqui caso avance.

abçs
thumbnail
Henrique Simoes de Andrade, modificado 12 Anos atrás.

RE: Problema no cache (clustering)

Regular Member Postagens: 165 Data de Entrada: 30/04/10 Postagens Recentes
Ufa!

Problema resolvido! Ou pelo menos no caminho para que seja...

Após vários testes p/ saber se a comunicação entre as máquinas estava sendo feita sem problemas através do JGroups do JBoss com UDP, vimos que deveríamos ter configurado o Liferay para utilizar o EhCache com JGroups, e não a configuração padrão, pois a comunicação está OK.

Este tópico ajudou muito, precisamos fazer alguns ajustes adicionais como remover o jgroups.jar do /lib do Liferay, pois estava dando conflito com o do JBoss 5.0.1, etc.

Mais tarde eu posto aqui as modificações p/ caso alguém passe pelo mesmo problema.

Ainda estamos testando, mas os resultados iniciais foram satisfatórios.

vlw ae!
thumbnail
Thiago Leão Moreira, modificado 12 Anos atrás.

RE: Problema no cache (clustering)

Liferay Legend Postagens: 1449 Data de Entrada: 10/10/07 Postagens Recentes
Show!