Как подключиться к 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">',)})
</errormessage>

Я использую 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 файла), и похоже, что cassandra на удаленном хосте НЕ 2.2.1 (я предполагаю, что это либо 2.0, либо 2.1). Без окончательного понимания того, что версия находится на удаленном хосте, как я могу попытаться подключиться к cassandra на удаленном хосте

3 ответа

1) Убедитесь, что служба запущена:

$ps aux | grep cassandra

Пример: 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) Убедитесь, что вы используете правильный 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 [removed_email].xx

4) Проверьте состояние node и подтвердите, что он показывает тот же 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 script, чтобы принять версию протокола. После внесения этих изменений вы сможете указать протокол версии 3 (например), передав --protocolversion=3 в cqlsh.

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

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

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

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

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

Добавьте следующее перед оператором return в def read_options(cmdlineargs, environment): (~ строка 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

licensed under cc by-sa 3.0 with attribution.