web-dev-qa-db-ja.com

トンネリングcassandra ssh経由で接続を閉じるとエラーが発生する

2つのネットワークインターフェイスを持つサーバーがあります。 Cassandraは、eth1上の専用の内部データベースネットワークでリッスンしています(外部からはアクセスできません)。したがって、トンネルは次のようにします:

ssh -f -N -L9161:192.XXX.XXX.200:9160 [email protected] -P 9922

XXXは内部データベースネットワーク、YYYはsshがリッスンしているネットワークです。 cqlsh localhost 9161次の例外が発生します。

Connection error: ('Unable to connect to any servers', {'localhost': ConnectionShutdown('Connection <AsyncoreConnection(139691023521360) localhost:9161 (closed)> is already closed',)})

しかし、localhost 9161をtelnetすると、Telnetシェルが正常に取得されます。そしてもちろんcassandraが実行されています。

トンネルを機能させるにはどうすればよいですか?

4
KIC

私は同じ問題を抱えていましたが、cqlsh 5.0.1(Cassandra 2.1.4にバンドルされており、公式からインストールされたAPTリポジトリ)および私たちの古いCassandra 2.0.14ノード(DataStaxに付属)。

この問題は、datastaxにバンドルされているcqlsh 4.1に一時的にダウングレードすることで解決しました。

0
b0fh

ポート9160(Cassandraクライアントポート)とポート9042(CQLネイティブポート)の両方をプロキシする必要があります。 2つの端末を実行するか、sshクライアントを次のフラグでバックグラウンドにします。

ssh -f -N -q -L 9042:192.XXX.XXX.200:9042 [email protected] -P 9922
ssh -f -N -q -L 9160:192.XXX.XXX.200:9160 [email protected] -P 9922

これで、localhostのデフォルトポートでcqlshに接続できるはずです。 Localhostもデフォルトのホストです。

cqlsh -u [username] -p [password]
6
Sven