Tous hôte(s) essayé pour la requête a échoué
J'ai utilisé Google compute engine pour configurer un cluster de trois cassandra nœuds.
Après l'exécution de la "nodetool statut", j'obtiens:
antoniogallo88@cassandra-7m0w:~$ nodetool status
Datacenter: europe-west1
========================
Status=Up/Down
|/State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 10.240.41.185 56.28 KB 256 33.2% edf4c2c8-f746-4c86-8b1e-4d4317788de9 b
UN 10.240.145.130 56.31 KB 256 30.6% 76025d1d-b5e4-4510-afd9-e0c52ae4aa2b b
UN 10.240.194.231 60.94 KB 256 36.2% 1c5594d6-4a62-4cb7-bb4e-ab15545af6a0 b
Donc, tout fonctionne très bien.
Également la cqlsh commande fonctionne bien.
Mon problème est que quand je lance le suivant:
package com.example.cassandra;
import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.Metadata;
public class SimpleClient {
private Cluster cluster;
public void connect(String node, int port) {
cluster = Cluster.builder()
//.addContactPoints("10.240.41.185", "10.240.145.130", "10.240.194.231").withPort(port).build();
.addContactPoints(node).withPort(port).build();
Metadata metadata = cluster.getMetadata();
System.out.printf("Connected to cluster: %s\n",
metadata.getClusterName());
for ( Host host : metadata.getAllHosts() ) {
System.out.printf("Datatacenter: %s; Host: %s; Rack: %s\n",
host.getDatacenter(), host.getAddress(), host.getRack());
}
}
public void close() {
cluster.close();;
}
public static void main(String[] args) {
SimpleClient client = new SimpleClient();
client.connect("10.240.41.185", 9042);
client.close();
}
}
Je puis obtenir:
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /10.240.41.185:9042 (com.datastax.driver.core.TransportException: [/10.240.41.185:9042] Cannot connect))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:193)
at com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:79)
at com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1148)
at com.datastax.driver.core.Cluster.getMetadata(Cluster.java:313)
at com.example.cassandra.SimpleClient.connect(SimpleClient.java:15)
at com.example.cassandra.SimpleClient.main(SimpleClient.java:30)
De cassandra.yaml:
start_native_transport: true
rpc_address = 0.0.0.0
native_transport_port: 9042
listen_address: 10.240.145.130
Si je dois modifier cassandra.fichier yaml, comment je pourrais le faire si je suis en utilisant google compute engine?
Grâce
Cassandra 2.0.x nodetool et cqlsh utiliser l'épargne (le port 9160) pour communiquer avec le serveur. Alors vérifiez que votre hodes accepter les connexions sur le port 9042
C'était juste le pare-feu de problème. Après de circuler sur 9160 et 9042, le module de connexion est établie.
Eh bien, je m'attendais à quelque chose comme ça 🙂
C'était juste le pare-feu de problème. Après de circuler sur 9160 et 9042, le module de connexion est établie.
Eh bien, je m'attendais à quelque chose comme ça 🙂
OriginalL'auteur Antonio Gallo | 2014-11-30
Vous devez vous connecter pour publier un commentaire.
Il semble être un problème de pare-feu. Après avoir mis le trafic sur les deux 9160 et 9042, la connexion est enfin établi.
OriginalL'auteur Antonio Gallo
J'ai ouvert les ports TCP 9042 et 9160 sur mon Centos 7 comme
pour le routeur
J'ai transmis la portslike donc
et
et juste pour être sûr, j'ai transmis le port 7000 trop comme
et puis j'ai vérifié les ports avec http://www.canyouseeme.org et voici le résultat
et
et finalement je me suis Dbeaver connecté 🙂
J'espère que cela va aider certaines personnes dans un futur proche 🙂
OriginalL'auteur Nassim