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.
Odpowiedzi:
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.
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.
źródło