web-dev-qa-db-fra.com

Étapes pour créer un service JNDI HornetQ existant en tant qu'HA?

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 la documentation 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 maître HornetQ JMS avec le service JNDI sur chacun. Sur chacun de ces 5 serveurs, nous avons également un esclave en cours d'exécution 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 de middleware pour nos différents besoins backend, ce qui signifie 5 serveurs, 5 instances maître 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, le service devrait idéalement se replier sur le 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 exécuté sur le serveur A (je présume de répliquer les messages). Étant donné que l'hôte A est lui-même en panne, le HornetQa_slave exécuté 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 bien vouloir pointer vers les documents ou illustrer en quelques é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 la façon de commencer la configuration d'un HA-JNDI. Veuillez me faire savoir si vous avez besoin de plus d'informations sur notre configuration actuelle.

177
gravetii

Avec l'architecture décrite, cela me semble difficile, car en effet, vous devez reconfigurer l'esclave en tant que maître et vous aurez alors une certaine panne.

HornetQ HA est fourni via une paire de sauvegarde en direct et l'équilibrage de charge est fourni via un cluster.

Si vous voulez à la fois HA et l'équilibrage de charge, vous aurez besoin de 2 paires de sauvegarde en direct regroupées.

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

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 que si le maître est en panne, vous pouvez reconfigurer l'un des esclaves en tant que maître, et démarrez l'ip virtuelle pour ne pas avoir à reconfigurer le reste des esclaves. (Pour conserver HA même lorsque le maître est en panne, vous voulez avoir 2 esclaves, de sorte que vous pouvez redémarrer l'un d'eux en tant que maître et encore un sera en cours d'exécution).

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 IP différente si un hôte est en panne. Étant donné que DNS est mis en cache, ces entrées devraient être dans le fichier "hosts".

Si 3 hôtes par domaine HA représentent trop de matériel, vous pouvez le faire plus facilement avec des serveurs virtuels sans avoir besoin d'acheter plus de matériel.

1