hazelcast-client Ausnahme beim herstellen einer Verbindung zum server
Ich versuche, mit hazelcast v3.2.4 (gleiche version auf server und client). Der server (als einfache Umsetzung, ich könnte auf der Stelle) auf einem server ausgeführt wird. Der client versucht, eine Verbindung zu dem remote-server - der server gibt die Authentifizierungs-Anfragen, aber ich bekomme folgende log-Ausgaben (einschließlich der Ausnahmen) - irgendwelche Ideen auf, was ich anders machen kann (kopieren der beiden log-Ausgabe und die config-Datei). Ich bin versucht, eine Verbindung über TCP/IP und ich habe für Netzwerk-connectivity - ich konnte nicht mehr sehen, irgendetwas blockiert die Verbindung.
Code-Zeile erwähnt im Stapel:
final ClientConfig config= new XmlClientConfigBuilder("config/hazelcast.xml").build();
HazelcastInstance hcast = HazelcastClient.newHazelcastClient(config); //this is mentioned in stack trace
Config
<hazelcast-client xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-client-config-3.1.xsd"
xmlns="http://www.hazelcast.com/schema/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<group>
<name>dev</name>
<password>dev-pass</password>
</group>
<management-center enabled="false">http://localhost:8080/mancenter</management-center>
<network>
<cluster-members>
<address>xxx.xxx.xxx.xxx</address>
</cluster-members>
<smart-routing>true</smart-routing>
<redo-operation>true</redo-operation>
<connection-pool-size>30</connection-pool-size>
<port auto-increment="true" port-count="100">5701</port>
<outbound-ports>
<ports>0</ports>
</outbound-ports>
<join>
<multicast enabled="false">
<multicast-group>224.2.2.3</multicast-group>
<multicast-port>54327</multicast-port>
</multicast>
<tcp-ip enabled="false">
<interface>xxx.xxx.xxx.xxx</interface>
</tcp-ip>
<aws enabled="false">
<access-key>my-access-key</access-key>
<secret-key>my-secret-key</secret-key>
<region>us-west-1</region>
<host-header>ec2.amazonaws.com</host-header>
<security-group-name>hazelcast-sg</security-group-name>
<tag-key>type</tag-key>
<tag-value>hz-nodes</tag-value>
</aws>
</join>
<interfaces enabled="false">
<interface>10.10.1.*</interface>
</interfaces>
<ssl enabled="false" />
<socket-interceptor enabled="false" />
<symmetric-encryption enabled="false">
<algorithm>PBEWithMD5AndDES</algorithm>
<salt>thesalt</salt>
<password>thepass</password>
<iteration-count>19</iteration-count>
</symmetric-encryption>
</network>
Log-Ausgabe
Sep 05, 2014 4:06:02 PM com.hazelcast.core.LifecycleService
INFO: HazelcastClient[hz.client_0_dev][3.2.4] is STARTING
Sep 05, 2014 4:06:02 PM com.hazelcast.core.LifecycleService
INFO: HazelcastClient[hz.client_0_dev][3.2.4] is STARTED
Sep 05, 2014 4:06:02 PM com.hazelcast.core.LifecycleService
INFO: HazelcastClient[hz.client_0_dev][3.2.4] is CLIENT_CONNECTED
Sep 05, 2014 4:06:02 PM com.hazelcast.client.spi.ClientClusterService
INFO:
Members [1] {
Member [127.0.0.1]:5701
}
Sep 05, 2014 4:06:22 PM com.hazelcast.client.spi.ClientPartitionService
SEVERE: Error while fetching cluster partition table!
com.hazelcast.spi.exception.RetryableIOException: java.util.concurrent.ExecutionException: com.hazelcast.core.HazelcastException: java.net.ConnectException: Connection refused: no further information
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.getOrConnect(ClientConnectionManagerImpl.java:319)
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.tryToConnect(ClientConnectionManagerImpl.java:261)
at com.hazelcast.client.spi.impl.ClientInvocationServiceImpl.send(ClientInvocationServiceImpl.java:149)
at com.hazelcast.client.spi.impl.ClientInvocationServiceImpl.invokeOnTarget(ClientInvocationServiceImpl.java:59)
at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.getPartitionsFrom(ClientPartitionServiceImpl.java:105)
at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.getInitialPartitions(ClientPartitionServiceImpl.java:94)
at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.start(ClientPartitionServiceImpl.java:60)
at com.hazelcast.client.HazelcastClient.start(HazelcastClient.java:223)
at com.hazelcast.client.HazelcastClient.newHazelcastClient(HazelcastClient.java:186)
at com.xxx.test.HCastClientAccessor.getHCastInstance(HCastClientAccessor.java:55)
at com.xxx.test.HCastTest.<clinit>(HCastTest.java:12)
Caused by: java.util.concurrent.ExecutionException: com.hazelcast.core.HazelcastException: java.net.ConnectException: Connection refused: no further information
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:262)
at java.util.concurrent.FutureTask.get(FutureTask.java:119)
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.getOrConnect(ClientConnectionManagerImpl.java:316)
... 10 more
Caused by: com.hazelcast.core.HazelcastException: java.net.ConnectException: Connection refused: no further information
at com.hazelcast.util.ExceptionUtil.rethrow(ExceptionUtil.java:45)
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl$ConnectionProcessor.call(ClientConnectionManagerImpl.java:384)
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl$ConnectionProcessor.call(ClientConnectionManagerImpl.java:332)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at com.hazelcast.util.executor.CompletableFutureTask.run(CompletableFutureTask.java:57)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
at com.hazelcast.util.executor.PoolExecutorThreadFactory$ManagedThread.run(PoolExecutorThreadFactory.java:59)
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:708)
at sun.nio.ch.SocketAdaptor.connect(SocketAdaptor.java:115)
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl$ConnectionProcessor.call(ClientConnectionManagerImpl.java:365)
... 11 more
- Server-Ausgabe
INFO: [127.0.0.1]:5701 [dev] [3.2.4] Accepting socket connection from /xxx.xxx.xxx.xxx:49705
Sep 05, 2014 4:05:57 PM com.hazelcast.nio.TcpIpConnectionManager
INFO: [127.0.0.1]:5701 [dev] [3.2.4] 5701 accepted socket connection from /xxx.xxx.xxx.xxx:49705
Sep 05, 2014 4:05:57 PM com.hazelcast.client.AuthenticationRequest
INFO: [127.0.0.1]:5701 [dev] [3.2.4] Received auth from Connection [/xxx.xxx.xxx.xxx:49705 -> null] live=true, client=true, type=JAVA_CLIENT, successfully authenticated
Sep 05, 2014 4:09:43 PM com.hazelcast.nio.TcpIpConnection
INFO: [127.0.0.1]:5701 [dev] [3.2.4] Connection [Address[xxx.xxx.xxx.xxx]:49705] lost. Reason: java.io.IOException[Connection reset by peer]
Sep 05, 2014 4:09:43 PM com.hazelcast.client.ClientEngine
INFO: [127.0.0.1]:5701 [dev] [3.2.4] Destroying ClientEndpoint{conn=Connection [/xxx.xxx.xxx.xxx:49705 -> Address[xxx.xxx.xxx.xxx]:49705] live=false, client=true, type=JAVA_CLIENT, uuid='70afcf60-96e0-444d-8981-3aa983530514', firstConnection=true, authenticated=true}
Sep 05, 2014 4:09:43 PM com.hazelcast.nio.ReadHandler
WARNING: [127.0.0.1]:5701 [dev] [3.2.4] hz._hzInstance_1_dev.IO.thread-in-0 Closing socket to endpoint Address[192.168.101.106]:49705, Cause:java.io.IOException: Connection reset by peer
Update:
Wechselte ich auf diesem client-config, aber ich bekomme immer noch eine Ausnahme auf dem client. Kopiert habe ich die server-und client-Ausgabe - der server die Verbindungsanforderung empfängt, dann aber auf der client-Seite, sehe ich die gleiche Fehlermeldung wie oben erwähnt "SCHWERWIEGEND: Fehler beim abrufen von cluster-partition-Tabelle!" - gleiche Spur wie oben.
Neue client-config -
<hazelcast-client xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-client-config-3.2.4.xsd"
xmlns="http://www.hazelcast.com/schema/config"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<group>
<name>dev</name>
<password>dev-pass</password>
</group>
<management-center enabled="false">http://localhost:8080/mancenter</management-center>
<network>
<cluster-members>
<address>xxx.xxx.xxx.xxx</address>
</cluster-members>
<smart-routing>true</smart-routing>
<redo-operation>true</redo-operation>
<connection-timeout>60000</connection-timeout>
<connection-attempt-limit>10</connection-attempt-limit>
<connection-pool-size>30</connection-pool-size>
</network>
<executor-pool-size>40</executor-pool-size> <!-- added -->
</hazelcast-client>
- Server-Ausgabe:
Sep 07, 2014 5:57:01 PM com.hazelcast.nio.SocketAcceptor
INFO: [127.0.0.1]:5701 [dev] [3.2.4] Accepting socket connection from /xxx.xxx.xxx.xxx:58521
Sep 07, 2014 5:57:01 PM com.hazelcast.nio.TcpIpConnectionManager
INFO: [127.0.0.1]:5701 [dev] [3.2.4] 5701 accepted socket connection from /xxx.xxx.xxx.xxx:58521
Sep 07, 2014 5:57:03 PM com.hazelcast.client.AuthenticationRequest
INFO: [127.0.0.1]:5701 [dev] [3.2.4] Received auth from Connection [/xxx.xxx.xxx.xxx:58521 -> null] live=true, client=true, type=JAVA_CLIENT, successfully authenticated
Client-Ausgabe
Sep 07, 2014 5:58:04 PM com.hazelcast.client.spi.ClientPartitionService
SEVERE: Error while fetching cluster partition table!
com.hazelcast.spi.exception.RetryableIOException: java.util.concurrent.ExecutionException: com.hazelcast.core.HazelcastException: java.net.ConnectException: Connection refused: no further information
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.getOrConnect(ClientConnectionManagerImpl.java:319)
at com.hazelcast.client.connection.nio.ClientConnectionManagerImpl.tryToConnect(ClientConnectionManagerImpl.java:261)
at com.hazelcast.client.spi.impl.ClientInvocationServiceImpl.send(ClientInvocationServiceImpl.java:149)
at com.hazelcast.client.spi.impl.ClientInvocationServiceImpl.invokeOnTarget(ClientInvocationServiceImpl.java:59)
at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.getPartitionsFrom(ClientPartitionServiceImpl.java:105)
at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.getInitialPartitions(ClientPartitionServiceImpl.java:94)
at com.hazelcast.client.spi.impl.ClientPartitionServiceImpl.start(ClientPartitionServiceImpl.java:60)
at com.hazelcast.client.HazelcastClient.start(HazelcastClient.java:223)
at com.hazelcast.client.HazelcastClient.newHazelcastClient(HazelcastClient.java:186)
Update
Habe ich versucht, diese für die client-und server und ich habe die gleiche Ausnahme wie oben - was mache ich falsch:
Client
ClientConfig clientConfig = new ClientConfig().addAddress("xxx.xxx.xxx.xxx");
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
Server
HazelcastInstance hcast = Hazelcast.newHazelcastInstance();
Update
Kurz gesagt, stellen Sie sicher, dass die config für server und client korrekt sind (nicht verwechseln tags von einer Gruppe in eine andere). Für den server sicherzustellen, dass der hazelcast-server lauscht auf die externe IP-Adresse (nicht der loopback-Adresse), dass es keine Einstellungen für die firewall die Verbindung blockiert (auf client -, server-oder in-between). Vielen Dank an Peter - ich bin wieder mit hazelcast und genieße meine Erfahrung mit diesem tool. Sehr zu empfehlen!
Dank pveentjer - außer config und firewall-änderungen, die Schnittstelle benötigt, um die externe IP-Adresse auf dem der server horchen soll (im Gegensatz zu dem lokalen loopback-Adresse)
InformationsquelleAutor | 2014-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Abgesehen von der XML für den client Probleme, ich sehe nichts offensichtlich falsch.
Meine übliche Vorgehensweise ist folgende; versuchen Sie, laufen server und client auf der gleichen JVM, dann hast du wenigstens sicher, dass es kein problem gibt. Ich immer überprüfen Sie die Grundlagen, bevor ich werde zu verschwenden eine zweite, die auf Netzwerk-Probleme.
Sobald Sie überprüft haben, überprüfen Sie den folgenden Abschnitt. Mein Gefühl ist, dass es etwas mit der firewall. Der erste Abschnitt enthält Konfigurationsinformationen zu iptables, die zweite enthält einen zweiten zum testen der Netzwerkverbindung.
\subsection{iptables}
Wenn Sie die Nutzung von iptables folgende Regel Hinzugefügt werden können, zu ermöglichen, wird der ausgehende Verkehr von Häfen 33000-31000:
\begin{lstlisting}
iptables-A OUTPUT -p TCP --dport 33000:31000 -m state --state NEW-j ACCEPT
\end{lstlisting}
und zu Steuern, ankommenden Verkehr von einer beliebigen Adresse zu port 5701:
\begin{lstlisting}
iptables -A INPUT-p tcp -d 0/0 -s 0/0 --dport 5701 -j ACCEPT
\end{lstlisting}
und damit ankommende multicast-Datenverkehr:
\begin{lstlisting}
iptables -A INPUT-m pkttype --pkt-type multicast -j ACCEPT
\end{lstlisting}
\section{Verbindungstest}
Wenn Sie Probleme, weil die Maschine nicht beitreten eines Clusters ist, müssen Sie möglicherweise überprüfen Sie die Netzwerk-connectity zwischen den 2 Maschinen. Sie können ein tool namens iperf. Auf einer Maschine, die Sie ausführen:
\begin{lstlisting}
iperf -s -p 5701
\end{lstlisting}
Dies bedeutet, dass Sie hören auf port 5701.
Auf dem anderen Computer führen Sie den folgenden Befehl ein:
\begin{lstlisting}
iperf -c 192.168.1.107 -d -p 5701
\end{lstlisting}
Wo Sie ersetzen Sie "192.168.1.107" durch die ip-Adresse des ersten Maschine. Wenn Sie den Befehl ausführen und Sie erhalten eine Ausgabe wie diese:
\begin{lstlisting}
Server lauscht auf TCP-port 5701
TCP window size: 85.3 KByte (default)
Client, eine Verbindung zu 192.168.1.107, TCP-port 5701
TCP-window-Größe: 59.4 KByte (default)
[ 5] lokale 192.168.1.105 port 40524 verbunden mit 192.168.1.107 port 5701
[ 4] lokale 192.168.1.105 port 5701 verbunden mit 192.168.1.107 port 33641
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.2 Sek 55.8 MB 45.7 Mbit/Sek
[ 5] 0.0-10.3 sec 6.25 5.07 MB Mbits/sec
\end{lstlisting}
Sie kennen die 2 Geräte miteinander verbinden können. Allerdings, wenn Sie sehen, so etwas wie dieses:
\begin{lstlisting}
Server lauscht auf TCP-port 5701
TCP window size: 85.3 KByte (default)
connect failed: No route to host
\end{lstlisting}
Dann wissen Sie, dass Sie eventuell eine Netzwerk-Verbindung problem auf Ihre Hände.
Ich erkannte seine eine ClientConfig und nicht eine config, aber war nicht sicher, sofort, dass es ein anderes XML-config (its mir klar, jetzt), als ich gegangen durch zusätzliche client-Konfiguration-Einstellungen
Ich habe versucht, die änderung der client-Konfiguration (update kopiert oben). Ich Frage mich, ob mache ich etwas falsch in Bezug auf Partitionen
Ich habe versucht mit partition-group enabled="false" und true - weder verändert alles für mich. Als Nächstes werde ich einfach versuchen, die API-Aufrufe anstelle der client-XML, aber ich bin mir nicht sicher, ob das ist das Problem. Ich werde überprüfen Sie die lokalen Einstellungen (ich glaube, ich habe vor dem posten dieser Frage, und ich erlebte das gleiche Problem auf der client-Seite).
Ich habe versucht, verschiedene Permutationen - ich kann lokal verbinden, aber nicht von meinem desktop auf den server (werde versuchen, einen anderen server in einem anderen Netzwerk nur Zecken alle Felder)
InformationsquelleAutor pveentjer
Den Fehler, den du erwähnen zu kommen scheint aus dem folgenden (ClientPartitionServiceImpl), wo er fordert, die GetPartitionRequest und übergibt die Adresse. Können Sie überprüfen, was Sie übergeben, in der als Adresse (kann verlangen, für Sie zu bauen, hazelcast, mit der version, die Sie nutzen), oder überprüfen Sie die Schnittstellen/config-Datei verwendet wird, im detail.
GetPartitionsRequest
Vereinfachen Sie Ihre Umgebung bis zu etwas, das funktioniert. Networking ist extrem grundlegende Verhalten in Hazelcast und wurde getestet, mehr als genug. Es muss etwas sein, was in Ihrem Netzwerk.
Ich aktualisiere meinen post - ich habe versucht, die Standard-client und-server und ich bekomme die gleiche Ausnahme mit v3.2.4 - es sei denn, Irre, verwendet der hazelcast-default.xml und nicht meine config. Warum das nicht funktioniert?
Funktioniert es, wenn Sie laufen client und server auf der gleichen Maschine? Haben Sie überprüft?
es läuft auf dem gleichen computer, das Problem passiert, wenn ich eine Verbindung von einem computer zu einem anderen
InformationsquelleAutor ali haider
Nur fügen Sie einige Situationen, die ich konfrontiert, für die Fehlermeldung "Fehler beim abrufen von cluster-partition-Tabelle"
InformationsquelleAutor bitec