Rpc_portをパブリックIPアドレスに設定すると、Cassandraに外部サーバーから接続できます。
ただし、cqlshを使用して、Cassandraサーバー自体から接続できません
エラーが発生しています。
Connection error: Could not connect to localhost:9160
構成はありますか、サーバー自体から接続できるように変更できますか?
cassandra.yaml
の行のrpc_port :
ファイルを、デフォルトで通常= 9160
で確認しますcassandra
をホストしているマシンにログインしますcqlsh 127.0.0.1 9160
を試してください:どんな場合でも大丈夫ですcqlsh [IP of Host] 9160
を試してください:OKならcassandra
はlanから到達可能、OKならcassandra
はlan
からは到達できませんが、localhost 127.0.0.1
からのみ到達可能rpc_address
で定義されているcassandra.yaml
を介してcassandraに接続する必要があります。たとえば、cqlsh 10.0.80.49 9160
を使用します。
/etc/cassandra.yaml
:
# Whether to start the thrift rpc server.
start_rpc: false
に
start_rpc: true
cassandraログにこれが表示される場合:
INFO [main] 2015-07-21 12:06:27,426 CassandraDaemon.Java:406 - Not starting RPC server as requested. Use JMX (StorageService->startRPCServer()) or nodetool (enablethrift) to start it
ターミナルを開いて
$ nodetool enablethrift
iNFOメッセージに書かれているとおり。これで動作するはずです。システムがcassandra 2.2.0にアップグレードされたときにこれを取得しました
多分start cassandraによってローカルマシンでbin/cassandra -f
最初?
127.0.0.1
のみをリッスンするように指示したため、<public IP>
をリッスンしていません。リッスンアドレス0.0.0.0
を作成して、すべてのアドレスをリッスンします(または、これが通常デフォルトであるため、可能であれば省略します)。 Listening Sockets .NETチュートリアル またはその他のソケットチュートリアルを参照して、ソケットバインディングの基本を理解してください。
更新(@ c45556037 ):
listen_address
は、他のノードがこのノード(誤解を招く名前)に接続するために使用するものであることに注意してください。 rpc_address
は、ローカルにバインドする実際のアドレスです。 2.0 docs からは不明確であり、 1.0 docs で詳しく説明されています。
Cqlshの起動中に同じ状況に直面しました。 cassandraの起動中に次のエラーが発生しました
ターミナルには---- cassandra -----のみを入力します。
すべてのjarファイルとログファイルが表示されます。端末がハングした場合は、そこからエスケープしてからcqlshと入力します。その後、cassandra cli。
これは私のために働いた
Cassandra?でデフォルトのポート9042を変更する方法
以下の手順を使用して問題を解決しました:
1)カサンドララサービスを停止する
Sudo su -
systemctl stop datastax-agent
systemctl stop opscenterd
systemctl stop app-dse
2)バックアップを取り、ポートを9042から9035に変更します
cp /opt/dse/resources/cassandra/conf/cassandra.yaml /opt/dse/resources/cassandra/conf/bkp_cassandra.yaml
vi /opt/dse/resources/cassandra/conf/cassandra.yaml
native_transport_port: 9035
3)Cassandraサービスを開始
systemctl start datastax-agent
systemctl start opscenterd
systemctl start app-dse
4)cqlshrcファイルを作成します。
vi /root/.cassandra/cqlshrc
[connection]
hostname = 198.168.1.100
port = 9035
Localhost/9160への接続の例外。理由:接続が拒否されました
接続が拒否されましたcassandra cliモード。
cassandraのルートディレクトリに移動します。
bin/cassandra -- Host {Host-ip} --port {9160}
これで問題がある場合は、{cassandra-root-directory} /conf/cassandra.yamlを確認してください
thrift ipまたはrpc_addressは、cliに接続するためのホストIPとして使用されるアドレスです。ローカルIPにし、ポート9160を使用して接続できない場合は、rpc_portを8070に変更してから、コマンドを使用してcassandra-cliモードに接続してください
bin/cassandra --Host {local-IP} --port 8070
これは私のために働いた、それもあなたのために働くことを願っています。
このコマンドを使用
Sudo service cassandra start
cassandraを開始してから使用する
cqlsh command
問題を解決するには、以下のクエリを実行してください
#!/bin/bash
export CASSANDRA_HOME=/opt/Apache-cassandra-2.1.8
export CQLSH_Host=192.168.1.200
export CQLSH_PORT=9042
echo $@
$CASSANDRA_HOME/bin/cqlsh $@'
IPアドレスとcassandraホームディレクトリの場所を必ず変更してください
/etc/cassandra-env.shの変更を検討してください。
JVM_OPTS="$JVM_OPTS -Dcom.Sun.management.jmxremote.ssl=true"
not "true" but "false"
JVM_OPTS="$JVM_OPTS -Dcom.Sun.management.jmxremote.ssl=false"
Sudoサービスcassandra= restart
ために 2.0.5
次の作品は私のために働く..
$CASSANDRA_HOME/bin/cqlsh xx.xx.xxx.xxx 9160