Как подключиться к 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