Etapas para criar um serviço JNDI HornetQ existente como HA?

177

TL; DR

Quais são as etapas para configurar um serviço HA-JNDI com uma instalação do HornetQ? Acredito que a documentação esteja um pouco dispersa. Eu li os documentos aqui, mas não parece ilustrar em detalhes.

Versão mais longa:

Portanto, temos uma configuração do HornetQ JMS junto com o JNDI. Dizemos 5 servidores que executam a instância principal do HornetQ JMS com o serviço JNDI em cada um. Em cada um desses 5 servidores, também temos um escravo em execução para outro mestre do HornetQ.

Ilustrar:

Server A - HornetQa_master, JNDI, HornetQb_slave
Server B - HornetQb_master, JNDI, HornetQc_slave
Server C - HornetQc_master, JNDI, HornetQd_slave
Server D - HornetQd_master, JNDI, HornetQe_slave
Server E - HornetQe_master, JNDI, HornetQa_slave

Cada um desses servidores HornetQ serve como middleware para nossas diversas necessidades de back-end, o que significa 5 servidores, 5 instâncias principais do HornetQ, 5 instâncias escravas do HornetQ e 5 servidores JNDI. O problema, no entanto, com essa configuração é que, se um host do servidor (não apenas o processo, o próprio host) diz A, o ideal é que o serviço volte ao HornetQ em execução no servidor E que hospeda o escravo do HornetQ de A. No entanto, para continuar como mestre do HornetQ, o HornetQa_slave precisa conversar com o processo JNDI em execução no servidor A (presumo replicar mensagens). Como o host A está desativado, o HornetQa_slave em execução no E não tem como conversar com o JNDI em A e, portanto, não pode continuar como o processo mestre.

Se o serviço JNDI estivesse altamente disponível, o processo HornetQ escravo poderia ser retomado como mestre, conforme o esperado. Alguém poderia gentilmente apontar para os documentos ou ilustrar em etapas simples como podemos converter nossa configuração existente em um HA-JNDI? Pelo que vale, li várias fontes , mas isso não parece ilustrar em muitos detalhes como configurar a HA-JNDI. Entre em contato se precisar de mais informações sobre nossa configuração atual.

gravetii
fonte
8
Onde seus clientes estão executando? Eles estão sendo executados nas mesmas instâncias do AS ou de outra instância / JVM ou ambas?
precisa saber é o seguinte
3
@jjhavokk eles estariam rodando em outra JVM
gravetii 15/01
4
Você poderia habilitar o HornetQ no modo de alta disponibilidade (replicação ativa - passiva)? Junte isso à descoberta dinâmica do servidor e você deverá ter um fallback confiável. Consulte docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/… e docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/…
diginoise
4
Qual versão do jboss você está executando?
eis
5
Vejo que isso é muito antigo, mas estou me perguntando se você encontrou a resposta. A essa altura, você provavelmente já sabe que o HA exige que <forward-when-no-consumers> true </forward-when-no-consumers> propague mensagens, mas que o failback do mestre não funciona. Eu tive a mesma configuração no weblogic e no websphere onde o failback funciona, mas não no jboss. Existe algo a ser definido para permitir que o mestre sincronize e atualize as mensagens perdidas para que um failback adequado funcione?
user1442498

Respostas:

1

Com a arquitetura descrita, parece-me difícil, porque de fato você precisa reconfigurar o escravo como mestre e, em seguida, terá uma certa interrupção.

O HornetQ HA é fornecido por meio de um par de backup em tempo real e o balanceamento de carga por meio de um cluster.

Se você deseja HA e balanceamento de carga, precisará de 2 pares de backup ao vivo agrupados.

Fonte: https://developer.jboss.org/thread/254232

Você pode referenciar o mestre não pelo nome do host, mas usando um endereço IP virtual , para que, caso o mestre esteja inoperante, reconfigure um dos escravos como mestre e inicie o ip virtual para não precisar reconfigurar o restante dos escravos. (Para manter a HA mesmo quando o mestre está inoperante, você deseja ter 2 escravos, para poder reiniciar um deles como mestre e ainda assim um estará em execução).

Outra maneira de obter o mesmo resultado é com um nome de host DNS específico para o mestre que você pode reconfigurar para apontar para um IP diferente se um host estiver inativo. Como o DNS é armazenado em cache, é melhor que essas entradas estejam no arquivo 'hosts'.

Se três hosts por domínio HA forem muito hardware, você poderá fazer isso mais facilmente com servidores virtuais sem a necessidade de comprar mais hardware.

Jose Manuel Gomez Alvarez
fonte