webentwicklung-frage-antwort-db.com.de

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

TL; DR

Was sind die Schritte, um einen HA-JNDI-Dienst mit einem HornetQ-Setup zu konfigurieren? Ich glaube, die Dokumentation ist etwas verstreut. Ich habe die Dokumente durchgelesen hier aber es scheint nicht im Detail zu illustrieren.

Längere Version:

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

Um zu veranschaulichen:

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 dieser Konfiguration ist jedoch, dass, wenn ein Server-Host (nicht nur der Prozess, der Host selbst), beispielsweise A, ausfällt, der Dienst im Idealfall auf HornetQ zurückgreifen sollte, das auf Server E ausgeführt wird, der den HornetQ-Slave von A hostet. Um jedoch als HornetQ-Master fortzufahren, muss der HornetQa_slave mit dem auf Server A ausgeführten JNDI-Prozess kommunizieren (ich nehme an, dass Nachrichten repliziert werden). Da der Host A selbst heruntergefahren 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 darzustellen, wie man mit der Konfiguration eines HA-JNDI beginnt. Bitte lassen Sie mich wissen, wenn Sie weitere Informationen zu unserem aktuellen Setup benötigen.

177
gravetii

Bei der beschriebenen Architektur erscheint es mir schwierig, weil Sie in der Tat den Slave als Master neu konfigurieren müssen und dann einen gewissen Ausfall haben.

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

Wenn Sie sowohl Hochverfügbarkeit als auch Lastausgleich möchten, benötigen Sie zwei Live-Backup-Paare, die in Clustern zusammengefasst sind.

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

Sie können den Master nicht über den Hostnamen referenzieren, sondern über eine virtuelle IP-Adresse , sodass Sie bei Ausfall des Masters einen der Slaves neu konfigurieren können Starten Sie als Master die virtuelle IP, damit Sie den Rest der Slaves nicht neu konfigurieren müssen. (Damit HA auch dann erhalten bleibt, wenn der Master inaktiv ist, möchten Sie zwei Slaves haben, damit Sie einen von ihnen als Master neu starten können und immer noch einer ausgeführt wird.).

Eine andere Möglichkeit, dasselbe Ergebnis zu erzielen, besteht darin, einen für den Master spezifischen DNS-Hostnamen anzugeben, den Sie so konfigurieren können, dass er auf eine andere IP verweist, wenn ein Host ausfällt. Da DNS zwischengespeichert wird, sollten sich diese Einträge besser in der Datei "hosts" befinden.

Wenn 3 Hosts pro HA-Domain zu viel Hardware enthalten, können Sie dies mit virtuellen Servern einfacher erreichen, ohne dass Sie mehr Hardware kaufen müssen.