web-dev-qa-db-fra.com

Comment se connecter à Cassandra (remotehost) en utilisant cqlsh

Je ne peux pas cqlsh à l'hôte distant

 ./cqlsh xx.xx.x.xxx 9042
   Connection error: ('Unable to connect to any servers', {'10.101.33.163':   
   ConnectionException(u'Did not get expected SupportedMessage response; 
   instead, got: <ErrorMessage code=0000 [Server error]      
   message="io.netty.handler.codec.DecoderException: 
   org.Apache.cassandra.transport.ProtocolException: Invalid or unsupported 
   protocol version: 4">',)})

J'utilise cqlsh 5.0.1 et python 2.7.10

  ./cqlsh --version
     cqlsh 5.0.1
  python -V
    Python 2.7.10

Je suis sur mac et utilisé les instructions de http://www.datastax.com/2012/01/working-with-Apache-cassandra-on-mac-os-x pour télécharger cassandra.

Cassandra sur mon local est 2.2.1 (si je comprends bien à partir du fichier Zip) et il semble que cassandra sur l’hôte distant n’EST PAS 2.2.1 (je suppose que c’est soit 2.0 ou 2.1). Sans connaître définitivement la version de l'hôte distant, comment puis-je essayer de me connecter à cassandra sur l'hôte distant

8
mobileDev

1) Assurez-vous que le service est en cours d'exécution:

$ ps aux | grep cassandra

Exemple: 106 7387 5.1 70.9 2019816 1454636? SLl Sep02 16:39/usr/lib/jvm/Java-7-Oracle/jre // bin/Java -Ddse.system_cpu_cores = 2 -Ddse.system_memory_in_mb = 2003 -Dcassandra.config.loader = com.datastax.bdp.config .DseConfigurationLoader -Ddse.system_cpu_cores = 2 -Ddse.system_memory_in_mb = 2003 -Dcassandra.config.loader = com.datastax.bdp.config.DseConfigurationLoader -ea -javaagen ...

2) Assurez-vous que vous utilisez l'adresse IP correcte en vérifiant la configuration du serveur:

$ ifconfig

Exemple:

eth1 Lien encapsulé: Ethernet HWaddr 08: 00: 27: a6: 4e: 46
inet addr: 192.168.56.10 Bcast: 192.168.56.255 Masque: 255.255.255.0 inet6 addr: fe80 :: a00: 27ff: fea6: 4e46/64 Portée: lien UP BROADCAST RUNNING MULTICAST MTU: 1500 Métrique: 1

3) Assurez-vous de pouvoir vous connecter à cette adresse IP à partir du serveur sur lequel vous vous trouvez:

$ ssh [email protected]

4) Vérifiez l'état du nœud et confirmez qu'il affiche le même IP:

statut $ nodetool

5) Exécutez la commande pour vous connecter avec l'IP (spécifiez uniquement le port si vous n'utilisez pas l'adresse par défaut):

$ cqlsh xxx.xxx.xx.xx

10
Chris Gerlt

Vous devrez peut-être installer cqlsh à partir de la version 2.1 ou 2.0 sur votre mac afin qu’il corresponde au serveur auquel vous essayez de vous connecter. C'est ce que j'essayerais en premier.

3
Jim Meyer

Je rencontrais la même erreur (exécuter Cassandra 2.2.0 sur Windows 8.1) et j'ai trouvé une solution de contournement de Gustav Grusell qui fonctionnait pour moi: https://issues.Apache.org/jira/browse/CASSANDRA-9467?focusedCommentId = 14693410 & page = com.atlassian.jira.plugin.system.issuetabpanels: comment-tabpanel # comment-14693410

La solution de rechange qu'il présente consiste à modifier votre script cqlsh.py pour accepter une version de protocole. Après avoir apporté ces modifications, vous pourrez spécifier la version 3 du protocole (par exemple) en transmettant --protocolversion=3 à cqlsh.

Localisez cqlsh.py dans votre dossier Cassandra bin et sauvegardez-le avant d'apporter ces modifications.

Ajoutez la ligne suivante à côté des autres instructions parser.add_option (~ ligne 175):

parser.add_option("--protocolversion", default=DEFAULT_PROTOCOL_VERSION, help='Specify protocol version (default: %default).')

Ajoutez les éléments suivants à côté des autres valeurs optionnelles sous def read_options(cmdlineargs, environment): (~ ligne 2520):

optvalues.protocolversion =  option_with_default(configs.get, 'cql', 'protocolversion', DEFAULT_PROTOCOL_VERSION)

Ajoutez ce qui suit avant l'instruction de retour dans def read_options(cmdlineargs, environment): (~ ligne 2574)

if options.protocolversion:
    try:
        options.protocolversion = int(optvalues.protocolversion)
    except ValueError:
        options.protocolversion=DEFAULT_PROTOCOL_VERSION

Modifiez la commande Shell dans def main(options, hostname, port): pour inclure la version du protocole (~ ligne 2657):

                  connect_timeout=options.connect_timeout,
                  protocol_version=options.protocolversion)

Voici à quoi ressemble maintenant mon cqlsh.py: http://Pastebin.com/f9D2zEE4

2
Scott Shingler