Совместное использование файлов данных между двумя Docker контейнерами под управлением HornetQ - PullRequest
0 голосов
/ 26 мая 2020

У меня есть два экземпляра HornetQ, один, который предназначен для вызова из intr anet для публикации sh данных, и один, который предназначен для вызова из inte rnet для чтения данных.

Поскольку я вынужден указать имя хоста rmi, которое после поиска JNDI используется для вызовов, а мои publi c и частные имена хостов отличаются, я решил запустить два контейнера HornetQ внутри одного Kubernetes POD , создайте две службы и маршрут. Два контейнера запускаются на разных портах, и если я не разделяю файлы данных между ними, все работает нормально.

Поскольку мне нужно разделить файлы данных между ними, я создал том emptyDir, и это где я застрял, потому что теперь один из них запускается правильно, а другие тупиковые:

14:27:45,444 INFO  [org.hornetq.core.server] HQ221034: Waiting to obtain live lock

Я пробовал добавить

   <shared-store>true</shared-store>
   <backup>${hornetq.backup:false}</backup>

в их configMap, но это не повлияло .

Как я могу поделиться данными между ними? Кластеры classi c не подходят, потому что в моем сценарии нет «аварийного переключения», и их конфигурация, по крайней мере, с точки зрения имени хоста rmi publi c, должна отличаться.

Спасибо вам очень нравится Роберто

1 Ответ

0 голосов
/ 26 мая 2020

Ожидаемое поведение, которое вы видите. Два экземпляра HornetQ не могут (и не должны) совместно использовать одни и те же данные одновременно. Поскольку вы указываете оба экземпляра в одном и том же каталоге, вы неявно настроили высокую доступность общего хранилища.

Несмотря на то, что вы говорите «кластеры classi c не подходят», мне кажется, что именно то, что вам нужно для обмена данными между узлами. Кластеризация и высокая доступность (для аварийного переключения) настраиваются независимо. Если вы правильно настроили свой кластер, сообщения должны передаваться между ними по запросу. Не будет никакого переключения при отказе, и каждый может иметь собственное имя хоста. Вы можете узнать больше о кластерах и высокой доступности в документации HornetQ.

Наконец, почему вы вообще используете HornetQ? Кодовая база HornetQ была передана в дар Apache ActiveMQ 5 лет назад go и продолжает работать как брокер ActiveMQ Artemis . С тех пор у HornetQ не было выпусков, но было выпущено более десятка выпусков ActiveMQ Artemis с множеством исправлений ошибок и новых функций. Я рекомендую вам как можно скорее перейти на ActiveMQ Artemis.

...