2015-04-01 50 views
1

我的设置:在boot2docker虚拟机上运行的Hazelcast docker container(托管在Windows上,是的,5701端口转发)。 这就是Hazelcast 3.4.2。Hazelcast在码头工人在boot2docker“错误而获取集群分区表”

当我尝试一个简单的Java客户端连接到这个hazelcast情况下,我得到一个:

avr. 01, 2015 10:52:03 PM com.hazelcast.core.LifecycleService 
INFOS: HazelcastClient[hz.client_0_test][3.4.2] is STARTING 
avr. 01, 2015 10:52:04 PM com.hazelcast.core.LifecycleService 
INFOS: HazelcastClient[hz.client_0_test][3.4.2] is STARTED 
avr. 01, 2015 10:52:06 PM com.hazelcast.core.LifecycleService 
INFOS: HazelcastClient[hz.client_0_test][3.4.2] is CLIENT_CONNECTED 
avr. 01, 2015 10:52:06 PM  com.hazelcast.client.spi.impl.ClusterListenerThread 
INFOS: 

Members [1] { 
    Member [172.17.42.1]:5701 
} 

avr. 01, 2015 10:53:46 PM com.hazelcast.client.spi.ClientPartitionService 
GRAVE: Error while fetching cluster partition table! 
java.io.IOException: java.util.concurrent.TimeoutException 
    at  com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.getOrConnect(Cli entConnectionManagerImpl.java:337) 
... 

Exception in thread "main" java.lang.IllegalStateException: Cannot get initial partitions! 
at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.getInitialPartitions(ClientPartitionServiceImpl.java:89) 
at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.start(ClientPartitionServiceImpl.java:65) 
at com.hazelcast.client.impl.HazelcastClientInstanceImpl.start(HazelcastClientInstanceImpl.java:189) 
at ... 
avr. 01, 2015 10:56:35 PM com.hazelcast.client.spi.impl.ClusterListenerThread 
AVERTISSEMENT: Error while listening cluster events! -> ClientConnection{live=true, writ[email protected]3a2f22ed, re[email protected]6b7cdede, connectionId=1, socketChannel=DefaultSocketChannelWrapper{socketChannel=java.nio.channels.SocketChannel[connected local=/127.0.0.1:64753 remote=/127.0.0.1:5701]}, remoteEndpoint=Address[172.17.42.1]:5701}, Error: java.io.EOFException: Remote socket closed! 
avr. 01, 2015 10:56:35 PM com.hazelcast.client.connection.nio.ClientConnection 
AVERTISSEMENT: Connection [null] lost. Reason: Socket explicitly closed 
avr. 01, 2015 10:56:35 PM com.hazelcast.core.LifecycleService 
INFOS: HazelcastClient[hz.client_0_test][3.4.2] is CLIENT_DISCONNECTED 
avr. 01, 2015 10:56:43 PM com.hazelcast.client.spi.impl.ClusterListenerThread 
AVERTISSEMENT: Unable to get alive cluster connection, try in 0 ms later, attempt 1 of 2. 
avr. 01, 2015 10:56:50 PM com.hazelcast.client.spi.impl.ClusterListenerThread 
AVERTISSEMENT: Unable to get alive cluster connection, try in 0 ms later, attempt 2 of 2. 
avr. 01, 2015 10:56:50 PM com.hazelcast.client.spi.impl.ClusterListenerThread 
GRAVE: Error while connecting to cluster! 
java.lang.IllegalStateException: Unable to connect to any address in the config! The following addresses were tried:[/127.0.0.1:5701, /172.17.42.1:5701, /127.0.0.1:5702, /127.0.0.1:5703] 
    at com.hazelcast.client.spi.impl.ClusterListenerThread.connectToOne(ClusterListenerThread.java:286) 
    at com.hazelcast.client.spi.impl.ClusterListenerThread.run(ClusterListenerThread.java:89) 
Caused by: java.net.ConnectException: Connection refused: no further information 
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) 
    at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:111) 
    at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl$ConnectionProcessor.call(ClientConnectionManagerImpl.java:386) 
    at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl$ConnectionProcessor.call(ClientConnectionManagerImpl.java:353) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at com.hazelcast.util.executor.CompletableFutureTask.run(CompletableFutureTask.java:57) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76) 
    at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92) 

avr. 01, 2015 10:56:50 PM com.hazelcast.core.LifecycleService 
INFOS: HazelcastClient[hz.client_0_test][3.4.2] is SHUTTING_DOWN 
avr. 01, 2015 10:56:50 PM com.hazelcast.core.LifecycleService 
INFOS: HazelcastClient[hz.client_0_test][3.4.2] is SHUTDOWN 

综上所述:客户端似乎看到了集群及其成员的事,但接下来发生的阻止连接按预期工作。

任何想法?

+0

更多的上下文:这与java客户端有关,REST客户端在完全相同的用例下工作 – 2015-04-01 23:02:44

+0

您是否在Windows主机,boot2docker和EXPOSEed Dockerfile中转发端口? – Jan 2015-04-17 11:45:33

回答

0

我想你的问题是,Hazelcast节点的内部和外部地址是不同的,尽管它可以达到由于NAT,节点拒绝接受公共地址的请求。 您可以使用配置来配置公共地址:http://docs.hazelcast.org/docs/3.4/manual/html-single/hazelcast-documentation.html#public-address(请参阅上面的示例)。

+0

我已经试过类似的东西没有运气(但我会再试一次)。 – 2015-04-02 06:33:22

+0

所以在我的情况下,即使容器没有绑定这个IP,我也必须将公共地址设置为boot2docker vm的IP地址(类似于10.0.2.15)?配置和日志不适用于我的配置和日志可在https://gist.github.com/looztra/c1e3f6256642a3067961 – 2015-04-02 10:50:51

+0

是的,你肯定有一个不同的问题,因为你的客户端可以连接,被授权并获得成员地址。这很奇怪。你可以添加服务器源码吗? – noctarius 2015-04-02 12:46:24