Je viens de commencer à travailler avec Cassandra (datastax), version 2.1.3 et cqlsh version 5.0.1.
Cassandra démarre bien et le cluster est opérationnel instantanément.
Cqlsh ne fonctionne pas (sur aucun des nœuds) et émet l'erreur suivante:
Erreur de connexion: ('' Impossible de se connecter à aucun serveur ', {' 127.0.0.1 ': erreur (111, "Tentative de connexion à [(' 127.0.0.1 ', 9042)]. Dernière erreur: Connexion refusée") })
J'ai essayé de démarrer cqlsh avec l'adresse IP de l'hôte, d'autres hôtes IP, des ports différents, mais le résultat reste le même - toujours, la connexion est refusée.
Essayez de changer le rpc_address
pour qu'il pointe vers l'IP du nœud au lieu de 0.0.0.0 et spécifiez l'adresse IP lors de la connexion au cqlsh, comme si l'IP était 10.0.1.34 et que le rpc_port
restait à la valeur par défaut 9160, les conditions suivantes devraient fonctionner:
cqlsh 10.0.1.34 9160
Ou:
cqlsh 10.0.1.34
Assurez-vous également questart_rpcest défini sur true dans le fichier de configuration /etc/cassandra/cassandra.yaml.
Vous devez modifier cassandra.yaml
sur le nœud auquel vous essayez de vous connecter, définir l'adresse IP du nœud pour rpc_address
et listen_address
et redémarrer Cassandra.
rpc_address
est l'adresse sur laquelle Cassandra écoute les appels des clients.
listen_address
est l'adresse sur laquelle Cassandra écoute les autres nœuds Cassandra.
Ceci est dû à certaines pré-configurations dans la cassandra. Et pour résoudre ce problème, le fichier cassandra-env.sh
contient les lignes commentées suivantes:
#add this if you’re having trouble connecting: #JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>
où vous devez commencer à corriger l'erreur.
Ouvrez le terminal et commencez à réparer en suivant les étapes simples suivantes:
Étape 1
utilisation
Sudo nano /etc/cassandra/cassandra-env.sh
cette commande et recherchez JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=
décommentez la ligne en supprimant simplement #
attaché au début de la ligne.
NOTE: Si vous n'avez jamais ouvert ce fichier pour corriger cette erreur, alors vous trouverez JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>
Étape 2 Maintenant, remplacez <public name>
par 127.0.0.1
Étape 3 Enregistrez le fichier et redémarrez la Cassandra en utilisant systemctl restart cassandra.service
(si le serveur n’est pas déjà en cours d’exécution). OR démarrez la cassandra en utilisant systemctl start cassandra.service
(si le serveur n'est pas en cours d'exécution).
Étape 4 Vérifiez l'état en utilisant Sudo service cassandra status
ou systemctl status cassandra.service
.
Remarque: Une fois que vous avez vérifié sur le moniteur du système que cassandra fonctionne ou pas.
Essayez maintenant cqlsh
. Ça va marcher.
Remarque: nano
est un éditeur que vous pouvez utiliser avec d'autres éditeurs avec lesquels vous êtes à l'aise.
Avait le même problème récemment après le déclassement de Cassandra 3.0 à Cassandra 2.2 sur ArchLinux.
Contrairement aux solutions ci-dessus, mon problème n'était pas dans .cassandra, mais la version 3.0 a laissé sa configuration dans le répertoire/var/lib/cassandra.
Les commandes suivantes ont résolu mon problème:
Sudo rm -R /var/lib/cassandra
Sudo rm -R /var/log/cassandra
Sudo rm -R /usr/share/cassandra
Ensuite, j'ai installé Cassandra et tout a encore fonctionné :)
Si vous vérifiez le fichier system.log pour cassandra dans / var/log/cassandra, vous verrez que ce problème se produit car le serveur rpc n'a pas démarré.
Par défaut, start_rpc est défini sur false dans le fichier cassandra.yaml. Définissez-le sur start_rpc: true, puis réessayez.
Au moins dans Cassandra 3.0, start_rpc est défini sur true par défaut. https://docs.datastax.com/fr/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html
Recherchez native_transport_port dans /etc/cassandra/cassandra.yaml La valeur par défaut est 9842.
native_transport_port: 9842
Pour se connecter à localhost avec cqlsh, ce port a fonctionné pour moi.
cqlsh 127.0.0.1 9842
C'est une bonne idée de vérifier le journal de cassandra si même le serveur est en cours d'exécution. Je recevais exactement le même message et je ne pouvais rien faire avec cela, puis j'ai découvert qu'il y avait des erreurs dans le journal et que le système ne fonctionnait pas.
Stupide, je sais, mais pourrait arriver ...
essayez de remplacer le native_transport_protocol
par le port 9160
(s'il est défini sur autre chose que 9160
; il est possible qu'il pointe vers 9042
). Consultez vos journaux et voyez sur quel port cassandra écoute les clients CQL?
Pour moi, il s'est avéré que le service ne fonctionnait pas du tout. Vérifier avec
service cassandra status
Si vous rencontrez la même erreur que moi ou un autre type, vous ne pourrez pas résoudre le problème avec des adresses IP.
L'erreur que j'ai eu:
cassandra dead but pid file exists
Edit: C’est la solution à mon problème: https://stackoverflow.com/a/46743119/3881406
J'essayais de l'exécuter sur un lecteur réseau. J'ai donc augmenté le client_timeout
dans cqlsh et cela a fonctionné.
Essayez de telnet à l'adresse donnée. Dans mon cas, il y avait un pare-feu en place qui me bloquait.
Lorsque j'ai installé Cassandra 3.11.1, je suis tombé sur ce problème. J'ai vérifié le fichier /var/log/cassandra/cassandra.log et j'ai trouvé cette erreur Une exception s'est produite au démarrage .... C'est un bogue déjà signalé. Le lien de publication d'origine https://issues.Apache.org/jira/browse/CASSANDRA-14173 .
La solution est de déclasser Cassandra à 3.0
curl -O https://www.Apache.org/dist/cassandra/redhat/30x/cassandra-3.0.15-1.noarch.rpm
ou
wget https://www.Apache.org/dist/cassandra/redhat/30x/cassandra-3.0.15-1.noarch.rpm
cassandra (pid 2322) est en cours d'exécution ...
Je rencontrais le même problème avec Cassandra 3.11.0, chaque fois que je changeais l’adresse de rpc ou que l’écoute, cqlsh ne fonctionnerait pas. J'ai dû ajouter la même adresse IP locale à seeds
Donc, après beaucoup d'essais et d'erreurs, mon travail sur cassandra.yml s'est terminé comme suit:
class-name: org.Apache.cassandra.locator.SimpleSeedProvider
parameters:
-seeds: "192.168.0.30"
listen_adress: 192.168.0.30
rpc_address: 192.168.0.30
Assurez-vous que vous définissez également "graines" à l'adresse que vous avez fournie à "listen_address"