TL; DR
Quelles sont les étapes pour configurer un service HA-JNDI avec une configuration HornetQ? Je pense que la documentation est un peu dispersée. J'ai lu les documents ici mais ne semble pas illustrer en détail.
Version plus longue:
Nous avons donc une configuration HornetQ JMS avec JNDI. Nous avons disons 5 serveurs, qui exécutent l'instance principale HornetQ JMS avec le service JNDI sur chacun. Sur chacun de ces 5 serveurs, nous avons également un esclave fonctionnant pour un autre maître HornetQ.
Pour illustrer:
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
Chacun de ces serveurs HornetQ sert d'intermédiaire pour nos divers besoins de backend, ce qui signifie 5 serveurs, 5 instances maîtres HornetQ, 5 instances esclaves HornetQ et 5 serveurs JNDI. Le problème, cependant, avec cette configuration est que si un hôte serveur (pas seulement le processus, l'hôte lui-même), disons A tombe en panne, idéalement le service devrait se replier sur HornetQ fonctionnant sur le serveur E qui héberge l'esclave HornetQ de A. Cependant, pour reprendre en tant que maître HornetQ, le HornetQa_slave doit parler au processus JNDI en cours d'exécution sur le serveur A (je présume de répliquer les messages). Puisque l'hôte A est lui-même en panne, le HornetQa_slave fonctionnant sur E n'a aucun moyen de parler au JNDI sur A, et ne peut donc pas reprendre en tant que processus maître.
Si le service JNDI avait été hautement disponible, le processus HornetQ esclave pourrait reprendre en tant que maître comme prévu. Quelqu'un pourrait-il gentiment pointer vers la documentation ou illustrer en étapes simples comment nous pourrions convertir notre configuration existante en HA-JNDI? Pour ce que ça vaut, j'ai lu plusieurs sources , mais cela ne semble pas illustrer en détail comment commencer à configurer un HA-JNDI. Veuillez me faire savoir si vous avez besoin de plus d'informations sur notre configuration actuelle.
Réponses:
Avec l'architecture décrite, cela me semble difficile, car en effet il faut reconfigurer l'esclave en maître et alors il y aura une certaine panne.
Vous pouvez référencer le maître non pas par le nom d'hôte mais en utilisant une adresse IP virtuelle , de sorte qu'en cas de panne du maître, vous pouvez reconfigurer l'un des esclaves en tant que maître et démarrer l'IP virtuelle pour ne pas avoir à reconfigurer le reste des esclaves. (Pour conserver HA même lorsque le maître est hors service, vous voulez avoir 2 esclaves, de sorte que vous puissiez redémarrer l'un d'entre eux en tant que maître et qu'un autre fonctionnera).
Une autre façon d'obtenir le même résultat consiste à utiliser un nom d'hôte DNS spécifique au maître que vous pouvez reconfigurer pour pointer vers une adresse IP différente si un hôte est en panne. Puisque DNS est mis en cache, ces entrées devraient mieux se trouver dans le fichier «hosts».
Si 3 hôtes par domaine HA représentent trop de matériel, vous pouvez accomplir cela plus facilement avec des serveurs virtuels sans avoir besoin d'acheter plus de matériel.
la source