【发布时间】:2015-09-02 04:51:07
【问题描述】:
我们有一个 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 app,则连接失败并抛出异常:java.lang.IllegalStateException: Cannot get initial partitions!
来自日志:
14:58:26.717 [main] 信息 c.m.b.p.s.s.HazelcastCacheClient - 创建 新的 Hazelcast 实例
14:58:26.748 [main] 信息 com.hazelcast.core.LifecycleService - HazelcastClient[hz.client_0_dev][3.2.1] 正在启动
14:58:27.029 [main] 信息 com.hazelcast.core.LifecycleService - HazelcastClient[hz.client_0_dev][3.2.1] 已启动
14:58:27.061 [hz.client_0_dev.cluster-listener] 信息 com.hazelcast.core.LifecycleService - HazelcastClient[hz.client_0_dev][3.2.1] 是 CLIENT_CONNECTED
14:58:27.061 [hz.client_0_dev.cluster-listener] 信息 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] 错误 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: 连接被拒绝:没有更多信息
在 java.util.concurrent.FutureTask.report(未知来源) ~[na:1.8.0_31]
在 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] ...
【问题讨论】:
-
请分享您的配置文件
-
没有配置文件。
config这里是一个内部类。主机和端口作为命令行参数传递给 java 客户端。 -
您是否尝试对地址进行编码?它仍然连接到本地主机吗?
-
如果客户端的应用程序先启动,总是失败。
-
服务器已经在运行。接下来启动客户端。