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.
Antworten:
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.
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.
quelle