Schritte zum Erstellen eines vorhandenen JNDI HornetQ-Dienstes als HA?

177

TL; DR

Was sind die Schritte zum Konfigurieren eines HA-JNDI-Dienstes mit einem HornetQ-Setup? Ich glaube, die Dokumentation ist etwas verstreut. Ich habe die Dokumente hier gelesen , scheint sie aber nicht im Detail zu veranschaulichen.

Längere Version:

Wir haben also ein HornetQ JMS-Setup zusammen mit JNDI. Wir haben 5 Server, auf denen die HornetQ JMS-Masterinstanz mit jeweils einem JNDI-Dienst ausgeführt wird. Auf jedem dieser 5 Server läuft auch ein Slave für einen anderen HornetQ-Master.

Um zu zeigen:

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

Jeder dieser HornetQ-Server dient als Middleware für unsere verschiedenen Backend-Anforderungen, dh 5 Server, 5 HornetQ-Master-Instanzen, 5 HornetQ-Slave-Instanzen und 5 JNDI-Server. Das Problem bei diesem Setup ist jedoch, dass, wenn ein Server-Host (nicht nur der Prozess, der Host selbst), beispielsweise A, ausfällt, der Dienst idealerweise auf den HornetQ zurückgreifen sollte, der auf Server E ausgeführt wird, auf dem der HornetQ-Slave von A gehostet wird. Um jedoch als HornetQ-Master fortzufahren, muss der HornetQa_slave mit dem JNDI-Prozess sprechen, der auf Server A ausgeführt wird (ich nehme an, dass Nachrichten repliziert werden). Da der Host A selbst inaktiv ist, kann der auf E ausgeführte HornetQa_slave nicht mit dem JNDI auf A kommunizieren und kann daher nicht als Master-Prozess fortgesetzt werden.

Wäre der JNDI-Dienst hoch verfügbar gewesen, könnte der Slave-HornetQ-Prozess wie erwartet als Master fortgesetzt werden. Könnte jemand freundlich auf die Dokumente verweisen oder in einfachen Schritten veranschaulichen, wie wir unser vorhandenes Setup in ein HA-JNDI konvertieren könnten? Für das, was es wert ist, habe ich mehrere Quellen gelesen , aber es scheint nicht sehr detailliert zu veranschaulichen, wie man mit der Konfiguration eines HA-JNDI anfängt. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen zu unserem aktuellen Setup benötigen.

gravetii
quelle
8
Wo laufen Ihre Kunden? Laufen sie auf denselben AS-Instanzen oder von einer anderen Instanz / JVM oder von beiden?
jjhavokk
3
@jjhavokk sie würden auf einer anderen JVM
laufen
4
Könnten Sie HornetQ im Hochverfügbarkeitsmodus aktivieren (Aktiv - Passiv-Replikation)? Wenn Sie dies mit der dynamischen Servererkennung kombinieren, sollten Sie einen zuverlässigen Fallback haben. Siehe docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/… und docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/…
diginoise
4
Welche Version von jboss verwenden Sie?
Eis
5
Ich sehe, das ist wirklich alt, aber ich frage mich, ob Sie die Antwort gefunden haben. Inzwischen wissen Sie wahrscheinlich, dass der HA <forward-when-no-consumers> true </ forward-when-no-consumers> benötigt, um Nachrichten zu verbreiten, aber dass das Failback zum Master nicht funktioniert. Ich hatte die gleiche Konfiguration in Weblogic und Websphere, in der das Failback funktioniert, aber nicht mit jboss. Gibt es etwas festzulegen, damit der Master verpasste Nachrichten synchronisieren und aktualisieren kann, damit ein ordnungsgemäßes Failback funktioniert?
user1442498

Antworten:

1

Mit der beschriebenen Architektur scheint es mir schwierig zu sein, weil Sie tatsächlich den Slave als Master neu konfigurieren müssen und dann einen bestimmten Ausfall haben werden.

HornetQ HA wird über ein Live-Backup-Paar bereitgestellt, und der Lastenausgleich erfolgt über einen Cluster.

Wenn Sie sowohl HA als auch Load Balancing wünschen, benötigen Sie zwei Live-Backup-Paare, die zusammen gruppiert sind.

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

Sie können den Master nicht anhand des Hostnamens referenzieren, sondern anhand einer virtuellen IP-Adresse . Wenn der Master ausfällt, können Sie einen der Slaves als Master neu konfigurieren und die virtuelle IP starten, damit Sie den Rest nicht neu konfigurieren müssen der Sklaven. (Um HA auch dann zu erhalten, wenn der Master nicht verfügbar ist, möchten Sie 2 Slaves haben, damit Sie einen von ihnen als Master neu starten können und noch einer ausgeführt wird.)

Eine andere Möglichkeit, dasselbe Ergebnis zu erzielen, besteht in einem für den Master spezifischen DNS-Hostnamen, den Sie neu konfigurieren können, um auf eine andere IP zu verweisen, wenn ein Host ausfällt. Da DNS zwischengespeichert wird, sollten sich diese Einträge besser in der 'Hosts'-Datei befinden.

Wenn 3 Hosts pro HA-Domäne zu viel Hardware sind, können Sie dies mit virtuellen Servern einfacher erreichen, ohne mehr Hardware kaufen zu müssen.

Jose Manuel Gomez Alvarez
quelle