リモートホストに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に接続するにはどうすればよいですか
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
接続しようとしているサーバーに合わせて、Macに2.1または2.0のcqlshを配置する必要がある場合があります。それが私が最初に試すことです。
私は同じエラー(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