J'essaie de configurer Cassandra Datastax Community Edition pour une connexion à distance sur Windows,
Cassandra Server est installé sur un PC Windows 7, Avec le CQLSH local, il se connecte parfaitement au serveur local.
Mais quand j'essaye de me connecter avec CQLSH d'un autre PC dans le même réseau, j'obtiens ce message d'erreur:
Erreur de connexion: ('Impossible de se connecter à des serveurs', {'MYHOST': erreur (10061, "Tentative de connexion à [('Host_IP', 9042)]. Dernière erreur: Aucune connexion n'a pu être établie car la machine cible a activement refusé il")})
Je me demande donc comment configurer correctement (quelles modifications dois-je apporter au fichier de configuration cassandra.yaml) le serveur Cassandra pour autoriser les connexions à distance.
Merci d'avance!
L'accès à distance à Cassandra se fait via son port d'épargne pour Cassandra 2.0. Dans Cassandra 2.0.x, l'écoute cqlsh par défaut) le port est 9160 qui est défini dans cassandra.yaml par le paramètre rpc_port. Par défaut, Cassandra 2.0.x et versions antérieures active Thrift en configurant start_rpc sur true dans le fichier cassandra.yaml.
Dans Cassandra 2.1, l'utilitaire cqlsh utilise le protocole natif. Dans Cassandra 2.1, qui utilise le pilote Datastax python, le port d'écoute cqlsh par défaut est 9042.
Le nœud cassandra doit être lié à l'adresse IP de la carte réseau de votre serveur - il ne doit pas être 127.0.0.1 ou localhost qui est l'adresse IP de l'interface de bouclage, la liaison à cela empêchera l'accès direct à distance . Pour configurer l'adresse liée, utilisez le paramètre rpc_address dans cassandra.yaml. La définition de cette valeur sur 0.0.0.0 permettra d'écouter sur toutes les interfaces réseau.
Avez-vous vérifié que la machine distante peut se connecter au nœud Cassandra? Y a-t-il un pare-feu entre les machines? Vous pouvez essayer ces étapes pour le tester:
1) Assurez-vous que vous pouvez vous connecter à cette adresse IP depuis le serveur sur lequel vous êtes:
$ ssh [email protected]
2) Vérifiez l'état du nœud et confirmez qu'il affiche la même IP:
$ nodetool status
) Exécutez la commande pour vous connecter à l'IP (spécifiez le port uniquement si vous n'utilisez pas la valeur par défaut):
$ cqlsh xxx.xxx.xx.xx
Que dis-tu de ça:
Apportez ces modifications dans le fichier de configuration cassandra.yaml:
start_rpc: true
rpc_address: 0.0.0.0
broadcast_rpc_address: [node-ip]
listen_address: [node-ip]
seed_provider:
- class_name: ...
- seeds: "[node-ip]"
référence: https://Gist.github.com/andykuszyk/7644f334586e8ce29eaf8b93ec6418c4
Solution alternative à Kat. Fonctionné avec Ubuntu 16.04
server_user@**.**.**.**
Arrêtez cassandra si vous exécutez:
ps aux | grep cassandra
S'il est en cours d'exécution, produira un grand bloc de commandes/drapeaux, par ex.
ubuntu 14018 4,6 70,1 2335692 712080 pts/2 Sl + 04:15 0:11 Java -Xloggc: ./../ logs/gc.log ........
La note 14018 dans l'exemple est l'ID de processus
kill <process_id>
(dans ce cas 14018)modifier le fichier cassandra.yaml comme suit
rpc_address: 0.0.0.0
broadcast_rpc_address: **.**.**.**
<- IP de votre serveur (ne peut pas être réglé sur 0.0.0.0)./bin/cassandra -f
(de l'intérieur cassandra root)cqlsh **.**.**.**
(IP de votre serveur) à tester.Le ./bin/nodetool status
l'adresse a signalé mon adresse IP locale (127.0.0.1), mais cqlsh fonctionnait à distance malgré cela.
Pour une liste et une explication de toutes les options de configuration de cassandra.yaml, vous pouvez aller sur: http://cassandra.Apache.org/doc/latest/configuration/cassandra_config_file.html#rpc-address