Как подключиться к Cassandra (remotehost) с помощью cqlsh

Я не могу cqlsh удаленному хосту

 ./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">',)})

Я использую cqlsh 5.0.1 и python 2.7.10

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

Я на mac и использовал инструкции из http://www.datastax.com/2012/01/working-with-apache-cassandra-on-mac-os-x чтобы загрузить cassandra.

Кассандра на моем локальном 2.2.1 (как я понимаю из zip-файла), и похоже, что Кассандра на удаленном хосте не 2.2.1 (я предполагаю, что это 2.0 или 2.1). Не зная окончательно какая версия находится на удаленном хосте, как я могу попытаться подключиться к cassandra на удаленном хосте

3 ответов


1) Убедитесь, что служба работает:

$ ps aux / grep cassandra

пример: 106 7387 5.1 70.9 2019816 1454636 ? ООО Sep02 16:39 в /usr/lib в/в jvm/java-в 7-в Oracle/JRE и//ОГРН/Ява -Ddse.system_cpu_cores=2-Ddse.system_memory_in_mb=2003-Dcassandra.конфиг.loader=com.datastax.БПР.конфиг.DseConfigurationLoader-Ddse.system_cpu_cores=2-Ddse.system_memory_in_mb=2003-Dcassandra.конфиг.loader=com.datastax.БПР.конфиг.DseConfigurationLoader -ЕА -javaagen...

2) Убедитесь, что вы используете правильный IP, проверив конфигурацию сервера:

$ команду ifconfig

пример:

eth1 Link encap: Ethernet HWaddr 08:00:27:a6:4e: 46
inet addr: 192.168.56.10 Bcast: 192.168.56.255 Маска: 255.255.255.0 inet6 addr В образом: fe80::от A00:27ff:fea6:4e46/64 объем:ссылка UP BROADCAST RUNNING MULTICAST MTU: 1500 Метрика: 1

3) обеспечить вы можете подключиться к этому IP с сервера, на котором вы находитесь:

$ ssh user@xxx.xxx.xx.xx

4) Проверьте состояние узла, а также подтвердите, что он показывает тот же IP:

$nodetool статус

5) выполните команду для подключения к IP (только укажите порт, если вы не используете значение по умолчанию):

$ cqlsh xxx.xxx.xx.xx


возможно, вам придется поставить cqlsh от 2.1 или 2.0 на вашем mac, чтобы соответствовать серверу, к которому вы пытаетесь подключиться. Так что сначала я попробую.


я испытывал ту же ошибку (запуск Cassandra 2.2.0 в Windows 8.1) и нашел обходной путь Густава Груселла, который работал для меня: https://issues.apache.org/jira/browse/CASSANDRA-9467?focusedCommentId=14693410&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14693410

обходной путь он представляет изменить ваш cqlsh.py скрипт для принятия версии протокола. После внесения этих изменений, вы сможете указать protocol версии 3 (например), передав --protocolversion=3 в cqlsh.

найти cqlsh.py в папке Cassandra bin и создайте резервную копию перед внесением этих изменений.

добавить следующую строку рядом с другой parser.add_option заявления (~строка 175):

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

добавьте следующее Рядом с другими optvalues в разделе def read_options(cmdlineargs, environment): (~строка 2520):

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

добавьте следующее Перед инструкцией return в def read_options(cmdlineargs, environment): (~line 2574)

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

измените команду оболочки в def main(options, hostname, port): включить версию протокола (~строка 2657):

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

вот что мое cqlsh.py теперь выглядит так:http://pastebin.com/f9D2zEE4