Hazelcast:连接到远程集群

时间:2015-06-17 05:59:34

标签: java hazelcast

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

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

        client = HazelcastClient.newHazelcastClient(clientConfig);

其中,host是remote的IP,端口是5701。

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

修改

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

来自日志:

  

14:58:26.717 [main] INFO c.m.b.p.s.s.HazelcastCacheClient - 创建   新的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   c.h.client.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 c.h.c.spi.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服务管理器-1.0.0-罐与 - dependencies.jar:NA]

     

...省略了14个常见帧

     

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

     

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

3 个答案:

答案 0 :(得分:4)

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

        <tcp-ip enabled="true">
            <!-- This should be external IP -->
            <interface>172.x.x.x</interface>
        </tcp-ip>

答案 1 :(得分:1)

你可以尝试:

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

答案 2 :(得分:0)

如果你想连接多个运行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);