2015-07-09 2 views
1

Я пытаюсь вручную настроить экземпляры Hazelcast 2.5.1 с использованием их программного API, но я обнаружил, что он имеет разные поведения при выполнении - предположительно - подобных вещей.Hazelcast: не может присоединиться к кластеру при использовании программной конфигурации

Итак, мой первый подход довольно зачаточном, что:

String confString = "<hazelcast><network><port auto-increment=\"true\">10555</port><join><multicast enabled=\"false\" /><tcp-ip enabled=\"true\"><interface>127.0.0.1</interface></tcp-ip></join><ssl enabled=\"false\" /></network></hazelcast>"; 
Config config = new InMemoryXmlConfig(confString); 
Hazelcast.newHazelcastInstance(config); 

Это будет работать и запуск разных экземпляров позволит им присоединиться к кластеру. В целях удобочитаемости, вот XML я строй в памяти:

<hazelcast> 
    <network> 
     <port auto-increment="true">10555</port> 
     <join> 
      <multicast enabled="false" /> 
      <tcp-ip enabled="true"> 
       <interface>127.0.0.1</interface> 
      </tcp-ip> 
     </join> 
     <ssl enabled="false" /> 
    </network> 
</hazelcast> 

Запуск разных экземпляров это заставит их присоединиться к кластеру, который является поведением, которое я хочу.


Однако, когда я пытаюсь сделать это программно, Hazelcast не позволит новые экземпляры присоединиться и пожалуется со следующей ошибкой:

Jul 09, 2015 9:39:33 AM com.hazelcast.impl.Node 
WARNING: [127.0.0.1]:10556 [dev] Config seed port is 10555 and cluster size is 1. Some of the ports seem occupied! 

Это код, который должен сделать то же самое программно:

Config config = new Config(); 

config.setInstanceName("HazelcastService"); 
config.getNetworkConfig().setPortAutoIncrement(true); 
config.getNetworkConfig().setPort(10555); 
config.getNetworkConfig().getJoin().getMulticastConfig().setEnabled(false); 
config.getNetworkConfig().getJoin().getTcpIpConfig().setEnabled(true); 
config.getNetworkConfig().getInterfaces().addInterface("127.0.0.1"); 
config.getNetworkConfig().getInterfaces().setEnabled(true); 

SSLConfig sslConfig = new SSLConfig(); 
sslConfig.setEnabled(false); 
config.getNetworkConfig().setSSLConfig(sslConfig); 

Hazelcast.newHazelcastInstance(config); 

Что мне не хватает?

+0

Какую версию HZ вы используете? – pveentjer

+0

@pveentjer 2.5.1. – Alpha

ответ

1

Интерфейсы, добавленные вами в java-код, не совпадают с вашими добавлениями в xml.
Это то, что вы установили в Java-код - http://docs.hazelcast.org/docs/2.5/manual/html-single/#ConfigSpecifyInterfaces
для вашей конфигурации, чтобы работать - вы должны добавить

config.getNetworkConfig().getJoin().getTcpIpConfig().addMember("127.0.0.1"); 
+0

Это сработало отлично. Я удалил две свои строки, которые работали с интерфейсами, и добавил этот, и он работает как шарм. Большое спасибо. :) – Alpha

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