Hazelcast:连接到远程群集

我们有一个Hazelcast节点集群都在一个远程系统上运行(具有许多节点的单个物理系统)。 我们希望从外部客户端连接到此集群 – 一个使用以下代码连接到Hazelcast的Java应用程序:

ClientConfig clientConfig = new ClientConfig(); clientConfig.addAddress(config.getHost() + ":" + config.getPort()); client = HazelcastClient.newHazelcastClient(clientConfig); 

其中,host是远程IP,端口是5701。

这仍然连接到本地主机(127.0.0.1)。 我错过了什么?

编辑:

如果java客户端是本地系统上运行的唯一hazelcast应用程序,则无法连接并抛出exception: java.lang.IllegalStateException: Cannot get initial partitions!

从日志:

14:58:26.717 [main] INFO cmbpssHazelcastCacheClient – 创建新的Hazelcast实例

14:58:26.748 [main] INFO com.hazelcast.core.LifecycleService – HazelcastClient [hz.client_0_dev] [3.2.1]即将开始

14:58:27.029 [main] INFO com.hazelcast.core.LifecycleService – HazelcastClient [hz.client_0_dev] [3.2.1]即将开始

14:58:27.061 [hz.client_0_dev.cluster-listener] INFO com.hazelcast.core.LifecycleService – HazelcastClient [hz.client_0_dev] [3.2.1]是CLIENT_CONNECTED

14:58:27.061 [hz.client_0_dev.cluster-listener] INFO chclient.spi.ClientClusterService –

成员[5] {成员[127.0.0.1]:5701成员[127.0.0.1]:5702成员[127.0.0.1]:5703成员[127.0.0.1]:5704成员[127.0.0.1]:5705}

14:58:47.278 [main] ERROR chcspi.ClientPartitionService – 获取集群分区表时出错!

com.hazelcast.spi.exception.RetryableIOException:java.util.concurrent.ExecutionException:com.hazelcast.core.HazelcastException:java.net.ConnectException:连接被拒绝:无更多信息…由:java.util.concurrent引起。 ExecutionException:com.hazelcast.core.HazelcastException:java.net.ConnectException:连接被拒绝:无更多信息

at java.util.concurrent.FutureTask.report(Unknown Source)〜[na:1.8.0_31]

at java.util.concurrent.FutureTask.get(Unknown Source)〜[na:1.8.0_31]

在com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.getOrConnect(ClientConnectionManagerImpl.java:282)〜[BRBASE-service-manager-1.0.0-jar-with-dependencies.jar:na]

…省略了14个常用帧

引起:com.hazelcast.core.HazelcastException:java.net.ConnectException:拒绝连接:没有进一步的信息

在com.hazelcast.util.ExceptionUtil.rethrow(ExceptionUtil.java:45)〜[BRBASE-service-manager-1.0.0-jar-with-dependencies.jar:na] …

要连接到远程群集,请确保群集使用外部IP而不是127.0.0.1 。 在我们的例子中,我们有一个物理系统,有多个节点,启用了tcp-ip模式。 hazelcast.xml具有以下配置:

    172.xxx  

你能试一下吗:

 ClientConfig config = new ClientConfig(); config.getNetworkConfig().addAddress(host + ":" + port); HazelcastInstance instance = HazelcastClient.newHazelcastClient(config); 

如果你想连接到运行Hazelcast的多个ip作为集群添加到你的客户端配置下面然后实例化客户端。

  //configure client properties ClientConfig config = new ClientConfig(); String[] addresses = {"172.20.250.118" + ":" + "5701","172.20.250.49" + ":" + "5701"}; config.getNetworkConfig().addAddress(addresses); //start Hazelcast client HazelcastInstance hazelcastInstance = HazelcastClient.newHazelcastClient(config);