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.
Respostas:
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.
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.
fonte