2015-04-27 2 views
1

Я использую hazelcast 3.3 в своем программном обеспечении для кэширования в кластерах. Я основывал свой код на следующем примере: Stackoverflow tcp hazelcast example. (Обновление 2) Теперь я сталкиваюсь со следующей проблемой: Хост, на котором я запускаю свою программу, имеет различные сетевые карты (=> несколько IP-номеров). Я хотел бы начать различные экземпляры моей программы на одном компьютере, используя различные интерфейсы (IP Numbers) ТСР конфигурации для этого вроде быПрограммный TCPIP-протокол Hazelcast для нескольких сетевых интерфейсов

network.getInterfaces().setEnabled(true).addInterface("<MY IP NUMBER>"); 

Независимо от того, что IP я даю здесь, на стороне OS hazelcast всегда привязывается к 0.0.0.0 (все IP-адреса). Этого хотели? Я ожидал бы, что hazelcast привязывается только к определенному IP. Является ли hazelcast фильтрацией пакетов сам по себе и поэтому привязывается ко всем интерфейсам одновременно? Это означает, что я не могу использовать один и тот же номер порта для различных исполняемых экземпляров программы, так как привязка к 0.0.0.0, конечно, не удастся запустить второй клиент (что на самом деле происходит)

+0

Возможно, это решение также может помочь: https://stackoverflow.com/a/45745402/185919 –

ответ

1

Изучение документации Hazelcast (Networking) сказал, что Hazelcast по умолчанию привязывается ко всем сетевым интерфейсам. Чтобы изменить это свойство System: hazelcast.socket.bind.any В документации говорится: установите значение false, и оно будет привязано только к указанным интерфейсам. Я не проверял, но это похоже на решение моей проблемы.

EDIT: Я пробовал сейчас, и это сработало. Hazelcast подключен только к данному интерфейсу.

Смежные вопросы