Проблемы Java Hazelcast с несколькими кластерами

Я запускаю небольшую систему, которая использует Hazelcast для кластеризации, распределенных вычислений и обмена сообщениями в многоадресном режиме (стандартная конфигурация, доступная в загрузке). У меня есть ряд серверных модулей, которые работают как «основные» экземпляры Hazelcast, и приложение Java Swing, которое реализовано как «собственный клиент» Hazelcast. Все это работает хорошо, и теперь я хотел бы ввести систему в эксплуатацию и, следовательно, мне нужно будет запустить два отдельных кластера (dev + prod), и именно здесь я сталкиваюсь с проблемами.

Согласно документации, все, что вам нужно, — это использовать отдельные имена групп и пароли для двух групп. кластеры, и у меня сложилось впечатление, что два кластера должны разобраться сами собой!? Похоже, это работает для серверных модулей, но когда я пытаюсь подключить экземпляр «Клиент» к рабочей среде, я вижу из журналов одного из серверных модулей в рабочей среде, что клиент успешно подключается:

INFO: [prod] received auth from Connection [/192.168.0.2:55863 -> null] live=true,
client=true, type=JAVA_CLIENT, this group name:prod, auth group name:prod, 
successfully authenticated

Но клиент никогда не появляется как член prod. Вместо этого я обнаружил, что клиент стал членом среды разработки, несмотря на то, что аутентификация выполнялась против prod!

Непреднамеренное смешивание двух кластеров, очевидно, является огромной проблемой для меня и препятствием на пути к успеху. Кто-нибудь знает, есть ли что-то, что я делаю неправильно, или есть ли какие-либо изменения конфигурации, которые я могу сделать, чтобы решить проблему?


person hgus1294    schedule 19.05.2011    source источник


Ответы (1)


Когда клиент подключается к кластеру, он никогда не становится членом кластера.

Итак, я подозреваю, что ваш клиент действительно подключился к продукту, но каким-то образом в вашем коде у вас есть что-то вроде Hazelcat.getMap(), что приводит к запуску члена в этой JVM, и поскольку конфигурация по умолчанию, которую будет использовать этот член, будет такой же, как разработчик, этот новый участник присоединится к вашему кластеру разработчиков.

Таким образом, у вас есть один клиент, подключенный к prod, и еще один участник, подключенный к кластеру разработки.

Попробуйте запустить что-нибудь через клиент и посмотреть, в каком кластере появляются эти записи?

Я имею смысл?

person Fuad Malikov    schedule 20.05.2011
comment
Абсолютно. Имеет смысл. Сейчас у меня мало времени, но я проверю ваши предложения в начале следующей недели и вернусь обратно. Большое спасибо за быстрый ответ, Фуад. - person hgus1294; 20.05.2011
comment
Вы были правы. У меня был код в моих клиентах, который запускал участников, используя конфигурацию dev по умолчанию. В итоге я переключил своих клиентов на Super Clients, так как это оказалось для меня более простым решением. Мои основные модули (члены) должны знать о подключенных клиентах, а собственные клиенты казались менее заметными для участников. В любом случае, реализация Super Client отлично подходит для моих целей. Большое вам спасибо за вашу помощь. - person hgus1294; 23.05.2011