web-dev-qa-db-ja.com

cqlshを使用してCassandra(リモートホスト)に接続する方法

リモートホストに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をダウンロードしました。

ローカルのCassandraは2.2.1(Zipファイルからわかるように)で、cassandraは2.2.1ではありません(2.0または2.1であると想定しています)。リモートホスト上のバージョンが何であるかを明確に知らずに、リモートホスト上のcassandraに接続するにはどうすればよいですか

10
mobileDev

1)サービスが実行されていることを確認してください:

$ ps aux |グレップ・カサンドラ

例: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リンクencap:Ethernet HWaddr 08:00:27:a6:4e:46
inet addr:192.168.56.1 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr:fe80 :: a00:27ff:fea6:4e46/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500メトリック:1

)使用しているサーバーからそのIPに接続できることを確認してください:

$ ssh [email protected]

4)ノードのステータスを確認し、同じIPが表示されることも確認します:

$ nodetoolステータス

5)コマンドを実行してIPに接続します(デフォルトを使用していない場合のみポートを指定します):

$ cqlsh xxx.xxx.xx.xx

11
Chris Gerlt

接続しようとしているサーバーに合わせて、Macに2.1または2.0のcqlshを配置する必要がある場合があります。それが私が最初に試すことです。

3
Jim Meyer

私は同じエラー(Windows 8.1でCassandra 2.2.0を実行)を経験していましたが、Gustav Grusellによる回避策が見つかりました: https://issues.Apache。 org/jira/browse/CASSANDRA-9467?focusedCommentId = 14693410&page = com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-1469341

彼が提示する回避策は、プロトコルバージョンを受け入れるようにcqlsh.pyスクリプトを変更することです。これらの変更を行った後、_--protocolversion=3_をcqlshに渡すことにより、プロトコルバージョン3(たとえば)を指定できます。

Cassandra binフォルダーで_cqlsh.py_を見つけ、これらの変更を行う前にバックアップします。

他の_parser.add_option_ステートメントと一緒に次の行を追加します(〜175行目):

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

def read_options(cmdlineargs, environment):の下にある他のoptvalueと一緒に以下を追加します(〜行2520):

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

def read_options(cmdlineargs, environment):のreturnステートメントの前に次を追加します(〜行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

2
Scott Shingler