Kroki, aby istniejąca usługa JNDI HornetQ stała się HA?

177

TL; DR

Jakie są kroki, aby skonfigurować usługę HA-JNDI z konfiguracją HornetQ? Uważam, że dokumentacja jest trochę rozproszona. Przeczytałem dokumentację tutaj, ale nie wydaje się, aby szczegółowo ilustrowała.

Dłuższa wersja:

Mamy więc konfigurację HornetQ JMS wraz z JNDI. Powiedzmy, że 5 serwerów, na których działa główna instancja HornetQ JMS z usługą JNDI na każdym. Na każdym z tych 5 serwerów mamy również slave działające dla innego mastera HornetQ.

Ilustrować:

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

Każdy z tych serwerów HornetQ służy jako oprogramowanie pośredniczące dla naszych różnych potrzeb backendowych, co oznacza 5 serwerów, 5 instancji głównych HornetQ, 5 instancji HornetQ slave i 5 serwerów JNDI. Problem z tą konfiguracją polega jednak na tym, że jeśli host serwera (nie tylko proces, sam host), powiedzmy A, ulegnie awarii, w idealnym przypadku usługa powinna wrócić do HornetQ działającego na serwerze E, na którym znajduje się podrzędny HornetQ A. Jednak aby wznowić działanie jako master HornetQ, HornetQa_slave musi rozmawiać z procesem JNDI działającym na serwerze A (przypuszczam, że replikuje komunikaty). Ponieważ host A sam jest wyłączony, HornetQa_slave działający na E nie ma możliwości komunikowania się z JNDI na A, a zatem nie może wznowić jako proces główny.

Gdyby usługa JNDI była wysoce dostępna, proces podrzędny HornetQ mógłby zostać wznowiony jako nadrzędny zgodnie z oczekiwaniami. Czy ktoś mógłby wskazać na dokumenty lub w prostych krokach zilustrować, w jaki sposób możemy przekonwertować naszą istniejącą konfigurację na HA-JNDI? Co jest warte, przeczytałem wiele źródeł , ale wydaje się, że nie ilustrują one zbyt szczegółowo, jak zacząć konfigurować HA-JNDI. Daj mi znać, jeśli potrzebujesz więcej informacji o naszej aktualnej konfiguracji.

gravetii
źródło
8
Gdzie działają Twoi klienci? Czy działają na tych samych instancjach AS, czy z innej instancji / maszyny JVM, czy też z obu?
jjhavokk
3
@jjhavokk będą działać na innym JVM
gravetii
4
Czy możesz włączyć HornetQ w trybie wysokiej dostępności (aktywna - pasywna replikacja)? Połącz to z dynamicznym wykrywaniem serwera i powinieneś mieć niezawodną rezerwę. Zobacz docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/… i docs.jboss.org/hornetq/2.4.0.Final/docs/user-manual/html/…
diginoise
4
Jakiej wersji jboss używasz?
eis
5
Widzę, że to jest naprawdę stare, ale zastanawiam się, czy znalazłeś odpowiedź. Prawdopodobnie już wiesz, że HA wymaga <forward-when-no-consumers> true </forward-when-no-consumers> do propagowania wiadomości, ale powrót po awarii do mastera nie działa. Miałem tę samą konfigurację weblogic i websphere, gdzie działa powrót po awarii, ale nie działa z jboss. Czy jest coś, co można ustawić, aby umożliwić masterowi synchronizację i aktualizację nieodebranych wiadomości, aby działał właściwy powrót po awarii?
user1442498

Odpowiedzi:

1

Przy opisanej architekturze wydaje mi się to trudne, ponieważ rzeczywiście musisz ponownie skonfigurować slave'a jako mastera, a wtedy nastąpi pewna przerwa w działaniu.

HornetQ HA jest dostarczany za pośrednictwem pary kopii zapasowych na żywo, a równoważenie obciążenia zapewnia klaster.

Jeśli potrzebujesz zarówno wysokiej dostępności, jak i równoważenia obciążenia, będziesz potrzebować 2 par kopii zapasowych na żywo w klastrze.

Źródło: https://developer.jboss.org/thread/254232

Możesz odwoływać się do mastera nie przez nazwę hosta, ale używając wirtualnego adresu IP , więc w przypadku awarii mastera możesz ponownie skonfigurować jednego z slaveów jako master i uruchomić wirtualny adres IP , aby nie trzeba było ponownie konfigurować reszty niewolników. (Aby zachować HA nawet wtedy, gdy master nie działa, chcesz mieć 2 slave'ów, abyś mógł ponownie uruchomić jednego z nich jako master i nadal jeden będzie działał).

Innym sposobem osiągnięcia tego samego rezultatu jest użycie nazwy hosta DNS specyficznej dla serwera głównego, którą można skonfigurować tak, aby wskazywała na inny adres IP, jeśli jeden host nie działa. Ponieważ DNS jest buforowany, wpisy te powinny znajdować się w pliku „hosts”.

Jeśli 3 hosty na domenę HA to zbyt dużo sprzętu, możesz to łatwiej osiągnąć dzięki serwerom wirtualnym bez konieczności kupowania dodatkowego sprzętu.

Jose Manuel Gomez Alvarez
źródło